提示:此篇笔记是听B站唐宇迪老师的深度学习YOLO-V3课程实战部分所做笔记
前言
此篇笔记记录的是:听B站唐宇迪老师的深度学习YOLO-V3课程部分实战所做笔记,是在已经训练好coco数据集的模型的基础上进行的,所以直接就是套用coco训练集训练出来的模型,使用自己的数据进行训练和预测操作流程(方便熟悉整个流程)。
相关课程视频参考:【百万播放】零基础、快速学YOLO目标检测算法!完整学习路线一条龙,无脑通关!
一、标注数据信息(训练自己的数据)
1.1 Labelme工具安装
进入GitHub后,搜索labelme
然后输入安装的命令:
pip install labelme
pip install pyqt5
pip install pillow=4.0.0
额外安装完上面三个工具包以后,会自动安装相应的环境变量
点击anaconda进入命令行窗口,输入命令labelme进入安装好的labelme工具
打开后的工具界面
1.2 数据信息标注(数据打标签)
选择矩形框标注:右击鼠标,然后选择矩形框
选择person标签
标注完成后,保存已标注好的文件
1.3 完成标签标注
随便打开一个标注好的json文件
label是类别,points里指的是[x1,y1]和[x2,y2],shape_type表示矩形框,后续转换需要用到。
shape_type中一对{}表示一个框。
最后有路径和大小
二、写好模型所需要的配置文件
2.1 找到配置文件所在位置
2.2 运行sh文件
由于windows不像linux可以直接运行此类文件,所以需要额外安装git
https://git-scm.com/
下载完git后就可以直接运行.sh文件
下载安装好,右击空白处,点击git bash here
修改自己需要检测的类别,后面的数字表示你的任务的类别个数
bash create_custom_model.sh 2
回车以后会自动新生成一个文件:yolov3-custom.cfg
打开配置文件
有一些小细节不同:类别的个数不一样。
三、标签格式转换
3.1 转换原理
labelme—>x1,y1,x2,y2 YOLO-V3—>Cx,Cy,W,H 相对位置(取值范围0-1)
3.2 使用json2yolo.py文件进行转换
四、写好数据和标签路径
4.1 路径
转换好的输出路径:data\custom\labels
加上.txt文件的尾缀
json_floder_path:labelme生成标签的文件夹
以防万一写绝对路径
对每一个json都要做这个功能
4.2 decode_json函数
从x1y1x2y2 得到 CxCyWH(0-1的相对值)
4.3 convert函数(转换)
注意:name2id指的是,指定如果标注框的name为person,则每一行的第一个数据为0;若为hook,则第一个数值为1;后面紧跟的数据则为框的坐标。
运行结果:第一个值指的是person(0为person,1为hook),后面依次为Cx,Cy,W,H。(一行为基准)
每一行表示一个矩形框。
五、完成其他配置操作
5.1 复制txt所对应的图片到data\custom\images
注意:数据放到相应的位置,名字和label的一致
5.2 修改classes.names
将里面的内容改成本任务里有的类别名字
ps.多打一行,防止加载失败;注意相应类别的顺序
5.3 在train.txt与val.txt写好对应的路径
ps,数据量多的情况下可以采取写脚本,将图片路径写进txt文件中。
5.4 custom.data
将其中的classes后面的数字修改为任务所需的数字,此处修改为2.
六、训练代码更改
6.1 train.py需要设置的参数(更改参数)
--model_def config/yolov3-custom.cfg
--data_config config/custom.data
--pertrained_weights weights/darknet53.conv.74
yolov3-custom.cfg是前面运行.sh修改后生成的config配置文件:指出网络的每一层配置。
custom.data是前面修改类别的文件:指出了上哪去读数据以及类别个数。
weights/darknet53.conv.74:看你是否想在别人的基础上去做,迁移学习。
6.2 代码中的参数default值修改
七、预测操作
7.1 训练完成后
会在checkpoints文件夹生成模型
7.2 配置detect.py参数
--image_folder data/samples/
--checkpoint_model checkpoints/yolov3_ckpt_100.pth
--class_path data/custom.names
data/samples/ :把需要预测的数据放到这里。
checkpoints/yolov3_ckpt_100.pth :训练好模型的路径。
data/custom.names :画图时把框上显示出来name。
7.3 检测结果
结果在output文件夹下
额外注意
create_custom_model.sh不能重复执行,每次执行生成配置文件之前要先把yolov3-custom.cfg文件删除。
结束语
浅浅记录B站学深度学习的部分实战