最近剛剛接觸深度學習,并嘗試學習制作數據集,制作過程中發現了一個問題,現在跟大家分享一下。問題是這樣的,在制作voc數據集時,我采集的是灰度圖像,并已經用labelimg生成了每張圖像對應的XML文件。訓練時發現好多目標檢測模型使用的訓練集是彩色圖像,因此特征提取網絡的輸入是m×m×3的維度的圖像。所以我就想著把我采集的灰度圖像的深度也改成3吧。批量修改了圖像的深度后,發現XML中的depth也要由1改成3才行。如果重新對圖像標注一遍生成XML文件的話太麻煩,所以就想用python批量處理一下。果然在網上找到了類似的代碼,簡單修改一下就可以實現我們想要的功能了。
全部代碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#coding:utf-8 import os import os.path import xml.dom.minidom path = 'E:/data/ann/' #這里修改為自己存放XML文件的路徑 files = os.listdir(path) #獲取路徑下的所有文件的名稱 s = [] for xmlFile in files: if not os.path.isdir(xmlFile): #判斷是否是文件夾,不是文件夾才打開 print (xmlFile) #將獲取到的xml文件名送入到dom解析 dom = xml.dom.minidom.parse(os.path.join(path,xmlFile)) root = dom.documentElement ###獲取標簽對depth之間的值 depth = root.getElementsByTagName( 'depth' ) #修改相應標簽的值 for i in range ( len (depth)): print (depth[i].firstChild.data) a = depth[i].firstChild.data print ( type (a)) depth[i].firstChild.data = 3 print (depth[i].firstChild.data) #保存修改到xml文件中 with open (os.path.join(path,xmlFile), 'w' ) as fh: dom.writexml(fh) print ( '修改depth成功!' ) |
上面的代碼的思路是,讀取XML文件,并修改depth節點的內容修改為3,通過循環讀取XML文件,實現批量化修改XML文件中depth的值。
修改前后的結果
XML修改前depth的值:
XML修改后depth的值:
這樣,就可以使用自己制作的voc數據集進行訓練了。我選的這個方法可能比較傻
到此這篇關于使用python批量修改XML文件中圖像的depth值的文章就介紹到這了,更多相關python批量修改XML內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/m0_37835084/article/details/107454237