一、下载miniconda:
没有下载anaconda的同学先下载一个anaconda,为了与tensorflow-gpu==1.12.0、1.10.0匹配,最好下载anaconda3:
anaconda官网:Anaconda | Individual Edition
推荐下载miniconda,因为它更小更轻便:
然后打开anaconda prompt(Win10):
打开anaconda prompt(Win7):
输入以下命令来安装需要的两个依赖项:
pip install PyQt5
pip install lxml
如果觉得慢的话,可以使用清华镜像源来安装:
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
二、下载标注软件labelImg
然后去这个网址下载我们的标注软件:
下载后解压,并进入labelImg(labelImg-master)的根目录,
鼠标放入空白区域,按住shift键的同时点击鼠标右键,选择在此处打开Powershell窗口(Win7则是打开命令行窗口)
先进入你之前安装了PyQt5和lxml的conda环境:
activate <你的环境>
输入以下命令:
pyrcc5 -o resources.py resources.qrc
python labelImg.py
打开labelImg界面:
然后这个软件就装好了,如果下次要使用,就进入labelImg(labelImg-master)的根目录,打开Powershell窗口先activate激活你有pyqt5、lxml的conda环境,然后输入以下启动命令就行了:
python labelImg.py
三、批量重命名图片
然后使用freeRename对图片进行批量重命名:
点击添加文件
打开所有图片数据
删去原文件名,设置好起始值000001后点击开始处理:
四、标注
在上面第二步启动labelImg后,点击opendir打开所要标注的图片在的目录。
各种不同的功能区:
点击Change Save Dir选择xml文件的保存路径,就选择图片数据所在的文件夹。
重要:这一步每次打开新的一个文件夹的时候都要做,比如你第一段视频的图片标完了,开始标第二段视频的图片时,请务必再执行这一步。
请在这里先勾选 Use default label 并在后面的文本框中填你要识别的类别名,是自己取的,这个类别名必须存在于tensorflow-yolov3/data/voc_*.names文件里面,.names文件放的就是你本次项目目标检测所要识别的不同的所有类别,比如我这里做的这个标注的类别名是:mud
(注:别填错了,项目中必须统一标签名)。
使用软件标注数据过程中会用到的快捷键:
w:标注
Ctrl+s:保存当前图片标注的xml文件
d:下一张
a:上一张
Ctrl+shift+d:删掉最近的图片
Ctrl+u:打开一个文件夹里的所有图片
Ctrl+r:改变标注保存的位置,有时候打开标好的图片不显示标注,可以试试这个
更多快捷键见:网址
标注完后按Ctrl+S保存,点击左边选项栏中的Next Image(目前我没找着什么快捷键,我感觉应该是有)。然后细心仔细地完成标注工作。希望大家能耐着性子做好标注工作,这也是机器学习的一个部分。
注意:太过于模糊的图片不要标,可以直接删掉,没有可标物体的图片也可以直接删掉。
标注完之后,文件夹里是这样的,图片与xml文件是一一对应的:
注意:这样图片和标注保存的目的是直观地看出图片与xml文件是否一一对应,请务必保证图片与xml文件一一对应!
xml文件里面的内容如下:
<annotation>
<folder>data</folder>
<filename>000001.jpg</filename>
<path>C:\Users\UryWu\Desktop\data\000001.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>640</width>
<height>480</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>mud</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>83</xmin>
<ymin>307</ymin>
<xmax>124</xmax>
<ymax>329</ymax>
</bndbox>
</object>
<object>
<name>mud</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>20</xmin>
<ymin>198</ymin>
<xmax>63</xmax>
<ymax>223</ymax>
</bndbox>
</object>
</annotation>
这个object就是你做的标注,这里有两个标注,xmin、ymin、xmax、ymax就是标注框的左上角和右下角。mud就是标签名。
标注好数据之后,回到这个博客继续数据的训练: