Uno, obtenga el conjunto de datos
1. Si puede descargar el conjunto de datos etiquetado, puede utilizarlo directamente. Preste atención para comprobar si el formato de organización del conjunto de datos es el mismo que el formato VOC.
2. Si no tiene un conjunto de datos listo para usar, es posible que deba etiquetarlo usted mismo, lo explicaré más adelante si tengo la oportunidad. Es necesario utilizar algunas herramientas de etiquetado, como labelImg, ¡el método de uso específico puede referirse a los dos artículos siguientes! ! !
Use labelImg para etiquetar imágenes debajo de Windows
instrucciones de instalación de labelImg
2. Descarga y compila darknet (en Ubuntu)
1. Descarga y compila
git clone https://github.com/AlexeyAB/darknet
cd darknet
make
Nota: Aquí se descarga el darknet
código fuente más reciente , el artículo anterior descargó el darknet
código fuente antiguo . Sin embargo, los nuevos todavía darknet
son compatibles, por lo que si desea entrenar , también puede usar los más recientes . Sin embargo, los antiguos no son compatibles , así que preste atención a este punto. ! !yolov3
yolov4
yolov3
darknet
darknet
yolov4
2. Una vez completada la compilación, puede utilizar el siguiente comando para comprobar
./darknet
Si no hay ningún problema, se generará la siguiente información:
usage: ./darknet <function>
3. Si desea admitir GPU y OPENCV, puede modificarlo antes de compilar y cambiar Makefile
el valor del elemento que se compilará a 1, como se muestra a continuación:
3. Convierta el formato del conjunto de datos VOC al formato de datos YOLO
El artículo anterior ha explicado en detalle, Portal: datos de formato VOC configurados en formato yolo (darknet)
Otro punto es que puede VOCdevkit
ejecutar el siguiente comando en el mismo directorio de nivel después de convertir el formato :
cat 2007_train.txt 2007_val.txt > train.txt
El propósito es fusionar los datos de entrenamiento y los datos de verificación en un archivo, que se utilizan para el entrenamiento. Esto no es necesario, pero creo que otros lo hacen así, ¡emmm! ! !
Cuatro, modificación de parámetros
Las principales áreas que deben modificarse son las siguientes:
1. cfg/voc.data
Archivo : simplemente modifíquelo de acuerdo con su ruta real. La copia de seguridad se utiliza para almacenar los pesos después del entrenamiento.
2. data/voc.names
Archivo : Modifique de acuerdo con el tipo real y el nombre de categoría de su propio conjunto de datos.
3. cfg/yolov4-custom.cfg
Documentos :
-
Cambie la línea 6
batch
abatch=64
-
Cambie la séptima línea
subdivisions
asubdivisions=16
-
max_batch
Cambie la línea 20 a (el número de tipos de etiquetas de conjuntos de datos,(classes)*2000
pero no menos de 4000) -
La línea 22
steps
amax_batch
la0.8
doblez y el0.9
doblez -
Establecer las dos líneas de 8,9 a
width=416 height=416
u otros32
múltiplos
[net]
# Testing
#batch=64
#subdivisions=16
# Training
batch=64 # 显存不够的图像可以改为16,32等
subdivisions=16 # 这里需要改
width=416 #可以改为32的倍数
height=416 #可以改为32的倍数
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
learning_rate=0.001
burn_in=1000
max_batches = 4000 #改为classses*2000,但不小于4000
policy=steps
steps=3200,3600 #改为max_batch的0.8倍和0.9倍
scales=.1,.1
filters
Yclasses
parámetros; hay tres partes, la forma más rápida es buscar directamenteyolo
y luego cambiar lafilters
suma por encimaclasses
del valor real que necesita. Estos dos valores satisfacen la siguiente fórmula:
filters = 3*(5+len(classes));
classes = len(classes)
Cinco, entrenamiento
1. El yolov4.conv.137
modelo previamente entrenado descargado
Debido a que necesita navegar científicamente por Internet, aquí está el enlace al disco de red, ¡emmm! ! !
链接:https://pan.baidu.com/s/1IWyTILlHUOgBGeDUIi4HhQ
提取码:w8x4
2. Empiece a entrenar:
./darknet detector train cfg/voc.data cfg/yolov4-custom.cfg yolov4.conv.137
Seis, resumen
Si no desea usarlo, yolov4-custom.cfg
puede seleccionar la estructura de red que desea usar y luego encontrar su archivo de configuración correspondiente y los pesos de preentrenamiento . Como se muestra en la siguiente figura ( se proporciona el enlace: Portal ):
Por ejemplo, para hacer el modelo más pequeño, puede elegir yolov4-tiny.cfg
, siempre que recuerde que el archivo de peso generado después de completar el entrenamiento le corresponde yolov4-tiny
. De esta manera, cuando cargue el archivo de pesos, se cargará la reestructuración del modelo correcto también se configura yolov4-tiny
en él.
Y puede ver que yolov3
los archivos de configuración relacionados y los pesos previos al entrenamiento incluidos aquí también se pueden entrenar yolov3
, y las configuraciones relacionadas son similares.
Nota:Otro punto a tener en cuenta es que el método de procesamiento del conjunto de datos aquí es diferente del documento oficial. También puede consultar los pasos en el documento oficial:
https://github.com/AlexeyAB/darknet#how-to-train-tiny-yolo-to-detect-your-custom-objects