其实CSDN上已经这样的文档了,不过我重新整理了一下,并把各种文件处理的python源码奉送给大家,先贴上我参考的博客地址,向前辈致敬!
http://blog.csdn.net/sinat_30071459/article/details/50723212#comments
VOC2007格式是faster-RCNN中官方给出的用于训练的数据集,把它下载下来用frcnn/tool里的训练程序跑一跑就可以得到自己的训练网络了,首先说明一下我们需要准备的文件
1. 训练所需的图片
2. 图片上ROI标注信息的XML文件
3. 将数据集分割为三部分分别用于frcnn进行训练,验证,测试等
第一步:图片的重命名
VOC2007格式必须为JPG格式,并且图片是统一的六位数字,从000001开始。那我们也需要将所有训练图片重命名为此。Python代码如下:
import os
import numpy as np
import re
import pandas as pd
dire = r'F:\dataset\UAV'
a = os.listdir(dire)
mode = re.compile(r'\d+')
for i in range(n):
ids[i] = mode.findall(a[i])[0]
a[i] = dire + '\\' + a[i]
b = np.zeros(n).astype(np.str)
pos = 6
for i in range(n):
c = str(i)
ze = pos-len(c)
b[i] = '0'*ze+str(i)
b[i] = dire +'\\'+b[i]+'.jpg'
for i in range(n):
os.rename(a[i],b[i])
第二步:框定ROI
针对需要训练的图像,我们需要将ROI输出,如下图所示,位置信息包含四个值,分别为ROI左上角的X,Y值与右下角的X,Y值。那个问题来了,针对大批量的数据集如何快速提取ROI呢,在网上搜索半天发现原来Matlab2014已经有了这个功能。具体操作见博客 http://blog.csdn.net/tsyccnh/article/details/50812632
这里要注意的是,matlab打框产生的ROI产生的4个值,分别为ROI左上角的X,Y值与ROI的宽和高。这里推荐可以用Eexcel处理一下。
第三步:产生XML文件
把上一步得到的txt文档转换为XML文件,python代码如下,我的需要训练识别的物体只有一个,如果要识别多个目标,那需要略微修改一下如下代码。