Faster R-CNN Tensorflow实现之数据集制作(2)--- xml文件的读写修改

Keras版Faster-RCNN代码学习(loss,xml解析)3 Keras版Faster-RCNN代码学习(IOU,RPN)1 Keras版Faster-RCNN代码学习(Batch Normalization)2 Keras版Faster-RCNN代码学习(loss,xml解析)3 Keras版Faster-RCNN代码学习(roipooling resnet/vgg)4 Keras版Faster-RCNN代码学习(measure_map,train 阅读详情

接着上一篇的文章继续制作自己的数据集,由于需要将数据集弄成与VOC 2007数据集一样的格式,需要自己手动标注数据,根据网上前辈的经验,这里使用了labelImg,版本用了windows_v1 .7.0,操作简单方便。使用该软件进行标注后将直接生成以与图片名称相同的.XML文件。

 

以其中的000009.xml文件内容格式为例,这里是我自己标注后形成的xml文件,和voc 2007的数据标注后形成的xml文件略有差别

<annotation>
	<folder>datajpg</folder>  #这里是我自己的图像数据保存位置
	<filename>000009.jpg</filename> #图像名称
	<path>E:\datajpg\000009.jpg</path>
	<source>
		<database>Unknown</database>
	</source>
	<size>
		<width>512</width>
		<height>512</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>burn</name>
		<pose>Unspecified</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>149</xmin>
			<ymin>237</ymin>
			<xmax>470</xmax>
			<ymax>512</ymax>
		</bndbox>
	</object>
	<object>
		<name>drop piece</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>418</xmin>
			<ymin>8</ymin>
			<xmax>502</xmax>
			<ymax>218</ymax>
		</bndbox>
	</object>
</annotation>

voc 2007的标注内容格式如下

<annotation>
	<folder>VOC2007</folder>    #这里是主要差别
	<filename>000001.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>341012865</flickrid>
	</source>
	<owner>
		<flickrid>Fried Camels</flickrid>
		<name>Jinky the Fruit Bat</name>
	</owner>
	<size>
		<width>353</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>dog</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>48</xmin>
			<ymin>240</ymin>
			<xmax>195</xmax>
			<ymax>371</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>8</xmin>
			<ymin>12</ymin>
			<xmax>352</xmax>
			<ymax>498</ymax>
		</bndbox>
	</object>
</annotation>

由于是新手,缺少经验,标注完自己的数据才发现和标准的数据有点差别,自己标注的和标准数据给的主要差别在于foldername的名称上。于是还需要对xml文件进行批量处理操作,更改这一名字。

以下代码参考了大神写的蟒蛇源码,表示这里感谢https://saicoco.github.io/object-detection-4/

import glob

xml_path = '.data\\Annotations\\'

items = glob.glob(xml_path + '*.xml')

for item in items:
    dom = xdm.parse(item)
    root = dom.documentElement
    
    folder_dom = root.getElementsByTagName('folder')
    
    folder_dom[0].firstChild.data = 'VOC2007'
    
    img_dom = root.getElementsByTagName('filename')
    img_dom[0].firstChild.data = img_dom[0].firstChild.data + '.jpg'
 
   ## 将结果写入xml文件
   ## writexml()第一个参数是目标文件对象,第二个参数是根节点的缩进格式,第三个参数是其他子节点的缩进格式,
   ##第四个参数制定了换行格式,第五个参数制定了xml内容的编码。
   ## dom.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')
    with open(item, 'w') as f:
        dom.writexml(f,encoding='utf-8')

参照大神的源码,我想自己顺便练练手,于是按照思路写了一个,就当练习编程了。

# -*- coding: utf-8 -*-
"""
Created on Sun Jul 29 21:22:56 2018

@author: jcli
"""

import xml.dom.minidom as xdm
import os
xml_path = 'E:\\Annotations'

filelist = os.listdir(xml_path)
for file in filelist:
    with open(os.path.join(xml_path,file),'r',encoding='utf8') as fh:
        
        dom = xdm.parse(fh)
        root = dom.documentElement
        folder_dom = root.getElementsByTagName('folder')
        folder_dom[0].firstChild.data = 'VOC2007'
        
        with open(os.path.join(xml_path,file),'w') as f:
            dom.writexml(f,encoding = 'utf-8')

 将源码中路径改成自己的文件夹路径,运行上面两个任意一段源码即可实现更改的XML文件中的文件夹名称。


补充:关于Python minidom  模块的最常使用语句

DOM(Document Object Model)文件对象模型,python在利用DOM解析XML文件时会将XML数据在内存中解析成一个树,通过对树的操作来操作XML。

tree = xml.dom.minidom.parse('000012.xml') #用parse()获取dom对象

root = tree.documentElement  #获取根节点

file_name = root.getElementsByTagName('filename') #由根节点通过节点名称获取对应的子节点

file_name.childNodes[0].data = ‘newdata’    #获取对应子节点的数据并赋予新值

with open('000012.xml','w') as f:         #对xml文件进行写操作
    root.writexml(f,encoding = 'utf-8')

关于更详细的DOM写入和解析xml可参考文章:https://www.cnblogs.com/wcwnina/p/7222180.html

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

相关推荐

tf-faster-rcnn代码学习.目标检测(Tensorflow版Faster R-CNN)

TF-Faster R-CNN电脑配置环境配置代码来源参考博客训练自己的数据集功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导...

qq_44619193的博客 1842

Faster R-CNN Tensorflow实现之数据集制作(3)---xml文件信息写入txt文件中

按照前面三篇文章的顺序标注好数据后,现在需要将数据集进行划分,包括train,test,trainval,val等四个部分,也就是生成ImageSets文件夹中的主文件夹中的四个的txt文件。四个TXT文件中都只包含对应图像的名称,不包含扩展名。内容如下 说明一下这四个文件的对应关系,即总的数据集分为trainval和test,在trainval又划分成train和val,所以我们需要根据自...

菜超搬砖日记 3034

Faster R-CNN训练实战:基于VOCdevkit2007的完整目标检测流程

PASCAL VOC2007是目标检测领域最具影响力的数据集之一,包含约9,963张图像,涵盖20个常见物体类别,如人、车、动物和日常用品。每张图像均提供精确的边界框(bounding box)标注和类别标签,支持目标检测、语义分割和图像分类三大任务。其高质量的手工标注和丰富的场景多样性,使其成为Faster R-CNN等两阶段检测器的标准评测基准。尤其在RPN区域提议生成与多尺度目标检测验证中,VOC2007提供了极具挑战性的测试环境,显著提升了模型泛化能力的研究深度。

weixin_42509720的博客 1263

目标检测Faster RCNN 批量标记数据集,生成xml,csv以及record文件

目标检测Faster RCNN 批量标记数据集,生成xml,csv以及record文件 0.打乱图片顺序并重新命名 # coding=gbk import os import random class ImageRename(): def __init__(self): self.path = 'G:\TensorflowDectionAPI2\images-NV\shuffer' # 图片所在文件夹 def rename(self): fileli

weixin_44268208的博客 1481

xml生成器-快速生成xml

该软件可以浏览一个文件夹里面的文件。并且生成一个可以自己定义的xml文件,本软件续上一个xml生成器的功能,根据用户要求,实现名称的升序排列。

飞塔防火墙和paloalto防火墙构建ipsec

一、配置fortigate防火墙1.防火墙配置上网功能1.1配置fortigate的wan1接口IP为100.100.100.2/24VLAN交换internal,IP地址为192.168.156.99/24。开启DHCP分配IP地址范围为192.168.156.110-192.168.156.2101.2配置访问互联网的缺省路由1.3配置访问互联网的安全策略2.配置与Paloalto防火墙的IPSECVPN。

weixin_44675999的博客 3739

将fasterrcnn的检测结果生成xml的voc数据集格式文件

1.准备 1.检测结果的文本文件,文件的内容如下,图片名称,置信度,坐标 2.所检测图片的路径 3.生成xml文件的路径 2.代码 import os #import glob from PIL import Image #import cv2 #图像存储位置 image_path = r'G:\shuju\test1' # 图像的 ground truth 的 txt 文件存放位置 result_txt='./xin_test_qx.txt' image_xml_dir='./Annotations

weixin_45798949的博客 810

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 363

把faster-rcnn检测出来的结果保存成txt,再转成xml

利用faster-rcnn检测图片,先把结果保存成txt,就像下面这样 利用下面这段代码就可以做到,把这段代码保存成XX.py,再运行。代码里需要改的地方都注释了,不知道怎么上传源码的,将就着用 #!/usr/bin/env python # -*- coding: UTF-8 -*- # -------------------------------------------------

qq_26569761的博客 9023

实战解析:在.NET中实现Dify API流式请求与响应的完整方案

本文详细解析了在.NET应用中对接Dify API时实现流式请求与响应的完整方案。针对传统后端“接收完才返回”的痛点,文章提供了基于ASP.NET Core的实战代码,通过配置HttpCompletionOption.ResponseHeadersRead和手动Flush响应流,构建高效的中转管道,确保AI回复能够像ChatGPT一样实时逐字推送到前端,显著提升用户体验。

weixin_29267307的博客 296

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

Faster R-CNN 源码解析(Tensorflow版)

参考博客: http://blog.youkuaiyun.com/u013010889/article/details/78574879 http://blog.youkuaiyun.com/hjimce/article/details/73382553 代码链接 算法原理 Feature extraction + Region proposal network + Classification and r...

Ruibin Bai 5万+

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

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

最近刚实现了在Ubuntu16.04、Tensorfllow1.0下 Faster R-CNN 从数据制作到训练再到利用生成的模型检测的测试图片的全过程,现在将具体的过程记录在博客,方便遇到困惑或者需要的朋友查看。 制作数据集利用Faster R-CNN训练自己的数据的时候,一般有两种方法: 1、按照VOC2007的格式修改自己的数据格式 2、根据自己的数据格式修改源码 这里我们一般推荐第

ruyiwei.cas@gmail.com 2万+

C#实现网络寻路(附完整源码)

C#实现网络寻路(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 423

手把手教你训练R2CNN_Faster-RCNN_Tensorflow:单GPU到多GPU分布式训练完整实战

R2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 Faster R-CNN 变体,专为**遥感图像目标检测**设计。它通过旋转区域卷积网络(Rotational Region CNN)解决遥感图中目标朝向任意、角度多变的核心难题,支持 DOTA、FDDB 人脸、ICDAR2015 场景文字等多个数据集,并提供单 GPU 与多 GPU 分布式两种完整

gitblog_01124的博客 763

基于Multisim的三相桥式全控整流电路建模、仿真与综合分析

本文基于Multisim 14.2平台,系统研究了三相桥式全控整流电路的建模与仿真方法。首先阐述了电路拓扑结构和工作原理,建立了数学模型。重点介绍了在Multisim中搭建主电路、设计六脉冲触发系统(含两种实现方案)的关键步骤,以及参数设置技巧。通过仿真分析了不同负载(阻性、阻感性)和触发角(0°-90°)下的输出特性,包括电压波形、电流谐波等性能指标。研究为电力电子教学提供了直观的仿真范例,并探讨了模型改进方向与实际工程应用价值。

huanghm88的专栏 354

R2CNN_Faster-RCNN_Tensorflow数据准备详解:DOTA数据集裁剪与TFRecord转换全流程教程

R2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 Faster R-CNN 变体目标检测项目,专为遥感图像处理优化,支持任意方向目标检测。本文带你完整走通它的数据准备流程:从 DOTA 遥感数据集裁剪、VOC 格式整理,到 TFRecord 数据集转换,让你快速准备好训练所需的自定义数据 🚀 [![R2CNN_Faster-RCNN_Tenso

gitblog_00632的博客 456

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

场景文本检测实战:用R2CNN_Faster-RCNN_Tensorflow攻克ICDAR2015数据集完整教程

R2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 Faster R-CNN 变体,内置旋转框(Rotated Box)检测能力,是完成 **ICDAR2015 场景文本检测** 任务的经典入门项目。本文将带你从环境搭建、数据转换到训练推理,完整走通"场景文本检测"全流程 🚀 [![ICDAR2015场景文本检测推理原图](https://raw

gitblog_00121的博客 547

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

mermaid-live-editor 快速上手:3 行文本出图,PNG 导出与链接分享一次讲清

mermaid-live-editor 是免费的开源 Mermaid 图表在线编辑器,打开浏览器就能编辑、预览、分享图表。核心就一件事:图写成文本,图当链接分享。 ## 图一改,文档就过期 文档里贴的静态流程图,流程一改图就过期,重截图永远追不上文字。mermaid 把图写成文本,能进 Git、能 diff、能随文档版本化,mermaid-live-editor 负责在浏览器里边写边看这半步。

gitblog_00887的博客 706

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度解析R2CNN_Faster-RCNN_Tensorflow核心思想:水平检测+旋转精化如何让mAP大幅提升?

R2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 **遥感图像目标检测** 框架,在 Faster R-CNN 基础上引入「水平检测 + 旋转精化」双分支思想(R²CNN),专门解决遥感图像中飞机、船舶、车辆等**任意朝向目标**的检测难题。在 DOTA 基准测试上,其旋转框检测 mAP 达到 **60.67**,显著优于同类方法,是入门**旋转框

gitblog_00598的博客 345

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

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

lanyuelvyun的博客 3万+

faster rcnn接口_Faster R-CNN tensorflow代码详解

研究背景根据Faster-RCNN算法的运行和调试情况,对代码进行深入分析。参考资料各部分代码分析1 编译Cython模块cd tf-faster-rcnn/lib # 首先进入目录Faster-RCNN_TF/libmake cleanmake #编译编译成功之后,目录tf-faster-rcnn/lib/nms 和tf-faster-rcnn/lib/roi_pooling_layer/ ...

weixin_32401075的博客 752

在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万+

R2CNN_Faster-RCNN_Tensorflow评估体系全解:旋转框mAP计算与VOC评测原理(新手友好完整指南)

R2CNN_Faster-RCNN_Tensorflow 是一个基于 TensorFlow 实现的 Faster R-CNN 旋转框目标检测开源项目,专为遥感图像中的船舶、飞机、体育场等**任意朝向目标**设计。它的核心特色是支持**旋转框(Rotated Box)输出**,并内置了完整的 VOC 风格评测体系:一条命令即可完成水平框与旋转框双路 mAP 计算、PR 曲线绘制。本文将用通俗的语言,

gitblog_00806的博客 631
上一篇: Faster R-CNN Tensorflow实现之数据集制作(1)--- Python 批量对图像进行重命名及更改格式
下一篇: Faster R-CNN Tensorflow实现之数据集制作(3)---xml文件信息写入txt文件中
SuperLee188
博客等级 码龄10年 41粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperLee188

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值