首页 > 编程知识 正文

数据集怎么用,数据仓库教程

时间:2023-05-06 10:53:55 阅读:18595 作者:4183

环境win10 cuda10 pytorch1.0

项目地址:链接

参考博客: https://blog.csdn.net/weixin _ 43380510/article/details/83004127

data文件夹格式---VOC2007

--------annotations

----- -图像集

---------Main

--------trainval.txt

--------test.txt

--------JPEGimages

Annotations放置xml文件

JPEGImages上传照片

Main包含txt文件,其中包含图像名称,没有“. jpg”

脚本编写的txt代码如下。 导入操作系统

path _ name=r ' d :codingpythonfaster-rcnn.py torch-py torch-1.0dataVOC dev kitVOC 2007 jpp

f=open (d :/coding/python/faster-rcnn.py torch-py torch-1.0/data/VOC dev kit/VOC 2007 /图像集/maii

foriteminOS.listdir(path_name ) :

original _ name=OS.path.join (path _ name,item ) ) ) ) )。

print(item ) #原始名称带. jpg

str_name=item.split('.'#分隔符

打印(str _ name [0] )

f.write(str_name[0]'n ' )

另外,也可以参照链接博客的github,重命名xml文件的folder,根据博客的代码修改其他属性。 #编码=utf-8

导入操作系统

import os.path

import xml.dom.minidom

path=' d :codingpython\ faster-rcnn.py torch-py torch-1.0\ data\ VOC dev kitVOC 2007

获取files=OS.listdir(path ) )文件夹下的所有文件名

遍历for xmlFile in files: #文件夹

判断是否为ifnotOS.path.isdir(xmlfile ) : #文件夹,否则无法打开

#打印(xmlfile )

#将获取的xml文件名发送到dom分析

DOM=XML.DOM.minidom.parse (OS.path.join ) path,xmlFile ) )输入XML文件的具体路径

root=dom.documentElement

获取#标签和的值

# name=root.getelementsbytagname (' filename ) )。

folder=root.getelementsbytagname (' folder ' ) ) ) ) ) ) ) )。

cnt=0

#修改每个xml文件的多个相同属性值。 此处将每个属性更改为plane,将每个属性更改为VOC2007

#forIinrange(Len ) name ) :

#print(name[I].firstchild.data )。

# name [ I ].first child.data=' RES ' str (CNT ).jpg )

#print(name[I].firstchild.data )。

# cnt =1

#print(name[I].firstchild.data )。

傅里叶变换(len )文件夹) :

print (folder [ I ].first child.data )。

folder [ I ].first child.data=' VOC 2007 '

print (folder [ I ].first child.data )。

#将属性保存到xml文件

withopen(OS.path.join(path,xmlFile ),' w ' ) as fh:

是DOM.writexml(FH )

打印(“已写入”)。

有几个问题和解决办法

1自制的xml包含中文字符,读取失败

这个问题真的很麻烦,一个个修改起来又很麻烦,我的path包含中文,想用上面的方法批量修改,但是XML.DOM.minidom.parse (OS.path.join ) patth

批量从xml到txt,同样从txt到xml导入操作系统

path _ name=r ' d :neu-detimages ' #批量修改的文件夹路径

i=0 #起始数字

foriteminOS.listdir(path_name ) :

original _ name=OS.path.join (path _ name,item ) ) ) ) )。

new _ name=OS.path.join (path _ name,(' RES'str(I ).jpg ) )

#在上面的行中,选择您想要的格式和命名方法

print(new_name )是

OS.rename(original_name,new_name ) #重命名

i =1

txt修改,我也更改了脚本。 主要是删除了path的行,更改了第一行: import os,sys

path _ name=r ' d :studytest ' #请考虑批量修改的txt文件夹路径

# f=open (r ' d : (编码(left.txt ),模式=' w ' ) ) ) ) ) ) ) ) )

foriteminOS.listdir(path_name ) :

original _ name=OS.path.join (path _ name,item ) ) ) ) )。

是打印(item )

str_name=item.split ('.' )

file _ name=str _ name [0] '.' str _ name [1]

f=open(path_name''item,' r ' )这用于读取源文件

flist=f.readlines (

w=open(path_name''item,' w ' )这用于写入新文件以替换旧文件,并且可以使用与原始文件相同的名称复盖原始文件

for l in flist:

if 'version' in l:

l=l.replace (? XML版本=' 1.0 '?'')

替换#replace函数

#if 'path'not in l: #这里是为了删除带path的行

w .写入(l )。

# f .写入行(flist ) ) )。

写完后放回xml就好了……我真的是另一条路的mrdpkq哈哈哈

2密钥错误:‘none’

这是因为我的签证误操作了。 img标签在画边框的时候,灵机一下子画了“none”,忘了放进class里。 我找了半天……这是上述方法之一,筛选name是否都是你的class,找出错误的文件,删除就可以了。

3key error :‘width’

/faster-rcnn.py torch/data/cache/VOC _ 2007 _ train val _ gt _ roidb.pkl删除介绍即可。

4资产(boxes [ :2 ]=boxes [ :0 ] ).all ) ) ) ) ) ) )。

总之,就是图框太靠一边了,问题不大……

参考链接: https://blog.csdn.net/xzzppp/article/details/52036794

修改lib/datasets/imdb.py,append_flipped_images ()函数,一行代码在boxes [ :2 ]=widths [ I ]-ol dx1-1下

if boxes[b][2] boxes[b][0]:

boxes[b][0]=0

更改lib/datasets/pascal_voc.py,_load_pascal_annotation ()函数for ix,objinenumerate ) objs ) :

box=obj.find('bndbox ' ) )。

# make pixel indexes0-基

x1=浮动(bbox.find (xmin ).text () ) ) ) ) )。

y1=float(Bbox.find(ymin ).text () ) ) ) ) )。

x2=浮动(bbox.find (xmax ).text () ) ) ) ) )。

y2=浮动(bbox.find ) (' ymax ' ).text () ) ) ) ) ) ) ) )。

x1 y1 x2 y2本来就有-1,所以把-1全部删除就可以了。

如果没有用,参考元博进行步骤3的修改。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。