工具指令碼 VOC格式資料集修改XML檔案類別標籤

2021-10-19 02:46:25 字數 2210 閱讀 4224

#!/usr/bin/env python2

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

import os

import xml.etree.elementtree as et

origin_ann_dir =

'/data_1/xml/'

# 設定原始標籤路徑為 annos

new_ann_dir =

'/data_1/xml_new/'

# 設定新標籤路徑 annotations

for dirpaths, dirnames, filenames in os.walk(origin_ann_dir)

:# os.walk遊走遍歷目錄名

for filename in filenames:

print

("process..."

)if os.path.isfile(r'%s%s'

%(origin_ann_dir, filename)):

# 獲取原始xml檔案絕對路徑,isfile()檢測是否為檔案 isdir檢測是否為目錄

origin_ann_path = os.path.join(r'%s%s'

%(origin_ann_dir, filename)

)# 如果是,獲取絕對路徑(重複**)

new_ann_path = os.path.join(r'%s%s'

%(new_ann_dir, filename)

) tree = et.parse(origin_ann_path)

# et是乙個xml檔案解析庫,et.parse()開啟xml檔案。parse--"解析"

root = tree.getroot(

)# 獲取根節點

forobject

in root.findall(

'object'):

# 找到根節點下所有「object」節點

name =

str(

object

.find(

'name'

).text)

# 找到object節點下name子節點的值(字串)

# 功能1.刪除指定類別的標籤。如果name等於str,則刪除該節點

# if (name in ["car_head"]):

# root.remove(object)

# 功能2.修改指定類別的標籤。如果name等於str,則修改name

if(name in

["bigcar"])

:object

.find(

'name'

).text =

"hongzhang"

if(name in

["smallcar"])

:object

.find(

'name'

).text =

"erweima"

# # 功能3.刪除labelmap中沒有的標籤。檢查是否存在labelmap中沒有的類別

# for object in root.findall('object'):

# name = str(object.find('name').text)

# if not (name in ["chepai","chedeng","chebiao","person"]):

# print(filename + "------------->label is error--->" + name)

# # 功能4.比對xml中filename名稱與名稱是否一致。如果xml中filename名稱與檔名稱不一致,則對其進行修改

#tree為檔案,write寫入新的檔案中。

VOC資料集格式介紹

深度學習很多框架都在使用voc資料集,所以先來研究一下voc資料集的具體內容。以pascal voc2017為例,它包含如下5個資料夾 pascal voc提供的所有的,其中包括訓練,測試。存放xml格式的標籤檔案,每個xml對應jpegimage中的一張。可使用labelimg進行標註和檢視。影象...

VOC格式資料集轉YOLO格式資料集

voc使用xml來描述標註,而yolo使用txt格式檔案,導致voc格式資料集無法直接拿來訓練yolo,這就需要轉換格式。為了不重複造輪子,我們使用convert2yolo來進行轉換。python3 example.py datasets voc img path downloads voc2028...

coco分割資料集轉voc格式

coco資料中的ploygon即為標註資料,兩個相連數字為乙個座標 而voc的分割標註直接為png的8位偽彩色圖,通過呼叫調色盤來顯示色彩。因此,要把分割資料整理為voc格式,通過以下步驟 第一,在原圖中繪製目標輪廓並填充,需要注意的是,一般我們的資料都是32位rgb彩色圖,因此,首先需要將32位r...