Tensorflow框架下Faster-RCNN实践(一)——Faster-RCNN所需数据集制作(附代码)

windows7下面用tensorflow训练Faster-RCNN 最近由于实验室的要求,我做了基于Faster-RCNN网络的一些检测技术研究,对于我来说,完全是一个小白,这段时间在做实验的过程中学到了很多东西,整理了一下一路走来的实验步骤.,欢迎大家一起探讨~(一)安装TensorFlow博客链接:(1)https://blog.youkuaiyun.com/u010099080/article/details/53418159(2)https://blog.csdn.n... 阅读详情

最近刚实现了在Ubuntu16.04、Tensorfllow1.0下 Faster R-CNN 从数据制作到训练再到利用生成的模型检测的测试图片的全过程,现在将具体的过程记录在博客,方便遇到困惑或者需要的朋友查看。


制作数据集

利用Faster R-CNN训练自己的数据的时候,一般有两种方法:

1、按照VOC2007的格式修改自己的数据格式
2、根据自己的数据格式修改源码

这里我们一般推荐第一种方法,因为第一种方法比较简单而且不容易出错,下面我们就按照第一种方法的形式来制作数据集。


一、 浅析PASCAL VOC数据集

PASCAL VOC数据集主要是为图像识别和分割而制作的数据集,我们以VOC2007为例,可以看到VOC2007中一共有五个文件夹:

Annotations  ImageSets  JPEGImages  SegmentationClass  SegmentationObject

SegmentationClass SegmentationObject 是做图像分割的,我们做检测只需要考虑前三个文件夹。

1.1、 JPEGImages

  • JPEGImages 内部存放了PASCAL VOC所提供的所有的图片信息,包括了训练图片和测试图片

  • 这些图像的像素尺寸大小不一,但是横向图的尺寸大约在500*375左右,纵向图的尺寸大约在375*500左右,基本不会偏差超过100。(在之后的训练中,第一步就是将这些图片都resize到300*300或是500*500,所有原始图片不能离这个标准过远。

1.2、Annotations

Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片。xml文件的解析如下:

<annotation>  
    <folder>VOC2007</folder>                             
    <filename>2007_000392.jpg</filename>                               //文件名  
    <source>                                                           //图像来源(不重要)  
        <database>The VOC2007 Database</database>  
        <annotation>PASCAL VOC2007</annotation>  
        <image>flickr</image>  
    </source>  
    <size>                                               //图像尺寸(长宽以及通道数)                        
        <width>500</width>  
        <height>332</height>  
        <depth>3</depth>  
    </size>  
    <segmented>1</segmented>                                   //是否用于分割(在图像物体识别中01无所谓)  
    <object>                                                           //检测到的物体  
        <name>horse</name>                                         //物体类别  
        <pose>Right</pose>                                         //拍摄角度  
        <truncated>0</truncated>                                   //是否被截断(0表示完整)  
        <difficult>0</difficult>                                   //目标是否难以识别(0表示容易识别)  
        <bndbox>                                                   //bounding-box(包含左下角和右上角xy坐标)  
            <xmin>100</xmin>  
            <ymin>96</ymin>  
            <xmax>355</xmax>  
            <ymax>324</ymax>  
        </bndbox>  
    </object>  
    <object>                                                           //检测到多个物体  
        <name>person</name>  
        <pose>Unspecified</pose>  
        <truncated>0</truncated>  
        <difficult>0</difficult>  
        <bndbox>  
            <xmin>198</xmin>  
            <ymin>58</ymin>  
            <xmax>286</xmax>  
            <ymax>197</ymax>  
        </bndbox>  
    </object>  
</annotation> 

1.3、 ImageSets

ImageSets存放的是每一种类型的challenge对应的图像数据。
在ImageSets下有四个文件夹:

Layout Main Segmentation

  • Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
  • Main下存放的是图像物体识别的数据,总共分为20类。
  • Segmentation下存放的是可用于分割的数据。

在这里主要考察Main文件夹。
Main文件夹下包含了20个分类的***_train.txt、***_val.txt和***_trainval.txt。
这些txt中的内容都差不多如下:

000005 -1
000007 -1
000009  1
000016 -1
000019 -1
000020 -1
000021 -1
000024 -1
000030 -1
000039 -1

前面的表示图像的name,后面的1代表正样本,-1代表负样本。
_train中存放的是训练使用的数据
_val中存放的是验证结果使用的数据
_trainval将上面两个进行了合并
需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。


二、根据PASCAL VOC数据集制作自己的数据集

我们制作数据集的时候,其实是把我们自己的数据格式转换为PASCAL VOC数据集的格式。以我以前存储的数据格式为例,我们的数据格式为:

DG00001L003.jpg iris 202 72 337 170
DG00001L004.jpg iris 227 99 354 197
DG00001L005.jpg iris 320 47 473 141
DG00001R002.jpg iris 312 114 488 190
DG00001R003.jpg iris 252 65 425 148
DG00002L001.jpg iris 328 184 495 264
DG00002L003.jpg iris 139 77 291 180
DG00002L004.jpg iris 116 194 247 294
DG00002L005.jpg iris 203 138 350 231
DG00002R001.jpg iris 327 135 456 231
DG00002R002.jpg iris 225 199 390 281
DG00002R003.jpg iris 295 42 479 164
DG00003L001.jpg iris 268 169 427 262
DG00003L002.jpg iris 277 73 440 165
DG00003L005.jpg iris 187 168 350 253
DG00003L005.jpg iris 232 86 412 168

即每行由图片名、目标类型、包围框坐标组成,空格隔开
如果一张图片有多个目标,则格式如下:(比如两个目标)
DG00003L005.jpg iris 187 168 350 253
DG00003L005.jpg iris 232 86 412 168
四个坐标点为包围框坐标的左上角和右下角。
当然我们只有一个检测模板iris,如果有多个检测目标,也是类似的格式,比如:

DG00003L001.jpg contact 268 169 427 262
DG00003L002.jpg iris 277 73 440 16

三、 利用代码生成数据集XML文件以及训练、测试、验证集

具体的转换代码和例程可以从下面的github地址下载。

创建数据集代码 https://github.com/ruyiweicas/Creat_FRCNN_DataSet

Github

  • VOC2007xml.m 用来生成Annotations目录下的xml文件 VOC2007txt.m

  • VOC2007txt.m 根据已生成的xml,制作VOC2007数据集中的trainval.txt;train.txt;test.txt和val.txt。trainval占总数据集的50%,test占总数据集的50%;train占trainval的50%,val占trainval的50%;上面所占百分比可根据自己的数据集修改,如果数据集比较少,test和val可少一些

生成步骤

1、代码下载后,打开VOC2007xml.m,根据在img中提供好的*.jpg 文件与output.txt就可以生成Annotations的xml 文件,如果要生成自己的xml文件,则只需要将img中的图片替换为自己的图片,output.txt根据格式修改就可以了。
2、xml生成后,只需要运行VOC2007txt.m,就可以生成对应的测试集验证集和训练集。

文章代码地址:

https://github.com/ruyiweicas/Creat_FRCNN_DataSet

faster-rcnn的训练流程及其如何训练自己的数据集(一) 前言:关于faster rcnn的训练网络,哪怕你一直很努力,死磕代码。就会像这图一样智商不够用啊,这边看了那边忘。所以希望大家能体系的学习faster rcnn。因为走了很多弯路,总结一下自己的理解。本篇关于Faster rcnn 的训练是基于tensorflow版本的,因为最近一直在搞这个,也为了巩固一下知识点,在此写个博客,也希望能帮助到大家。废话不多说,我们直接开始。第一点:首先要明白fa... 阅读详情

相关推荐

win10 tensorflow faster rcnn训练自己的数据集(一、制作VOC2007数据集)

参考博客:http://blog.youkuaiyun.com/gaohuazhao/article/details/60871886 一、关于VOC数据集: 1)JPEGImages文件夹 文件夹里包含了训练图片和测试图片,混放在一起 2)Annatations文件夹 文件夹存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片 3)Im

weixin_38124357的博客 6723

不能再详细!!!手把手教你用Faster-RCNN训练自己的数据集

接前篇:http://blog.youkuaiyun.com/zcy0xy/article/details/79614690一、环境安装准备python2.7以及相关的包cython, python-opencv, easydictFaster-RCNN用的是https://github.com/smallcorgi/Faster-RCNN_TF tensorflow版本本文假设你已经按照上面的教程完成了安装...

zcy0xy的博客 7万+

windows10+tensorflow+faster RCNN的实现

首先明确一点,在Linux系统下通过tensorflow实现faster RCNN相对简单,可以对代码进行编译(make),Windows并没有编译的功能,当然可以通过安装编译器实现在windows下的make,如何不熟悉,坑比较多,谨慎。 如果要在Windows先跑通fasterRCNN就应下载一个已经编译好的代码,这里推荐https://github.com/dBeker/Faster-RC...

sparkfeng 5837

Faster-RCNN训练自己的数据集

就目前我在了解到的资料来看,训练RCNN系列,一般有两种思路: 修改CNN的工程代码,适应自己的数据集格式 将自己的数据格式做成VOC2007形式的数据集 从工作量来看,无疑后者更容易一些,本文的思路也是如此。 首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。我的数据集是jpg格式,和PA

GVFDBDF的专栏 1万+

使用tensorflow版本的Faster r cnn训练自己的数据集完整版

我们要训练一个好的模型,并进行应用,目前来说是离不开Linux系统的,索性直接在该系统下操作吧

繁华三千东流水不舍昼夜的博客 4512

在faster rcnn中使用soft nms,faster rcnn的改进(一)

1. 背景介绍 我的项目是利用faster rcnn检测kiiti数据集,用原始nms,iters = 10000的情况下,得到的mAP = 0.586, 在改用soft nms后,其他参数均不变的情况下,得到的mAP = 0.622。算是挺大的改进了,所以分享一下具体实现。 我用的Faster-RCNN是tensorflow版本,github地址:Faster-RCNN_TF 2. sof...

风轻扬逍遥子的博客 1万+

用Tensorflow2.0实现Faster-RCNN的详细代码解析

在这篇文章中,我们将使用 Tensorflow2.0 实现 Faster-RCNN 并对相关代码进行解释说明。

cocofisher的博客 1万+

Windows +TensorFlow运行Faster-RCNN环境搭建

本人平时是远程访问实验室的GPU进行模型训练,但是最近想在编译器环境下进行代码优化,所以决定在本机windows环境下搭建Faster-RCNN的运行环境。 本文所选择的Windows环境下Faster-RCNN版本代码为 https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5 该版本需要Python 3.5支持,在这里建议大家使用A...

qq_29370449的博客 3158

TensorFlow 上基于 Faster RCNN 的目标检测

在之前的文章里我们常用的图像相关深度学习模型一般都是用于分类(Classification),即输入是一张图片,输出是“这张图片里有什么”,今天的主题是目标检测(Object Detection),除了能识别“这张图片里有什么”,还要告诉“它们的具体位置”。 对目标检测感兴趣的读者可以通过 Pascal VOC【1】、ILSVRC【2】、COCO【3】 等国际比赛了解具体规则和数据等

有些代码不应该被忘记 7137

win10+Faster-RCNN-TensorFlow-Python3训练自己的数据集并可视化loss和p-r曲线

源码地址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3 解决流程 修改Faster-RCNN-TensorFlow-Python3\data/coco/PythonAPI/setup.py文件:在第15行加上 , Extension( 'lib.utils.cython_bbox', sources=['../../../lib/utils/bbox.c','../../../lib/utils/bb...

water_93的博客 3277

Unity插件UniWebView实战:UGUI动态调整内嵌网页尺寸与交互优化

本文详细解析了如何在Unity游戏中使用UniWebView插件实现内嵌网页的动态尺寸适配与深度交互。核心在于利用Reference Rect Transform属性,将网页窗口精准绑定至UGUI控件,并随其动态调整。文章进一步探讨了通过消息系统与JavaScript执行实现Unity与网页的双向通信,并提供了加载优化、过渡动画及事件拦截等实用技巧,助力开发者打造无缝、流畅的游戏内网页体验。

earth的博客 276

Faster-RCNN系列(一) 制作自己的数据集Pascal_VOC格式

使用的是Faster-RCNN-TF 一、数据集准备 我们在做目标识别时,大家都知道要有训练集、验证集以及测试集,当然数据集格式也有很多种,我们这里使用的是pascal_voc数据格式。如下图是voc2007数据集文件夹格式 JPEGImages:用来保存你的数据图片,当然,对于faster-rcnn来讲,所有的图片必须是jpg/jpeg格式,其他格式的话要转换一下。另外,一定要对图片进行编...

sage_wang的博客 8701

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 332

在Tensorflow下Faster RCNN训练自己的数据集(一)

本次为在上一次运行实现Faster RCNN的基础上训练自己的数据集,得到训练模型。 本次所使用的源码为:https://github.com/endernewton/tf-faster-rcnn 一、下载Github代码 本人本次使用的为https://github.com/endernewton/tf-faster-rcnn,可通过以下代码直接下载: git clone https:...

hitzijiyingcai的博客 1万+

PTC-6-2004汽轮机性能计算源代码,pycharm-包括试验计算、一类修正、二类修正-以CC350-16.7/0.98/0.5/538/538型汽轮机为例,5万7千字,过程不易欢迎打赏

汽轮机性能计算完整源代码-简化试验-包括试验计算一类修正计算和二类修正计算目录图 1 工程结构。

weixin_43441028的博客 992

COMSOL仿真分析高压直流GIS/GIL绝缘性能优化

高压直流气体绝缘设备(GIS/GIL)的绝缘性能是保障电网可靠运行的关键。通过COMSOL Multiphysics多物理场仿真,可以深入分析气固界面电场分布与电荷积聚机理。该技术结合静电场、热场和电荷传输耦合计算,能准确模拟温度梯度对SF6气体与环氧树脂界面特性的影响。工程实践中,这类仿真可优化导体结构设计、改进绝缘材料配方,并建立电场-温度关联预警模型。特别是在80℃高温工况下,仿真显示界面电荷密度会显著增加23%,这对设备安全运行具有重要指导价值。

weixin_32075843的博客 191

Faster RCNN训练自己的数据集【傻瓜式教程】

Faster RCNN训练自己的数据集【傻瓜式教程】

magicnnonn的博客 2万+

【实战学习(五)】开源项目学习之uWSGI的部署以及配合nginx

文章目录1)uWSGI是什么?1.1 WSGI1.1.1 Application端1.1.2 Server端1.1.3 WSGI中间件1.2 uwgi1.3 uWSGI、WSGI、uwsgi之间的关系*为什么有了uWSGI为什么还需要nginx?2)连接uwsgi和Django*避坑之Windows10安装uWSGI非常极其艰难,最好勿浪费时间,直接转战Linux吧:2.1 uWGI部署2.1.1 在虚拟环境下安装uwsgi:2.1.2 测试uWSGI的运行2.1.3 使用uWSGI运行Django项目2.

黑黑白白君的博客 1506

WIN10+Tensorflow+Faster RCNN训练自己的数据集

Faster RCNN(Tensorflow)的配置可以参考我的博客,https://blog.youkuaiyun.com/kebi199312/article/details/88368904 本文分为三部分: 数据集制作 代码修改 训练和测试 一、环境配置: 1、环境 win10系统,显卡GeForce GTX 960M; TensorFlow-gpu 1.13.0-rc2,CUDA 10...

kebi199312的博客 1万+

浅显易懂地看LLC变换器(三)

第3期 谐振与增益的定性关系 由简单的谐振电路说起 我们将以电感和电容的基本电路的特性逐渐了解谐振电路的特性 与电阻不同,电感和电容都不是纯阻性线性器件,电感的感抗XL和电容的容抗Xc都与频率有关,当加在电感和电容上的频率发生变化时,它们的感抗XL和容抗Xc会发生变化。 1) 如下图RL电路,当输入源Vin的频率增加时,电感的感抗增大,输出电压减小,增益Gain=Vo/Vin随频率增加而减小。 2) 如下图RC电路,相反,当输入源Vin的频率增加时...

iFTrue电力电子专栏 6735

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

复现Faster-RCNN-TensorFlow-Python3.5代码,并用自己的数据集来训练

本文用的系统是Ubuntu 16.04, tensorflow-gpu, python=3.5 代码下载地址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5 教程链接:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5(就在代码页面的下面) 一、首先下载Fast...

kelly若的博客 7390

⭐️VMwareWorkstation17.0虚拟机搭建WindowsXP虚拟机(完整安装步骤详细图文教程)

Windows XP是微软公司研发的计算机操作系统,于2001年10月25日正式发布。其名字中“XP”的意思来自英文中的“体验”(Experience)。Windows XP使用了Luna图形用户界面和双列开始菜单,提升了系统的安全性和工作性能,提供了WiFi支持,简化了软件的安装和运行,并增加了远程桌面功能。

Python老吕的博客 1万+

部署Faster-RCNN TensorFlow版本

部署Faster-RCNN TensorFlow版本创建Anaconda环境Conda命令创建新环境Conda安装所需包gcc降级下载tf-faster-rcnn和数据集克隆代码根据你的显卡更新setup脚本中的arch参数编译Cython安装COCO API下载PASCAL VOC数据集 使用conda安装所需包 创建Anaconda环境 首先利用Anaconda创建并配置一个独立的Python...

dickwinters2011的博客 3453

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

win10+tensorflow faster-RCNN 训练自己的数据集

首先,感谢博客上各路大佬的无私奉献!但是也不得不吐槽下,大佬些写博客的时候能尽量写的对小白友好一点吗?期间遇到各种坑,说多了都是泪啊!话不多说,上正题! 环境:win10+anaconda3+tensorflow1.2.1+python3.6,CPU版本。 源码地址:https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3.5 一 下载...

u010554381的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

用自己的数据训练Faster-RCNN,tensorflow版本(一)

我用的Faster-RCNN是tensorflow版本,fork自githubFaster-RCNN_TF

lanyuelvyun的博客 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

上一篇: Ubuntu16.04---腾讯NCNN框架入门到应用
下一篇: Tensorflow框架下Faster-RCNN实践(二)——用自己制作的数据训练Faster-RCNN网络(附代码)
ruyiweicas
博客等级 码龄12年 192粉丝 39原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值