在Linux服务器上用yolov7训练自己的数据集

前言

yolov7截至笔者写博客之前,已经出来了一段时间,网上也已经有很多博客来讲述其论文创新之处和yolov7的网络结构,这里就不赘述了,这篇博客主要写如何用yolov7训练自己的数据集。

环境搭建

首先从yolov7官网[https://github.com/WongKinYiu/yolov7]下载全部工程代码,然后在服务器上创建一个conda虚拟环境,我这里用的是python3.7的版本

	```
	conda create -n yolo7 python=3.7
	```

然后激活虚拟环境,再进入到yolov7-main文件夹下,运行以下命令

	```
	pip install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
	```

这里用到了清华大学的源来安装python的相应的依赖库,速度会快很多
安装过程如果没有出错,这个环境就可以直接用了,如果安装过程中某个包安装报错,重新用pip安装一下这个包就行了

最后可以运行模型训练的命令,如果没有报错,则说明环境完全搭建好了

	```
	python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml
	```

修改配置文件

在环境搭建好的基础上,用自己的数据集训练,主要是将自己的数据集标注好之后,转成coco的数据格式(网上教程很多,这里也不赘述了)。在准备好数据基础上,只需要对几个配置文件进行修改就可以正常训练起来了,我这里使用的是和官方一样的coco数据集,如果是自己的数据集,就要注意以下几个地方的修改:
(1)cfg/training/yolov7.yaml中,类别的数量需要进行修改

	```
	# parameters
	nc: 80  # number of classes  ##类别的数量需要进行修改
	depth_multiple: 1.0  # model depth multiple
	width_multiple: 1.0  # layer channel multiple
	```

(2)data/coco.yaml 中,需要修改读取的数据的相关信息

	```	
# download command/URL (optional)
#download: bash ./scripts/get_coco.sh

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: /data/benchmark/COCO2017/coco/train2017.txt  # 118287 images ## 需要修改
val: /data/benchmark/COCO2017/coco/val2017.txt  # 5000 images  ## 需要修改
test: /data/benchmark/COCO2017/coco/test-dev2017.txt  #    ## 需要修改

# number of classes
nc: 80    #需要修改

# class names 
names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
     'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
     'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
     'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
     'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
     'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
     'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
     'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
     'hair drier', 'toothbrush' ]   ##需要修改
	```

最后

修改完以上相关的内容,就可以直接运行模型训练的命令,将模型训练起来了

笔者在单卡V100 batchsize 设置为32训练yolov7总共300个epoch,花费时间大约为2周左右,最后在训练集上的三个loss的变化情况如下:
在Linux服务器上用yolov7训练自己的数据集_第1张图片
box_loss大概在0.026左右,cls_loss降为0.0065, obj_loss大概在0.024

训练集的衡量指标趋势图大致如下:

你可能感兴趣的:(图像处理,深度学习,目标检测)