YOLO detecta varias hojas de papel y guarda la información de las etiquetas.
La versión modificada del código fuente se ha subido a github:/bichenghu/yolo.
Hay dos formas de probar imágenes en YOLO.
Los comandos que no especifican una ruta de salida generarán predicciones.jpg en el directorio darknet/; al especificar una ruta de salida, solo necesita ingresar el prefijo y el resultado se especificará con un .jpg. sufijo.
De hecho, la prueba de una sola imagen también se puede completar de la siguiente manera general:
Si el comando general anterior no especifica una ruta de salida, la prueba de varias imágenes puede implementarse. La prueba de imágenes múltiples escrita por el autor consiste en probar repetidamente la ruta de la imagen de entrada después de cargar el modelo. Este enfoque parece poco práctico. Generalmente, necesitamos probar todas las imágenes en una carpeta y guardar la información de su etiqueta, lo que debe lograrse modificando el código fuente. Los archivos que se modificarán incluyen principalmente /dark net .h src/image c ejemplos/detector c ejemplos/dark net c.
La entrada a toda la detección es: ejemplos/darknet.c. Su función principal es juzgar los parámetros y seleccionar la función correspondiente. Para el parámetro de detección, saltará directamente a la función test_detector en detector.c. La función test_detector se define de la siguiente manera:
ln437 en darknet.c, donde char *filename = (argc > 4)? argv[4]:0; Muestra que cuando hay más de cuatro parámetros, el quinto parámetro es el nombre del archivo de ruta de la imagen de prueba de forma predeterminada. Obviamente, no podemos detectar las imágenes en la carpeta, por lo que agregamos un identificador de entrada - entrada en el nombre del archivo, para que podamos agregar los parámetros idir de la ruta de entrada y odir de la ruta de salida más adelante (la ruta de salida se define como la imagen de almacenamiento y la ruta a la etiqueta).
Detector.c modifica principalmente la función test_detector, donde la función draw_detections_person se modifica a partir de la función draw_detections. La función draw_detections se define en src/image.c y se utiliza para el procesamiento de fotogramas de cada imagen. Aquí solo necesito información de peatones, por lo que para la función draw_detections_person, necesito usar la información de la ruta de la imagen y generar la ruta de la carpeta. Para una sola imagen, la información de la ruta de la imagen es el nombre del archivo anterior. Para varias imágenes, la información de la ruta de la imagen es la carpeta de entrada más el nombre de la imagen atravesada en la carpeta, por lo que la función test_detector modificada necesita agregar dos parámetros, idir y odir. .
Image.c modificó principalmente la función draw_detections_person para enmarcar la imagen y guardar la información de la etiqueta.
Agregue la definición de función draw_detections_person:
Para una sola imagen, puede usar el siguiente comando:
Para varias imágenes en una carpeta, puede usar lo siguiente Comando:
Por supuesto, las carpetas de imágenes y etiquetas deben estar prediseñadas en el directorio de resultados.