<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近學習Yolo v5是遇見了個問題,找的資料集全是xml檔案,VOC 的標註是 xml 格式的,而YOLO是.txt格式,那麼問題就來了,手動提取肯定是不可能的,那隻能借用程式解決咯。
這是xml樹形結構
這是txt格式
總結:
1.提取object->name、bndbox->xmin,ymin,xmax,ymin
2.格式轉化需要用公式轉換
YOLO資料集txt格式:
x_center :歸一化後的中心點x座標
y_center : 歸一化後的中心點y座標
w:歸一化後的目標框寬度
h: 歸一化後的目標況高度
(此處歸一化指的是除以圖片寬和高)
VOC資料集xml格式
yolo的四個資料 | xml->txt公式 |
---|---|
x_center | ((x_min+x_max)/2-1)/w_image |
y_center | ((y_min+y_max)/2-1)/h_image |
w | (x_max-x_min)/w_image |
h | (y_max-y_min)/h_image |
定義兩個資料夾,train放xml資料, labels放txt資料。
程式碼解析:
import os import xml.etree.ElementTree as ET import io find_path = './train/' #xml所在的檔案 savepath='./labels/' #儲存檔案 class Voc_Yolo(object): def __init__(self, find_path): self.find_path = find_path def Make_txt(self, outfile): out = open(outfile,'w') print("建立成功:{}".format(outfile)) return out def Work(self, count): #找到檔案路徑 for root, dirs, files in os.walk(self.find_path): #找到檔案目錄中每一個xml檔案 for file in files: #記錄處理過的檔案 count += 1 #輸入、輸出檔案定義 input_file = find_path + file outfile = savepath+file[:-4]+'.txt' #新建txt檔案,確保檔案正常儲存 out = self.Make_txt(outfile) #分析xml樹,取出w_image、h_image tree=ET.parse(input_file) root=tree.getroot() size=root.find('size') w_image=float(size.find('width').text) h_image=float(size.find('height').text) #繼續提取有效資訊來計算txt中的四個資料 for obj in root.iter('object'): #將型別提取出來,不同目標型別不同,本文僅有一個類別->0 classname=obj.find('name').text cls_id = classname xmlbox=obj.find('bndbox') x_min=float(xmlbox.find('xmin').text) x_max=float(xmlbox.find('xmax').text) y_min=float(xmlbox.find('ymin').text) y_max=float(xmlbox.find('ymax').text) #計算公式 x_center=((x_min+x_max)/2-1)/w_image y_center=((y_min+y_max)/2-1)/h_image w=(x_max-x_min)/w_image h=(y_max-y_min)/h_image #檔案寫入 out.write(str(cls_id)+" "+str(x_center)+" "+str(y_center)+" "+str(w)+" "+str(h)+'n') out.close() return count if __name__ == "__main__": data = Voc_Yolo(find_path) number = data.Work(0) print(number)
建立成功
與真實資料對比誤差很小
到此這篇關於Python實現xml格式轉txt格式的範例程式碼的文章就介紹到這了,更多相關Python xml轉txt內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45