Marco de detección de objetos Darknet y YOLO
Darknet es un marco de red neuronal de código abierto diseñado con C, C++ y CUDA. Sirve como base para YOLO (Solo miras una vez), un sistema de detección de objetos en tiempo real de vanguardia reconocido por su velocidad y precisión.
Lea acerca de cómo Hank.ai está reforzando la comunidad Darknet/YOLO: [enlace al blog de Hank.ai]
Explore el sitio web oficial de Darknet/YOLO: [enlace al sitio web de Darknet]
Sumérjase en las preguntas frecuentes completas de Darknet/YOLO: [enlace a las preguntas frecuentes]
Interactúe con la vibrante comunidad Darknet/YOLO en Discord: [enlace al servidor de Discord]
Papeles
1. YOLOv7: [enlace al artículo]
2. Scaled-YOLOv4: [enlace al artículo]
3. YOLOv4: [enlace al artículo]
4. YOLOv3: [enlace al artículo]
Información general
El marco Darknet/YOLO continúa dominando otros marcos y versiones de YOLO en términos de velocidad y precisión. Su naturaleza de código abierto y su total ausencia de tarifas de licencia permiten una integración perfecta en proyectos y productos comerciales existentes.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, logra un rendimiento notable al procesar los videos del conjunto de datos de LEGO a unos asombrosos 1000 FPS utilizando una GPU NVIDIA RTX 3090. Esto se traduce en un tiempo de procesamiento de menos de 1 milisegundo por cuadro de vídeo.
Únase al servidor activo Darknet/YOLO Discord en [enlace al servidor Discord] para obtener soporte, debates y aprendizaje colaborativo.
Darknet/YOLO atiende a una amplia gama de dispositivos, desde Raspberry Pi hasta equipos de entrenamiento de alta gama, y admite versiones de CPU y GPU. La versión GPU requiere una GPU compatible con CUDA de NVIDIA.
Darknet/YOLO cuenta con compatibilidad con los sistemas operativos Linux, Windows y Mac. Encuentre instrucciones de construcción detalladas a continuación.
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. Designamos esta versión como 0.x.
Alexey Bochkovskiy continuó manteniendo el popular repositorio Darknet de 2017 a 2021, nuevamente sin número de versión. Nos referimos a esto como versión 1.x.
El repositorio Darknet, patrocinado por Hank.ai y mantenido por Stéphane Charette desde 2023, introdujo el comando "versión". Entre 2023 y finales de 2024, devolvió la versión 2.x "OAK".
Los objetivos de desarrollo eran minimizar la interrupción de la funcionalidad existente y al mismo tiempo familiarizarnos con el código base. Las mejoras clave incluyen:
Proceso de compilación unificado: pasos de compilación reescritos para un proceso de compilación consistente basado en CMake tanto en Windows como en Linux.
Base de código C++: conversión de la base de código para aprovechar el compilador de C++.
Gráfico de entrenamiento mejorado: visualización de chart.png mejorada durante el entrenamiento.
Corrección de errores y optimizaciones: mejoras relacionadas con el rendimiento, centrándose en reducir el tiempo de entrenamiento.
La última rama de este código base es la versión 2.1, que reside en la rama "v2".
La siguiente fase de desarrollo comenzó a mediados de 2024 y culminó con el lanzamiento en octubre de 2024 de la versión 3.x "JAZZ".
Siempre puedes acceder a la rama "v2" anterior para ejecutar comandos de esas versiones. Infórmenos si encuentra algún comando faltante e investigaremos su reintegración.
Los cambios significativos en Darknet V3 incluyen:
Eliminación de comandos: eliminación de comandos obsoletos y de uso poco frecuente.
Optimizaciones de rendimiento: mejoras tanto para el rendimiento de entrenamiento como de inferencia.
Modificación de la API heredada: Modificación de la API C heredada; Las aplicaciones que utilizan la API Darknet original pueden requerir ajustes menores.
Nueva API C/C++: Introducción de una nueva API Darknet V3 C y C++.
Código de muestra actualizado: Inclusión de nuevas aplicaciones y código de muestra en el directorio "src-examples".
Para obtener información detallada sobre la nueva API: [enlace a la documentación de la API Darknet V3]
Explore el código de muestra actualizado: [enlace a archivos API de Darknet V3]
Pesas preentrenadas MSCOCO
Se han entrenado previamente varias versiones populares de YOLO para mayor comodidad en el conjunto de datos de MSCOCO. Este conjunto de datos abarca 80 clases, fácilmente identificables en el archivo de texto "cfg/coco.names".
Más allá de MSCOCO, Darknet/YOLO proporciona pesos previamente entrenados para conjuntos de datos más simples como LEGO Gears y Rolodex, lo que le permite experimentar con varios escenarios. Consulte las preguntas frecuentes de Darknet/YOLO para obtener detalles completos.
Se puede acceder a los pesos previamente entrenados de MSCOCO desde múltiples fuentes, incluido este repositorio:
YOLOv2 (noviembre de 2016):
YOLOv2-tiny: [enlace a pesos]
YOLOv2-full: [enlace a pesos]
YOLOv3 (mayo de 2018):
YOLOv3-tiny: [enlace a pesos]
YOLOv3-full: [enlace a pesos]
YOLOv4 (mayo de 2020):
YOLOv4-tiny: [enlace a pesos]
YOLOv4-full: [enlace a pesos]
YOLOv7 (agosto de 2022):
YOLOv7-tiny: [enlace a pesos]
YOLOv7-full: [enlace a pesos]
Estos pesos previamente entrenados están destinados principalmente a 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
`
Recuerde, se recomienda capacitar a sus propias redes. MSCOCO sirve principalmente como punto de referencia para confirmar el correcto funcionamiento de su configuración.
Edificio
Los diversos métodos de compilación utilizados antes de 2023 se han consolidado en una única solución unificada. Darknet se basa en C++ 17 o posterior, OpenCV, y utiliza CMake para generar los archivos de proyecto necesarios.
Construir, instalar y ejecutar Darknet/YOLO no requiere experiencia en C++, similar a conducir un automóvil sin ser mecánico.
colaboración de google
Las instrucciones de Google Colab son idénticas a 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 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 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.
1. Instale los requisitos previos:
`golpear
sudo apt-get install build-essential git libopencv-dev cmake
`
2. Clonar el repositorio Darknet:
`golpear
mkdir ~/srccd ~/src
clon de git https://github.com/hank-ai/darknetcd red oscura
`
3. Cree un directorio de compilación:
`golpear
mkdir buildcd construir
`
4. Configure CMake:
`golpear
cmake -DCMAKEBUILDTYPE=Lanzar ..
`
5. Construya la red oscura:
`golpear
hacer -j4
`
6. Paquete Darknet:
`golpear
paquete
`
7. Instale el paquete:
`golpear
sudo dpkg -i darknet-VERSIÓN.deb
`
Si está utilizando una versión anterior de CMake, deberá actualizar CMake antes de poder ejecutar el comando cmake anterior. La actualización de CMake en Ubuntu se puede realizar con los siguientes comandos:
`golpear
sudo apt-get purga cmake
sudo snap instalar cmake --classic
`
Si usa bash como su shell de comandos, querrá reiniciar su shell en este punto. Si utiliza pescado, debe tomar inmediatamente el nuevo camino.
Usuarios avanzados:
Si prefiere un paquete de instalación RPM en lugar de un archivo DEB, modifique las líneas relevantes en "CM_package.cmake". Antes de ejecutar "make -j4 package", ajuste estas líneas:
`cmake
ESTABLECER (CPACKGENERATOR "DEB")# ESTABLECER (CPACKGENERATOR "RPM")
`
Para distribuciones como Centos y OpenSUSE, modifique esas líneas de la siguiente manera:
`cmake
ESTABLECER (CPACK_GENERATOR "DEB")
ESTABLECER (CPACK_GENERATOR "RPM")
`
Instale el paquete compilado utilizando el administrador de paquetes de su distribución. Para 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 principal de Darknet. Ejecute la "versión darknet" desde la CLI para confirmar que la instalación se realizó correctamente.
/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/...: almacena todas las plantillas .cfg.
¡Felicidades! Darknet ha sido construido e instalado en /usr/bin/. Ejecute la "versión darknet" para verificar la instalación.
Si no tiene /usr/bin/darknet, esto significa que solo lo creó, no lo instaló. 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. Instale los requisitos previos usando Winget:
`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 la instalación de Visual Studio:
- Haga clic en 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:
- Una vez que finalice la instalación, haga clic en el menú "Inicio de Windows" y seleccione "Símbolo del sistema del desarrollador para VS 2022". No utilice PowerShell para estos pasos, ¡causará problemas!
- Usuarios avanzados: en lugar de utilizar el símbolo del sistema del desarrollador, puede ejecutar un símbolo del sistema normal o ssh en el dispositivo y ejecutar manualmente "Archivos de programaMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat".
4. Instale OpenCV usando VCPKG:
`golpear
Centros para el Control y la Prevención de Enfermedades:
mkdir c:srccd c:src
clon de git https://github.com/microsoft/vcpkgcd 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 paso, ya que puede llevar una cantidad significativa de tiempo descargar y crear dependencias.
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.
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.
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#download-windows para descargar e instalar cuDNN.
3. Verifique la instalación de CUDA:
Después de instalar CUDA, asegúrese de poder ejecutar nvcc.exe y nvidia-smi.exe. Es posible que necesites ajustar tu variable PATH.
4. Integre cuDNN:
Descomprima el archivo cuDNN descargado y copie los directorios "bin", "include" y "lib" en C:Program FilesNVIDIA GPU Computing ToolkitCUDA[versión]. Es posible que necesites sobrescribir archivos existentes.
5. Instale CUDA después de Visual Studio:
- CUDA debe instalarse después de Visual Studio. Si actualiza Visual Studio, recuerde reinstalar CUDA.
6. Clona Darknet y construye:
`golpear
cdc:src
clon de git https://github.com/hank-ai/darknet.gitcd darknet
mkdir buildcd construir
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
`
7. Manejar las DLL CUDA/cuDNN que faltan:
- Si encuentra errores acerca de la falta de DLL CUDA o cuDNN (por ejemplo, cublas64_12.dll), copie manualmente los archivos CUDA .dll relevantes en el mismo directorio que darknet.exe. Por ejemplo:
`golpear
copie "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Este es un ejemplo. Verifique su versión de CUDA y ejecute el comando apropiado).
- Vuelva a ejecutar el último comando msbuild.exe para generar el paquete de instalación de NSIS.
Usuarios avanzados:
La salida del comando cmake es un archivo de solución normal de Visual Studio (Darknet.sln). Si prefiere utilizar la GUI de Visual Studio en lugar de msbuild.exe para compilar, puede cargar el proyecto Darknet en Visual Studio e ignorar los pasos de la línea de comandos.
Ahora debería tener el ejecutable C:srcDarknetbuildsrc-cliReleasedarknet.exe. Ejecute la versión C:srcDarknetbuildsrc-cliReleasedarknet.exe para probar la instalación.
Para instalar Darknet correctamente, incluidas las bibliotecas, los archivos incluidos y las DLL necesarias, ejecute el asistente de instalación de NSIS integrado en el último paso. Localice 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 (por ejemplo, de OpenCV).
Instale los archivos Darknet .dll, .lib y .h necesarios para usar darknet.dll desde otras aplicaciones.
Instale archivos de plantilla .cfg.
¡Ya has terminado! Una vez que se complete el asistente de instalación, Darknet se instalará en C:Program FilesDarknet. Ejecute la versión C:Program FilesDarknetbindarknet.exe para verificar la instalación.
Si no tiene C:/Program Files/darknet/bin/darknet.exe, esto indica que solo lo creó, no lo instaló. Asegúrese de revisar cada panel del asistente de instalación de NSIS como se describió anteriormente.
Usando la red oscura
CLI
Esta no es una lista exhaustiva de todos los comandos admitidos por Darknet.
Además de la CLI de Darknet, tenga en cuenta la CLI del proyecto DarkHelp, que ofrece una interfaz alternativa para Darknet/YOLO. Incluye varias funciones avanzadas que no están disponibles 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 los archivos .names y .cfg correspondientes. Puede entrenar su propia red (¡muy recomendable!) o descargar una red neuronal previamente entrenada desde recursos disponibles públicamente. Algunos ejemplos incluyen:
LEGO Gears (detección de objetos en imágenes)
Rolodex (detección de texto en imágenes)
MSCOCO (detección de objetos estándar de clase 80)
A continuación se muestran algunos comandos de ejemplo y su uso:
Comandos básicos:
Ayuda:
`golpear
ayuda de la red oscura
`
Versión:
`golpear
versión de la red oscura
`
Predicción de imágenes:
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
`
Entrada de 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
`
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:
mapa:
`golpear
Mapa del detector de darknet conducción.datos conducción.cfg conducción_mejor.pesos...
`
- Este comando mostrará la precisión promedio (AP) para cada clase en el conjunto de datos.
mapa@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
- Este comando calcula el mapa en un umbral de IoU de 0,75.
Cálculo de anclajes:
La mejor práctica para volver a calcular los anclajes es utilizar DarkMark, ya que ejecuta 100 cálculos consecutivos y selecciona los anclajes óptimos. Sin embargo, puedes utilizar el método Darknet más antiguo:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
Entrenando una nueva red:
Formación básica:
`golpear
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
- Los mejores pesos se guardarán como animales_best.weights y el progreso del entrenamiento será visible en chart.png.
Entrenamiento detallado:
`golpear
detector de red oscura -map -dont_show --verbose train animales.data animales.cfg
`
- Este comando proporciona información más detallada durante el entrenamiento.
Capacitación
Enlaces rápidos a secciones relevantes de las preguntas frecuentes de Darknet/YOLO:
Configuración de archivos y directorios: [enlace a la sección de preguntas frecuentes]
Elegir el archivo de configuración correcto: [enlace a la sección de preguntas frecuentes]
Comando de entrenamiento: [enlace a la sección de preguntas frecuentes]
La forma más sencilla de anotar y entrenar es utilizar DarkMark para crear todos los archivos Darknet necesarios. Este es el enfoque recomendado para entrenar una nueva red neuronal.
Configuración de entrenamiento manual:
1. Crea una carpeta: crea una nueva carpeta para almacenar tus archivos de entrenamiento. Por ejemplo, ~/nn/animales/.
2. Copie el archivo de configuración: Copie un archivo de configuración de Darknet como plantilla (por ejemplo, cfg/yolov4-tiny.cfg) en su carpeta. Ahora tienes ~/nn/animals/animals.cfg.
3. Cree el archivo .names: cree un archivo de texto animales.names en la misma carpeta.
- Edite el archivo para enumerar las clases que desea detectar. Cada clase debe estar en una línea separada sin líneas en blanco ni comentarios. Por ejemplo:
`
perro
gato
pájaro
caballo
`
4. Cree el archivo .data: cree un archivo de texto animales.data en la misma carpeta.
- El archivo .data define los conjuntos de datos de entrenamiento y validación, los nombres de las clases y el directorio de respaldo. Por ejemplo:
`
clases=4
tren=/home/nombre de usuario/nn/animals/animals_train.txt
valid=/home/nombre de usuario/nn/animals/animals_valid.txt
nombres=/home/nombredeusuario/nn/animals/animals.nombres
copia de seguridad=/home/nombre de usuario/nn/animales
`
5. Cree la carpeta de imágenes y anotaciones: cree una carpeta (por ejemplo, ~/nn/animals/dataset) para almacenar sus imágenes y anotaciones.
- Cada imagen requiere un archivo .txt correspondiente que contiene anotaciones. El formato de anotación es específico; no se puede crear manualmente. Utilice DarkMark o software similar para anotar imágenes.
- El formato de anotación de YOLO se explica en las preguntas frecuentes de Darknet/YOLO.
6. Cree los archivos "entrenamiento" y "válidos": cree los archivos de texto "entrenamiento" y "válidos" mencionados en el archivo .data.
- Estos archivos enumeran las imágenes utilizadas para el entrenamiento y la validación, respectivamente. Cada imagen debe estar en una línea separada. Puede utilizar rutas relativas o absolutas.
7. Modifique el archivo de configuración:
- Abra su archivo .cfg con un editor de texto y realice los siguientes ajustes:
- lote=64: este valor suele estar bien.
- subdivisiones: comience con subdivisiones = 1. Es posible que deba aumentar este valor según la memoria de su GPU y las dimensiones de red. Consulte las preguntas frecuentes sobre Darknet/YOLO para obtener orientación.
- maxbatches: establezca esto en 2000 * número de clases. Por ejemplo, con 4 clases, maxbatches=8000.
- pasos: configúrelo en 80% y 90% de maxbatches. Por ejemplo, con maxbatches=8000, pasos=6400,7200.
- ancho y alto: Estas son las dimensiones de la red. Consulte las preguntas frecuentes de Darknet/YOLO para obtener consejos sobre el cálculo de dimensiones.
- clases: cambie la línea clases=... para que coincida con el número de clases en su archivo .names (en este ejemplo, clases=4).
- filtros: Modifique la línea filters=... en cada sección [convolucional] antes de cada sección [yolo]. El valor se calcula como (número de clases + 5) * 3. Por ejemplo, con 4 clases, filtros = 27.
8. Comienza a entrenar:
`golpear
cd ~/nn/animales/
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
- El entrenamiento puede llevar un tiempo. Los mejores pesos se guardarán como animales_best.weights. El progreso del entrenamiento es visible en el archivo chart.png. Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros de entrenamiento adicionales.
- 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: esta herramienta le ayuda a administrar sus proyectos Darknet/YOLO, anotar imágenes, verificar anotaciones y generar los archivos necesarios para la capacitación de Darknet.
DarkHelp: una CLI alternativa sólida para Darknet que proporciona funciones como mosaico de imágenes, seguimiento de objetos en videos y una API C++ sólida para aplicaciones comerciales.
Preguntas frecuentes sobre Darknet/YOLO: un recurso valioso para responder sus preguntas sobre Darknet/YOLO.
Canal YouTube de Stéphane: encuentre numerosos tutoriales y vídeos de ejemplo.
Servidor Darknet/YOLO Discord: únase al servidor para hacer preguntas de soporte y conectarse con otros usuarios de Darknet/YOLO.
Hoja de ruta
Última actualización: 2024-10-30
Terminado
Cambie qsort(): se reemplazó qsort() con std::sort() en partes relevantes del código base. (Algunas instancias restantes todavía usan qsort())
Eliminar funciones obsoletas: Se eliminaron check_mistakes, getchar() y system().
Base de código C++: Darknet convertido para usar el compilador C++ (g++ en Linux, VisualStudio en Windows).
Compilación de Windows: Se corrigió el proceso de compilación de Windows.
Soporte de Python: integración fija de Python.
Biblioteca Darknet: creó la biblioteca Darknet.
Etiquetas de predicción: etiquetas reactivadas en las predicciones (el código "alfabeto").
Código CUDA/GPU: funcionalidad CUDA/GPU reactivada.
CUDNN: soporte CUDNN rehabilitado.
Mitad CUDNN: se volvió a habilitar el soporte de media precisión de CUDNN.
Arquitectura CUDA: se eliminó la codificación rígida de la arquitectura CUDA.
Información de la versión CUDA: Información de la versión CUDA mejorada.
AVX: soporte AVX rehabilitado.
Se eliminaron archivos heredados: se eliminaron soluciones antiguas y Makefile.
Dependencia de OpenCV: convirtió a OpenCV en una dependencia requerida.
Biblioteca pthread: se eliminó la dependencia de la antigua biblioteca pthread.
STB: Se eliminó la dependencia de STB.
CMakeLists.txt: CMakeLists.txt reescrito para utilizar el nuevo método de detección CUDA.
Se eliminaron archivos obsoletos: se eliminó el código "alfabeto" antiguo y se eliminaron más de 700 imágenes en datos/etiquetas.
Compilación fuera de fuente: compilaciones fuera de fuente habilitadas.
Número de versión: salida del número de versión mejorada.
Rendimiento del entrenamiento: optimizaciones del rendimiento del entrenamiento (tarea continua).
Rendimiento de inferencia: optimizaciones de rendimiento para la inferencia (tarea en curso).
Paso por referencia: se utiliza el paso por referencia siempre que sea posible para mejorar la eficiencia.
Limpieza de código: archivos .hpp limpios.
Darknet.h reescrito: se actualizó el archivo de encabezado de la API de Darknet.
Uso de cv::Mat: Se usó cv::Mat como un objeto C++ adecuado en lugar de convertirlo en void*.
Estructura de la imagen: se corrigieron inconsistencias y problemas relacionados con la estructura de la imagen interna.
Compatibilidad con Jetson: compilaciones fijas para dispositivos Jetson basados en ARM.
- Es poco probable que los dispositivos Jetson más antiguos se reparen debido a la interrupción del soporte de NVIDIA (sin compilador C++17).
- Los nuevos dispositivos Jetson Orin están funcionando.
API de Python en V3: se corrigió la API de Python en Darknet V3.
Metas a corto plazo
Cambie printf(): Reemplace printf() con std::cout (en progreso).
Compatibilidad con la cámara Zed: revise y mejore la compatibilidad con la cámara Zed.
Análisis de línea de comando: implementar un análisis de línea de comando más sólido y consistente (en progreso).
Metas a medio plazo
Eliminar código de caracteres: elimine todo el código de caracteres y reemplácelo con std::string.
Advertencias del compilador: no oculte las advertencias ni aborde las advertencias del compilador (en progreso).
Uso de cv::Mat: Mejorar el uso de cv::Mat en lugar de la estructura de imagen personalizada en C (en progreso).
Funcionalidad de lista: reemplace la funcionalidad de lista anterior con std::vector o std::list.
Compatibilidad con imágenes en escala de grises: se corrigió la compatibilidad con imágenes en escala de grises de 1 canal.
Compatibilidad con imágenes de canal N: agregue compatibilidad con imágenes con más de 3 canales (p. ej., canales térmicos o de profundidad).
Limpieza de código en curso: continúe con la limpieza de código en curso (en curso).
Metas a largo plazo
Problemas de CUDA/CUDNN: solucione los problemas de compatibilidad de CUDA/CUDNN en diferentes GPU.
Reescribir el código CUDA/CUDNN: Vuelva a escribir el código CUDA/CUDNN para mejorar el rendimiento y la compatibilidad.
Compatibilidad con GPU que no son NVIDIA: investigue la compatibilidad con GPU que no son NVIDIA.
Cuadros delimitadores girados: implemente soporte para cuadros delimitadores girados o información de ángulos.
Puntos clave/esqueletos: agregue soporte para puntos clave y esqueletos.
Mapas de calor: implementar soporte para mapas de calor (en progreso).
Segmentación: agregue soporte para la segmentación.