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 en C, C++ y CUDA. YOLO (Solo miras una vez) es un sistema de detección de objetos en tiempo real de última generación que se ejecuta dentro del marco Darknet.
Descubra cómo Hank.ai apoya a la comunidad Darknet/YOLO
Explora el sitio web oficial de Darknet/YOLO
Consulte las preguntas frecuentes completas sobre Darknet/YOLO
Únase al animado servidor Darknet/YOLO Discord
Papeles
1. Papel YOLOv7
2. Papel YOLOv4 escalado
3. Papel YOLOv4
4. Papel YOLOv3
Información general
El marco Darknet/YOLO continúa superando los límites del rendimiento, ofreciendo constantemente velocidad y precisión, superando a otros marcos y versiones de YOLO. Este marco es completamente gratuito y de código abierto, lo que le permite integrar perfectamente Darknet/YOLO en proyectos y productos existentes, incluidas aplicaciones comerciales, sin necesidad de licencias ni tarifas.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, logra un rendimiento notable, capaz de procesar con precisión videos de conjuntos de datos LEGO a hasta 1000 FPS utilizando una GPU NVIDIA RTX 3090. Esto se traduce en que Darknet/YOLO maneja cada cuadro de video, incluido el cambio de tamaño y el procesamiento, en solo 1 milisegundo o menos.
Únase al vibrante servidor Darknet/YOLO Discord en https://discord.gg/zSq8rtW para obtener ayuda, debates y conectarse con otros usuarios.
La versión de CPU de Darknet/YOLO puede ejecutarse en diversos dispositivos, incluidos Raspberry Pi, servidores de nube y colaboración, 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 perfectamente en Linux, Windows y Mac. Para obtener instrucciones detalladas, consulte las secciones de construcción a continuación.
Versión de la red oscura
1. Versión 0.x: Se refiere a la herramienta Darknet original desarrollada por Joseph Redmon entre 2013 y 2017, que carecía de número de versión.
2. Versión 1.x: abarca el popular repositorio Darknet mantenido por Alexey Bochkovskiy entre 2017 y 2021, también sin un número de versión oficial.
3. Versión 2.x "OAK": esta versión se introdujo en 2023, patrocinada por Hank.ai y mantenida por Stéphane Charette. Fue la primera vez que el repositorio Darknet incorporó un comando de versión.
- El objetivo era minimizar las interrupciones en la funcionalidad existente mientras se familiarizaba con el código base.
- Cambios clave incluidos:
- Sistema de compilación CMake unificado para Windows y Linux
- Conversión de código base al compilador C++
- Chart.png mejorado durante el entrenamiento
- Corrección de errores y optimizaciones de rendimiento, particularmente para reducir el tiempo de entrenamiento.
- La rama final de este código base fue la versión 2.1 en la rama v2.
4. Versión 3.x "JAZZ": esta fase de desarrollo comenzó a mediados de 2024 y se lanzó en octubre de 2024. El comando de versión ahora devuelve 3.x.
- Los cambios en esta versión incluyen:
- Eliminación de varios comandos obsoletos y no compatibles.
- Optimizaciones integrales del rendimiento tanto para entrenamiento como para inferencia.
- Modificaciones a la API C heredada, que requieren ajustes menores para las aplicaciones que utilizan la API Darknet original. La documentación actualizada para la API Darknet V3 C y C++ se puede encontrar en https://darknetcv.ai/api/api.html.
- Introducción de nuevas aplicaciones y código de muestra en el directorio src-examples, accesible en https://darknetcv.ai/api/files.html.
Nota: Por compatibilidad, siempre puede acceder a la rama v2 anterior si necesita ejecutar alguno de esos comandos específicos. Comuníquese con nosotros si encuentra algún comando faltante e investigaremos su reintegración.
Pesas preentrenadas MSCOCO
Para mayor comodidad, se han entrenado previamente varias versiones populares de YOLO en el conjunto de datos de MSCOCO. Este conjunto de datos contiene 80 clases, que se pueden ver en el archivo de texto cfg/coco.names.
Más allá de MSCOCO, puede encontrar otros pesos previamente entrenados y conjuntos de datos más simples para probar Darknet/YOLO, como LEGO Gears y Rolodex. Puede encontrar información detallada en las preguntas frecuentes de Darknet/YOLO.
Se puede acceder a los pesos previamente entrenados de MSCOCO desde varias ubicaciones, incluso dentro de este repositorio:
1. YOLOv2 (noviembre de 2016)
- yolov2-tiny.pesos
- yolov2-pesos.completos
2. YOLOv3 (mayo de 2018)
- yolov3-tiny.pesos
- yolov3-pesos.completos
3. YOLOv4 (mayo de 2020)
- yolov4-tiny.pesos
- yolov4-pesos.completos
4. YOLOv7 (agosto de 2022)
- yolov7-tiny.pesos
- yolov7-pesos.completos
Las pesas previamente entrenadas de MSCOCO se proporcionan principalmente con fines de demostración. Los archivos .cfg y .names correspondientes a MSCOCO se encuentran 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
`
Es fundamental entender que entrenar tus propias redes es la práctica recomendada. MSCOCO se utiliza principalmente para verificar el correcto funcionamiento de Darknet/YOLO.
Edificio
Los diversos métodos de compilación empleados en el pasado (antes de 2023) se han simplificado en una solución unificada. Darknet requiere C++ 17 o posterior, OpenCV y utiliza CMake para la generación de archivos de proyecto.
Recuerde, compilar, instalar y ejecutar Darknet/YOLO no requiere conocimientos de C++. Es como conducir un coche sin ser mecánico.
Tenga en cuenta: si se refiere a tutoriales más antiguos con pasos de compilación más complejos o aquellos que no se alinean con este archivo Léame, proceda con precaución. Las nuevas instrucciones de compilación que se describen a continuación se introdujeron en agosto de 2023.
Para obtener información sobre el funcionamiento interno del marco de detección de objetos Darknet/YOLO, se recomienda a los desarrolladores de software que visiten https://darknetcv.ai/.
colaboración de google
Las instrucciones de Google Colab son idénticas a las instrucciones de Linux. Hay varios cuadernos de Jupyter disponibles que demuestran cómo realizar tareas específicas, como entrenar una nueva red.
Explore los cuadernos dentro del 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
1. Instalar dependencias:
`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/darknet
cd red oscura
`
3. Crear directorio de compilación:
`golpear
mkdir buildcd construir
`
4. Configurar usando CMake:
`golpear
cmake -DCMAKEBUILDTYPE=Lanzar ..
`
5. Construya la red oscura:
`golpear
hacer -j4
`
6. Empaquetar e instalar:
`golpear
paquete
sudo dpkg -i darknet-VERSIÓN.deb
`
Opcional: Instalación de CUDA y cuDNN
Para un procesamiento acelerado de imágenes y videos, puede instalar opcionalmente CUDA o CUDA+cuDNN. Darknet aprovechará su GPU si está disponible.
1. Instale CUDA:
- Descargue e instale CUDA desde https://developer.nvidia.com/cuda-downloads.
- Asegúrese de poder ejecutar nvcc y nvidia-smi. Es posible que deba modificar su variable PATH.
2. Instale cuDNN:
- 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.
Si instala CUDA o CUDA+cuDNN después de la configuración inicial o actualiza el software NVIDIA:
1. Eliminar CMakeCache.txt:
- Elimine el archivo CMakeCache.txt de su directorio de compilación Darknet para obligar a CMake a redescubrir todas las dependencias.
2. Reconstruir Darknet:
- Repita el cmake y siga los pasos anteriores.
Nota: Estas instrucciones asumen Ubuntu 22.04, pero pueden adaptarse a otras distribuciones.
Usuarios avanzados:
Para crear un archivo de instalación RPM en lugar de un archivo DEB, modifique las líneas relevantes en CM_package.cmake. Antes de ejecutar el paquete make -j4, actualice estas dos líneas:
`cmake
ESTABLECER (CPACK_GENERATOR "DEB")
ESTABLECER (CPACK_GENERATOR "RPM")
`
Para distribuciones como Centos y OpenSUSE, ajuste las líneas a:
`cmake
ESTABLECER (CPACK_GENERATOR "DEB")
ESTABLECER (CPACK_GENERATOR "RPM")
`
Después de compilar, instale el paquete usando el administrador de paquetes de su distribución. Por ejemplo, en sistemas basados en Debian:
`golpear
sudo dpkg -i darknet-2.0.1-Linux.deb
`
Resultado de la instalación:
/usr/bin/darknet: el ejecutable estándar de Darknet. Ejecute la versión darknet para verificar la 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: Biblioteca para vincular proyectos C, C++ y Python.
/opt/darknet/cfg/...: Ubicación para todas las plantillas .cfg.
Confirmación: ejecute la versión darknet en su terminal para confirmar la instalación exitosa de Darknet.
Método CMake de Windows
Instrucciones de compilación de Windows (se supone que Windows 11 22H2)
1. Instalar dependencias:
`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:
- 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. Abra el símbolo del sistema del desarrollador:
- Abra el menú "Inicio de Windows" y seleccione "Símbolo del sistema del desarrollador para VS 2022". No utilice PowerShell para estos pasos.
4. Instale Microsoft VCPKG:
`golpear
Centros para el Control y la Prevención de Enfermedades:
mkdir c:srccd c: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
`
5. Opcional: Instalación de CUDA y cuDNN:
- Instale CUDA o CUDA+cuDNN para aceleración de GPU.
- Siga los mismos pasos que en las instrucciones de Linux.
6. Clonar Darknet y construir:
`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 errores sobre la falta de DLL CUDA o cuDNN (por ejemplo, cublas64_12.dll):
1. Copie las DLL de CUDA:
- Copie manualmente los archivos CUDA .dll al mismo directorio de salida que Darknet.exe. Por ejemplo:
`golpear
copie "C:Archivos de programaNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
2. Vuelva a ejecutar msbuild.exe:
- Ejecute nuevamente el último comando msbuild.exe para generar el paquete de instalación de NSIS.
Usuarios avanzados:
En lugar del símbolo del sistema del desarrollador, puede utilizar un símbolo del sistema normal o SSH y ejecutar "Archivos de programaMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat".
El comando cmake genera un archivo de solución de Visual Studio (Darknet.sln). Si prefiere utilizar la GUI de Visual Studio, cargue el proyecto en lugar de depender de herramientas de línea de comandos.
Confirmación: Ejecute la versión C:srcDarknetbuildsrc-cliReleasedarknet.exe para verificar la instalación.
Instalar usando el asistente NSIS:
Ejecute el asistente de instalación de NSIS que se encuentra en el directorio de compilación (por ejemplo, darknet-VERSION.exe). Esto:
- Cree un directorio 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 archivos Darknet .dll, .lib y .h para usarlos en otras aplicaciones.
- Instalar archivos de plantilla .cfg.
Confirmación: Después de la instalación, ejecute la versión C:Program FilesDarknetbindarknet.exe para confirmar que Darknet está listo.
Usando la red oscura
CLI
La siguiente es una lista parcial de los comandos admitidos por Darknet.
Además de la CLI de Darknet, considere la CLI del proyecto DarkHelp, que ofrece una CLI alternativa con funciones avanzadas que no están disponibles directamente en Darknet. Puede utilizar ambas CLI juntas.
Para la mayoría de los comandos, necesitará el archivo .weights junto con sus archivos .names y .cfg correspondientes. Puede entrenar su propia red (muy recomendable) o descargar redes previamente capacitadas disponibles gratuitamente en línea. Los 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)
Comandos CLI comunes de Darknet:
1. Obtenga ayuda:
`golpear
ayuda de la red oscura
`
2. Verificar versión:
`golpear
versión de la red oscura
`
3. 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
`
4. Coordenadas de salida:
-V2:
`golpear
prueba del detector darknet animales.datos animales.cfg animalesmejores.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
`
5. Procesamiento de 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
`
6. 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
`
7. Guardar resultados de 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
`
8. 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
`
9. Selección de GPU:
- V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animales_mejores.pesos -i 1 prueba.mp4
`
10. Evaluación de la precisión de la red:
- Calcular mapa:
`golpear
Mapa del detector de darknet conducción.datos conducción.cfg conducción_mejor.pesos...
`
- Información detallada de precisión:
`golpear
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 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,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
`
- Calcular mapa@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
- Calcular Anclas:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
11. Entrene una nueva red:
`golpear
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
Capacitación
Enlaces esenciales a las preguntas frecuentes de Darknet/YOLO:
Configurar archivos y directorios
Elegir el archivo de configuración correcto
Entrenamiento de un comando de red personalizado
Para realizar anotaciones y capacitación sin problemas, DarkMark simplifica el proceso creando automáticamente todos los archivos Darknet necesarios. Se recomienda encarecidamente utilizar DarkMark para entrenar una nueva red neuronal.
Configuración de entrenamiento manual:
1. Cree un directorio de proyectos:
- Por ejemplo, cree un directorio llamado ~/nn/animals/ para detectar animales.
2. Copie el archivo de configuración:
- Copie un archivo de configuración de Darknet adecuado como plantilla (por ejemplo, cfg/yolov4-tiny.cfg) en el directorio de su proyecto. Esto crea ~/nn/animals/animals.cfg.
3. Crea el archivo animales.names:
- Crea un archivo de texto llamado animales.nombres en el mismo directorio.
- Lista tus clases deseadas, una por línea, sin líneas en blanco ni comentarios. Por ejemplo:
`
perro
gato
pájaro
caballo
`
4. Cree el archivo animales.data:
- Crea un archivo de texto llamado animales.data. El contenido debe ser:
`
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
`
5. Crear directorio de conjunto de datos:
- Cree un directorio (por ejemplo, ~/nn/animals/dataset) para almacenar imágenes y anotaciones. Cada imagen requiere un archivo .txt correspondiente que defina sus anotaciones. El formato es específico y 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 archivos de capacitación y validación:
- Crea los archivos animalestrain.txt y animalesvalid.txt mencionados en el archivo .data. Estos archivos enumeran todas las imágenes para entrenamiento y validación, respectivamente, una imagen por línea. Las rutas pueden ser relativas o absolutas.
7. Configure el archivo .cfg:
- Abra su archivo .cfg con un editor de texto.
- Asegúrese de que el lote sea = 64.
- Ajustar las subdivisiones según las dimensiones de la red y la memoria de la GPU. Comience con subdivisiones = 1. Consulte las preguntas frecuentes de Darknet/YOLO para conocer valores alternativos.
- Establezca max_batches en 2000 * número de clases (por ejemplo, 8000 para 4 clases).
- Establezca pasos al 80% y 90% de maxbatches (por ejemplo, 6400,7200 para maxbatches=8000).
- Configure el ancho y el alto (dimensiones de la red) utilizando las pautas de las preguntas frecuentes de Darknet/YOLO.
- Reemplace clases=... con el número de clases de su archivo .names (por ejemplo, clases=4).
- Modificar filtros=... en la sección [convolucional] antes de cada sección [yolo]. Utilice la fórmula (número de clases + 5) * 3 (por ejemplo, filtros = 27 para 4 clases).
8. Comience a entrenar:
- Navegue hasta el directorio de su proyecto:
`golpear
cd ~/nn/animales/
`
- Ejecute el comando de entrenamiento:
`golpear
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
9. Monitorear el progreso:
- Los mejores pesos se guardarán como animales_mejores.pesos.
- Realice un seguimiento del progreso del entrenamiento viendo el archivo chart.png.
- Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros de entrenamiento adicionales.
10. Entrenamiento detallado:
- Para obtener resultados más detallados durante el entrenamiento, incluya el parámetro --verbose:
`golpear
detector de red oscura -map -dont_show --detallado tren animales.datos animales.cfg
`
Otras herramientas y enlaces
DarkMark: para gestionar proyectos Darknet/YOLO, anotar imágenes, verificar anotaciones y generar archivos de capacitación.
DarkHelp: proporciona una CLI alternativa sólida para Darknet, mosaico de imágenes, seguimiento de objetos en videos y una API C++ integral para aplicaciones comerciales.
Preguntas frecuentes sobre Darknet/YOLO: un recurso valioso para responder a sus preguntas.
Canal YouTube de Stéphane: numerosos tutoriales y vídeos de ejemplo.
Darknet/YOLO Discord Server: únase a la comunidad para obtener soporte y debates.
Hoja de ruta
Última actualización: 2024-10-30
Terminado:
Se reemplazó qsort() con std::sort() durante el entrenamiento (excepto en algunos casos restantes).
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.
Compatibilidad con Python habilitada.
Construyó la biblioteca Darknet.
Etiquetas de predicción reactivadas (usando código "alfabeto").
Código CUDA/GPU rehabilitado.
Se volvió a habilitar CUDNN y la mitad de 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.
CMakeLists.txt reescrito para una nueva detección de CUDA.
Se eliminó el antiguo código "alfabeto" y se eliminaron más de 700 imágenes en datos/etiquetas.
Habilitación de la construcción fuera de fuente.
Salida de número de versión mejorada.
Implementé optimizaciones de rendimiento durante el entrenamiento (en curso).
Se implementaron optimizaciones de rendimiento durante la inferencia (en curso).
Se emplea el paso por referencia cuando sea posible.
Se limpiaron archivos .hpp.
Darknet.h reescrito.
Se evitó convertir cv::Mat a void* y lo usó como un objeto C++ adecuado.
Se corrigió el uso inconsistente de la estructura de imagen interna.
Se corrigieron problemas de compilación para dispositivos Jetson basados en ARM (excepto los modelos Jetson originales no compatibles).
Los dispositivos Jetson Orin son funcionales.
Se corrigió la API de Python en V3.
Soporte mejorado de Python (buscamos desarrolladores de Python para contribuir).
Metas a corto plazo:
Reemplace printf() con std::cout (en progreso).
Revise el soporte para cámaras Zed antiguas.
Mejorar y garantizar la coherencia en el análisis de la línea de comandos (en curso).
Metas a mediano plazo:
Elimine todo el código char* y reemplácelo con std::string.
Mostrar advertencias y abordar las advertencias del compilador (en progreso).
Optimice el uso de cv::Mat en lugar de la estructura de imagen C personalizada (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 N canales (N > 3).
Continuar con la limpieza de código en curso (en progreso).
Metas a largo plazo:
Resuelva problemas de CUDA/CUDNN en todas las GPU.
Reescribe el código CUDA+cuDNN.
Explore la compatibilidad con GPU que no sean NVIDIA.
Implemente cuadros delimitadores rotados o soporte en "ángulo".
Añade puntos clave/esqueletos.
Implementar mapas de calor (en progreso).
Introducir la funcionalidad de segmentación.