【深度学习】基于YOLO-V3训练自己的数据与任务(套用已训练好的模型进行自己的数据训练+预测)

该笔记详细记录了使用B站唐宇迪老师课程中的YOLO-V3模型,进行深度学习目标检测的实战过程。包括使用Labelme工具进行数据标注,转换标签格式,配置模型参数,训练模型以及进行预测的步骤。整个流程适用于基于预训练模型进行自定义数据集的训练和预测。
摘要由CSDN通过智能技术生成

提示:此篇笔记是听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站学深度学习的部分实战

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值