Marco de detección de objetos Darknet y YOLO
Downcodes小编 Lista actualizada de rastreadores públicos de BitTorrent
Liza
Estas listas se actualizan automáticamente todos los días. Última actualización 31/10/2024:
¿Tienes problemas de DNS? Estas listas contienen los mismos rastreadores pero con direcciones IP en lugar de dominios:
Notas
Contribuir
Contacto
ngosang [@] hotmail [.es]
Herramientas de terceros
Herramientas en línea de terceros
ejemplo:
Licencia Apache-2.0
Tabla de contenido
Marco de detección de objetos Darknet y YOLO
Papeles
Información general
Versión de la red oscura
Pesas preentrenadas MSCOCO
Edificio
colaboración de google
Método CMake de Linux
Método CMake de Windows
Usando la red oscura
CLI
Capacitación
Otras herramientas y enlaces
Hoja de ruta
Metas a corto plazo
Metas a medio plazo
Metas a largo plazo
Marco de detección de objetos Darknet y YOLO
Darknet es un marco de red neuronal de código abierto, escrito principalmente en C, C++ y CUDA.
YOLO (Solo miras una vez) es un sistema de detección de objetos en tiempo real de vanguardia que opera dentro del marco Darknet.
Lea acerca de cómo Hank.ai apoya a la comunidad Darknet/YOLO.
Explora el sitio web Darknet/YOLO.
Consulte las preguntas frecuentes de Darknet/YOLO para obtener respuestas a preguntas comunes.
Únase al servidor Darknet/YOLO Discord para debates y asistencia.
Papeles
1. Papel YOLOv7
2. Escala de papel-YOLOv4
3. Papel YOLOv4
4. Papel YOLOv3
Información general
El marco Darknet/YOLO supera consistentemente a otros marcos y versiones de YOLO tanto en velocidad como en precisión.
Este marco es completamente gratuito y de código abierto. Puedes integrar Darknet/YOLO en tus proyectos y productos, incluso comerciales, sin necesidad de licencia ni incurrir en tarifas.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, puede ejecutar de manera eficiente los videos del conjunto de datos de LEGO a hasta 1000 FPS utilizando una GPU NVIDIA RTX 3090. Esto significa que Darknet/YOLO puede procesar cada fotograma de vídeo (leer, cambiar el tamaño y procesar) en 1 milisegundo o menos.
Únase al servidor Darknet/YOLO Discord si necesita ayuda o desea hablar sobre Darknet/YOLO: 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 requiere una GPU NVIDIA compatible con CUDA.
Se sabe que Darknet/YOLO es compatible con Linux, Windows y Mac. Consulte las instrucciones de construcción a continuación para obtener más detalles.
Versión de la red oscura
La herramienta Darknet original desarrollada por Joseph Redmon entre 2013 y 2017 carecía de número de versión. Consideramos esta versión 0.x.
El posterior y popular repositorio Darknet, mantenido por Alexey Bochkovskiy de 2017 a 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 desde 2023 fue el primero en incluir un comando de versión. Devolvió la versión 2.x "OAK" desde 2023 hasta finales de 2024.
El objetivo principal era minimizar la interrupción de la funcionalidad existente mientras nos familiarizábamos con el código base.
Cambios clave:
Compilación unificada: pasos de compilación reescritos para establecer un método único y consistente usando CMake tanto para Windows como para Linux.
Migración de C++: se convirtió el código base para utilizar el compilador de C++.
Gráfico mejorado: se mejoró la visualización del archivo chart.png durante el entrenamiento.
Corrección de errores y optimizaciones: se corrigieron numerosos errores e implementaron optimizaciones de rendimiento, principalmente enfocadas en reducir el tiempo de capacitación.
La última rama de este código base es la versión 2.1, ubicada en la rama v2.
La siguiente etapa de desarrollo comenzó a mediados de 2024 y culminó con el lanzamiento de la versión 3.x "JAZZ" en octubre de 2024.
Mejoras clave en Darknet V3 ("Jazz"):
Rendimiento: optimizaciones significativas del rendimiento durante el entrenamiento y la inferencia.
Cambios de API: se modificó la API C heredada. Las aplicaciones que utilizan la API Darknet original requerirán ajustes menores. Ver: https://darknetcv.ai/api/api.html
Nueva API: se presentó una nueva API Darknet V3 C y C++: https://darknetcv.ai/api/api.html
Ejemplos actualizados: se agregaron nuevas aplicaciones y código de muestra dentro del directorio src-examples: https://darknetcv.ai/api/files.html
Siempre puedes volver a la rama v2 anterior si necesitas ejecutar comandos específicos. Infórmenos si encuentra algún comando faltante para que podamos explorar la posibilidad de incorporarlo nuevamente.
Eliminaciones de claves de Darknet V3 ("Jazz"):
Comandos obsoletos: se eliminaron muchos comandos obsoletos y sin mantenimiento.
Pesas preentrenadas MSCOCO
Para mayor comodidad, se han entrenado previamente varias versiones populares de YOLO en el conjunto de datos MSCOCO. Este conjunto de datos abarca 80 clases, que se pueden encontrar en el archivo de texto cfg/coco.names.
Más allá de MSCOCO, hay 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 de múltiples fuentes, 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 residen en el directorio cfg. Comandos 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.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
`
Recuerde, se anima a los usuarios a entrenar sus propias redes. MSCOCO se utiliza principalmente para validar que todo funciona correctamente.
Edificio
Los diversos métodos de construcción empleados antes de 2023 se han consolidado en una solución unificada. Darknet requiere C++ 17 o una versión más reciente, OpenCV, y utiliza CMake para generar los archivos de proyecto necesarios.
No necesita conocimientos de C++ para construir, instalar o ejecutar Darknet/YOLO, del mismo modo que no necesita ser mecánico para conducir un automóvil.
colaboración de google
Las instrucciones de Google Colab reflejan las instrucciones de Linux. Varios cuadernos de Jupyter demuestran diversas tareas, como entrenar una nueva red.
Explore los cuadernos en el subdirectorio colab o siga las instrucciones de Linux que se proporcionan a continuación.
Método CMake de Linux
Tutorial de compilación de Darknet para Linux
Opcional: si posee una GPU NVIDIA moderna, instale CUDA o CUDA+cuDNN en este momento. Si está instalado, Darknet aprovechará su GPU para acelerar el procesamiento de imágenes (y videos).
Debe eliminar el archivo CMakeCache.txt de su directorio de compilación Darknet para obligar a CMake a redescubrir todos los archivos necesarios.
Recuerda reconstruir Darknet.
Darknet puede funcionar sin ellos, pero CUDA o CUDA+cuDNN son necesarios si pretendes entrenar una red personalizada.
1. Instale CUDA: visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
2. Instale cuDNN: visite 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 para descargar e instalar cuDNN.
Después de instalar CUDA, asegúrese de poder ejecutar nvcc y nvidia-smi. Es posible que necesites modificar tu variable PATH.
Si instala CUDA o CUDA+cuDNN más adelante, o si actualiza a una versión más reciente del software NVIDIA:
Actualice CMake: si su versión de CMake está desactualizada, actualícela usando los siguientes comandos:
`golpear
sudo apt-get purga cmake
sudo snap instalar cmake --classic
`
Reinicie Shell: si usa bash como su shell de comandos, reinicie su shell. Si utiliza pescado, la ruta debería actualizarse automáticamente.
Construyendo la red oscura:
`golpear
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
clon de git https://github.com/hank-ai/darknetcd red oscura
mkdir buildcd construir
cmake -DCMAKEBUILDTYPE=Lanzar ..
hacer -j4
paquete
sudo dpkg -i darknet-VERSIÓN.deb
`
Usuarios avanzados:
Instalación de RPM: para crear un archivo de instalación de RPM en lugar de un archivo DEB, modifique las líneas relevantes en CM_package.cmake. Antes de ejecutar el paquete make -j4, edite estas líneas:
`cmake
ESTABLECER (CPACKGENERATOR "DEB")# ESTABLECER (CPACKGENERATOR "RPM")
`
Para distribuciones como CentOS y OpenSUSE, ajuste las líneas a:
`cmake
ESTABLECER (CPACK_GENERATOR "DEB")
ESTABLECER (CPACK_GENERATOR "RPM")
`
Paquete de instalación: instale el paquete una vez que haya terminado de compilarse utilizando el administrador de paquetes de su distribución. Para sistemas basados en Debian (por ejemplo, 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 estándar de Darknet. Ejecute la versión darknet desde la CLI para confirmar su instalación correcta.
/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 para vincular en el desarrollo de C, C++ y Python.
/opt/darknet/cfg/...: almacena todas las plantillas .cfg.
¡Felicidades! Darknet ha sido construido e instalado en /usr/bin/. Ejecute la versión darknet para verificar.
Si no tiene /usr/bin/darknet, solo ha creado Darknet, no lo ha instalado. Asegúrese de instalar el archivo .deb o .rpm como se describe arriba.
Método CMake de Windows
Estas instrucciones asumen una nueva instalación de Windows 11 22H2.
1. Requisitos previos de instalación: abra un símbolo del sistema cmd.exe estándar y ejecute estos comandos:
`golpear
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 Visual Studio: configure Visual Studio para que admita aplicaciones C++:
Haga clic en el menú "Inicio de Windows" y ejecute "Visual Studio Installer".
Seleccione "Modificar".
Elija "Desarrollo de escritorio con C++".
Haga clic en "Modificar" en la esquina inferior derecha y luego haga clic en "Sí".
3. Símbolo del sistema para desarrolladores: una vez completada la instalación, haga clic en el menú "Inicio de Windows" y seleccione "Símbolo del sistema para desarrolladores para VS 2022". ¡No utilice PowerShell para estos pasos, ya que puede causar problemas!
Usuarios avanzados:
En lugar de utilizar el símbolo del sistema del desarrollador, puede optar por un símbolo del sistema normal o conectarse a través de SSH y ejecutar manualmente "Archivos de programaMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat".
4. Instale Microsoft VCPKG: ejecute los siguientes comandos en el símbolo del sistema del desarrollador (no en PowerShell) para instalar Microsoft VCPKG, que se utilizará para compilar OpenCV:
`golpear
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 instala opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
Tenga paciencia durante el último paso, ya que puede llevar un tiempo considerable completarlo. Implica descargar y construir numerosos componentes.
Usuarios avanzados:
Tenga en cuenta que hay muchos módulos opcionales que puede incluir 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 punto. Si está instalado, Darknet utilizará su GPU para acelerar el procesamiento de imágenes (y videos).
Debe eliminar el archivo CMakeCache.txt de su directorio de compilación Darknet para obligar a CMake a volver a encontrar todos los archivos necesarios.
Recuerde reconstruir Darknet.
Darknet puede ejecutarse sin él, pero si desea entrenar una red personalizada, entonces se requiere 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.
Una vez que instale CUDA, asegúrese de poder ejecutar nvcc.exe y nvidia-smi.exe. Es posible que tengas que modificar tu variable PATH.
Una vez que descargue cuDNN, descomprima y copie los directorios bin, include y lib en C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[versión]/. Es posible que necesites sobrescribir algunos archivos.
Si instala CUDA o CUDA+cuDNN más adelante, o actualiza a una versión más reciente del software NVIDIA:
CUDA debe instalarse después de Visual Studio. Si actualiza Visual Studio, recuerde reinstalar CUDA.
5. Clonar y construir Darknet: una vez que los pasos anteriores se hayan completado con éxito, clone Darknet y compílelo. Durante este paso, especifique la ubicación de VCPKG para que CMake ubique OpenCV y otras dependencias:
`golpear
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
`
Si encuentra un error sobre la falta de DLL CUDA o cuDNN (por ejemplo, cublas64_12.dll), copie manualmente los archivos 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 su versión en ejecución y use el comando apropiado para su instalación).
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 el resultado del comando cmake es un archivo de solución estándar de Visual Studio (Darknet.sln). Si es un desarrollador de software que prefiere usar la GUI de Visual Studio en lugar de msbuild.exe para crear proyectos, puede omitir los pasos de la línea de comandos y cargar el proyecto Darknet en Visual Studio.
Ahora debería tener el ejecutable C:srcDarknetbuildsrc-cliReleasedarknet.exe. Ejecútelo para probar: versión C:srcDarknetbuildsrc-cliReleasedarknet.exe.
Para instalar correctamente Darknet, sus bibliotecas, archivos incluidos y DLL necesarios, ejecute el asistente de instalación de NSIS generado en el último paso. Busque 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:
Cree un directorio llamado Darknet, como 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.
Instale los archivos .cfg de plantilla.
¡Ya has terminado! Una vez que se complete el asistente de instalación, Darknet se instalará en C: Archivos de programa Darknet. Pruébelo ejecutando: C: Archivos de programa Darknetbindarknet.exe versión.
Si falta C:/Program Files/darknet/bin/darknet.exe, Darknet solo se compila, no se instala. Asegúrese de completar cada panel del asistente de instalación de NSIS del paso anterior.
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, recuerde la CLI del proyecto DarkHelp, que ofrece una CLI alternativa a Darknet/YOLO. La CLI de DarkHelp incluye varias funciones avanzadas a las que no se puede acceder directamente en Darknet. Puede utilizar tanto la CLI de Darknet como la CLI de DarkHelp simultáneamente; no son mutuamente excluyentes.
Para la mayoría de los comandos siguientes, necesitará el archivo .weights junto con sus archivos .names y .cfg correspondientes. Puede entrenar su propia red (¡muy recomendable!) o descargar una red neuronal previamente entrenada que alguien haya puesto a disposición de forma gratuita en línea. Algunos conjuntos de datos previamente entrenados incluyen:
LEGO Gears (detección de objetos en una imagen)
Rolodex (detección de texto en una imagen)
MSCOCO (detección de objetos estándar de clase 80)
Comandos a ejecutar:
Lista de posibles comandos y opciones:
`golpear
ayuda de la red oscura
`
Consulta la versión:
`golpear
versión de la red oscura
`
Predicción 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
`
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...
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 bicicletas 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 mAP@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
Recalcular anclajes: el recálculo de anclajes se realiza mejor en DarkMark, ya que se ejecutará 100 veces consecutivas y seleccionará los mejores anclajes de todas las opciones calculadas. Sin embargo, si desea utilizar el método Darknet anterior:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
Entrenando una nueva red:
`golpear
cd ~/nn/animales/
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
(Consulte la sección de capacitación a continuación para obtener detalles adicionales).
Capacitación
Enlaces rápidos a secciones relevantes de las preguntas frecuentes de Darknet/YOLO:
Configuración de archivos y directorios: ¿Cómo debo configurar mis archivos y directorios?
Archivos de configuración: ¿Qué archivo de configuración debo usar?
Comando de entrenamiento: ¿Qué comando debo usar al entrenar mi propia red?
La forma más sencilla de anotar y entrenar es con DarkMark. Simplifica el proceso de creación de todos los archivos Darknet necesarios. Se recomienda encarecidamente utilizar DarkMark para entrenar nuevas redes neuronales.
Si prefiere la configuración manual de los archivos para una capacitación de red personalizada:
1. Cree una carpeta: establezca una nueva carpeta para almacenar los archivos. Para este ejemplo, crearemos una red neuronal para detectar animales; por lo tanto, se crea el siguiente directorio: ~/nn/animals/.
2. Copie el archivo de configuración: copie el archivo de configuración de Darknet que desee utilizar como plantilla. Por ejemplo, consulte cfg/yolov4-tiny.cfg. Colóquelo en la carpeta creada. En este ejemplo, ahora tenemos ~/nn/animals/animals.cfg.
3. Cree animales.nombres: cree un archivo de texto llamado animales.nombres en la misma carpeta que el archivo de configuración. Este ejemplo ahora tiene ~/nn/animals/animals.names.
4. Edite animales.nombres: edite el archivo animales.nombres usando su editor de texto. Enumere las clases que desea utilizar. Cada clase debe ocupar una línea separada, sin líneas en blanco ni comentarios. En este ejemplo, el archivo .names contendrá cuatro líneas:
`
perro
gato
pájaro
caballo
`
5. Crear animales.data: cree un archivo de texto animales.datos 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. Carpeta del conjunto de datos: 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 sus anotaciones. El formato de los archivos de anotaciones .txt es muy específico. No puede crear estos archivos manualmente porque cada anotación requiere coordenadas precisas. 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. Archivos "entrenamiento" y "válidos": cree los archivos de texto "entrenamiento" y "válidos" mencionados en el archivo .data. Estos dos archivos deben enumerar individualmente todas las imágenes que Darknet utilizará para entrenamiento y validación al calcular el% de mAP. Incluye una imagen por línea. La ruta y los nombres de los archivos pueden ser relativos o absolutos.
8. Modificar el archivo .cfg: utilice un editor de texto para modificar su archivo .cfg.
Asegúrese de que el lote = 64.
Observar las subdivisiones. Según las dimensiones de su red y la capacidad de memoria de la GPU, es posible que necesite aumentar las subdivisiones. El valor ideal es 1, así que empieza con eso. Consulte las preguntas frecuentes de Darknet/YOLO si 1 no funciona para usted.
Preste atención a maxbatches=..... Un buen valor inicial es 2000 veces el número de clases. En este ejemplo, tenemos 4 animales, por lo que 4 * 2000 = 8000, lo que significa maxbatches=8000.
Nota pasos=..... Establezca esto en 80% y 90% de los lotes máximos. En este ejemplo, con maxbatches establecido en 8000, usaríamos pasos = 6400,7200.
Observe que ancho=... y alto=..... Estas son las dimensiones de la red. Las preguntas frecuentes de Darknet/YOLO explican cómo determinar el mejor tamaño.
Busque todas las apariciones de la línea clases=... y modifíquela con el número de clases en su archivo .names. En este ejemplo, usaríamos clases=4.
Busque todas las apariciones de la línea filters=... en la sección [convolucional] que precede a cada sección [yolo]. El valor debe ser (número de clases + 5) 3. En este ejemplo, (4 + 5) 3 = 27. Por lo tanto, use filtros = 27 en las líneas apropiadas.
9. Comience el entrenamiento: ejecute los siguientes comandos:
`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. El progreso del entrenamiento se puede monitorear viendo el archivo chart.png. Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros adicionales que podrían resultar útiles al entrenar una nueva red.
Para ver más detalles de la capacitación, agregue el parámetro --verbose. Por ejemplo:
`golpear
detector de red oscura -map -dont_show --verbose train animales.data animales.cfg
`
Otras herramientas y enlaces
Para administrar sus proyectos Darknet/YOLO, anotar imágenes, verificar anotaciones y generar los archivos necesarios para entrenar con Darknet, consulte DarkMark.
Para obtener una CLI alternativa sólida a Darknet, para utilizar mosaicos de imágenes, seguimiento de objetos en videos o una API C++ sólida para aplicaciones comerciales, explore DarkHelp.
Compruebe si las preguntas frecuentes de Darknet/YOLO pueden responder a sus preguntas.
Vea numerosos tutoriales y vídeos de ejemplo en el canal de YouTube de Stéphane.
Si tiene una consulta de soporte o desea interactuar con otros usuarios de Darknet/YOLO, únase al servidor Darknet/YOLO Discord.
Hoja de ruta
Última actualización 2024-10-30:
Terminado:
1. Se reemplazó qsort() con std::sort() durante el entrenamiento (quedan algunas instancias oscuras).
2. Se eliminaron check_mistakes, getchar() y system().
3. Se convirtió Darknet para usar el compilador C++ (g++ en Linux, VisualStudio en Windows).
4. Se corrigió la compilación de Windows.
5. Se corrigió el soporte de Python.
6. Construyó la biblioteca Darknet.
7. Etiquetas reactivadas en las predicciones (código "alfabeto").
8. Código CUDA/GPU rehabilitado.
9. CUDNN rehabilitado.
10. Se rehabilitó la mitad CUDNN.
11. Se evitó codificar la arquitectura CUDA.
12. Información de versión CUDA mejorada.
13. AVX rehabilitado.
14. Se eliminaron soluciones antiguas y Makefile.
15. Se hizo obligatorio OpenCV.
16. Se eliminó la dependencia de la antigua biblioteca pthread.
17. STB eliminado.
18. CMakeLists.txt reescrito para incorporar la nueva detección CUDA.
19. Se eliminó el antiguo código "alfabeto" y se eliminaron las más de 700 imágenes en datos/etiquetas.
20. Construido a partir de fuentes originales.
21. Salida del número de versión mejorada.
22. Implementé optimizaciones de rendimiento relacionadas con la capacitación (tarea en curso).
23. Optimizaciones de rendimiento implementadas relacionadas con la inferencia (tarea en curso).
24. Utilizar el paso por referencia siempre que sea posible.
25. Archivos .hpp limpios.
26. Reescrito darknet.h.
27. Evité convertir cv::Mat a void* y lo usé como un objeto C++ adecuado.
28. Coherencia fija o asegurada en cómo se utiliza la estructura de la imagen interna.
29. Compilación fija para dispositivos Jetson basados en ARM.
30. Es poco probable que los dispositivos Jetson originales se reparen debido a que NVIDIA ya no los admite (no hay compilador C++17).
31. Los nuevos dispositivos Jetson Orin son funcionales.
32. Se corrigió la API de Python en V3.
Metas a corto plazo:
1. Reemplace printf() con std::cout (en progreso).
2. Revise el antiguo soporte de la cámara Zed.
3. Mejorar y mejorar la coherencia del análisis de la línea de comandos (en progreso).
Metas a mediano plazo:
1. Elimine todo el código char* y reemplácelo con std::string.
2. Eliminar advertencias ocultas y limpiar las advertencias del compilador (en progreso).
3. Mejor utilización de cv::Mat en lugar de la estructura de imagen personalizada en C (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 canal N donde N > 3 (por ejemplo, imágenes con una profundidad adicional o un canal térmico).
7. Limpieza de código en curso (en progreso).
Metas a largo plazo:
1. Resuelva los problemas de CUDA/CUDNN en todas las GPU.
2. Vuelva a escribir el código CUDA+cuDNN.
3. Investigue agregar soporte para GPU que no sean NVIDIA.
4. Introduzca cuadros delimitadores girados o algún tipo de soporte en "ángulo".
5. Incorporar puntos clave/esqueletos.
6. Integrar mapas de calor (en progreso).
7. Implementar la segmentación.