首先感谢大佬提供的代码bubbliiiing
0.效果展示
1.所需环境
torch==1.2.0
2.注意事项
代码中的yolo4_weights.pth
是基于608x608的图片训练的,代码中的默认anchors是基于608x608的图片的。
注意不要使用中文标签,文件夹中不要有空格!
在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,在train.py中将classes_path指向该文件。
3.小技巧的设置
在train.py
文件下:
1、mosaic参数可用于控制是否实现Mosaic数据增强。(这种方式并不是所有数据集都适用,可根据实际情况自行调整)
2、Cosine_scheduler可用于控制是否使用学习率余弦退火衰减。
3、label_smoothing可用于控制是否Label Smoothing平滑。
4.文件下载
1.训练所需的yolo4_weights.pth可在百度网盘中下载。
链接: 这里 提取码: 11su
yolo4_weights.pth是coco数据集的权重。
yolo4_voc_weights.pth是voc数据集的权重。
2.数据集为自己爬取到的3300张包含火焰的图片和3300张不含火焰的图片以及极市平台的样例集(100张有火焰的图片),链接有两种,有积分的支持一下(CSDN),没有的也不强求(百度盘)。
CSDN
百度盘 提取码:490b
我自己标注的图片质量不好,就不放出来丢人了,大家有需要自行下载并标注,标注推荐使用labelImg,反正我用起来挺方便的。
5.训练步骤
1、本文使用VOC格式进行训练。
2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。
3、训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。
4、在训练前利用voc2yolo4.py文件生成对应的txt。
5、再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格!
classes = ["fire"]
6、此时会生成对应的2007_train.txt,每一行对应其图片位置及其真实框的位置。
7、在训练前需要务必在model_data下新建一个txt文档,文档中输入需要分的类,在train.py中将classes_path指向该文件,示例如下:
classes_path = 'model_data/customdata_classes.txt'
model_data/new_classes.txt文件内容为:
fire
8、运行train.py即可开始训练。
6.预测步骤
使用自己训练的权重
a、按照训练步骤训练。
b、在yolo.py文件里面,在如下部分修改model_path和classes_path使其对应训练好的文件;model_path对应logs文件夹下面的权值文件,classes_path是model_path对应分的类。
_defaults = {"model_path": 'model_data/Epoch50-Total_Loss1.5336-Val_Loss5.0895.pth.pth',"anchors_path": 'model_data/yolo_anchors.txt',"classes_path": 'model_data/customdata_classes.txt',"model_image_size" : (608, 608, 3),"confidence": 0.5,"cuda": True
}
c、运行predict.py
,输入
img/fire.jpg
可完成预测。