Marco de detección de objetos Darknet y YOLO
Logotipos de !darknet y hank.ai
Darknet es un marco de red neuronal de código abierto escrito principalmente en C y CUDA.
YOLO (You Only Look Once) es un sistema de detección de objetos en tiempo real que opera dentro del marco Darknet.
Lea cómo Hank.ai está ayudando a la comunidad Darknet/YOLO
Anuncio de Darknet V3 "Jazz"
Consulte el sitio web Darknet/YOLO
Lea las preguntas frecuentes sobre Darknet/YOLO
Únase al servidor de discordia Darknet/YOLO
Papeles
1. Papel YOLOv7
2. Escala de papel-YOLOv4
3. Papel YOLOv4
4. Papel YOLOv3
Información general
El marco Darknet/YOLO sigue siendo más rápido y preciso que otros marcos y versiones de YOLO.
Este marco es completamente gratuito y de código abierto. Puede integrar Darknet/YOLO en proyectos y productos existentes, incluidos los comerciales, sin licencia ni pago.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, puede procesar con precisión los videos del conjunto de datos LEGO a hasta 1000 FPS cuando se usa una GPU NVIDIA RTX 3090. Esto significa que Darknet/YOLO lee, cambia el tamaño y procesa cada fotograma de vídeo en 1 milisegundo o menos.
Únase al servidor Darknet/YOLO Discord para obtener ayuda o debates: https://discord.gg/zSq8rtW
La versión de CPU de Darknet/YOLO se ejecuta en varios dispositivos, incluidos Raspberry Pi, servidores en la nube y colab, computadoras de escritorio, portátiles y equipos de capacitación de alta gama. La versión GPU de Darknet/YOLO requiere una GPU compatible con CUDA de NVIDIA.
Se sabe que Darknet/YOLO funciona en Linux, Windows y Mac. Consulte las instrucciones de construcción a continuación.
Versión de la red oscura
La herramienta Darknet original escrita por Joseph Redmon entre 2013 y 2017 no tenía un número de versión. Consideramos esta versión 0.x.
El siguiente repositorio popular de Darknet mantenido por Alexey Bochkovskiy entre 2017 y 2021 tampoco tenía un número de versión. Consideramos esta versión 1.x.
El repositorio Darknet patrocinado por Hank.ai y mantenido por Stéphane Charette a partir de 2023 fue el primero con un comando de versión. Desde 2023 hasta finales de 2024, devolvió la versión 2.x "OAK".
El objetivo era intentar romper la menor cantidad de funcionalidad existente mientras se familiarizaba con el código base.
Los cambios clave en Darknet 2.x incluyen:
Se reescribieron los pasos de compilación para una compilación unificada basada en CMake en Windows y Linux.
Convirtió el código base para usar el compilador de C++.
Se mejoró la visualización del chart.png durante el entrenamiento.
Corrección de errores y optimizaciones de rendimiento, centradas principalmente en reducir el tiempo de entrenamiento.
La última rama de este código base es la versión 2.1 en la rama v2.
La siguiente fase de desarrollo comenzó a mediados de 2024 y se lanzó en octubre de 2024. El comando de versión ahora devuelve 3.x "JAZZ".
Siempre puede realizar un pago de la rama v2 anterior si necesita ejecutar uno de estos comandos. Háganos saber si encuentra algún comando faltante.
Los cambios clave en Darknet 3.x incluyen:
Eliminación de muchos comandos antiguos y no mantenidos.
Importantes optimizaciones de rendimiento tanto para el entrenamiento como para la inferencia.
Modificación de la API C heredada, que requiere modificaciones menores para las aplicaciones que utilizan la API Darknet original. Consulte la documentación API actualizada aquí: https://darknetcv.ai/api/api.html
Introducción de una nueva API Darknet V3 C y C++: https://darknetcv.ai/api/api.html
Nuevas aplicaciones y código de muestra en el directorio src-examples: https://darknetcv.ai/api/files.html
Pesas preentrenadas MSCOCO
Se entrenaron previamente varias versiones populares de YOLO para mayor comodidad en el conjunto de datos MSCOCO. Este conjunto de datos contiene 80 clases, que se pueden encontrar en el archivo de texto cfg/coco.names.
Hay varios otros conjuntos de datos más simples y pesos previamente entrenados disponibles para probar Darknet/YOLO, como LEGO Gears y Rolodex. Consulte las preguntas frecuentes de Darknet/YOLO para obtener más detalles.
Los pesos previamente entrenados de MSCOCO se pueden descargar desde varias ubicaciones, incluido este repositorio:
YOLOv2 (noviembre de 2016)
YOLOv2-diminuto
YOLOv2-completo
YOLOv3 (mayo de 2018)
YOLOv3-diminuto
YOLOv3-completo
YOLOv4 (mayo de 2020)
YOLOv4-diminuto
YOLOv4-completo
YOLOv7 (agosto de 2022)
YOLOv7-diminuto
YOLOv7-completo
Las pesas previamente entrenadas de MSCOCO se proporcionan únicamente con fines de demostración. Los archivos .cfg y .names correspondientes a MSCOCO se encuentran en el directorio cfg. Comandos de ejemplo:
`
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.nombres yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.nombres yolov4-tiny.cfg yolov4-tiny.pesos video1.avi
`
Recuerda que te animamos a formar tus propias redes. MSCOCO se utiliza principalmente para confirmar que todo funciona correctamente.
Edificio
Los diversos métodos de compilación disponibles en el pasado (anteriores a 2023) se han fusionado en una única solución unificada. Darknet requiere C++ 17 o posterior, OpenCV, y usa CMake para generar los archivos de proyecto necesarios.
No es necesario saber C++ para compilar, instalar ni ejecutar Darknet/YOLO, del mismo modo que no es necesario ser mecánico para conducir un automóvil.
Tenga cuidado si sigue tutoriales antiguos con pasos de compilación más complicados o pasos de compilación que no coinciden con lo que se encuentra en este archivo Léame. Los nuevos pasos de construcción que se describen a continuación comenzaron en agosto de 2023.
Se anima a los desarrolladores de software a visitar https://darknetcv.ai/ para obtener información sobre los aspectos internos del marco de detección de objetos Darknet/YOLO.
colaboración de google
Las instrucciones de Google Colab son las mismas que las de Linux. Hay varios cuadernos Jupyter disponibles que demuestran tareas como entrenar una nueva red.
Consulte los cuadernos en el subdirectorio colab y/o siga las instrucciones de Linux a continuación.
Método CMake de Linux
Tutorial de compilación de Darknet para Linux
1. Instale los paquetes necesarios:
`golpear
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Clonar el repositorio Darknet:
`golpear
mkdir ~/src
cd ~/fuente
clon de git https://github.com/hank-ai/darknet
cd red oscura
`
3. Cree un directorio de compilación y ejecute CMake:
`golpear
compilación mkdir
compilación de cd
cmake -DCMAKEBUILDTYPE=Lanzar ..
`
4. Construya la red oscura:
`golpear
hacer -j4
`
5. Opcional: Instale CUDA o CUDA+cuDNN
Si tiene una GPU NVIDIA moderna, puede instalar CUDA o CUDA+cuDNN. Esto permitirá que Darknet use su GPU para un procesamiento de imágenes y videos más rápido.
- Descargue e instale CUDA desde https://developer.nvidia.com/cuda-downloads.
- Descargue e instale cuDNN desde https://developer.nvidia.com/rdp/cudnn-download o https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- descripción general de la instalación.
Importante: si instala CUDA o CUDA+cuDNN después de compilar Darknet, debe eliminar el archivo CMakeCache.txt en su directorio de compilación y volver a ejecutar cmake para asegurarse de que CMake pueda encontrar los archivos necesarios.
Nota: Darknet puede ejecutarse sin CUDA, pero si desea entrenar una red personalizada, se requiere CUDA o CUDA+cuDNN.
6. Empaquete e instale Darknet:
`golpear
hacer paquete
sudo dpkg -i darknet-VERSIÓN.deb
`
Importante: si está utilizando una versión anterior de CMake, es posible que deba actualizarla antes de ejecutar el comando cmake. Actualice CMake en Ubuntu usando:
`golpear
sudo apt-get purga cmake
sudo snap instalar cmake --classic
`
Usuarios avanzados:
- Si desea crear un archivo de instalación RPM en lugar de un archivo DEB, edite las dos líneas siguientes en CM_package.cmake antes de ejecutar el paquete make:
`cmake
# CONFIGURAR (CPACK_GENERATOR "DEB")
ESTABLECER (CPACK_GENERATOR "RPM")
`
- Para instalar el paquete de instalación una vez que haya terminado de compilarse, utilice el administrador de paquetes de su distribución. Por ejemplo, en sistemas basados en Debian como Ubuntu:
`golpear
sudo dpkg -i darknet-2.0.1-Linux.deb
`
- La instalación del paquete .deb copiará los siguientes archivos:
- /usr/bin/darknet: El ejecutable de Darknet.
- /usr/include/darknet.h: La API Darknet para desarrolladores de C, C++ y Python.
- /usr/include/darknet_version.h: contiene información de versión para desarrolladores.
- /usr/lib/libdarknet.so: la biblioteca con la que se vinculan los desarrolladores de C, C++ y Python.
- /opt/darknet/cfg/...: Ubicación de todas las plantillas .cfg.
- ¡Ya terminaste! Darknet ha sido construido e instalado en /usr/bin/. Ejecute la versión darknet desde la CLI para confirmar la instalación.
Método CMake de Windows
Estas instrucciones asumen una nueva instalación de Windows 11 22H2.
1. Instale el software requerido:
`powershell
instalación de alas Git.Git
Instalación de Winget Kitware.CMake
instalación de alas nsis.nsis
Winget instala Microsoft.VisualStudio.2022.Community
`
2. Modifique la instalación de Visual Studio:
- Abra el menú "Inicio de Windows" y ejecute "Visual Studio Installer".
- Haga clic en "Modificar".
- Seleccione "Desarrollo de escritorio con C++".
- Haga clic en "Modificar" en la esquina inferior derecha y luego en "Sí".
3. Instale Microsoft VCPKG:
- Abra el menú "Inicio de Windows" y seleccione "Símbolo del sistema del desarrollador para VS 2022". No utilice PowerShell para estos pasos.
- Usuarios avanzados: en lugar de ejecutar el símbolo del sistema para desarrolladores, puede usar un símbolo del sistema normal o ssh en el dispositivo y ejecutar manualmente Archivos de programa Microsoft Visual Studio2022 CommunityCommon7ToolsVsDevCmd.bat.
- Ejecute los siguientes comandos:
`powershell
Centros para el Control y la Prevención de Enfermedades:
mkdirc:src
cdc:src
clon de git https://github.com/microsoft/vcpkg
cd vcpkg
arranque-vcpkg.bat
.vcpkg.exe instalación integrada
.vcpkg.exe integra powershell
.vcpkg.exe instalar opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
- Tenga paciencia durante este último paso, ya que puede tardar mucho en ejecutarse. Necesita descargar y construir muchas cosas.
- Usuarios avanzados: tenga en cuenta que hay muchos otros módulos opcionales que quizás desee agregar al crear OpenCV. Ejecute .vcpkg.exe busque opencv para ver la lista completa.
4. Opcional: Instale CUDA o CUDA+cuDNN
Si tiene una GPU NVIDIA moderna, puede instalar CUDA o CUDA+cuDNN. Esto permitirá que Darknet use su GPU para un procesamiento de imágenes y videos más rápido.
- Descargue e instale CUDA desde https://developer.nvidia.com/cuda-downloads.
- Descargue e instale cuDNN desde https://developer.nvidia.com/rdp/cudnn-download o https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows.
Importante: si instala CUDA o CUDA+cuDNN después de compilar Darknet, debe eliminar el archivo CMakeCache.txt en su directorio de compilación y volver a ejecutar cmake para asegurarse de que CMake pueda encontrar los archivos necesarios.
Nota: Darknet puede ejecutarse sin CUDA, pero si desea entrenar una red personalizada, se requiere CUDA o CUDA+cuDNN.
5. Clona Darknet y constrúyelo:
`powershell
cdc:src
clon de git https://github.com/hank-ai/darknet.git
cd red oscura
compilación mkdir
compilación de cd
cmake -DCMAKEBUILDTYPE=Versión -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Versión PACKAGE.vcxproj
`
Importante:
- Instalación de CUDA: CUDA debe instalarse después de Visual Studio. Si actualiza Visual Studio, recuerde reinstalar CUDA.
- DLL faltantes: si encuentra errores sobre DLL CUDA o cuDNN faltantes (por ejemplo, cublas64_12.dll), copie manualmente los archivos CUDA .dll en el mismo directorio de salida que darknet.exe. Por ejemplo:
`powershell
copie "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Este es un ejemplo; verifique la versión de CUDA que está ejecutando y ajuste la ruta en consecuencia).
- Vuelva a ejecutar msbuild.exe: después de copiar los archivos .dll, vuelva a ejecutar el último comando msbuild.exe para generar el paquete de instalación de NSIS:
`powershell
msbuild.exe /property:Platform=x64;Configuration=Versión PACKAGE.vcxproj
`
- Usuarios avanzados: tenga en cuenta que la salida del comando cmake es un archivo de solución normal de Visual Studio (darknet.sln). Si usa regularmente la GUI de Visual Studio en lugar de msbuild.exe, puede ignorar los pasos de la línea de comandos y cargar el proyecto Darknet en Visual Studio.
- Ahora deberías tener un archivo que puedas ejecutar: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Ejecute esto para probar: C:srcDarknetbuildsrc-cliReleasedarknet.exe versión.
6. Instale Darknet:
- Ejecute el asistente de instalación de NSIS que se creó en el último paso. Busque el archivo darknet-VERSION.exe en el directorio de compilación. Por ejemplo:
`
darknet-2.0.31-win64.exe
`
- El paquete de instalación de NSIS:
- Cree un directorio llamado Darknet, por ejemplo, C:Program FilesDarknet.
- Instale la aplicación CLI (darknet.exe) y otras aplicaciones de muestra.
- Instale los archivos .dll de terceros necesarios, como los de OpenCV.
- Instale los archivos Darknet .dll, .lib y .h necesarios para usar darknet.dll desde otra aplicación.
- Instalar archivos de plantilla .cfg.
- ¡Ya terminaste! Una vez que el asistente de instalación haya finalizado, Darknet se habrá instalado en C:Program FilesDarknet. Ejecute esto para probar: C:Program FilesDarknetbindarknet.exe versión.
Usando la red oscura
CLI
La siguiente no es una lista completa de todos los comandos admitidos por Darknet.
Además de la CLI de Darknet, considere también la CLI del proyecto DarkHelp, que ofrece una CLI alternativa a Darknet/YOLO con funciones avanzadas que no están disponibles directamente en Darknet. Puede utilizar la CLI de Darknet y la CLI de DarkHelp juntas.
Para la mayoría de los comandos siguientes, necesitará el archivo .weights junto con los archivos .names y .cfg correspondientes. Puede entrenar su propia red (¡muy recomendable!) o descargar una red previamente entrenada de Internet. Ejemplos de conjuntos de datos previamente entrenados incluyen:
LEGO Gears (para encontrar objetos en una imagen)
Rolodex (para buscar texto en una imagen)
MSCOCO (detección de objetos estándar de clase 80)
Comandos a ejecutar:
Obtenga ayuda:
`golpear
ayuda de la red oscura
`
Consulta la versión:
`golpear
versión de la red oscura
`
Predecir usando una imagen:
V2:
`golpear
Prueba del detector darknet cars.data cars.cfg cars_best.weights image1.jpg
`
V3:
`golpear
darknet02displayimágenes anotadas cars.cfg image1.jpg
`
Ayuda oscura:
`golpear
DarkHelp cars.cfg cars.cfg cars_best.weights imagen1.jpg
`
Coordenadas de salida:
V2:
`golpear
prueba del detector darknet animales.datos animales.cfg animalesmejor.pesos -extoutput perro.jpg
`
V3:
`golpear
darknet01inference_images animales perro.jpg
`
Ayuda oscura:
`golpear
DarkHelp --json animales.cfg animales.nombres animales_mejores.pesos perro.jpg
`
Trabajar con vídeos:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animalesmejores.pesos -extoutput test.mp4
`
V3:
`golpear
darknet03display_videos animales.cfg prueba.mp4
`
Ayuda oscura:
`golpear
DarkHelp animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
`
Leyendo desde una cámara web:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animales_best.weights -c 0
`
V3:
`golpear
darknet08display_webcam animales
`
Guardar resultados en un vídeo:
V2:
`golpear
demostración del detector darknet animales.datos animales.cfg animalesbest.pesos prueba.mp4 -outfilename res.avi
`
V3:
`golpear
darknet05procesovideosmultiproceso animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
`
Ayuda oscura:
`golpear
DarkHelp animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
`
Salida JSON:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animalesbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
`golpear
darknet06imagestojson animales image1.jpg
`
Ayuda oscura:
`golpear
DarkHelp --json animales.nombres animales.cfg animales_mejor.pesos imagen1.jpg
`
Ejecutando en una GPU específica:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animales_mejores.pesos -i 1 prueba.mp4
`
Comprobación de la precisión de la red neuronal:
`golpear
Mapa del detector de darknet conducción.datos conducción.cfg conducción_mejor.pesos...
`
Salida de ejemplo:
`
Id. Nombre AvgPrecision TP FN FP TN Precisión ErrorRate Precisión Recuperación Especificidad FalsePosRate -- ---- ------------ ------ ------ ------ - ----- -------- --------- --------- ------ ----------- -- ---------- 0 vehículo 91,2495 32648 3903 5826 65129 0,9095 0,0905 0,8486 0,8932 0,9179 0,0821 1 motocicleta 80,4499 2936 513 569 5393 0,8850 0,1150. 8377 0,8513 0,9046 0,0954 2 bicicleta 89,0912 570 124 104 3548 0,9475 0,0525 0,8457 0,8213 0,9715 0,0285 3 persona 76,7937 7072 1727 2574 27523 0,8894 0,1106 0,7332 0,8037 0,9145 0,0855 4 muchos vehículos 64,3089 1068 509 733 11288 0,9087 0,0913 0 0.6772 0.9390 0.0610 5 luz verde 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102 6 luz amarilla 82.0390 126 38 30 1239. 9525 0,0475 0,8077 0,7683 0,9764 0,0236 7 luz roja 94,1033 3449 217 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
Comprobando la precisión mAP@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
Recalcular anclajes:
Es mejor volver a calcular los anclajes en DarkMark, ya que se ejecuta 100 veces consecutivas y selecciona los mejores anclajes. Sin embargo, si deseas utilizar la versión anterior en Darknet:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
Entrenando una nueva red:
`golpear
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
(Consulte también la sección Capacitación a continuación)
Capacitación
Enlaces rápidos a secciones relevantes de las preguntas frecuentes de Darknet/YOLO:
¿Cómo debo configurar mis archivos y directorios?
¿Qué archivo de configuración debo usar?
¿Qué comando debo usar al entrenar mi propia red?
La forma más sencilla de anotar y entrenar es con DarkMark, que crea todos los archivos Darknet necesarios. Esta es la forma recomendada de entrenar una nueva red neuronal.
Si prefiere configurar manualmente los distintos archivos para entrenar una red personalizada:
1. Cree una nueva carpeta:
- Elija una carpeta para almacenar sus archivos. Para este ejemplo, crearemos una red neuronal para detectar animales, por lo que el directorio será ~/nn/animals/.
2. Copie un archivo de configuración de Darknet:
- Copie un archivo de configuración de Darknet como plantilla. Por ejemplo, utilice cfg/yolov4-tiny.cfg. Colóquelo en la carpeta que creó. Ahora deberías tener ~/nn/animals/animals.cfg.
3. Cree un archivo de texto animales.nombres:
- Cree un archivo de texto animales.nombres en la misma carpeta que el archivo de configuración. Ahora tienes ~/nn/animals/animals.names.
4. Edite el archivo animales.names:
- Edite el archivo animales.nombres usando un editor de texto. Enumere las clases que desea detectar, con exactamente una entrada por línea, sin líneas en blanco y sin comentarios. Para este ejemplo, el archivo .names contendrá cuatro líneas:
`
perro
gato
pájaro
caballo
`
5. Cree un archivo de texto animales.data:
- Crea un archivo de texto animales.data en la misma carpeta. Para este ejemplo, el archivo .data contendrá:
`
clases = 4
tren = /home/nombre de usuario/nn/animals/animals_train.txt
válido = /home/nombre de usuario/nn/animals/animals_valid.txt
nombres = /home/nombredeusuario/nn/animals/animals.nombres
copia de seguridad = /home/nombre de usuario/nn/animals
`
6. Cree una carpeta para imágenes y anotaciones:
- Crea una carpeta para almacenar tus imágenes y anotaciones. Por ejemplo, esto podría ser ~/nn/animals/dataset.
- Cada imagen necesitará un archivo .txt correspondiente que describa las anotaciones de esa imagen. El formato de estos archivos de anotaciones .txt es muy específico. No puedes crearlos a mano, ya que cada anotación requiere las coordenadas exactas. Utilice DarkMark o software similar para anotar sus imágenes. El formato de anotación de YOLO se describe en las preguntas frecuentes de Darknet/YOLO.
7. Cree archivos de texto "entrenados" y "válidos":
- Cree los archivos de texto "entrenamiento" y "válido" nombrados en el archivo .data.
- Estos dos archivos de texto deben enumerar todas las imágenes que Darknet utilizará para el entrenamiento y la validación (para calcular el porcentaje de mapa).
- Cada línea debe contener exactamente una ruta de imagen y un nombre de archivo. Puede utilizar rutas relativas o absolutas.
8. Modifique el archivo .cfg:
- Utilice un editor de texto para modificar su archivo .cfg:
- Asegúrese de que el lote sea = 64.
- Subdivisiones: Dependiendo de las dimensiones de la red y la memoria de la GPU, es posible que necesites ajustar las subdivisiones. Comience con subdivisiones=1 y consulte las preguntas frecuentes de Darknet/YOLO si no funciona.
- Maxbatches: establezca un buen valor inicial para maxbatches en 2000 veces el número de clases. Para este ejemplo, tenemos 4 animales, por lo que max_batches=8000.
- Pasos: establece pasos al 80% y 90% de max_batches. En este caso, usaríamos pasos=6400,7200.
- Ancho y Alto: Son las dimensiones de la red. Las preguntas frecuentes de Darknet/YOLO explican cómo calcular el mejor tamaño.
- Clases: busque todas las instancias de clases=... y actualícelas con el número de clases en su archivo .names. En este ejemplo, usaríamos clases=4.
- Filtros: busque todas las instancias de filters=... en las secciones [convolucionales] antes de cada sección [yolo]. El valor a usar es (número de clases + 5) 3. Para este ejemplo, (4 + 5) 3 = 27. Entonces usaríamos filtros = 27 en las líneas apropiadas.
9. Empieza a entrenar:
- Navegue hasta el directorio ~/nn/animals/:
`golpear
cd ~/nn/animales/
`
- Ejecute el siguiente comando para comenzar a entrenar:
`golpear
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
- Ser paciente. Los mejores pesos se guardarán como animales_best.weights. Puede realizar un seguimiento del progreso del entrenamiento observando el archivo chart.png. Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros adicionales que quizás desee utilizar durante el entrenamiento.
- Si desea información de capacitación más detallada, agregue el parámetro --verbose:
`golpear
detector de red oscura -map -dont_show --verbose train animales.data animales.cfg
`
Otras herramientas y enlaces
DarkMark: para gestionar sus proyectos Darknet/YOLO, anotar imágenes, verificar anotaciones y generar archivos para entrenar con Darknet.
DarkHelp: para una CLI alternativa sólida a Darknet, que utiliza mosaicos de imágenes, seguimiento de objetos en videos y una API C++ sólida adecuada para aplicaciones comerciales.
Preguntas frecuentes sobre Darknet/YOLO: un recurso completo para responder a sus preguntas.
Canal de YouTube de Stéphane: numerosos tutoriales y vídeos de ejemplo.
Servidor Darknet/YOLO Discord: únase a la comunidad para obtener soporte y debates.
Hoja de ruta
Última actualización 2024-10-30:
Terminado:
Se cambió qsort() por std::sort() durante el entrenamiento (quedan algunos otros oscuros).
Se eliminaron check_mistakes, getchar() y system().
Se convirtió Darknet para usar el compilador C++ (g++ en Linux, VisualStudio en Windows).
Se corrigió la compilación de Windows.
Se corrigió el soporte de Python.
Construyó la biblioteca darknet.
Etiquetas reactivadas en las predicciones (código "alfabeto").
Código CUDA/GPU rehabilitado.
CUDNN rehabilitado.
Se volvió a habilitar la mitad CUDNN.
Se eliminó la arquitectura CUDA codificada.
Información de versión CUDA mejorada.
AVX rehabilitado.
Se eliminaron soluciones antiguas y Makefile.
OpenCV se hizo no opcional.
Se eliminó la dependencia de la antigua biblioteca pthread.
STB eliminado.
Reescribió CMakeLists.txt para usar la nueva detección CUDA.
Se eliminó el antiguo código "alfabeto" y se eliminaron las más de 700 imágenes en datos/etiquetas.
Compilaciones fuera de fuente habilitadas.
Salida de número de versión mejorada.
Implementé optimizaciones de rendimiento relacionadas con la capacitación (continua).
Implementé optimizaciones de rendimiento relacionadas con la inferencia (en curso).
Se utiliza paso por referencia siempre que sea posible.
Se limpiaron archivos .hpp.
Reescribió darknet.h.
Se evitó convertir cv::Mat a void*, usándolo como un objeto C++ adecuado.
Consistencia fija o mejorada en el uso de la estructura de imagen interna.
Compilaciones fijas para dispositivos Jetson basados en ARM. (Es poco probable que los dispositivos Jetson originales se reparen ya que NVIDIA ya no los admite; no hay compilador C++17. Los nuevos dispositivos Jetson Orin están funcionando).
Se corrigió la API de Python en V3.
Soporte mejorado para Python. (¿Hay algún desarrollador de Python dispuesto a ayudar con esto?)
Metas a corto plazo
Reemplace printf() con std::cout (en progreso).
Investigar el soporte para cámaras zed antiguas.
Mejorar y hacer que el análisis de la línea de comandos sea más consistente (en progreso).
Metas a medio plazo
Elimine todo el código char* y reemplácelo con std::string.
Evite ocultar advertencias y limpie las advertencias del compilador (en progreso).
Mejorar el uso de cv::Mat en lugar de la estructura de imagen personalizada en C (en progreso).
Reemplace la funcionalidad de lista anterior con std::vector o std::list.
Se corrigió la compatibilidad con imágenes en escala de grises de 1 canal.
Agregue soporte para imágenes de canales N donde N > 3 (por ejemplo, imágenes con profundidad adicional o canales térmicos).
Continuar con la limpieza de código en curso (en progreso).
Metas a largo plazo
Solucione problemas de CUDA/CUDNN con todas las GPU.
Vuelva a escribir el código CUDA+cuDNN.
Considere agregar soporte para GPU que no sean NVIDIA.
Agregue cuadros delimitadores girados o soporte de "ángulo".
Implementar puntos clave/esqueletos.
Agregar mapas de calor (en progreso).
Implementar la segmentación.