HmacManager
Resumen
El editor de Downcodes le ofrece HmacManager, una herramienta de autenticación HMAC para aplicaciones ASP.NET Core, que proporciona una integración perfecta y una sólida seguridad para sus aplicaciones.
Características
Autenticación HMAC: HmacManager proporciona autenticación HMAC, lo que le permite agregar una capa de autenticación segura a su API ASP.NET Core.
Configuración sencilla: con opciones de configuración simples, puede integrar rápidamente la autenticación HMAC en sus aplicaciones.
Opciones de personalización: HmacManager proporciona opciones de personalización para que puedas configurarlo según tus necesidades.
Seguridad mejorada: la autenticación HMAC mejora la seguridad de su API mediante el uso del algoritmo hash HMAC para autenticar solicitudes.
Instalación
HmacManager está disponible en NuGet.
`golpear
dotnet agregar paquete HmacManager
`
Recursos
Lectura adicional: documentación oficial
Código de muestra: repositorio de GitHub
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 avanzado de detección de objetivos en tiempo real que se ejecuta en el marco Darknet.
1. Papeles
YOLOv7: enlace de papel
Scaled-YOLOv4: enlace en papel
YOLOv4: enlace de papel
YOLOv3: enlace de papel
2. Información general
El marco Darknet/YOLO continúa superando a otros marcos y versiones de YOLO en velocidad y precisión.
El marco es completamente gratuito y de código abierto. Puede integrar Darknet/YOLO en proyectos y productos existentes, incluidos productos comerciales, sin licencias ni tarifas.
Darknet V3 ("Jazz"), lanzado en octubre de 2024, puede ejecutar con precisión videos del conjunto de datos LEGO a hasta 1000 FPS cuando se usa una GPU NVIDIA RTX 3090, lo que significa que Darknet lee, redimensiona y procesa cada cuadro de video en 1 milisegundo o menos. /YOLO en segundos.
Únase al servidor Darknet/YOLO Discord: https://discord.gg/zSq8rtW
La versión CPU de Darknet/YOLO puede ejecutarse en dispositivos simples como Raspberry Pi, servidores en la nube, servidores Colab, computadoras de escritorio, portátiles y equipos de capacitación de alta gama. La versión GPU de Darknet/YOLO requiere una GPU con soporte NVIDIA CUDA.
Se sabe que Darknet/YOLO funciona bien en Linux, Windows y Mac. Consulte las instrucciones de construcción a continuación.
3. Versión de la red oscura
Versión 0.x: la herramienta Darknet original escrita por Joseph Redmon en 2013-2017 no tiene número de versión.
Versión 1.x: el próximo repositorio popular de Darknet mantenido por Alexey Bochkovskiy entre 2017 y 2021 tampoco tiene número de versión.
Versión 2.x ("OAK"): el repositorio Darknet patrocinado por Hank.ai y mantenido por Stéphane Charette desde 2023 es el primero en tener un comando de versión. Desde 2023 hasta finales de 2024 vuelve a la versión 2.x “OAK”.
Versión 3.x (“JAZZ”): la siguiente fase de desarrollo comenzará a mediados de 2024 y se lanzará en octubre de 2024. El comando de versión ahora devuelve 3.x "JAZZ".
4. Pesas previas al entrenamiento MSCOCO
Para mayor comodidad, varias versiones populares de YOLO están previamente entrenadas en el conjunto de datos MSCOCO. Este conjunto de datos contiene 80 categorías y se puede ver en el archivo de texto cfg/coco.names.
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 desde varias ubicaciones diferentes o desde este repositorio:
* YOLOv2 (noviembre de 2016)
*YOLOv2-pequeño
*YOLOv2-completo
* YOLOv3 (mayo de 2018)
* YOLOv3-pequeño
*YOLOv3-completo
* YOLOv4 (mayo de 2020)
* YOLOv4-pequeño
*YOLOv4-completo
* YOLOv7 (agosto de 2022)
* YOLOv7-pequeño
*YOLOv7-completo
Las pesas previamente entrenadas de MSCOCO tienen fines de demostración únicamente. Los archivos .cfg y .names correspondientes se encuentran en el directorio cfg. Comando de ejemplo:
`golpear
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1. avi
`
Tenga en cuenta que uno debe entrenar su propia red. MSCOCO se utiliza a menudo para confirmar que todo está bien.
5. Construir
Se han fusionado varios métodos de construcción del pasado (anteriores a 2023) en una solución unificada. Darknet requiere C++ 17 o superior, OpenCV y usar CMake para generar los archivos de proyecto necesarios.
No es necesario saber C++ para compilar, instalar o ejecutar Darknet/YOLO, del mismo modo que no es necesario ser mecánico para conducir un automóvil.
5.1 Colaboración de Google
Las instrucciones de Google Colab son las mismas que las de Linux. Varios cuadernos de Jupyter muestran cómo realizar determinadas tareas, como entrenar una nueva red.
Consulte el cuaderno en el subdirectorio colab o siga las instrucciones de Linux a continuación.
5.2 Método CMake de Linux
Tutorial de compilación de Darknet en Linux
`golpear
sudo apt-get install build-essential git libopencv-dev cmake mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknetcd darknet mkdir buildcd build cmake -DCMAKEBUILDTYPE=Release .. make -j4 package sudo dpkg -i darknet-VERSIÓN.deb
`
5.3 Método CMake de Windows
Estas instrucciones asumen una nueva instalación de Windows 11 22H2.
`golpear
instalación de Winget Git.Git instalación de Winget Kitware.CMake instalación de Winget nsis.nsis instalación de Winget Microsoft.VisualStudio.2022.Community
`
Luego necesitamos modificar la instalación de Visual Studio para incluir soporte para aplicaciones C++:
* Haga clic en el menú Inicio de Windows y ejecute el instalador de Visual Studio.
* Haga clic en "Editar".
* Seleccione "Desarrollo de escritorio usando C++".
* Haga clic en "Editar" en la esquina inferior derecha, luego haga clic en "Sí".
Una vez descargado e instalado todo, haga clic nuevamente en el menú "Inicio de Windows" y seleccione "Símbolo del sistema del desarrollador para VS 2022". ¡No utilice PowerShell para realizar estos pasos o tendrá problemas!
Usuarios avanzados:
* Además de ejecutar el símbolo del sistema del desarrollador, también puede usar un símbolo del sistema normal o ssh en el dispositivo y ejecutar manualmente "Archivos de programa Microsoft Visual Studio2022 CommunityCommon7ToolsVsDevCmd.bat".
Una vez que siga las instrucciones anteriores y ejecute el símbolo del sistema del desarrollador (¡no PowerShell!), ejecute el siguiente comando para instalar Microsoft VCPKG, que luego se usará para compilar OpenCV:
`golpear
cd c:mkdir c:srccd c:src git clone https://github.com/microsoft/vcpkgcd vcpkg bootstrap-vcpkg.bat .vcpkg.exe integrar instalar .vcpkg.exe integrar powershell.vcpkg.exe instalar opencv[contrib, dnn,freetype,jpeg,openmp,png,webp,mundo]:x64-windows
`
Tenga paciencia con este último paso, ya que lleva mucho tiempo ejecutarlo. Requiere descargar y crear muchas cosas.
Usuarios avanzados:
* Tenga en cuenta que hay muchos otros módulos opcionales que quizás desee agregar al crear OpenCV. Ejecute .vcpkg.exe y busque opencv para ver la lista completa.
Opcional: si tiene una GPU NVIDIA moderna, puede instalar CUDA o CUDA+cuDNN en este momento. Si está instalado, Darknet utilizará su GPU para acelerar el procesamiento de imágenes (y videos).
Debe eliminar el archivo CMakeCache.txt del directorio de compilación de Darknet para obligar a CMake a volver a encontrar todos los archivos necesarios.
Recuerda reconstruir Darknet.
Darknet puede ejecutarse sin él, pero si desea entrenar una red personalizada, necesita CUDA o CUDA+cuDNN.
Visite https://developer.nvidia.com/cuda-downloads para descargar e instalar CUDA.
Visite https://developer.nvidia.com/rdp/cudnn-download o https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview para descargar e Instale cuDNN.
Después de instalar CUDA, asegúrese de poder ejecutar nvcc.exe y nvidia-smi.exe. Es posible que deba modificar la variable PATH.
Después de descargar cuDNN, descomprímalo 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 si 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.
Una vez que todos los pasos anteriores se hayan completado con éxito, deberá clonar Darknet y compilarlo. En este paso también necesitamos decirle a CMake dónde se encuentra vcpkg para que pueda encontrar OpenCV y otras dependencias:
`golpear
cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build cmake -DCMAKEBUILDTYPE=Release -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake .. msbuild. exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedSummary darknet.sln msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
Si encuentra errores sobre alguna DLL CUDA o cuDNN faltante (por ejemplo, cublas64_12.dll), copie manualmente el archivo CUDA .dll en el mismo directorio de salida que Darknet.exe. Por ejemplo:
`golpear
copie "C:Archivos de programaNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll" src-cliRelease
`
(¡Aquí hay un ejemplo! Verifique qué versión está ejecutando y ejecute el comando apropiado para la versión que ha instalado).
Después de copiar los archivos, vuelva a ejecutar el último comando msbuild.exe para generar el paquete de instalación de NSIS:
`golpear
msbuild.exe /property:Platform=x64;Configuration=Versión PACKAGE.vcxproj
`
Usuarios avanzados:
* Tenga en cuenta que la salida del comando cmake es el archivo de solución normal de Visual Studio, Darknet.sln. Si es un desarrollador de software que utiliza con frecuencia la GUI de Visual Studio en lugar de msbuild.exe para crear proyectos, puede ignorar la línea de comando y cargar el proyecto Darknet en Visual Studio.
Ahora debería tener este archivo listo para ejecutar: C:srcDarknetbuildsrc-cliReleasedarknet.exe. Ejecute el siguiente comando para probar: C:srcDarknetbuildsrc-cliReleasedarknet.exe versión.
Para instalar correctamente Darknet, bibliotecas, archivos de inclusión y DLL necesarios, ejecute el asistente de instalación de NSIS integrado en el paso anterior. Consulte 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, por ejemplo 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 otras aplicaciones.
* Instalar el archivo de plantilla .cfg.
¡Ya terminaste! Una vez completado el asistente de instalación, Darknet se instalará en C:Program FilesDarknet. Ejecute el siguiente comando para probar: C: Archivos de programa Versión Darknetbindarknet.exe.
Si no tiene C:/Program Files/darknet/bin/darknet.exe, no lo instaló, ¡simplemente lo creó! Asegúrese de explorar cada panel del Asistente de instalación de NSIS en el paso anterior.
6. Utilice la red oscura
6.1 CLI
La siguiente no es una lista completa de todos los comandos admitidos por Darknet.
Además de la CLI de Darknet, también tenga en cuenta la CLI del proyecto DarkHelp, que proporciona una alternativa a la CLI de Darknet/YOLO. DarkHelp CLI también tiene algunas mejoras que no se encuentran en Darknet. Puede utilizar la CLI de Darknet y la CLI de DarkHelp juntas; no se excluyen mutuamente.
Para la mayoría de los comandos que se muestran a continuación, necesitará un archivo .weights con los archivos .names y .cfg correspondientes. Puede entrenar la red usted mismo (¡muy recomendable!), o puede descargar redes neuronales que hayan sido entrenadas por otros y que estén disponibles gratuitamente en Internet. Ejemplos de conjuntos de datos previos al entrenamiento incluyen:
* LEGO Gears (encontrar objetos en imágenes)
* Rolodex (buscar texto en imagen)
* MSCOCO (detección de objetivos estándar de categoría 80)
Los comandos para ejecutar incluyen:
* Enumere algunos posibles comandos y opciones que se pueden ejecutar:
`golpear
ayuda de la red oscura
`
*Verificar versión:
`golpear
versión de la red oscura
`
* Utilice imágenes para la predicción:
`golpear
V2: prueba del detector de red oscura cars.data cars.cfg cars_best.weights image1.jpg
V3: darknet02displayannotatedimages cars.cfg image1.jpg
DarkHelp: DarkHelp cars.cfg cars_best.weights imagen1.jpg
`
* Coordenadas de salida:
`golpear
V2: prueba del detector de red oscura animales.datos animales.cfg animalesbest.weights -extoutput dog.jpg
V3: darknet01inference_images animales perro.jpg
DarkHelp: DarkHelp --json animales.cfg animales.nombres animales_mejores.pesos perro.jpg
`
*Usar vídeo:
`golpear
V2: demostración del detector de red oscura animales.datos animales.cfg animalesbest.weights -extoutput test.mp4
V3: darknet03display_videos animales.cfg prueba.mp4
DarkHelp: DarkHelp animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
`
* Lectura desde la cámara web:
`golpear
V2: demostración del detector de red oscura animales.data animales.cfg animales_best.weights -c 0
V3: darknet08display_webcam animales
`
* Guardar resultados en video:
`golpear
V2: demostración del detector de red oscura animales.datos animales.cfg animalesbest.pesos prueba.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
DarkHelp: DarkHelp animales.cfg animales.nombres animales_mejores.pesos prueba.mp4
`
*JSON:
`golpear
V2: demostración del detector de red oscura animales.datos animales.cfg animalesbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson animales image1.jpg
DarkHelp: DarkHelp --json animales.nombres animales.cfg animales_mejor.pesos imagen1.jpg
`
* Ejecutar en GPU específicas:
`golpear
V2: demostración del detector de red oscura animales.data animales.cfg animales_best.weights -i 1 test.mp4
`
* Verifique 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 5 0 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,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 10 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 94,1033 3449 2 17 451 4643 0,9237 0,0763 0,8844 0,9408 0,9115 0,0885
`
* Verificar precisión mAP@IoU=75:
`golpear
Mapa del detector de darknet animales.datos animales.cfg animalesbest.weights -iouthresh 0,75
`
* Es mejor volver a calcular los puntos de anclaje en DarkMark, ya que se ejecutará 100 veces seguidas y seleccionará el mejor punto de anclaje de todos los puntos de anclaje calculados. Sin embargo, si deseas ejecutar una versión anterior en Darknet:
`golpear
detector de red oscura calcanchors animales.data -numof_clusters 6 -ancho 320 -alto 256
`
* Tren nueva red:
`golpear
cd ~/nn/animals/ detector darknet -map -dont_show train animales.data animales.cfg
`
6.2 Formación
Enlaces rápidos a partes relevantes de las preguntas frecuentes de Darknet/YOLO:
* ¿Cómo debo configurar mis archivos y directorios?
* ¿Qué perfil debo utilizar?
* ¿Qué comando debo usar al entrenar mi propia red?
Cree todos los archivos Darknet necesarios utilizando DarkMark, que es la forma más sencilla de realizar anotaciones y entrenar. Esta es definitivamente la forma recomendada de entrenar nuevas redes neuronales.
Si desea configurar manualmente los distintos archivos para entrenar una red personalizada:
* Cree una nueva carpeta para almacenar los archivos. Para este ejemplo, se creará una red neuronal para detectar animales, por lo que se creará el siguiente directorio: ~/nn/animals/.
* Copie uno de los archivos de configuración de Darknet que desee utilizar como plantilla. Por ejemplo, consulte cfg/yolov4-tiny.cfg. Colóquelo en la carpeta que creó. Para este ejemplo, ahora tenemos ~/nn/animals/animals.cfg.
* Cree un archivo de texto animales.nombres en la misma carpeta donde colocó el archivo de configuración. Para este ejemplo, ahora tenemos ~/nn/animals/animals.names.
* Utilice un editor de texto para editar el archivo animales.nombres. Enumere las categorías que desea utilizar. Necesita exactamente una entrada por línea, sin líneas en blanco ni comentarios. Para este ejemplo, el archivo .names contendrá exactamente 4 líneas:
`
perro
gato
pájaro
caballo
`
* Cree un archivo de texto animales.data en la misma carpeta. Para este ejemplo, el archivo .data contendrá:
`
clases = 4
tren = /home/nombre de usuario/nn/animals/animals_train.txt
válido = /home/nombre de usuario/nn/animals/animals_valid.txt
nombres = /home/nombredeusuario/nn/animals/animals.nombres
copia de seguridad = /home/nombre de usuario/nn/animals
`
* Crea una carpeta para almacenar tus imágenes y anotaciones. Por ejemplo, esto podría ser ~/nn/animals/dataset. Cada imagen requiere un archivo .txt correspondiente que describe las anotaciones de esa imagen. El formato de los archivos de comentarios .txt es muy específico. No puede crear estos archivos manualmente porque cada anotación debe contener las coordenadas precisas de la anotación. Consulte DarkMark u otro software similar para anotar sus imágenes. El formato de anotación de YOLO se describe en las preguntas frecuentes de Darknet/YOLO.
* Cree archivos de texto "entrenables" y "válidos" nombrados en el archivo .data. Estos dos archivos de texto deben enumerar por separado todas las imágenes que Darknet debe usar para entrenar y validar al calcular el% de mAP. Exactamente una imagen por fila. Las rutas y los nombres de archivos pueden ser relativos o absolutos.
* Utilice un editor de texto para modificar su archivo .cfg.
* Asegúrese de que el lote sea = 64.
*Presta atención a las subdivisiones. Dependiendo del tamaño de la red y la cantidad de memoria disponible en la GPU, es posible que necesites aumentar las subdivisiones. El mejor valor para usar es 1, así que comience con eso. Si no puede utilizar 1, consulte las preguntas frecuentes de Darknet/YOLO.
Tenga en cuenta que maxbatches=…. Un buen valor para empezar es 2000 veces el número de categorías. Para este ejemplo tenemos 4 animales, entonces 4 2000 = 8000. Esto significa que usaremos maxbatches=8000.
* Nota pasos =..... Esto debe establecerse en 80 % y 90 % de los lotes máximos. Para este ejemplo, usaremos pasos=6400,7200 ya que maxbatches está configurado en 8000.
* Nota ancho=... y alto=..... Estas son dimensiones de la red. Las preguntas frecuentes de Darknet/YOLO explican cómo calcular el tamaño óptimo a utilizar.
* Busque todas las instancias de clases=... líneas y modifíquelas con el número de clases en el archivo .names. Para este ejemplo usaremos clases=4.
Busca instancias de todas las líneas filters=... en la sección [convolucional] antes de cada sección [yolo]. El valor a utilizar es (número de categorías + 5) 3. Esto significa que para este ejemplo, (4 + 5) * 3 = 27. Por lo tanto, usaremos filtros=27 en la línea correspondiente.
* ¡Empieza a entrenar! Ejecute el siguiente comando:
`golpear
cd ~/nn/animals/ detector darknet -map -dont_show train animales.data animales.cfg
`
* Espere por favor. Los mejores pesos se guardarán como animales_best.weights. Y puedes observar el progreso del entrenamiento viendo el archivo chart.png. Consulte las preguntas frecuentes de Darknet/YOLO para conocer parámetros adicionales que quizás desee utilizar al entrenar una nueva red.
* Si desea ver más detalles durante el entrenamiento, agregue el parámetro --verbose. Por ejemplo:
`golpear
detector de red oscura -map -dont_show --verbose train animales.data animales.cfg
`
7. Otras herramientas y enlaces
Para administrar su proyecto Darknet/YOLO, anotar imágenes, validar sus anotaciones y generar los archivos necesarios para entrenar con Darknet, consulte DarkMark.
Para obtener una potente alternativa a la CLI de Darknet, utilizar mosaicos de imágenes, seguimiento de objetos en vídeo u obtener una potente API de C++ que se pueda utilizar fácilmente en aplicaciones comerciales, consulte DarkHelp.
Consulte las preguntas frecuentes de Darknet/YOLO para obtener ayuda para responder sus preguntas.
Consulte los numerosos tutoriales y vídeos de ejemplo en el canal de YouTube de Stéphane.
Si tiene preguntas de soporte o desea chatear con otros usuarios de Darknet/YOLO, únase al servidor Darknet/YOLO Discord.
8. Hoja de ruta
Última actualización el 2024-10-30:
* Completado
* Se reemplazó qsort() con std::sort() durante el entrenamiento (aún existe algún otro código oscuro)
* Deshacerse de check_mistakes, getchar() y system()
* Convertir Darknet para usar un compilador de C++ (g++ en Linux, VisualStudio en Windows)
* Arreglar la compilación de Windows
* Arreglar el soporte de Python
* Construir biblioteca darknet
* Volver a habilitar etiquetas en predicciones (código "alfabeto")
* Volver a habilitar el código CUDA/GPU
* Vuelva a habilitar CUDNN
* Vuelva a habilitar la mitad CUDNN
* No codifique la arquitectura CUDA
* Mejor información de la versión CUDA
* Vuelva a habilitar AVX
* Eliminar solución antigua y Makefile
* Hacer que OpenCV no sea opcional
* Eliminar la dependencia de la antigua biblioteca pthread
* Eliminar STB
* Reescribe CMakeLists.txt para usar la nueva detección CUDA
* Se eliminó el antiguo código "alfabeto" y se eliminaron más de 700 imágenes en datos/etiquetas.
*Construir código fuente externo
* Tiene una mejor salida del número de versión
* Optimización del rendimiento relacionado con la formación (tarea continua)
* Optimización del rendimiento relacionado con la inferencia (tarea en curso)
* Utilice referencias de paso por valor siempre que sea posible
* Limpiar archivos .hpp
* Reescribe darknet.h
No envíe cv::Mat a void, utilícelo como un objeto C++ adecuado
* Arreglar o mantener el uso consistente de estructuras de imágenes internas.
* Se corrigió la construcción del dispositivo Jetson con arquitectura ARM.
*Es poco probable que los dispositivos Jetson originales se reparen ya que NVIDIA ya no los admite (sin compilador C++17).
* Nuevo dispositivo Jetson Orin ahora funcionando
* Arreglar la API de Python en V3
* Necesita una mejor compatibilidad con Python (¿algún desarrollador de Python quiere ayudar?)
*Metas a corto plazo
* Reemplazar printf() con std::cout (trabajo en progreso)
* Consulte el soporte de la antigua cámara Zed
* Análisis de línea de comando mejor y más consistente (trabajo en progreso)
*Metas a medio plazo
Elimine todos los códigos de caracteres y reemplácelos con std::string
* No ocultar advertencias y limpiar las advertencias del compilador (trabajo en progreso)
* Mejor uso de cv::Mat en lugar de estructuras de imágenes personalizadas en C (trabajo en progreso)
* Reemplace la funcionalidad de lista anterior con std::vector o std::list
* Se corrigió el soporte para imágenes en escala de grises de 1 canal.
* Agregue soporte para imágenes de N canales donde N > 3 (por ejemplo, imágenes con profundidad adicional o canales activos)
* Limpieza continua de código (en progreso)
*Metas a largo plazo
* Solucionar problemas de CUDA/CUDNN en todas las GPU
* Reescribir el código CUDA+cuDNN
* Considere agregar soporte para GPU que no sean NVIDIA
* Cuadro delimitador girado o alguna forma de soporte de "ángulo"
*Puntos clave/esqueleto
* Mapa de calor (trabajo en progreso)
* Dividir