百度一下,用靠谱的爬虫方法,从网络上快速收集符合你要求的图片。
借助keras,对数据做旋转、平移等操作,以增大样本数量。
yolov3有自带的统一大小的步骤。这部分可以不用。其他网络按需选择。
import cv2
import os
fullfilename=[]
filepath = "F:/PycharmProjects/image" # 不能包含中文路径
filepath1 = "F:/PycharmProjects/resize"
for filename in os.listdir(filepath):
print(filename)
print(os.path.join(filepath, filename))
filelist = os.path.join(filepath, filename)
fullfilename.append(filelist)
i = 1
for imagename in fullfilename:
img = cv2.imread(imagename)
img = cv2.resize(img, (416, 416))
resizename = str(i)+'.jpg' # 命名形式为1,2,3...当然啦也可以根据你喜好自己改
isExists = os.path.exists(filepath1)
if not isExists:
os.makedirs(filepath1)
print('mkdir resizename accomploshed')
savename = filepath1+'/'+resizename
cv2.imwrite(savename, img)
print('{} is resized'.format(savename))
i = i+1
爬虫的数据可能比较脏乱,清洗时候也做个重命名吧,这样更美观一些。也可以借助脚本。
labelImg: https://github.com/tzutalin/labelImg,按照上面的指引安装。
在macOS系统上,比较麻烦,如果按github上面安装各自报错,那就尝试下面简单方法:
1、先安装好pyqt5
2、打开终端,直接 pip install labelImg (注意I大写)
3、直接在终端运行labelImg即可。
打开界面自然就会用了,傻瓜式操作!
掌握快捷键,事半功倍:
在这里:https://github.com/AlexeyAB/Yolo_mark/tree/master/x64/Release/data/img可以查看到符合训练要求的示例。
它们的内容分别是:
在img文件夹中,每张图片都有一个同名的txt,用来表示这图片本里object的信息。
这些其实labelImg都已经帮助生成好了。重头戏就是生成train.txt。
为了快捷操作,用python脚本来批量操作,直接生成train.txt。使用下面脚本时,注意修改文件路径。
# -*- coding:utf8 -*-
#!/usr/bin/python3.6
import os
class BatchRename():
def __init__(self):
self.path = 'F:/PycharmProjects/resize' #这里写你的图片数据的路径
def rename(self):
f = open(r'F:/PycharmProjects/resize/train.txt', 'a')
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
for item in filelist:
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
str1 = str(i)
dst = os.path.join(os.path.abspath(self.path), str1.zfill(6) + '.jpg')
try:
os.rename(src, dst)
print('converting %s to %s ...' % (src, dst))
# 写入 txt 文本中的名称形式,前面加上绝对路径
f.write('/home/chris/darknet/trainData/haishen/VOC2007/JPEGImages/' + str1.zfill(6) + '.jpg' + '\n')
i = i + 1
except:
continue
print('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
如果是网络上下载的VOC格式xml,可以用脚本方便地转化为txt。自行百度一下吧~
后面就可以按照yolo的官方教程来了。