entrenamiento yolov3

Referencia: https://github.com/AlexeyAB/darknet#how-to-train-tiny-yolo-to-detect-your-custom-objects

Cómo entrenar (para detectar sus objetos personalizados)

(para entrenar edad Yolo v2  yolov2-voc.cfgyolov2-tiny-voc.cfgyolo-voc.cfgyolo-voc.2.0.cfg, ...  , haga clic en el enlace )

Entrenamiento de Yolo v4 (y v3):

  1. Para entrenamiento,  cfg/yolov4-custom.cfg descargue el archivo de pesos previamente entrenado (162 MB):  yolov4.conv.137  (espejo de Google Drive  yolov4.conv.137  )

  2. Cree un archivo  yolo-obj.cfg con el mismo contenido que en  yolov4-custom.cfg (o cópielo  yolov4-custom.cfg en  yolo-obj.cfg) y:

Entonces, si  classes=1 entonces debería ser  filters=18. Si  classes=2 entonces escribe  filters=21.

(No escriba en el archivo cfg: filtros = (clases + 5) x3)

(Generalmente  filters depende del  classescoords y el número de  masks, es decir, filtros = (classes + coords + 1)*<number of mask>, donde  mask están los índices de anclas. Si  mask es ausencia, entonces filtros = (classes + coords + 1)*num)

Entonces, por ejemplo, para 2 objetos, su archivo  yolo-obj.cfg debe diferir de  yolov4-custom.cfg esas líneas en cada una de las  3  capas de [yolo]:

[convolutional]
filters=21

[region]
classes=2
  1. Cree un archivo  obj.names en el directorio  build\darknet\x64\data\, con los nombres de los objetos, cada uno en una nueva línea

  2. Cree un archivo  obj.data en el directorio  build\darknet\x64\data\, que contenga (donde  clases = número de objetos ):

classes = 2
train  = data/train.txt
valid  = data/test.txt
names = data/obj.names
backup = backup/
  1. Coloque archivos de imagen (.jpg) de sus objetos en el directorio build\darknet\x64\data\obj\

  2. Debe etiquetar cada objeto en imágenes de su conjunto de datos. Utilice este software de GUI visual para marcar cuadros delimitados de objetos y generar archivos de anotaciones para Yolo v2 y v3:  https://github.com/AlexeyAB/Yolo_mark

Se va a crear  .txt-file para cada  .jpgarchivo -imagen - en el mismo directorio y con el mismo nombre, pero con  .txt-Ampliación, y poner a archivo: Número del objeto y las coordenadas del objeto en esta imagen, para cada objeto en la nueva línea:

<object-class> <x_center> <y_center> <width> <height>

Dónde:

  • <object-class> - número de objeto entero de  0 a (classes-1)
  • <x_center> <y_center> <width> <height> - valores flotantes  relativos  al ancho y alto de la imagen, puede ser igual a (0.0 to 1.0]
  • por ejemplo:  <x> = <absolute_x> / <image_width> o <height> = <absolute_height> / <image_height>
  • atención:  <x_center> <y_center> son el centro del rectángulo (no son la esquina superior izquierda)

Por ejemplo, img1.jpg se creará para  usted que  img1.txt contiene:

1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667
  1. Cree un archivo  train.txt en el directorio  build\darknet\x64\data\, con los nombres de archivo de sus imágenes, cada nombre de archivo en una nueva línea, con la ruta relativa a  darknet.exe, por ejemplo, que contiene:
data/obj/img1.jpg
data/obj/img2.jpg
data/obj/img3.jpg
  1. Descargue pesos previamente entrenados para las capas convolucionales y colóquelos en el directorio build\darknet\x64

  2. Empiece a entrenar usando la línea de comando: darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137

    Para entrenar en Linux use el comando:  ./darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137 (solo use en  ./darknet lugar de  darknet.exe)

    • (el archivo  yolo-obj_last.weights se guardará en el  build\darknet\x64\backup\ por cada 100 iteraciones)
    • (el archivo  yolo-obj_xxxx.weights se guardará en el  build\darknet\x64\backup\ por cada 1000 iteraciones)
    • (para deshabilitar el uso de la ventana de pérdida  darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -dont_show, si entrena en una computadora sin monitor como una nube Amazon EC2)
    • (para ver el gráfico de mAP y pérdidas durante el entrenamiento en un servidor remoto sin GUI, use el comando y  darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -dont_show -mjpeg_port 8090 -map luego abra la URL  http://ip-address:8090 en el navegador Chrome / Firefox)

8.1. Para entrenar con el cálculo de mAP (precisiones medias medias) para cada 4 épocas (establecido  valid=valid.txt o  train.txt en  obj.data archivo) y ejecutar: darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -map

  1. Una vez finalizado el entrenamiento, obtenga el resultado  yolo-obj_final.weights de la ruta build\darknet\x64\backup\
  • Después de cada 100 iteraciones, puede detener y luego comenzar a entrenar desde este punto. Por ejemplo, después de 2000 iteraciones puede dejar de entrenar y luego comenzar a entrenar usando: darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

    (en el repositorio original  https://github.com/pjreddie/darknet  el archivo de pesos se guarda solo una vez cada 10 000 iteraciones  if(iterations > 1000))

  • También puede obtener resultados antes de las 45000 iteraciones.

Nota:  Si durante el entrenamiento ves  nan valores para el  avg campo (pérdida), entonces el entrenamiento sale mal, pero si  nan está en otras líneas, entonces el entrenamiento va bien.

Nota:  Si cambió width = o height = en su archivo cfg, entonces el nuevo ancho y alto debe ser divisible por 32.

Nota:  Después del entrenamiento, use este comando para la detección: darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

Nota:  si se Out of memory produce un error  , en el  .cfgarchivo debe aumentar  subdivisions=16, 32 o 64:  enlace

Cómo entrenar a tiny-yolo (para detectar sus objetos personalizados):

Realice los mismos pasos que para el modelo completo de yolo como se describe arriba. Con la excepción de:

  • Descargue el archivo con las primeras 29 capas convolucionales de yolov4-tiny:  https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.conv.29  (u obtenga este archivo de yolov4-tiny.weights archivo usando el comando: darknet.exe partial cfg/yolov4-tiny-custom.cfg yolov4-tiny.weights yolov4-tiny.conv.29 29
  • Haga su modelo personalizado  yolov4-tiny-obj.cfg basado en en  cfg/yolov4-tiny-custom.cfg lugar de yolov4.cfg
  • Empezar a entrenar: darknet.exe detector train data/obj.data yolov4-tiny-obj.cfg yolov4-tiny.conv.29

Para entrenar a Yolo en base a otros modelos ( DenseNet201-Yolo  o  ResNet50-Yolo ), puede descargar y obtener pesos pre-entrenados como se muestra en este archivo:  https://github.com/AlexeyAB/darknet/blob/master/build/ darknet / x64 / partial.cmd  Si creó su modelo personalizado que no se basa en otros modelos, entonces puede entrenarlo sin pesos previamente entrenados, luego se utilizarán pesos iniciales aleatorios.

para resumir

Además de cómo configurar archivos relacionados, la información que se puede obtener del tutorial del sitio web oficial incluye guiones de capacitación, guiones de prueba y guiones de capacitación continua.

Guión de entrenamiento:

darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137

Entrenamiento con visualización de mapa:

darknet.exe detector train data/obj.data yolo-obj.cfg yolov4.conv.137 -map

Use ctrl + c para finalizar el entrenamiento

Script de prueba (asumiendo que la prueba de entrenamiento finaliza 2000 veces):

darknet.exe detector test data/obj.data yolo-obj.cfg yolo-obj_2000.weights

(Suponiendo que el entrenamiento se detiene 2000 veces, se genera en este momento yolo-obj_2000.weights) Continuar el script de entrenamiento:

darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

 

Supongo que te gusta

Origin blog.csdn.net/juluwangriyue/article/details/109164083
Recomendado
Clasificación