上期中我们讲了Yolov5的前两节环境配置及简单运行,在本期中我们带来后面两节在不同处理器下的实验数据及如何训练自己的模型。
三、在不同处理器上的延迟与效果
为了查看Yolov5在不同设备上的延迟与效果,下面我们对Inter的i3、i5、i7三种处理器在同样的环境下做了实验
1、 Intel® Core™ i3-8145UE CPU
按照上面流程配置好环境后,打开终端输入以下指令:
cd <path-to-Prometheus>/./Scripts/start_yolov5openvino_server.shroslaunch prometheus_detection yolov5_intel_openvino.launch
即可看到如下效果:
Yolov5在i3-8代上的测试
Yolov5在i3-8代上的延时
2、Intel® Core™ i5-8265U CPU
配置环境与输入指令与i3中相同,下面直接看测试效果
Yolov5在i5-8代上的测试
Yolov5在i5-8代上的延时
3、Intel® Core™ i7-8665UE CPU
配置环境与输入指令与i3中相同,下面直接看测试效果
Yolov5在i7-8上的测试
Yolov5在i7-8代上的延时
4、 11th Gen Intel® Core™ i5-1135G7 @ 2.40GHz × 8
配置环境与输入指令与i3中相同,下面直接看测试效果
Yolov5在i5-11代上的测试
Yolov5在i5-11代上的延时
结论:从上面的实验数据来看,yolov5的帧率随着i3,i5,i7的增加而增加,随着7代,8代,9代CPU的增加而增加,随着电脑主频1.1GHz,1.6GHz,2.4GHz增加而增加。
四、训练自己的yolov5模型并部署
1. 数据标注
下载数据集标注工具,下载地址:Spire Web或者百度网盘 (密码: l9e7) ,数据集管理软件SpireImageTools:gitee地址或者github地址。
解压,打开标注软件 SpireImageTools_x.x.x.exe
首先点击Tools->Setting...
,填写一个 save path
(所有的标注文件都会存储在这个文件夹中)
将拍摄的视频转为图像 (如果采集的是图像,则跳过这一步骤),点击 Input->Video
, 选择要标注的视频。
然后,点击`Tools->Video to Image`
点击OK 后,等待完成,结果会存储在:
打开需要标注的图像,点击菜单Input->Image Dir
, 找到需要标注的图像所在文件夹 ,按Ctrl+A
,全选,打开所有图像:
点击菜单:Tools->Annotate Image->Box Label
,开始标注图像
在label
中填写待标注目标名称,然后将对话框拖到一边。
开始标注,在主窗口中开始标注,鼠标滚轮放大缩小图像,按住左键移动可视图像区域不断点击左键将目标框包围,使用Yolo
训练时,点击2个点即可:
标注时,如果点错,按鼠标右键可以取消。标注完成后,如果不满意,可以点击绿色边框(边框会变红,如下图所示),按`Delete`删除
继续标注行人类别:
全部标注完成后,将标注输出为Yolo
格式,准备训练——在标注完成之后,按下Ctrl+o
点击OK
即可,需要等待转换。
注意,如下两个文件夹是我们训练Yolov5
需要的
2.开始训练Yolov5
在准备好scaled_images
和Yolo_labels
两个文件夹之后,我们就可以训练Yolov5
了。首先,创建一个car_person.yaml
,将其放到<path-to-Prometheus>/Modules/object_detection_yolov5openvino/data/
文件夹下。car_person.yaml
的具体内容如下:
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]train: data/car_person/images/train/val: data/car_person/images/train/# number of classesnc: 2# class namesnames: ['car', 'person']
注意1:
car_person
是自定义名称,我们这次标注的数据集仅有这2个类别。注意2:
names: ['car', 'person']
这里的类别顺序需要跟Yolo_categories.names
里的类别顺序一致。
将训练图像与标注拷贝到对应位置
首先,在<path-to-Prometheus>/Modules/object_detection_yolov5openvino/data/
下新建一个文件夹car_person
。然后,在car_person
下再新建2个文件夹images
和labels
。最后,将准备好的scaled_images
拷贝到images
下,并重命名为train
;将准备好的Yolo_labels
拷贝到labels
下,并重命名为train
。
结合
car_person.yaml
里的内容,我想你应该明白上面目录结构的含义啦。
开始训练
cd <path-to-Prometheus>/Modules/object_detection_yolov5openvino/python3 train.py --img 640 --batch 16 --epochs 5 --data data/car_person.yaml --weights weights/yolov5s.pt
显示以上内容说明训练成功!可以增加训练期数(`--epochs 5`)提升效果。
部署训练好的模型
刚刚训练好的模型会保存在<path-to-Prometheus>/Modules/object_detection_yolov5openvino/runs/exp?/weights/best.pt
,?
需根据自己的情况而定(最新训练的模型?
为最大的数字),将best.pt
重命名为yolov5s.pt
,拷贝到<path-to-Prometheus>/Modules/object_detection_yolov5openvino/weights/
下,然后执行第二
部分3-5
的操作进行OpenVINO部署。