Use yolov3 para entrenar su propio conjunto de datos (c ++ vs2017 win10)

Referencia: https://blog.csdn.net/la_fe_/article/details/81564420

https://blog.csdn.net/qq_31442743/article/details/81087346

Si continúa entrenando el conjunto de datos sobre la base de los existentes, consulte: https://mp.csdn.net/postedit/102964648

1. Prepare el conjunto de datos , la imagen de entrenamiento, la imagen de verificación y su correspondiente archivo txt de nombre de ruta

A diferencia de rapid-rcnn, yolo también necesita varios archivos txt para ejecutar este script voc_label2.py para generar (ver el blog de referencia superior)

Reemplace \ en las rutas en estas tres carpetas con /

D: \ software_engineer \ darknet \ darknet \ scripts \ VOCdevkit \ VOC2007 \ labels también se generaránEsta carpeta

voc_label2.py:

 

2. Prepare los archivos de configuración, necesita 3 archivos de configuración

1.voc.data (el número de categorías, la ruta de los dos txt en el paso 1, la ruta del nombre de la clase y la ubicación del archivo de capacitación)

2.voc.name

3.yolov3.cfg

El lote anterior y las subdivisiones comentaron bajo prueba durante el entrenamiento, y comentaron bajo entrenamiento durante la prueba

Algunos parámetros deben cambiarse aquí:

 [convolucional] 

tamaño = 1 

zancada = 1 

pad = 1 

filtros = 30 // Modificar el número de parámetros del núcleo de la última capa convolucional Hay tres capas convolucionales sobre cada capa yolo

               // La fórmula de cálculo sigue siendo el número de categorías de su propio filtro de datos = num × (clases + coordenadas + 1) = 5 × (1 + 4 + 1) = 30 

// En la versión YOLOv3 , filter = 3 × (classes + coords + 1) = 3 × (1 + 4 + 1) = 18, es decir, 3 * (número de categorías + 5)

activación = lineal 

[región] 

Anclas = 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 

bias_match = 1 

classes = 1 // Número de clases , en este caso 1 clase 

coords=4 

num = 5 

softmax = 1 

jitter = .2 

rescore = 1 

object_scale = 5 

noobject_scale = 1 

class_scale = 1 

coord_scale = 1 

absoluto = 1 

trillar = .6 

aleatorio = 1

2. Entrenamiento

Ejecutar en D: \ ingeniero_software \ darknet \ darknet \ build \ darknet \ x64

./darknet detector train D: /software_engineer/darknet/darknet/cfg/voc.data D: /software_engineer/darknet/darknet/cfg/yolov3.cfg

Si hay un modelo previamente entrenado, colóquelo en la misma carpeta que darknet.exe y agregue el nombre del modelo previamente entrenado al final de la instrucción, por ejemplo: darknet53.conv.74,

Si desea entrenar sobre una base existente, no puede agregar directamente el nombre del archivo entrenado al final. Debe ejecutar la siguiente oración para hacer un ajuste fino y cambiar yolov3_last.weights a yolov3_last.conv.23. mostrar)

./darknet parcial cfg / darknet19_448.cfg yolov3_last.weights yolov3_last.conv.23 23

A continuación, ejecute el curso de formación./darknet detector D: /software_engineer/darknet/darknet/cfg/voc.data D: /software_engineer/darknet/darknet/cfg/yolov3.cfg yolov3_last.conv.23

3 Prueba (cambie el archivo yolov3.cfg antes de probar)

(1) Prueba de imagen única

./darknet detector test D: /software_engineer/darknet/darknet/cfg/voc.data D: /software_engineer/darknet/darknet/cfg/yolov3.cfg D: /software_engineer/darknet/darknet/backup/yolov3_last.weights -wei -thresh 0.5 D: / work_place / door lock project / Counting Project Deep Learning Target Recognition / VOCdevkit / VOC2007 / JPEGImages / 00089.jpg

yolov3_last.weights es un archivo entrenado. En la copia de seguridad, si no desea perder su ruta, puede copiarlo en la misma carpeta que darknet.exe

(2) Cambie el parámetro de prueba a válido y luego elimine el nombre de la imagen (es decir, la ruta es la ruta de la carpeta del conjunto de imágenes). Puede probar por lotes los datos en el conjunto de prueba y guardarlos en la carpeta de resultados. Está en formato txt y no es intuitivo. Esta prueba por lotes solo ejecuta el conjunto de prueba.

(3) Cambie los parámetros de prueba de video a demo

./darknet detector demo data / coco.data cfg / yolov3.cfg yolov3.weights video_003.avi

Problemas encontrados:

1. Error al probar yolov3: error de cuda: darknet sin memoria: ./src/cuda.c:36: check_error: Error de aserción '0'.

Repentinamente informé este error cuando entrené 800 veces, pero afortunadamente, ya ha comenzado a converger en este momento, y los resultados del entrenamiento pueden usarse

2. Después de ajustar el tamaño del lote a 64, la velocidad de entrenamiento es súper lenta y el tamaño del conjunto de datos no parece tener una gran relación. El entrenamiento de decenas de miles de conjuntos de datos voc2007 es aproximadamente la misma velocidad que mis propios 200 conjuntos de datos. Debería ser un problema de rendimiento de la tarjeta gráfica.

Publicado 59 artículos originales · Me gusta46 · Visitas 30,000+

Supongo que te gusta

Origin blog.csdn.net/sinat_41852207/article/details/103026284
Recomendado
Clasificación