Repositorio principal de Data.gov
Este es el repositorio principal de la plataforma Data.gov. Se utiliza principalmente para realizar un seguimiento del trabajo del equipo, pero también para albergar código de todo el gobierno de datos (plantillas de GitHub Actions, salida, etc.).
Si busca documentación para entornos cloud.gov, consulte los repositorios de aplicaciones.
Acciones y plantillas de GitHub
Se han refactorizado varias acciones de GitHub para usar plantillas en este repositorio. Puede encontrar estas plantillas aquí y ejemplos de cómo invocarlas en Inventario y Catálogo.
Marco de detección de objetos Darknet y YOLO
Darknet es un marco de red neuronal de código abierto creado con C, C++ y CUDA.
YOLO (You Only Look Once) es un sistema de detección de objetos en tiempo real de vanguardia que opera dentro del marco Darknet.
Lea cómo Hank.ai apoya a la comunidad Darknet/YOLO.
Descubra el sitio web Darknet/YOLO.
Explora las preguntas frecuentes sobre Darknet/YOLO.
Únase al servidor Darknet/YOLO Discord.
Papeles
1. Documento YOLOv7 (enlace al artículo)
2. Documento Scaled-YOLOv4 (enlace al artículo)
3. Documento YOLOv4 (enlace al artículo)
4. Documento YOLOv3 (enlace al artículo)
Información general
El marco Darknet/YOLO sigue siendo más rápido y preciso que otros marcos y versiones de YOLO. Es completamente gratuito y de código abierto, lo que le permite incorporar Darknet/YOLO en sus proyectos y productos sin restricciones de licencia ni tarifas.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, puede procesar los vídeos del conjunto de datos de LEGO a hasta 1000 FPS utilizando una GPU NVIDIA RTX 3090. Esto significa que cada fotograma de vídeo se procesa en menos de 1 milisegundo.
Únase al servidor Darknet/YOLO Discord para obtener ayuda y debate: https://discord.gg/zSq8rtW
La versión de CPU de Darknet/YOLO puede ejecutarse en varios dispositivos, incluidos Raspberry Pi, servidores en la nube y de colaboración, computadoras de escritorio, portátiles y equipos de entrenamiento de alta gama. La versión GPU requiere una GPU NVIDIA compatible con CUDA.
Se sabe que Darknet/YOLO funciona en Linux, Windows y Mac. Las instrucciones de construcción se proporcionan a continuación.
Versión de la red oscura
Versión 0.x: la herramienta Darknet original creada por Joseph Redmon entre 2013 y 2017.
Versión 1.x: el popular repositorio Darknet mantenido por Alexey Bochkovskiy entre 2017 y 2021.
Versión 2.x ("OAK"): el repositorio Darknet patrocinado por Hank.ai y mantenido por Stéphane Charette a partir de 2023. Esta versión introdujo un comando de versión.
Versión 2.1: la última rama del código base de la versión 2, disponible en la rama v2.
Versión 3.x ("JAZZ"): la última fase de desarrollo lanzada en octubre de 2024.
Cambios clave en la versión 3.x:
1. Se eliminaron muchos comandos antiguos y no mantenidos.
2. Optimizaciones significativas del rendimiento tanto para el entrenamiento como para la inferencia.
3. API C heredada modificada; Las aplicaciones que utilizan la API Darknet original pueden requerir ajustes menores.
4. Se presentó la 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
Varias versiones populares de YOLO están previamente entrenadas en el conjunto de datos MSCOCO para mayor comodidad. Este conjunto de datos contiene 80 clases, enumeradas en el archivo de texto cfg/coco.names.
Otros conjuntos de datos más simples y pesos previamente entrenados, como LEGO Gears y Rolodex, están disponibles para probar Darknet/YOLO. Consulte las preguntas frecuentes de Darknet/YOLO para obtener más detalles.
Puede descargar pesas previamente entrenadas de MSCOCO desde varias ubicaciones, incluido este repositorio:
YOLOv2 (noviembre de 2016)
YOLOv2-diminuto
YOLOv2-completo
YOLOv3 (mayo de 2018)
YOLOv3-diminuto
YOLOv3-completo
YOLOv4 (mayo de 2020)
YOLOv4-diminuto
YOLOv4-completo
YOLOv7 (agosto de 2022)
YOLOv7-diminuto
YOLOv7-completo
Comandos de ejemplo:
`
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.nombres yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.nombres yolov4-tiny.cfg yolov4-tiny.pesos video1.avi
`
Recuerda que te animamos a formar tus propias redes. MSCOCO se utiliza principalmente para confirmar que todo funciona correctamente.
Edificio
Los métodos de compilación disponibles antes de 2023 se han combinado en una solución única y unificada. Darknet requiere C++ 17 o posterior, OpenCV, y usa CMake para generar archivos de proyecto.
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 idénticas a las instrucciones de Linux. Varios cuadernos de Jupyter que demuestran tareas como entrenar una nueva red están disponibles en el subdirectorio colab. También puede seguir las instrucciones de Linux a continuación.
Método CMake de Linux
1. Opcional: si tiene una GPU NVIDIA moderna, instale CUDA o CUDA+cuDNN. Darknet utilizará su GPU para un procesamiento de imágenes y videos más rápido.
2. Elimine el archivo CMakeCache.txt de su directorio de compilación Darknet para obligar a CMake a volver a encontrar todos los archivos necesarios.
3. Reconstruir Darknet.
4. Instale CUDA (opcional): visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
5. Instale cuDNN (opcional): 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 instalar cuDNN.
6. Verifique la instalación de CUDA: asegúrese de poder ejecutar nvcc y nvidia-smi. Es posible que necesites modificar tu variable PATH.
7. Instale dependencias y clone Darknet:
`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
compilación mkdir
compilación de cd
`
8. Configure CMake:
`golpear
cmake -DCMAKEBUILDTYPE=Lanzar ..
`
9. Construya la red oscura:
`golpear
hacer el paquete -j4
`
10. Instale Darknet:
`golpear
sudo dpkg -i darknet-VERSIÓN.deb
`
11. Instalación de prueba:
`golpear
versión de la red oscura
`
Notas adicionales:
Si está utilizando una versión anterior de CMake, actualícela antes de ejecutar el comando cmake:
`golpear
sudo apt-get purga cmake
sudo snap instalar cmake --classic
`
Reinicie su shell si usa bash, o fish debería actualizar automáticamente la ruta.
Para crear un archivo de instalación RPM en lugar de un archivo DEB, modifique el archivo CM_package.cmake.
Una vez creado el paquete de instalación, utilice el administrador de paquetes de su distribución para instalarlo (por ejemplo, sudo dpkg -i darknet-2.0.1-Linux.deb en sistemas basados en Debian).
Método CMake de Windows
1. Instale las herramientas necesarias:
`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 "Instalador de Visual Studio".
- 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 para VS 2022: no use PowerShell.
4. Instale Microsoft VCPKG:
`golpear
cd c:mkdir c:srccd c:src
clon de git https://github.com/microsoft/vcpkgcd vcpkg
arranque-vcpkg.bat
.vcpkg.exe integrar
instalar .vcpkg.exe integrar powershell.vcpkg.exe instalar opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
5. Opcional: Instale CUDA o CUDA+cuDNN (como en las instrucciones de Linux).
6. Elimine CMakeCache.txt (como en las instrucciones de Linux).
7. Reconstruya Darknet (como en las instrucciones de Linux).
8. Instale CUDA (opcional): visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
9. Instale cuDNN (opcional): 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.
10. Verifique la instalación de CUDA: asegúrese de poder ejecutar nvcc.exe. Es posible que necesites modificar tu variable PATH.
11. Descomprima y copie los archivos cuDNN: una vez descargados, 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.
12. Clona Darknet y construye:
`golpear
cdc:src
clon de git https://github.com/hank-ai/darknet.gitcd darknet
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
`
13. Copie las DLL de CUDA (opcional): si encuentra errores sobre la falta de DLL de CUDA o cuDNN (por ejemplo, cublas64_12.dll), copie manualmente las DLL de CUDA al directorio de salida de Darknet.exe:
`golpear
copie "C:Archivos de programaNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(Asegúrese de reemplazar el número de versión con el que está utilizando).
14. Vuelva a ejecutar el comando msbuild.exe para generar el paquete de instalación de NSIS:
`golpear
msbuild.exe /property:Platform=x64;Configuration=Versión PACKAGE.vcxproj
`
15. Instalación de prueba:
`golpear
C:srcDarknetbuildsrc-cliReleasedarknet.exe versión
`
16. Ejecute el asistente de instalación de NSIS: esto instalará la aplicación CLI, las DLL necesarias, las bibliotecas, los archivos de inclusión y los archivos de configuración de plantilla.
Notas adicionales:
El comando cmake genera un archivo de solución de Visual Studio (Darknet.sln). Puede utilizar la GUI de Visual Studio para compilar el proyecto en lugar de msbuild.exe.
El paquete de instalación de NSIS (por ejemplo, darknet-VERSION.exe) se puede encontrar en el directorio de compilación.
Usando la red oscura
CLI
La siguiente no es una lista exhaustiva de todos los comandos de Darknet.
Ayuda de darknet: muestra información de ayuda.
Versión darknet: comprueba la versión de Darknet.
Comandos de predicción:
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
`
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
`
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
`
Especificar GPU:
V2:
`golpear
Demostración del detector darknet animales.datos animales.cfg animales_mejores.pesos -i 1 prueba.mp4
`
Cálculo de precisión:
mapa:
`golpear
Mapa del detector de darknet conducción.datos conducción.cfg conducción_mejor.pesos...
`
mapa@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
Recalcular anclajes:
DarkMark (recomendado): utilice DarkMark para ejecutar 100 cálculos consecutivos y seleccionar los mejores anclajes.
Red oscura:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
Entrene una nueva red:
Uso de DarkMark (recomendado): utilice DarkMark para crear todos los archivos necesarios para la capacitación.
Configuración manual:
1. Cree una nueva carpeta para su proyecto (por ejemplo, ~/nn/animals/).
2. Copie un archivo de configuración como plantilla (por ejemplo, cfg/yolov4-tiny.cfg) en la carpeta.
3. Cree un archivo de texto animales.nombres con los nombres de sus clases, uno por línea.
4. Cree un archivo de texto animales.data con el siguiente formato:
`
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. Cree una carpeta para imágenes y anotaciones (por ejemplo, ~/nn/animals/dataset).
6. Anote sus imágenes y genere los archivos de anotación .txt correspondientes utilizando DarkMark o software similar.
7. Cree archivos animalestrain.txt y animalesvalid.txt, enumerando imágenes para entrenamiento y validación respectivamente, una por línea.
8. Modifique el archivo de configuración:
- Establecer lote = 64.
- Ajustar las subdivisiones según sea necesario.
- Establecer max_batches=8000 (o 2000 x número de clases).
- Establecer pasos=6400,7200 (80% y 90% de max_batches).
- Establezca el ancho y el alto según las dimensiones de su red.
- Actualice las clases con la cantidad de clases en su archivo .names.
- Actualizar filtros en cada sección [convolucional] antes de las secciones [yolo]: (número de clases + 5) * 3.
9. Empieza a entrenar:
`golpear
cd ~/nn/animales/
detector de red oscura -mapa -dont_show entrenar animales.datos animales.cfg
`
Consejos de capacitación adicionales:
Utilice el parámetro --verbose para obtener información de entrenamiento más detallada:
`golpear
detector de red oscura -map -dont_show --verbose train animales.data animales.cfg
`
Otras herramientas y enlaces
DarkMark: administre proyectos Darknet/YOLO, anote imágenes, verifique anotaciones y genere archivos de capacitación.
DarkHelp: CLI alternativa robusta a Darknet, soporte para mosaico de imágenes, seguimiento de objetos y una API C++ para aplicaciones comerciales.
Preguntas frecuentes sobre Darknet/YOLO: recurso completo para respuestas a preguntas comunes.
Canal de YouTube de Stéphane: tutoriales y vídeos de ejemplo sobre Darknet/YOLO.
Servidor Darknet/YOLO Discord: foro comunitario de soporte y discusión.
Hoja de ruta
Tareas completadas:
Se reemplazó qsort() con std::sort() para mejorar la eficiencia.
Se eliminaron funciones obsoletas como check_mistakes, getchar() y system().
Se convirtió Darknet para usar el compilador C++ (g++ en Linux, VisualStudio en Windows).
Se solucionaron problemas de compilación de Windows.
Soporte de Python restaurado.
Construyó la biblioteca Darknet.
Etiquetas de predicción reactivadas (código alfabético).
Se volvió a habilitar la compatibilidad con CUDA/GPU, CUDNN y CUDNN.
Se eliminó la arquitectura CUDA codificada.
Información de versión CUDA mejorada.
Soporte AVX rehabilitado.
Se eliminaron soluciones antiguas y Makefile.
Hizo de OpenCV una dependencia no opcional.
Se eliminó la dependencia de la antigua biblioteca pthread.
Se eliminó la dependencia de STB.
Reescribió CMakeLists.txt para usar la nueva detección CUDA.
Se eliminó el código alfabético antiguo y se eliminaron imágenes innecesarias.
Compilaciones fuera de fuente habilitadas.
Salida de número de versión mejorada.
Rendimiento optimizado de entrenamiento e inferencia.
Se implementó el paso por referencia cuando corresponda.
Se limpiaron archivos .hpp.
Reescribió darknet.h.
Se utilizó cv::Mat como un objeto C++ adecuado en lugar de convertirlo en void*.
Se corrigieron inconsistencias en el uso de la estructura de imagen interna.
Se corrigieron problemas de compilación para dispositivos Jetson basados en ARM (excepto los modelos más antiguos no compatibles).
Se corrigió la API de Python en la versión 3.
Metas a corto plazo:
Reemplace printf() con std::cout.
Investigar el soporte para cámaras Zed más antiguas.
Mejorar y estandarizar el análisis de la línea de comandos.
Metas a mediano plazo:
Elimine todo el código char* y reemplácelo con std::string.
Elimine las advertencias del compilador y garantice un estilo de código coherente.
Mejore el uso de cv::Mat sobre la estructura de imagen C personalizada.
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 canal N (por ejemplo, con profundidad adicional o canales térmicos).
Limpieza de código continua.
Metas a largo plazo:
Solucione los problemas de CUDA/CUDNN en todas las GPU.
Vuelva a escribir el código CUDA+cuDNN.
Explore la compatibilidad con GPU que no sean NVIDIA.
Implemente cuadros delimitadores rotados o soporte en "ángulo".
Agregue puntos clave/esqueletos, mapas de calor y soporte de segmentación.