一般的に使用されるターゲット検出モデルは、基本的に、読み取られる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形式で生成されたタグの例は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。