YOLOv4-pytorch entrena su propio conjunto de datos

Introducción a YOLOv4-pytorch

Dirección de Github: argusswift/YOLOv4-pytorch: https://github.com/argusswift/YOLOv4-pytorch
Esta es una reproducción de la versión PyTorch basada en la estructura YOLOv4 de darknet, y también proporciona módulos útiles como Mobilenetv3-YOLOv4, atento YOLOv4, etc. Fácil de operar y fácil de leer.

Configuración del entorno

entorno operativo

  • NvidaGeForce RTX 2080TI
  • CUDA10.0
  • CUDNN7.0
  • ventanas o linux
  • pitón 3.6

Instalar dependencias

pip3 install -r requirements.txt --user

Preparación

Clona Git YOLOv4

git clone github.com/argusswift/YOLOv4-pytorch.git

Preparar conjunto de datos

El modelo proporciona tres formatos de datos compatibles (PASCAL VOC, COCO, Customer).

Descargue el conjunto de datos de PascalVOC/MSCOCO 2017

PascalVOC:VOC 2012_trainvalVOC 2007_trainvalVOC2007_test
MSCOCO 2017:train2017_imgtrain2017_annval2017_imgval2017_anntest2017_imgtest2017_list

  1. Coloque el conjunto de datos en el directorio y actualice " DATA_PATH " en config/ yolov4_config.py a la ubicación del conjunto de datos;
  2. (Para el conjunto de datos COCO) Use utils/ coco_to_voc.py para convertir el tipo de datos COCO al tipo de datos VOC;
  3. Use utils/ voc.py para convertir el formato *.xml de PascalVOC a formato *.txt o utils/coco.py para convertir el formato *.json de COCO a formato *.txt (Image_path xmin0, ymin0, xmax0, ymax0, class0 xmin1 ,ymin1 ,xmáx1,ymáx1,clase1...).

Prepara tu propio conjunto de datos

Cree su propio conjunto de datos similar al tipo PascalVOC:

- VOC
	- JPEGImage #原图片文件
	- Annotations #标注*.xml文件
	- ImageSets
		 - Main #训练、测试集
			 - train.txt
			 - test.txt
  1. Coloque la imagen en la carpeta JPEGImage y coloque el archivo de anotaciones en la carpeta Anotaciones ;
  2. Use utils/ xml_to_txt.py para escribir el conjunto de entrenamiento y el conjunto de prueba en ImageSets/Main/*.txt ;
  3. Use utils/ voc.py para convertir el formato *.xml de PascalVOC a formato *.txt o utils/coco.py para convertir el formato *.json de COCO a formato *.txt (Image_path xmin0, ymin0, xmax0, ymax0, class0 xmin1 ,ymin1 ,xmax1,ymax1,clase1...);
  4. Modifique el NÚMERO y las CLASES de Customer_DATA en config/ yolov4_config.py .
Customer_DATA = {
    
    
    "NUM": 2,  # your dataset number
    "CLASSES": [
        "name",
        "flag"
    ],  # your dataset class
}

Descarga el archivo de pesos

  1. Peso pre-entrenamiento Darknet: YOLOv4 ;
  2. Pesos de preentrenamiento de Mobilenet: mobilenetv2 , mobilenetv3 (contraseña de descompresión: args);
  3. Cree una nueva carpeta peso/, coloque el archivo de peso en ella;
  4. Modifique MODEL_TYPE en config/ yolov4_config.py .
MODEL_TYPE = {
    
    
    "TYPE": "YOLOv4"
}  # YOLO type:YOLOv4, Mobilenet-YOLOv4 or Mobilenetv3-YOLOv4

tren

Modifique los parámetros en config/yolov4_config.py:

TRAIN = {
    
    
    "DATA_TYPE": "Customer",  # DATA_TYPE: VOC ,COCO or Customer
    "TRAIN_IMG_SIZE": 416,
    "AUGMENT": True,
    "BATCH_SIZE": 8,
    "MULTI_SCALE_TRAIN": False,
    "IOU_THRESHOLD_LOSS": 0.5,
    "YOLO_EPOCHS": 4000,
    "Mobilenet_YOLO_EPOCHS": 120,
    "NUMBER_WORKERS": 0,
    "MOMENTUM": 0.9,
    "WEIGHT_DECAY": 0.0005,
    "LR_INIT": 1e-4,
    "LR_END": 1e-6,
    "WARMUP_EPOCHS": 2,  # or None
}

Instrucciones de entrenamiento:

python -u train.py  --weight_path weight/yolov4.weights --gpu_id 0

o (nohup)

CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/yolov4.weights --gpu_id 0 > nohup.log 2>&1 &

o (con --resume, llamando automáticamente a last.pt)

CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/last.pt --gpu_id 0 > nohup.log 2>&1 &

prueba

prueba de imagen

for VOC dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det
for COCO dataset:
CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det

prueba de vídeo

CUDA_VISIBLE_DEVICES=0 python3 video_test.py --weight_path best.pt --gpu_id 0 --video_path video.mp4 --output_dir --output_dir

problemas encontrados

  1. evaluación.py no puede encontrar el archivo de anotación *.xml
FileNotFoundError: [Errno 2] No such file or directory: '/home/my/YOLOv4-pytorch/data/VOC/Annotations\\18_3_dets0.xml'

报错原因:路径地址不正确
解决方法:
1.检查yolov4_config.py中DATA_PATH地址是否正确
2.evaluater.py,221 改为 self.val_data_path, "Annotations/" + "{:s}.xml"

Referencias:
[1]: https://github.com/argusswift/YOLOv4-pytorch

Supongo que te gusta

Origin blog.csdn.net/lucifer479/article/details/111313208
Recomendado
Clasificación