本篇文章是使用大神开源代码后得出的总结,带你规避路上的坑,带你快速使用上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
数据提取代码参考如下:
#将images里的数据保存标准格式
import xml.etree.ElementTree as ET # 给包xml.etree.ElementTree 定义一个 ET 别名 操作XML文件的包
import pickle # pickle 模块 将某个对象所对应位置的数据抓取下来,转换成文本流,然后将文本流存入到文件中。
import os # os 模块 提供了非常丰富的方法用来处理文件和目录。
from os import listdir, getcwd # 从os包中引入 listdir, getcwd 类
from os.path import join,isfile # 从 os包中的path类中引入 join 方法
#类名
classes=['xxx','xxx','xxxx']
def convert_annotation(image_id)