PythonはVOC形式のラベルの例を生成します

一般的に使用されるターゲット検出モデルは、基本的に、読み取られるPASCAL VOC形式のタグです。次のコードを使用してVOC形式のコードを生成し、必要に応じて変更できます。

from lxml import etree, objectify

def gen_txt(filename, h, w, c):
 E = objectify.ElementMaker(annotate=False)
 anno_tree = E.annotation(
 E.folder('VOC_OPEN_IMAGE'),
 E.filename(filename),
 E.source(
  E.database('The VOC2007 Database'),
  E.annotation('PASCAL VOC2007'),
  E.image('flickr'),
  E.flickrid("341012865")),
 E.size(
  E.width(w),
  E.height(h),
  E.depth(c)),
 E.segmented(0),
 E.object(
  E.name('1'),
  E.pose('left'),
  E.truncated('1'),
  E.difficult('0'),
  E.bndbox(
  E.xmin('0'),
  E.ymin('0'),
  E.xmax('0'),
  E.ymax('0'))),)
 etree.ElementTree(anno_tree).write('ann/'+filename[:-4]+".xml", pretty_print=True)

補足知識:pythonはPASCALVOC注釈データの統計を実行します

トレーニングデータのカテゴリとすべてのターゲットの数をカウントするために使用されます。

# coding:utf-8import xml.etree.cElementTree as ET
import os
from collections import Counter
import shutil
 
# Counter({'towCounter({'tower': 3074, 'windpower': 2014, 'thermalpower': 689, 'hydropower': 261, 'transformer':225})
# total_num:6263
 
def count(pathdir,despath):
 category =[]
 path = pathdir +'/XML/'for index,xml inenumerate(os.listdir(path)):
 # print(str(index)+' xml: '+ xml)
 root = ET.parse(os.path.join(path, xml))
 objects = root.findall('object')
 
 # ================== select images which has a special object=============for obj in objects:
 obj_label = obj.find('name').text
 if obj_label =='transformer':print(xml)
 imgfile = pathdir +'JPEG/'+ xml.replace('xml','jpg')
 img_despath = despath + xml.replace('xml','jpg')
 # if not os.path.exists(img_despath):
 shutil.copyfile(imgfile, img_despath)
 
 # ================== select images which has a special object=============
 
 category +=[ob.find('name').text for ob in objects]print(Counter(category))
 total_num =sum([value for key, value inCounter(category).items()])print('total_num:',total_num)if __name__ =='__main__':
 # pathdirs =list(set(os.listdir('./'))^set(['tools','count.py']))
 # print(pathdirs)
 # for pathdir in pathdirs:
 pathdir ='/summer/Desktop/power_traindata/'
 despath ='/transformer/'count(pathdir,despath)

上記のPythonによってVOC形式で生成されたタグの例は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。

Recommended Posts

PythonはVOC形式のラベルの例を生成します
Pythonは.nii形式の画像の例を読み取ります
npy形式のデータ例へのPythonアクセス
100の小さなPythonの例
Pythonは意味のある画像を生成します