Marco de detección de objetos Darknet y YOLO
Darknet es un marco de red neuronal de código abierto escrito en C, C++ y CUDA. YOLO (Solo miras una vez) es un sistema de detección de objetivos en tiempo real de última generación que se ejecuta en el marco Darknet.
Lea cómo Hank.ai ayuda a la comunidad Darknet/YOLO
Anuncio de Darknet V3 "Jazz"
Visita el sitio web de Darknet/YOLO
Lea las preguntas frecuentes sobre Darknet/YOLO
Únase al servidor Darknet/YOLO Discord
Papeles
1. Papel YOLOv7
2. Escala de papel-YOLOv4
3. Papel YOLOv4
4. Papel YOLOv3
Información general
El marco Darknet/YOLO es aún 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 productos comerciales, sin licencias ni tarifas.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, puede ejecutar con precisión videos del conjunto de datos de LEGO a hasta 1000 FPS utilizando las GPU NVIDIA RTX 3090, lo que significa que Darknet captura cada cuadro de video en 1 milisegundo o menos /YOLO Leer, cambiar el tamaño y procesar .
Si necesita ayuda o quiere hablar sobre Darknet/YOLO, únase al servidor Darknet/YOLO Discord: https://discord.gg/zSq8rtW
La versión CPU de Darknet/YOLO puede ejecutarse en dispositivos simples como Raspberry Pi, servidores de colaboración y en la nube, 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 bien en Linux, Windows y Mac. Consulte las instrucciones de construcción a continuación.
Versión de la red oscura
Las herramientas Darknet originales escritas por Joseph Redmon entre 2013 y 2017 no tenían números de versión. Consideramos que esta versión es 0.x.
El próximo repositorio popular de Darknet mantenido por Alexey Bochkovskiy entre 2017 y 2021 tampoco tiene número de versión. Creemos que esta versión es 1.x.
El repositorio Darknet patrocinado por Hank.ai y mantenido por Stéphane Charette desde 2023 es el primero en tener un comando de versión. Desde 2023 hasta finales de 2024 vuelve a la versión 2.x “OAK”.
El objetivo es intentar romper la funcionalidad existente lo menos posible mientras nos familiarizamos con el código base.
1. Vuelva a escribir los pasos de compilación para que tengamos una forma unificada de compilar en Windows y Linux usando CMake.
2. Convierta el código base para utilizar un compilador de C++.
3. Chart.png mejorado durante el entrenamiento.
4. Corrección de errores y optimizaciones relacionadas con el rendimiento, principalmente relacionadas con la reducción del tiempo necesario para entrenar la red.
La última rama del código base es la versión 2.1 en la rama v2.
La siguiente fase de desarrollo comienza a mediados de 2024 y se lanzará en octubre de 2024. El comando de versión ahora devuelve 3.x "JAZZ".
Siempre puede consultar la rama v2 anterior si necesita ejecutar el siguiente comando. Háganos saber para que podamos investigar la adición de cualquier comando que falte.
1. Se eliminaron muchos comandos antiguos y no mantenidos.
2. Muchas optimizaciones de rendimiento, incluidos procesos de capacitación e inferencia.
3. La API C tradicional ha sido modificada; las aplicaciones que utilizan la API Darknet original deberán realizar modificaciones menores: https://darknetcv.ai/api/api.html
4. Nueva API Darknet V3 C y C++: https://darknetcv.ai/api/api.html
5. Nuevas aplicaciones y código de muestra en src-examples: https://darknetcv.ai/api/files.html
Pesas preentrenadas MSCOCO
Para mayor comodidad, varias versiones populares de YOLO están previamente entrenadas en el conjunto de datos MSCOCO. Este conjunto de datos tiene 80 categorías y se puede ver 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. Para obtener más información, consulte las preguntas frecuentes sobre Darknet/YOLO.
Los pesos previamente entrenados de MSCOCO se pueden descargar desde varias ubicaciones diferentes o desde este repositorio:
1. YOLOv2, noviembre de 2016
-YOLOv2-pequeño
-YOLOv2-completo
2. YOLOv3, mayo de 2018
- YOLOv3-diminuto
-YOLOv3-completo
3. YOLOv4, mayo de 2020
- YOLOv4-diminuto
-YOLOv4-completo
4. YOLOv7, agosto de 2022
-YOLOv7-pequeño
-YOLOv7-completo
Las pesas previamente entrenadas de MSCOCO tienen fines de demostración únicamente. Los archivos .cfg y .names correspondientes a MSCOCO se encuentran en el directorio cfg. Comando de ejemplo:
`golpear
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.nombres yolov4-tiny.cfg yolov4-tiny.weights video1.avi DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
Tenga en cuenta que uno debe entrenar su propia red. MSCOCO se utiliza a menudo para confirmar que todo está bien.
construir
Se han fusionado varios métodos de construcción del pasado (anteriores a 2023) en una solución unificada. Darknet requiere C++ 17 o superior, OpenCV y usar CMake para generar los archivos de proyecto necesarios.
No es necesario saber C++ para compilar, instalar o ejecutar Darknet/YOLO, del mismo modo que no es necesario ser mecánico para conducir un automóvil.
colaboración de google
Las instrucciones de Google Colab son las mismas que las de Linux. Hay varios cuadernos de Jupyter que muestran cómo realizar determinadas tareas, como entrenar una nueva red.
Consulte el cuaderno en el subdirectorio colab o siga las instrucciones de Linux a continuación.
Método CMake de Linux
Tutorial de compilación de Darknet para Linux
Opcional: si tiene una GPU NVIDIA moderna, puede instalar CUDA o CUDA+cuDNN en este momento. Si está instalado, Darknet utilizará su GPU para acelerar el procesamiento de imágenes (y videos).
Debe eliminar el archivo CMakeCache.txt en el directorio de compilación de Darknet para obligar a CMake a volver a encontrar todos los archivos necesarios.
Recuerda reconstruir Darknet.
Darknet se puede ejecutar sin él, pero si desea entrenar una red personalizada, necesita CUDA o CUDA+cuDNN.
Visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
Visite https://developer.nvidia.com/rdp/cudnn-download o https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview para descargar e Instale cuDNN.
Después de instalar CUDA, asegúrese de que nvcc y nvidia-smi puedan ejecutarse. Es posible que deba modificar la variable PATH.
Si instala CUDA o CUDA+cuDNN más adelante, o si actualiza a una versión más reciente del software NVIDIA, haga lo siguiente:
Estas instrucciones asumen (¡pero no requieren!) un sistema que ejecuta Ubuntu 22.04. Si utiliza otra distribución, ajuste según sea necesario.
`golpear
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 package sudo dpkg -i darknet-VERSIÓN.deb
`
Si está utilizando una versión anterior de CMake, deberá actualizar CMake antes de ejecutar el comando cmake anterior. La actualización de CMake en Ubuntu se puede realizar usando el siguiente comando:
`golpear
sudo apt-get purge cmake sudo snap install cmake --classic
`
Si utiliza bash como shell de comandos, deberá reiniciar el shell en este momento. Si utiliza pescado, debería seguir el nuevo camino inmediatamente.
Usuarios avanzados:
Si desea crear un archivo de instalación RPM en lugar de un archivo DEB, consulte las líneas relevantes en CM_package.cmake. Antes de ejecutar el paquete make -j4 necesitas editar estas dos líneas:
`golpear
ESTABLECER (CPACKGENERATOR "DEB")# ESTABLECER (CPACKGENERATOR "RPM")
`
Para distribuciones como Centos y OpenSUSE, debe cambiar estas dos líneas en CM_package.cmake por:
`golpear
CONFIGURAR (CPACKGENERATOR "DEB") CONFIGURAR (CPACKGENERATOR "RPM")
`
Para instalar el paquete de instalación, una vez compilado, utilice el administrador de paquetes habitual de su distribución. Por ejemplo, en un sistema basado en Debian como Ubuntu:
`golpear
sudo dpkg -i darknet-2.0.1-Linux.deb
`
La instalación del paquete .deb copiará los siguientes archivos:
1. /usr/bin/darknet es el archivo ejecutable habitual de Darknet. Ejecute la versión darknet desde la CLI para confirmar que esté instalada correctamente.
2. /usr/include/darknet.h es la API Darknet para desarrolladores de C, C++ y Python.
3. /usr/include/darknet_version.h contiene información de versión para desarrolladores.
4. /usr/lib/libdarknet.so es una biblioteca para desarrolladores de C, C++ y Python.
5. /opt/darknet/cfg/... es la ubicación donde se almacenan todas las plantillas .cfg.
¡Ya terminaste! Darknet está construido e instalado en /usr/bin/. Ejecute el siguiente comando para probar: versión darknet.
Si no tienes /usr/bin/darknet, no lo instalaste, ¡simplemente lo compilaste! Asegúrese de instalar el archivo .deb o .rpm como se describe arriba.
Métodos de Windows CMake
Estas instrucciones asumen una nueva instalación de Windows 11 22H2.
Abra una ventana normal del símbolo del sistema cmd.exe y ejecute el siguiente comando:
`golpear
instalación de Winget Git.Git instalación de Winget Kitware.CMake instalación de Winget nsis.nsis instalación de Winget Microsoft.VisualStudio.2022.Community
`
En este punto, necesitamos modificar la instalación de Visual Studio para incluir soporte para aplicaciones C++:
1. Haga clic en el menú Inicio de Windows y ejecute la instalación de Visual Studio.
2. Haga clic en Editar.
3. Elija desarrollo de escritorio usando C++.
4. Haga clic en "Editar" en la esquina inferior derecha, luego haga clic en "Sí".
Una vez que todo esté descargado e instalado, haga clic nuevamente en el menú Inicio de Windows y seleccione Símbolo del sistema para desarrolladores para VS 2022. ¡No utilice PowerShell para realizar estos pasos, tendrá problemas!
Usuarios avanzados:
En lugar de ejecutar el símbolo del sistema del desarrollador, puede usar un símbolo del sistema normal o iniciar sesión en el dispositivo usando ssh y ejecutar "Archivos de programa Microsoft Visual Studio2022 CommunityCommon7ToolsVsDevCmd.bat" manualmente.
Una vez que tenga el símbolo del sistema del desarrollador ejecutándose como se describe anteriormente (¡no PowerShell!), ejecute el siguiente comando para instalar Microsoft VCPKG y luego utilícelo para compilar OpenCV:
`golpear
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe integrar instalar .vcpkg.exe integrar powershell.vcpkg.exe instalar opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,mundo]:x64-windows
`
Tenga paciencia con este último paso ya que puede tardar bastante en ejecutarse. Requiere descargar y crear 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 y busque opencv para ver la lista completa.
Opcional: si tiene una GPU NVIDIA moderna, puede instalar CUDA o CUDA+cuDNN en este momento. Si está instalado, Darknet utilizará su GPU para acelerar el procesamiento de imágenes (y videos).
Debe eliminar el archivo CMakeCache.txt en el directorio de compilación de Darknet para obligar a CMake a volver a encontrar todos los archivos necesarios.
Recuerda reconstruir Darknet.
Darknet se puede ejecutar sin él, pero si desea entrenar una red personalizada, necesita CUDA o CUDA+cuDNN.
Visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
Visite https://developer.nvidia.com/rdp/cudnn-download o https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows para descargar e instalar cuDNN.
Después de instalar CUDA, asegúrese de poder ejecutar nvcc.exe y nvidia-smi.exe. Es posible que deba modificar la variable PATH.
Después de descargar cuDNN, descomprima y copie los directorios bin, include y lib en C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[versión]/.
Si instala CUDA o CUDA+cuDNN más adelante, o si actualiza a una versión más reciente del software NVIDIA, haga lo siguiente:
CUDA debe instalarse después de Visual Studio. Si actualiza Visual Studio, recuerde reinstalar CUDA.
Una vez que todos los pasos anteriores se hayan completado con éxito, deberá clonar Darknet y compilarlo. En este paso también necesitamos decirle a CMake dónde se encuentra vcpkg para que pueda encontrar OpenCV y otras dependencias:
`golpear
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -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=Release PACKAGE.vcxproj
`
Si recibe un error sobre alguna DLL CUDA o cuDNN faltante (como cublas64_12.dll), copie manualmente el archivo CUDA .dll en el mismo directorio de salida que Darknet.exe. Por ejemplo:
`golpear
copie "C:Archivos de programaNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(¡Este es un ejemplo! Verifique qué versión está ejecutando y ejecute el comando apropiado para lo que ha instalado).
Después de copiar los archivos, vuelva a ejecutar el último comando msbuild.exe para generar el paquete de instalación de NSIS:
`golpear
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 es un desarrollador de software que utiliza con frecuencia la GUI de Visual Studio en lugar de msbuild.exe para crear proyectos, puede ignorar la línea de comando y cargar el proyecto Darknet en Visual Studio.
Ahora debería tener el siguiente archivo que puede ejecutar: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Ejecute el siguiente comando para probar: C:srcDarknetbuildsrc-cliReleasedarknet.exe versión.
Para instalar correctamente Darknet, bibliotecas, archivos de inclusión y DLL necesarios, ejecute el asistente de instalación de NSIS integrado en el último paso. Verifique el archivo darknet-VERSION.exe en el directorio de compilación. Por ejemplo:
`golpear
darknet-2.0.31-win64.exe
`
La instalación del paquete de instalación de NSIS:
1. Cree un directorio llamado Darknet, por ejemplo C:Program FilesDarknet.
2. Instale la aplicación CLI, darknet.exe y otras aplicaciones de muestra.
3. Instale los archivos .dll de terceros necesarios, como los de OpenCV.
4. Instale los archivos Darknet .dll, .lib y .h necesarios para usar darknet.dll desde otra aplicación.
5. Instale el archivo de plantilla .cfg.
¡Ya terminaste! Una vez completado el asistente de instalación, Darknet se instalará en C:Program FilesDarknet. Ejecute el siguiente comando para probar: C: Archivos de programa Versión Darknetbindarknet.exe.
Si no tiene C:/Program Files/darknet/bin/darknet.exe, no lo instaló, ¡simplemente lo creó! Asegúrese de completar cada panel del Asistente de instalación de NSIS como se describe en los pasos anteriores.
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, tenga en cuenta la CLI del proyecto DarkHelp, que proporciona una alternativa a la CLI de Darknet/YOLO. DarkHelp CLI también tiene varias funciones avanzadas que no están disponibles directamente en Darknet. Puede utilizar la CLI de Darknet y la CLI de DarkHelp juntas; no se excluyen mutuamente.
Para la mayoría de los comandos que se muestran a continuación, necesita un archivo .weights con los archivos .names y .cfg correspondientes. Puede entrenar su propia red (¡muy recomendable!) o descargar una red neuronal de Internet que haya sido entrenada por otros y esté disponible de forma gratuita. Ejemplos de conjuntos de datos previos al entrenamiento incluyen:
1. LEGO Gears (busca objetos en imágenes)
2. Rolodex (buscar texto en la imagen)
3. MSCOCO (detección de objetivos de categoría estándar 80)
Los comandos para ejecutar incluyen:
Enumere algunos comandos y opciones que se pueden ejecutar:
`golpear
ayuda de la red oscura
`
Verificar versión:
`golpear
versión de la red oscura
`
Utilice imágenes para hacer predicciones:
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
`
Usar vídeo:
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 la 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 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
`
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
`
Ejecutar en una GPU específica:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animales_mejores.pesos -i 1 prueba.mp4
`
Para comprobar la precisión de la red neuronal:
`golpear
Mapa del detector de darknet conducción.datos conducción.cfg conducción_mejor.pesos ... 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 0,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 personas 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,5930 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 0,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
`
Para comprobar la precisión de mAP@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
Es mejor volver a calcular los puntos de anclaje en DarkMark, ya que se ejecutará 100 veces seguidas y seleccionará el mejor punto de anclaje de todos los puntos de anclaje calculados. Pero si deseas ejecutar una versión anterior en Darknet, haz lo siguiente:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
Entrene una nueva red:
`golpear
detector de red oscura -map -dont_show train animales.data animales.cfg (consulte también la sección de capacitación a continuación)
`
tren
Enlaces rápidos a secciones relevantes de las preguntas frecuentes de Darknet/YOLO:
1. ¿Cómo debo configurar mis archivos y directorios?
2. ¿Qué perfil debo utilizar?
3. ¿Qué comando debería utilizar al entrenar su propia red?
Usar DarkMark para crear todos los archivos Darknet necesarios es la forma más sencilla de realizar anotaciones y entrenar. Esta es definitivamente la forma recomendada de entrenar nuevas redes neuronales.
Si desea configurar manualmente los distintos archivos para entrenar una red personalizada, haga lo siguiente:
1. Cree una nueva carpeta para almacenar estos archivos. Para este ejemplo, se creará una red neuronal para detectar animales, por lo que se creará el siguiente directorio: ~/nn/animals/.
2. Copie uno de los archivos de configuración de Darknet que desee utilizar como plantilla. Por ejemplo, consulte cfg/yolov4-tiny.cfg. Colóquelo en la carpeta que creó. Para este ejemplo, ahora tenemos ~/nn/animals/animals.cfg.
3. Cree un archivo de texto animales.names en la misma carpeta donde colocó el archivo de configuración. Para este ejemplo, ahora tenemos ~/nn/animals/animals.names.
4. Utilice su editor de texto para editar el archivo animales.nombres. Enumere las categorías que desea utilizar. Necesita exactamente una entrada por línea, sin líneas en blanco ni comentarios. Para este ejemplo, el archivo .names contendrá exactamente 4 líneas:
`
perro
gato
pájaro
caballo
`
5. Cree 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 almacenar sus imágenes y anotaciones. Por ejemplo, esto podría ser ~/nn/animals/dataset. Cada imagen requiere un archivo .txt correspondiente que describa las anotaciones de esa imagen. El formato de los archivos de comentarios .txt es muy específico. No puede crear estos archivos manualmente porque cada anotación debe contener las coordenadas exactas de la anotación. Consulte DarkMark u otro 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 "entrenables" y "válidos" nombrados en el archivo .data. Estos dos archivos de texto deben enumerar todas las imágenes que Darknet debe usar para el entrenamiento y la validación de mAP%, respectivamente. Hay exactamente una imagen por fila. Las rutas y los nombres de archivos pueden ser relativos o absolutos.
8. Utilice un editor de texto para modificar su archivo .cfg.
- Asegúrese de que el lote sea = 64.
- Presta atención a las subdivisiones. Dependiendo del tamaño de la red y la cantidad de memoria disponible en la GPU, es posible que necesites aumentar las subdivisiones. El valor óptimo es 1, así que empieza con eso. Si 1 no funciona para usted, consulte las preguntas frecuentes de Darknet/YOLO.
- Nota maxbatches=.... Al empezar, un buen valor es 2000 para el número de categorías. Para este ejemplo tenemos 4 animales, entonces 4 2000 = 8000. Esto significa que usaremos maxbatches=8000.
- Nota pasos=.... Esto debe establecerse en 80% y 90% de los lotes máximos. Para este ejemplo, usaremos pasos=6400,7200 ya que maxbatches está configurado en 8000.
- Tenga en cuenta que ancho=... y alto=.... estas son dimensiones de red. Las preguntas frecuentes de Darknet/YOLO explican cómo calcular el tamaño óptimo a utilizar.
- En cada sección [yolo] que precede a la sección [convolucional], busque todas las instancias de filters=... líneas. El valor a utilizar es (número de categorías + 5) 3. Esto significa que para este ejemplo, (4 + 5) 3 = 27. Por lo tanto, usamos filtros = 27 en las líneas correspondientes.
9. ¡Empieza a entrenar! Ejecute el siguiente comando:
`golpear
cd ~/nn/animales/
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 observar el progreso del entrenamiento viendo el archivo chart.png. Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros adicionales que quizás desee utilizar al entrenar una nueva red.
- Si desea ver más detalles durante el entrenamiento, agregue el parámetro --verbose. Por ejemplo:
`golpear
detector de red oscura -map -dont_show --detallado tren animales.datos animales.cfg
`
Otras herramientas y enlaces
Para administrar su proyecto Darknet/YOLO, anotar imágenes, validar sus anotaciones y generar los archivos necesarios para el entrenamiento con Darknet, consulte DarkMark.
Para obtener una poderosa CLI alternativa a Darknet para unir imágenes, rastrear objetos en videos o una poderosa API de C++ que se puede usar fácilmente en aplicaciones comerciales, consulte DarkHelp.
Consulta las preguntas frecuentes de Darknet/YOLO para ver si pueden ayudarte a responder tu pregunta.
Consulte los numerosos tutoriales y vídeos de ejemplo en el canal de YouTube de Stéphane.
Si tiene preguntas de soporte o desea chatear con otros usuarios de Darknet/YOLO, únase al servidor Darknet/YOLO Discord.
hoja de ruta
Última actualización: 2024-10-30:
Terminado
1. Reemplace qsort() con std::sort() durante el entrenamiento (aún existe algún otro código oscuro)
2. Eliminar check_mistakes, getchar() y system()
3. Convierta Darknet para usar un compilador de C++ (g++ en Linux, VisualStudio en Windows)
4. Reparar la compilación de Windows
5. Reparar el soporte de Python
6. Cree una biblioteca en la red oscura
7. Vuelva a habilitar las etiquetas en las predicciones (código "alfabético")
8. Vuelva a habilitar el código CUDA/GPU
9. Vuelva a habilitar CUDNN
10. Vuelva a habilitar la mitad CUDNN
11. No codifiques la arquitectura CUDA
12. Mejor información de la versión CUDA
13. Vuelva a habilitar AVX
14. Eliminar la solución anterior y el Makefile.
15.Hacer que OpenCV no sea opcional
16. Eliminar la dependencia de la antigua biblioteca pthread
17. Eliminar STB
18. Reescriba CMakeLists.txt para usar la nueva instrumentación CUDA
19. Elimine el antiguo código "alfabeto" y elimine más de 700 imágenes en datos/etiquetas
20. Construir más allá del código fuente
21. Tener una mejor salida del número de versión
22. Optimización del rendimiento relacionado con la formación (tareas continuas)
23. Optimización del rendimiento relacionada con la inferencia (tareas en curso)
24. Utilice referencias por valor siempre que sea posible.
25. Limpiar archivos .hpp
26. Reescribe darknet.h
27. No convierta cv::Mat a void*, en su lugar utilícelo como un objeto C++ correcto
28. Arreglar o mantener las estructuras de imágenes internas utilizadas de manera consistente.
29. Corrección de compilación para dispositivos Jetson basados en ARM
- Es poco probable que los dispositivos Jetson originales se reparen ya que NVIDIA ya no los admite (sin compilador C++17)
- Nuevo dispositivo Jetson Orin funcionando
30. Reparar la API de Python en V3
31. Se necesita un mejor soporte para Python (¿algún desarrollador de Python quiere ayuda?)
objetivos a corto plazo
1. Reemplace printf() con std::cout (trabajo en progreso)
2. Investigar el antiguo soporte de la cámara Zed
3. Análisis de línea de comando mejor y más consistente (trabajo en progreso)
objetivos a medio plazo
1. Elimine todos los códigos char* y reemplácelos con std::string
2. No oculte las advertencias y limpie las advertencias del compilador (en progreso)
3. Mejor uso de cv::Mat en lugar de estructuras de imágenes personalizadas en C (trabajo en progreso)
4. Reemplace la funcionalidad de lista anterior con std::vector o std::list
5. Se corrigió la compatibilidad con imágenes en escala de grises de 1 canal.
6. Agregue soporte para imágenes de N canales donde N > 3 (por ejemplo, imágenes con profundidad adicional o canales activos)
7. Limpieza de código continua (en curso)
objetivos a largo plazo
1. Solucionar problemas de CUDA/CUDNN en todas las GPU
2. Reescribe el código CUDA+cuDNN
3. Investigue agregar soporte para GPU que no sean NVIDIA
4. Cuadro delimitador girado o algún tipo de soporte en "ángulo"
5. Puntos clave/esqueleto
6. Mapa de calor (en curso)
7. dividir