yolov3算法检测单类物体

转载:https://blog.csdn.net/z649431508/article/details/82191036

yolov3是目前目标检测类检测效果和检测速度最好的算法,原版的yolov3检测的物体种类众多,本文实在原有yolov3上将多累物体检测简化为单类物体检测,本文的原始代码基于github上copy的,源码下载地址为:https://github.com/qqwweee/keras-yolo3
根据作者提供的代码我们可以测试、训练我们的数据集,原文已做详细叙述如何训练测试代码,不做过多叙述。
单类物体检测假设我们是在源码基础上检测‘person’这个类别,我们需要对其中的yolo.cfg文件做修改,


yolov3算法检测单类物体_第1张图片

yolov3算法检测单类物体_第2张图片

 

将其中的classes修改为1,所有的filters=255的值修改为filters=18(计算方式为(classes+5)*3),然后将coco_class.txt和voc_class.txt文件中的类别全部修改成‘person’

 

再将voc_annocation.py文件中的classes修改成只有‘person’一个类。

然后需要准备数据集,将数据集放在运行代码的同一级目录下。注意数据集下载需要将训练集和测试集里面的数据放在一起,我这里已经将其数据整理,https://download.csdn.net/download/z649431508/10638245


运行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件。
然后通过命令行cd到运行代码的同一级目录,执行

python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

    1

生成预训练权重。
然后运行

python train.py

   

开始训练
训练过程可能会出现val_loss=nan的情况,我在训练过程中发现在训练到50Epoch以后val_loss开始降低,或者按照网上的说法可以调整cfg文件的batch大小,将其调大,也能改善val_loss。
训练完成后会生成一个logs文件夹,里面的000文件夹下会有训练好的权重文件,trained_weights_final.h5是我们所需要的文件,再次修改yolo.py文件中的代码,将其中的modelpath换成自己生成的trained_weights_final.h5文件下的目录。

然后需要准备数据集,将数据集放在运行代码的同一级目录下。注意数据集下载需要将训练集和测试集里面的数据放在一起,我这里已经将其数据整理,https://download.csdn.net/download/z649431508/10638245
这里写图片描述
运行voc_annocation.py生成2007_train.txt和2007_test.txt,2007_val.txt文件。
然后通过命令行cd到运行代码的同一级目录,执行

python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5

    1

生成预训练权重。
然后运行

python train.py

开始训练
训练过程可能会出现val_loss=nan的情况,我在训练过程中发现在训练到50Epoch以后val_loss开始降低,或者按照网上的说法可以调整cfg文件的batch大小,将其调大,也能改善val_loss。
训练完成后会生成一个logs文件夹,里面的000文件夹下会有训练好的权重文件,trained_weights_final.h5是我们所需要的文件,再次修改yolo.py文件中的代码,将其中的modelpath换成自己生成的trained_weights_final.h5文件下的目录。

yolov3算法检测单类物体_第3张图片

 


至此所有工作基本上完成,接着就是检测效果的时候,命令行运行代码
-

你可能感兴趣的:(yolo3)