- 首先使用下面的代码(参考找不见了)将图片重命名:
# -*- coding: utf-8 -*-
import os
class ImageRename():
def __init__(self):
#换成自己图片集所在路径
self.path = 'E:/keras-yolo3-master/ship'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 0
for item in filelist:
#如果是png就把.jpg改成.png
if item.endswith('.jpg'):
src = os.path.join(os.path.abspath(self.path), item)
#自己可以更改0的个数
dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg')
os.rename(src, dst)
print ('converting %s to %s ...' % (src, dst))
i = i + 1
print ('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
newname = ImageRename()
newname.rename()
- 然后使用labelImg标注数据集,生成xml文件。具体的,有一些快捷键,w:创建新矩形 d:下一张 a:上一张 ctrl+s:保存。
- 将xml文件转换成yolov3需要的训练文件,格式如下:
路径/1.jpg 目标1 目标2。。。
路径/2.jpg 目标1 目标2。。。
目标格式:xmin,ymin,xmax,ymax,class_label
有多少图片就得到多少行,写到一个txt里面,代码如下:
# -*- coding: utf-8 -*-
import os
#import sys
import xml.etree.ElementTree as ET
import glob
def xml_to_txt(indir):
os.chdir(indir)
annotations = os.listdir('.')
annotations = glob.glob(str(annotations)+'*.xml')
#输出的训练文件txt
f_w = open('E:/deeplearningprogram/keras-yolo3-master/trainship.txt','w')
for i, file in enumerate(annotations):
#图片集所在路径+图片名称
file_name = 'E:/deeplearningprogram/keras-yolo3-master/ship/'+file.split('.')[0]+'.jpg'
#file_txt=os.path.join(outdir,file_save)
#f_w = open(file_txt,'w')
# actual parsing
in_file = open(file,'rb')
tree=ET.parse(in_file)
root = tree.getroot()
strname=file_name
for obj in root.iter('object'):
#name = obj.find('name').text
xmlbox = obj.find('bndbox')
xn = xmlbox.find('xmin').text
xx = xmlbox.find('xmax').text
yn = xmlbox.find('ymin').text
yx = xmlbox.find('ymax').text
#f_w.write(str(name))
strname=strname+(' '+xn+','+yn+','+xx+','+yx+','+'0')
f_w.writelines(strname+'\n')
f_w.close()
#xml文件所在路径
indir='E:/deeplearningprogram/keras-yolo3-master/ship_xml/'
xml_to_txt(indir)
我这里得到的文件命名为trainship.txt
3.使用kmeans.py聚类自己数据集的anchor。更改程序里面的txt训练文件名称,输出自己数据集anchor的txt文件。
- 使用train.py进行训练。需要更改的是类别文件,anchor文件。
注意:如果显卡性能一般的话会报错,参考将GPU训练改成CPU训练。
我们训练的时候需要禁止GPU,下面的代码加到train.py的头部就能禁止GPU
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
网友评论