將 xml檔案訓練並儲存成txt檔案

2021-10-06 12:44:39 字數 2970 閱讀 1796

首先感謝博主: insomnia620

1.xml檔案是用labelimage工具標註的

在darknet-master/scripts/資料夾下,有voc_label.py檔案,是針對voc資料集生成標籤txt檔案的,這裡把這個檔案修改下,用來生成自己資料集的標籤txt檔案。

修改後的voc_label.py檔案如下:

#!/usr/bin/python

# -*- coding:utf-8 -*-

import xml.etree.elementtree as et

import pickle

import os

from os import listdir, getcwd

from os.path import join

#classes = ["aeroplane", "bicycle", "bird", "boat", "bottle"]

classes =

["smoke"

]#(改!)自己要測的目標類別

defconvert

(size, box)

: dw =1.

/(size[0]

) dh =1.

/(size[1]

) x =

(box[0]

+ box[1]

)/2.0-

1 y =

(box[2]

+ box[3]

)/2.0-

1 w = box[1]

- box[0]

h = box[3]

- box[2]

x = x*dw

w = w*dw

y = y*dh

h = h*dh

return

(x,y,w,h)

defconvert_annotation

(image_id)

: in_file =

open

('/root/darknet-master/data/annotations/%s.xml'

%(image_id)

)#(改!)自己的影象標籤xml檔案的路徑

out_file =

open

('/root/darknet-master/data/obj/%s.txt'

%(image_id)

,'w'

)#(改!)自己的影象標籤txt檔案要儲存的路徑

tree=et.parse(in_file)

#直接解析xml檔案

root = tree.getroot(

)#獲取xml檔案的根節點

size = root.find(

'size'

)#獲取指定節點「影象尺寸」

w =int(size.find(

'width'

).text)

#獲取影象寬

h =int(size.find(

'height'

).text)

#影象高

for obj in root.

iter

('object'):

difficult = obj.find(

'difficult'

).text#xml裡的difficult引數

cls = obj.find(

'name'

).text#要檢測的類別名稱name

if cls not

in classes or

int(difficult)==1

:continue

cls_id = classes.index(cls)

xmlbox = obj.find(

'bndbox'

) b =

(float

(xmlbox.find(

'xmin'

).text)

,float

(xmlbox.find(

'xmax'

).text)

,float

(xmlbox.find(

'ymin'

).text)

,float

(xmlbox.find(

'ymax'

).text)

) bb = convert(

(w,h)

, b)

out_file.write(

str(cls_id)

+" "

+" "

.join(

[str

(a)for a in bb])+

'\n'

)#用voc資料集的話,是將vocdevkit/voc2007/imagesets/main/資料夾下的所有txt都迴圈讀入了

#這裡我唯讀入所有待訓練影象的路徑list.txt

image_paths =

open

('/root/darknet-master/data/obj/list.txt'

).read(

).strip(

).split(

)#(改!)

]#image_id內容類似'0001.jpg'

image_id2=os.path.splitext(image_id)[0

]#image_id2內容類似'0001'

convert_annotation(image_id2)

DOM方式解析XML配置檔案,將資料儲存成陣列

header content type text html charset utf 8 doc new domdocument 1.0 utf 8 doc load config.xml 第一步獲得documentelement跟元素 config doc documentelement 獲得根節點...

C 建立XML檔案並儲存

隨著xml的普及以及在動態web應用程式中大量應用,如何通過.net建立,刪除,修改xml檔案變的也來也重要了。乙個簡單的概念是,xml檔案跟大的文字檔案並沒有什麼區別,同時它是先於.net出現,很多asp的開發者,當他需要程式輸出xml檔案的時候,通常都是用response.write 方法輸出為...

怎麼將資料儲存成XML格式的例子

protected string strxmlfile protected xmldocument objxmldoc new xmldocument public xmlcontrol string xmlfile catch system.exception ex strxmlfile xmlf...