带你快速使用YOLOv3,训练出自己的目标检测器

本篇文章是使用大神开源代码后得出的总结,带你规避路上的坑,带你快速使用上YOLOv3,可以不了解它的原理的前提下,知道它是个目标检测器就好了,帮你自动检测图片中物品的位置。

首先,上大神凯源代码:https://github.com/YunYang1994/tensorflow-yolov3,该代码讲述是大神用voc数据训练时使用的全部代码,所以你的训练自己的数据有些代码用不到。

下面是整个步骤,纯属个人理解,有不同意见欢迎提出。

一.首先将大神的代码克隆下来 :

$ git clone https://github.com/YunYang1994/tensorflow-yolov3.git

如果是识别常规物体,使用大神的part 2 的quick start 就好了,而如果是自己的数据集特别的物品,请参看下面的讲解:

1.制作自己的训练图像数据集,工具labelimg,在网上可以搜到官方安装和使用教程,这里不做赘述,python3使用者推荐安装方法:

pip  install labelimg

在终端输入 labelimg 启动软件

2.图像标记后数据格式xml,将xml数据提取data.txt,格式为:

Xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14   #注意逗号和空格的位置

#image path x_min,ymin,x_max,y_max,class_id x_min,y_min   

Image path 推荐使用相对于train.py的相对路径

定义自己的类名文件:Class.nams:

Person
car
…

这里已将将数据提取为data.txt的形式,就不用大神训练VOC数据的代码 voc_annotation.py

将data.txt按一定比例分为trian.txt和test.txt,拿来训练网络和测试效果。

3.编辑./core/config.py 中的配置项

_C.YOLO.CLASSES =”./data/classes/class.names”

_C.TRAIN.ANNOT_PATH=”./data/dataset/train.txt”

_C.TEST.ANNOT_PATH=”./data/dataset/test.txt”

按照大神的两种训练方式都可以训练方式,推荐迁移学习方式训练,最后迭代50遍训练结束,保留误差最下的权重文件ckpt。

到这里大家都比较疑惑代码中的convert_weight.py用不了,其实这个代码不用使用。大家刚把代码拷贝下来时应该注意源代码中不存在.ckpt文件,所以这个代码的作用是将模型中的yolov3.weight文件转成.ckpt文件!!

所以下面一步应该是直接用代码freeze_graph.py将ckpt文件转为pb文件,被调用识别图片中物体。

转化前将freeze_graph.py中的pb.file改为自己想要的模型文件名,ckpt_file改为要转换的训练出来的ckpt文件。

现在大功告成,开心的使用源代码提供的image_demo和vedio_demo代码识别图像和视频中的物体吧。

发布了12 篇原创文章 · 获赞 0 · 访问量 432

猜你喜欢

转载自blog.csdn.net/qq_36523203/article/details/103575263