制作VOC2007数据集用于Faster-RCNN训练: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 pddire = 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已经有了这个功能。
这里要注意的是,matlab打框产生的ROI产生的4个值,分别为ROI左上角的X,Y值与ROI的宽和高。这里推荐可以用Eexcel处理一下。

第三步:产生XML文件

把上一步得到的txt文档转换为XML文件,python代码如下,我的需要训练识别的物体只有一个,如果要识别多个目标,那需要略微修改一下如下代码。

#encoding=utf-8import sys
import os
import codecs
import cv2root = r'F:\dataset\xml'
fp = open('F:\dataset\pos-all.txt')
fp2 = open('train.txt', 'w')
uavinfo = fp.readlines()for i in range(len(uavinfo)):line = uavinfo[i]line = line.strip().split('\t')   img = cv2.imread(line[0])sp = img.shapeheight = sp[0]width = sp[1]depth = sp[2]info1 = line[0].split('\\')[-1]info2 = info1.split('.')[0]l_pos1 = line[1]l_pos2 = line[2]r_pos1 = line[3]r_pos2 = line[4]fp2.writelines(info2 + '\n')with codecs.open(root +r'\\'+ info2 + '.xml', 'w', 'utf-8') as xml:xml.write('\n')xml.write('\t<folder>' + 'UAV_data' + '</folder>\n')xml.write('\t<filename>' + info1 + '</filename>\n')xml.write('\t<source>\n')xml.write('\t\t<database>The UAV autolanding</database>\n')xml.write('\t\tUAV AutoLanding</annotation>\n')xml.write('\t\t<img src="" style="display: none;"><img alt="加载中..." title="图片加载中..." src="http://statics.2cto.com/images/s_nopic.gif">flickr\n')xml.write('\t\t<flickrid>NULL</flickrid>\n')xml.write('\t\n')xml.write('\t<owner>\n')xml.write('\t\t<flickrid>NULL</flickrid>\n')xml.write('\t\t<name>XuSenhai</name>\n')xml.write('\t</owner>\n')xml.write('\t<size>\n')xml.write('\t\t<width>'+ str(width) + '</width>\n')xml.write('\t\t<height>'+ str(height) + '</height>\n')xml.write('\t\t<depth>' + str(depth) + '</depth>\n')xml.write('\t</size>\n')xml.write('\t\t<segmented>0</segmented>\n')xml.write('\t<object>\n')xml.write('\t\t<name>uav</name>\n')xml.write('\t\t<pose>Unspecified</pose>\n')xml.write('\t\t<truncated>0</truncated>\n')xml.write('\t\t<difficult>0</difficult>\n')xml.write('\t\t<bndbox>\n')xml.write('\t\t\t<xmin>' + l_pos1 + '</xmin>\n')xml.write('\t\t\t<ymin>' + l_pos2 + '</ymin>\n')xml.write('\t\t\t<xmax>' + r_pos1 + '</xmax>\n')xml.write('\t\t\t<ymax>' + r_pos2 + '</ymax>\n')xml.write('\t\t</bndbox>\n')xml.write('\t</object>\n')xml.write('</annotation>')
fp2.close()

第四步:数据集分割

在实际训练过程中,需要四个文件,分别为test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集。每个文件为对于图片的名字。在VOC2007中,trainval大概是整个数据集的50%,test也大概是整个数据集的50%;train大概是trainval的50%,val大概是trainval的50%。可参考以下代码:

#coding=utf-8
import cv2
import os
import randomroot = 'F:\dataset'
fp = open(root + '\\'+'name_list.txt')
fp_trainval = open(root + '\\'+'trainval.txt', 'w')
fp_test = open(root + '\\'+'test.txt', 'w')
fp_train = open(root + '\\'+'train.txt', 'w')
fp_val = open(root + '\\'+'val.txt', 'w')filenames = fp.readlines()
for i in range(len(filenames)):pic_name = filenames[i]pic_name = pic_name.strip()x = random.uniform(0, 1)pic_info = pic_name.split('.')[0]if x >= 0.5:fp_trainval.writelines(pic_info + '\n')else:fp_test.writelines(pic_info + '\n')fp_trainval.close()
fp_test.close()fp = open(root + '\\' +'trainval.txt')
filenames = fp.readlines()
for i in range(len(filenames)):pic_name = filenames[i]pic_name = pic_name.strip()pic_info = pic_name.split('.')[0]x = random.uniform(0, 1)if x >= 0.5:fp_train.writelines(pic_info + '\n')else:fp_val.writelines(pic_info + '\n')
fp_train.close()
fp_val.close()

第五步:将得到的文件放置正确路径

1. 将训练图片放置于 faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages 中;

2. 将得到的xml文件放置于 faster-rcnn/data/VOCdevkit2007/VOC2007/Annotations 中;

3. 将得到的test.txt,train.txt,val.txt,trainval.txt 放置于 faster-rcnn/data/VOCdevkit2007/VOC2007/ Annotations/ImageSets/Main 。

原文链接:制作VOC2007数据集用于Faster-RCNN训练

【深度学习】制作VOC2007数据集用于Faster-RCNN训练相关推荐

  1. 深度学习目标检测系列:faster RCNN实现|附python源码

    目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法.SSD以及YOLO等.如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求 ...

  2. python实现目标检测源代码包_深度学习目标检测系列:faster RCNN实现|附python源码...

    摘要: 本文在讲述RCNN系列算法基本原理基础上,使用keras实现faster RCNN算法,在细胞检测任务上表现优异,可动手操作一下. 目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成 ...

  3. 深度学习(十六)——Faster R-CNN, YOLO

    https://antkillerfarm.github.io/ Fast R-CNN(续) ROI Pooling SPP将图像pooling成多个固定尺度,而RoI只将图像pooling到单个固定 ...

  4. 25个用于深度学习的开放数据集

    25个用于深度学习的开放数据集每个数据科学家必须使用 PRANAV DAR, 2018年3月29日 转载自:https://www.analyticsvidhya.com/blog/2018/03/c ...

  5. 目标检测---以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集(正确方法)

    以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集的正确方法 文章目录 前言 一.labelimg简单介绍 1 VOC标签格式,保存为xml文件. 2 yolo标签格 ...

  6. 二十五个深度学习相关公开数据集

    转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...

  7. 转载【数据集】计算机视觉,深度学习,数据挖掘数据集整理

    金融 美国劳工部统计局官方发布数据 上证A股日线数据,1999.12.09 至 2016.06.08,前复权,1095支股票 深证A股日线数据,1999.12.09 至 2016.06.08,前复权, ...

  8. 数据集大全:25个深度学习的开放数据集

    介绍 深度学习的关键是训练.无论是从图像处理到语音识别,每个问题都有其独特的细微差别和方法. 但是,你可以从哪里获得这些数据?现在你看到的很多研究论文都使用专有数据集,而这些数据集通常不会向公众发布. ...

  9. Tensorflow下用自己的数据集对Faster RCNN进行训练和测试(二)1

    原 Tensorflow下用自己的数据集对Faster RCNN进行训练和测试(二) 2018年08月21日 22:20:38 子季鹰才 阅读数:1811 对于Tensorflow版本的Faster ...

最新文章

  1. apr提高tomcat的web性能
  2. [转贴]年薪一万/十万/百万的各样生活
  3. 纪念逝去的岁月——C/C++字符串反转
  4. php 时间 (年,月,星期,天,小时,秒)的查找
  5. bootstrap 辅助类
  6. 1075. 链表元素分类(25)-PAT乙级真题
  7. 洛谷P5300 与或和(全1子矩阵/单调栈)
  8. ffmpeg【百度百科】
  9. linux php adodb,【原创】Linux下php使用adodb对sql Server访问配置
  10. 学计算机的 1加1,如何用“一加一等于几”解析人生
  11. 厦大C语言上机 1394 抛硬币
  12. 2019年第三季度 公链发展状况研究报告 |链塔智库
  13. Js中${}字符串拼接
  14. 简要介绍下tensorflow的计算图
  15. NLP机器翻译任务中,如何用Bleu score评价翻译质量(学习心得)
  16. Altium Designer(2)-抄板以及绘制原理图
  17. Java String 的最大长度
  18. 与ISV的生态合作?怎么弄?
  19. springboot wagon 更新测试环境
  20. 中兴c600olt数据配置_中兴olt c300基本命令配置详解

热门文章

  1. Java Review - 并发编程_LinkedBlockingQueue原理源码剖析
  2. jvm性能调优实战 - 36XX:SoftRefLRUPolicyMSPerMB配置引起的Metaspace频繁FullGC
  3. Java8 - Future 接口
  4. Spring-AOP 混合使用各种切面类型及不同切面总结
  5. 《数据结构》知识点Day_01
  6. android 高德地图提示限速信息,高德导航不提示限速拍照了是怎么回事?该怎么办?...
  7. 用C语言测试程序运行时间,c语言测试程序执行时间
  8. 判断一个变量类型是数组还是对象
  9. java升级为jdk1.8_jdk1.7升级为1.8
  10. 华硕服务器 u盘安装系统,华硕用u盘如何安装系统