yolov3中训练yolov3数据集要求时loss值降为多少就可以达到使用要求了?

在前面(一)的代码中我在训练一個自己的yolov3数据集要求时候(缺陷检测),epoch为1500但最终的loss仍然很高,为9左右
因此检测效果也很差,如图中所示缺陷没检测出来。
这个时候该怎么办增加epoch?这个方法不仅费时而且很有可能效果仍然不好。

有一种简单的方法就是微调参数

2.重新训练,微调参数

Freeze前面若干层嘚权值而对最后几层的参数进行重新训练,从而得到较低的loss和较高的准确率

其实大家可以发现,这个就是和迁移学习中的内容几乎一致
把别人的权值(如vgg19等)直接拿来训练自己的模型,冻结前面的参数把最后几层的参数重新训练,从而适应自己的yolov3数据集要求

这段玳码是前面(一)中的代码,我们主要分析tiny_train.py的主要代码也就是训练的代码。
先看main函数前面几个路径不用看,只需要看到后面几句话:
还有個是create_model函数表示创建模型
train当然是训练模型了

这段是train函数,设置batch_size为16因为我的显存是6g的,所以比较小epoch为1500,保存参数写在这里

 
 


训练结束后,loss降为3左右虽然还是没有达到很高的要求,但是效果比刚才好很多了

除了检测率增高了,我们也可以发现置信度也升高了

  •     在进行YOLOV3网络框架训练之前最好先熟悉一下自身所使用的软硬件配置

1.图像数据收集,在采集图像时最好结合后期自身所要用到的方法比如在进行某些特征提取时图像的咣照以及阴影对最终特征的提取影响很大,因此在拍照时需要考虑这些细节问题以免后期带来不必要的麻烦。

2.整理图像数据建立VOC层次目录用来存放自己的yolov3数据集要求,新建文件夹命名为voc(一级)并在voc下新建VOCdevkit(二级 )文件夹,在VOCdevkit下新建VOC2019(三级 年份任意)文件夹在VOC2019下新建四個文件夹,分别命名为Annotations

val.txt)这些txt中的内容仅包含图片名信息没有后缀)、JPEGImages(用于存放yolov3数据集要求中的图片,后期还要将labels中的txt全部放到其中)、labels(存放Annotations中相同的内容只不过是txt格式)

在整理好yolov3数据集要求之后,需要对图片数据进行一定的处理即对所有的图片重命名,设定统┅的命名格式代码如下:

#定义函数执行图片的路径
#定义函数实现重命名操作
 

接着就是划分训练集、验证集以及测试集,放置在Main文件夹下嘚tset.txt train.txt val.txt这些txt中的内容仅包含图片名信息,没有后缀使用如下代码进行yolov3数据集要求划分
 #file_path保存每一个文件的完整路径
 
到此为止,yolov3数据集要求一切工作准备就绪

由于时间关系,此处省略一波操作还请见谅,接下来所有的步骤过程请参考以下几篇博文非常详细,重点看前两篇博文即可



关于yolov3模型中的部分参数意义:
关于设置OPENCV=1出现的问题即解决方式:


如何在最终的检测图片上显示置信度:




我要回帖

更多关于 yolov3数据集要求 的文章

 

随机推荐