训练数据和标签注意事项
训练数据和标签注意事项
-
训练数据收集
-
在正常情况下,训练图片资料大小resize到和模型输入图片大小基本一样,当前可以选择到400×400(或者按比例)左右,但是要具体分析,看看resize后的图片在打标时候是否清晰。
-
如果resize后的图片不清晰,可采用裁剪的方式,把大图裁剪小到400×400作用,
-
目标物体的大小占屏比不要太小。可以同时有多个目标物体,但是目标物体之间遮挡不宜太大,不建议超过20%
-
图片搜集好了后,打标签之前,要做图片预处理,以及图片增强,比如翻转,旋转,色彩变化,增加噪声,等。
-
根据训练阶段的不同,以及性能要求的不同,以上存在根据实际训练需要适当调整
-
打标签,的注意事项。
1, 图片文件都转换为jpg,图片文件名不能重名,因为在VOC数据集里面,所有的文件最后要归集到一个文件夹下。这块我搞了一个python脚本文件,具体介绍如下:
在ubuntu的工作目录,建立如下目录,红色的文件是用于改文件名的。打标签之前用这个文件名先改文件名。
data
└── VOCdevkit
└── VOC2007
├── Annotations #保存xml文件
├── changfilename.py #批量改图片文件名脚本
├── ImageSets #存放训练集和测试集,
└──Main #这个Main 打标签可以不建。
├── JPEGImages #存放打标签的图片文件。
changfilename.py 文件内容
#!/usr/bin/python
# -*- coding:utf8 -*-
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
#我的图片文件夹根路径/home/sx/ ,这个地方要根据自己机器修改。
self.path = '/home/sx/data/VOCdevkit/VOC2007/JPEGImages'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
n = 6
for item in filelist:
if item.endswith('.jpg'):
n = 6 - len(str(i))
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(0) + str(0)*n + str(i) + '.jpg')
try:
os.rename(src, dst)
print 'converting %s to %s ...' % (src, dst)
i = i + 1
except:
continue
print 'total %d to rename & converted %d jpgs' % (total_num, i)
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
三、打标工具labelImage安装
1.依赖库安装
LabelImg是深度学习中用来标注图片中物体位置与名称的工具,本文介绍如何在python3.5的环境下安装labelImg。
安装LabelImg依次需要安装三个第三方库: python3.5,PyQt5 , lxml
通过pip安装,最好pip3 install --upgrade pip更新pip版本后再执行安装
pip3 install PyQt5 -i https://pypi.douban.com/simple
pip3 install lxml -i https://pypi.douban.com/simple
2.下载labelImg,源码安装
下载地址:https://github.com/tzutalin/labelImg.git
进入labelImg目录
cd labelImg/
pyrcc5 -o resources.py resources.qrc
cp resources.py libs/
3.运行labelImg
python3 labelImg.py
注意:
Open dir 选 /xxx/yyy/data/VOCdevkit/VOC2007/JPEGImages
Change Save Dir 选/xxx/yyy/data/VOCdevkit/VOC2007/ Annotations
注意,由于VOC数据集 需要对不同批次文件或者不同类别文件最终要求归结到一个文件夹,所以这个脚本应对于不同批次的文件,要适当调整,调整方法如下,红底文字部分。
#!/usr/bin/python
# -*- coding:utf8 -*-
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
#我的图片文件夹根路径/home/sx/ ,这个地方要根据自己机器修改。
self.path = '/home/sx/data/VOCdevkit/VOC2007/JPEGImages'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
n = 6
for item in filelist:
if item.endswith('.jpg'):
n = 6 - len(str(i))
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), str(0) + str(0)*n + str(i) + '.jpg')
try:
os.rename(src, dst)
print 'converting %s to %s ...' % (src, dst)
i = i + 1
except:
continue
print 'total %d to rename & converted %d jpgs' % (total_num, i)
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
红底文字部分修改按如下规则:
对第一批文件:
dst = os.path.join(os.path.abspath(self.path), str(1) + str(0)*n + str(i) + '.jpg')
对第二批文件:
dst = os.path.join(os.path.abspath(self.path), str(2) + str(0)*n + str(i) + '.jpg')
。。。
对第m批:
dst = os.path.join(os.path.abspath(self.path), str(m) + str(0)*n + str(i) + '.jpg')