日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 統計數據集標簽的類別及數目操作

瀏覽:14日期:2022-06-18 17:26:50

看了大神統計voc數據集標簽框后,針對自己標注數據集,靈活應用 ,感謝!

看代碼吧~

import reimport osimport xml.etree.ElementTree as ETclass1 = ’answer’class2 = ’hand’class3 = ’write’class4 = ’music’class5 = ’phone’’’’class6 = ’bus’class7 = ’car’class8 = ’cat’class9 = ’chair’class10 = ’cow’class11 = ’diningtable’class12 = ’dog’class13 = ’horse’class14 = ’motorbike’class15 = ’person’class16 = ’pottedplant’class17 = ’sheep’class18 = ’sofa’class19 = ’train’class20 = ’tvmonitor’’’’annotation_folder = ’/home/.../train/’#改為自己標簽文件夾的路徑#annotation_folder = ’/home/.../VOC2007/Annotations/’list = os.listdir(annotation_folder) def file_name(file_dir):L = []for root, dirs, files in os.walk(file_dir):for file in files:if os.path.splitext(file)[1] == ’.xml’:L.append(os.path.join(root, file))return L total_number1 = 0total_number2 = 0total_number3 = 0total_number4 = 0total_number5 = 0’’’total_number6 = 0total_number7 = 0total_number8 = 0total_number9 = 0total_number10 = 0total_number11 = 0total_number12 = 0total_number13 = 0total_number14 = 0total_number15 = 0total_number16 = 0total_number17 = 0total_number18 = 0total_number19 = 0total_number20 = 0’’’total = 0total_pic=0 pic_num1 = 0pic_num2 = 0pic_num3 = 0pic_num4 = 0pic_num5 = 0’’’pic_num6 = 0pic_num7 = 0pic_num8 = 0pic_num9 = 0pic_num10 = 0pic_num11 = 0pic_num12 = 0pic_num13 = 0pic_num14 = 0pic_num15 = 0pic_num16 = 0pic_num17 = 0pic_num18 = 0pic_num19 = 0pic_num20 = 0’’’ flag1 = 0flag2 = 0flag3 = 0flag4 = 0flag5 = 0’’’flag6 = 0flag7 = 0flag8 = 0flag9 = 0flag10 = 0flag11 = 0flag12 = 0flag13 = 0flag14 = 0flag15= 0flag16 = 0flag17 = 0flag18 = 0flag19 = 0flag20 = 0’’’ xml_dirs = file_name(annotation_folder) for i in range(0, len(xml_dirs)):print(xml_dirs[i])#path = os.path.join(annotation_folder,list[i])#print(path) annotation_file = open(xml_dirs[i]).read() root = ET.fromstring(annotation_file)#tree = ET.parse(annotation_file)#root = tree.getroot() total_pic = total_pic + 1for obj in root.findall(’object’):label = obj.find(’name’).textif label == class1:total_number1=total_number1+1flag1=1total = total + 1#print('bounding box number:', total_number1)if label == class2:total_number2=total_number2+1flag2=1total = total + 1if label == class3:total_number3=total_number3+1flag3=1total = total + 1if label == class4:total_number4=total_number4+1flag4=1total = total + 1if label == class5:total_number5=total_number5+1flag5=1total = total + 1’’’if label == class6:total_number6=total_number6+1flag6=1total = total + 1if label == class7:total_number7=total_number7+1flag7=1total = total + 1if label == class8:total_number8=total_number8+1flag8=1total = total + 1if label == class9:total_number9=total_number9+1flag9=1total = total + 1if label == class10:total_number10=total_number10+1flag10=1total = total + 1if label == class11:total_number11=total_number11+1flag11=1total = total + 1if label == class12:total_number12=total_number12+1flag12=1total = total + 1if label == class13:total_number13=total_number13+1flag13=1total = total + 1if label == class14:total_number14=total_number14+1flag14=1total = total + 1if label == class15:total_number15=total_number15+1flag15=1total = total + 1if label == class16:total_number16=total_number16+1flag16=1total = total + 1if label == class17:total_number17=total_number17+1flag17=1total = total + 1if label == class18:total_number18=total_number18+1flag18=1total = total + 1if label == class19:total_number19=total_number19+1flag19=1total = total + 1if label == class20:total_number20=total_number20+1flag20=1total = total + 1’’’ if flag1==1:pic_num1=pic_num1+1#print('pic number:', pic_num1)flag1=0if flag2==1:pic_num2=pic_num2+1flag2=0if flag3==1:pic_num3=pic_num3+1flag3=0if flag4==1:pic_num4=pic_num4+1flag4=0if flag5==1:pic_num5=pic_num5+1flag5=0’’’if flag6==1:pic_num6=pic_num6+1flag6=0if flag7==1:pic_num7=pic_num7+1flag7=0if flag8==1:pic_num8=pic_num8+1flag8=0if flag9==1:pic_num9=pic_num9+1flag9=0if flag10==1:pic_num10=pic_num10+1flag10=0if flag11==1:pic_num11=pic_num11+1flag11=0if flag12==1:pic_num12=pic_num12+1flag12=0if flag13==1:pic_num13=pic_num13+1flag13=0if flag14==1:pic_num14=pic_num14+1flag14=0if flag15==1:pic_num15=pic_num15+1flag15=0if flag16==1:pic_num16=pic_num16+1flag16=0if flag17==1:pic_num17=pic_num17+1flag17=0if flag18==1:pic_num18=pic_num18+1flag18=0if flag19==1:pic_num19=pic_num19+1flag19=0if flag20==1:pic_num20=pic_num20+1flag20=0’’’ print(class1,pic_num1,total_number1)print(class2,pic_num2,total_number2)print(class3,pic_num3, total_number3)print(class4,pic_num4, total_number4)print(class5,pic_num5, total_number5)’’’print(class6,pic_num6, total_number6)print(class7,pic_num7, total_number7)print(class8,pic_num8, total_number8)print(class9,pic_num9, total_number9)print(class10,pic_num10, total_number10)print(class11,pic_num11,total_number11)print(class12,pic_num12,total_number12)print(class13,pic_num13, total_number13)print(class14,pic_num14, total_number14)print(class15,pic_num15, total_number15)print(class16,pic_num16, total_number16)print(class17,pic_num17, total_number17)print(class18,pic_num18, total_number18)print(class19,pic_num19, total_number19)print(class20,pic_num20, total_number20)’’’ print('total', total_pic, total)

補充:【數據集處理】Python對目標檢測數據集xml文件操作(統計目標種類、數量、面積、比例等&修改目標名字)

1. 根據xml文件統計目標種類以及數量

# -*- coding:utf-8 -*-#根據xml文件統計目標種類以及數量import osimport xml.etree.ElementTree as ETimport numpy as npnp.set_printoptions(suppress=True, threshold=np.nan)import matplotlibfrom PIL import Image def parse_obj(xml_path, filename): tree=ET.parse(xml_path+filename) objects=[] for obj in tree.findall(’object’): obj_struct={} obj_struct[’name’]=obj.find(’name’).text objects.append(obj_struct) return objects def read_image(image_path, filename): im=Image.open(image_path+filename) W=im.size[0] H=im.size[1] area=W*H im_info=[W,H,area] return im_info if __name__ == ’__main__’: xml_path=’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations/’ filenamess=os.listdir(xml_path) filenames=[] for name in filenamess: name=name.replace(’.xml’,’’) filenames.append(name) recs={} obs_shape={} classnames=[] num_objs={} obj_avg={} for i,name in enumerate(filenames): recs[name]=parse_obj(xml_path, name+ ’.xml’ ) for name in filenames: for object in recs[name]: if object[’name’] not in num_objs.keys(): num_objs[object[’name’]]=1 else: num_objs[object[’name’]]+=1 if object[’name’] not in classnames: classnames.append(object[’name’]) for name in classnames: print(’{}:{}個’.format(name,num_objs[name])) print(’信息統計算完畢。’)

Python 統計數據集標簽的類別及數目操作

2.根據xml文件統計目標的平均長度、寬度、面積以及每一個目標在原圖中的占比

# -*- coding:utf-8 -*-#統計# 計算每一個目標在原圖中的占比# 計算目標的平均長度、# 計算平均寬度,# 計算平均面積、# 計算目標平均占比import osimport xml.etree.ElementTree as ETimport numpy as np#np.set_printoptions(suppress=True, threshold=np.nan) #10,000,000np.set_printoptions(suppress=True, threshold=10000000) #10,000,000import matplotlibfrom PIL import Imagedef parse_obj(xml_path, filename): tree = ET.parse(xml_path + filename) objects = [] for obj in tree.findall(’object’):obj_struct = {}obj_struct[’name’] = obj.find(’name’).textbbox = obj.find(’bndbox’)obj_struct[’bbox’] = [int(bbox.find(’xmin’).text), int(bbox.find(’ymin’).text), int(bbox.find(’xmax’).text), int(bbox.find(’ymax’).text)]objects.append(obj_struct) return objectsdef read_image(image_path, filename): im = Image.open(image_path + filename) W = im.size[0] H = im.size[1] area = W * H im_info = [W, H, area] return im_infoif __name__ == ’__main__’: image_path = ’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/JPEGImages/’ xml_path = ’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations/’ filenamess = os.listdir(xml_path) filenames = [] for name in filenamess:name = name.replace(’.xml’, ’’)filenames.append(name) print(filenames) recs = {} ims_info = {} obs_shape = {} classnames = [] num_objs={} obj_avg = {} for i, name in enumerate(filenames):print(’正在處理 {}.xml ’.format(name))recs[name] = parse_obj(xml_path, name + ’.xml’)print(’正在處理 {}.jpg ’.format(name))ims_info[name] = read_image(image_path, name + ’.jpg’) print(’所有信息收集完畢。’) print(’正在處理信息......’) for name in filenames:im_w = ims_info[name][0]im_h = ims_info[name][1]im_area = ims_info[name][2]for object in recs[name]: if object[’name’] not in num_objs.keys():num_objs[object[’name’]] = 1 else:num_objs[object[’name’]] += 1 #num_objs += 1 ob_w = object[’bbox’][2] - object[’bbox’][0] ob_h = object[’bbox’][3] - object[’bbox’][1] ob_area = ob_w * ob_h w_rate = ob_w / im_w h_rate = ob_h / im_h area_rate = ob_area / im_area if not object[’name’] in obs_shape.keys():obs_shape[object[’name’]] = ([[ob_w, ob_h, ob_area, w_rate, h_rate, area_rate]]) else:obs_shape[object[’name’]].append([ob_w, ob_h, ob_area, w_rate, h_rate, area_rate])if object[’name’] not in classnames: classnames.append(object[’name’]) # 求平均 for name in classnames:obj_avg[name] = (np.array(obs_shape[name]).sum(axis=0)) / num_objs[name]print(’{}的情況如下:*******n’.format(name))print(’ 目標平均W={}’.format(obj_avg[name][0]))print(’ 目標平均H={}’.format(obj_avg[name][1]))print(’ 目標平均area={}’.format(obj_avg[name][2]))print(’ 目標平均與原圖的W比例={}’.format(obj_avg[name][3]))print(’ 目標平均與原圖的H比例={}’.format(obj_avg[name][4]))print(’ 目標平均原圖面積占比={}n’.format(obj_avg[name][5])) print(’信息統計計算完畢。’)

Python 統計數據集標簽的類別及數目操作

3.修改xml文件中某個目標的名字為另一個名字

#修改xml文件中的目標的名字,import os, sysimport globfrom xml.etree import ElementTree as ET# 批量讀取Annotations下的xml文件# per=ET.parse(r’C:UsersrockhuangDesktopAnnotations000003.xml’)xml_dir = r’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations’xml_list = glob.glob(xml_dir + ’/*.xml’)for xml in xml_list: print(xml) per = ET.parse(xml) p = per.findall(’/object’) for oneper in p: # 找出person節點child = oneper.getchildren()[0] # 找出person節點的子節點if child.text == ’PinNormal’: #需要修改的名字 child.text = ’normal bolt’ #修改成什么名字if child.text == ’PinDefect’: #需要修改的名字 child.text = ’defect bolt-1’ #修改成什么名字 per.write(xml) print(child.tag, ’:’, child.text)

Python 統計數據集標簽的類別及數目操作

修改為:

Python 統計數據集標簽的類別及數目操作

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合激情网...| 亚洲欧美日韩国产| 91亚洲精品在看在线观看高清| 婷婷综合网站| 欧美亚洲激情| 自拍日韩欧美| 99re国产精品| 亚洲欧美网站在线观看| 日本欧美大码aⅴ在线播放| 日韩国产91| 午夜电影一区| 欧美三级第一页| 国产日韩一区二区三区在线| 国产精品99久久免费观看| 里番精品3d一二三区| 91欧美在线| 日韩精品一区二区三区免费观看| 99精品小视频| 老牛国产精品一区的观看方式| 亚洲最新av| 欧美日韩精品一区二区三区视频 | 国产精久久久| 精品视频一区二区三区在线观看| 成人免费一区| 亚洲1234区| 午夜国产精品视频| 亚洲人成高清| 精品久久亚洲| 午夜欧美精品| 日韩欧美中文字幕一区二区三区 | 精品国产中文字幕第一页| 成人一区不卡| 美女久久久久| 日日夜夜免费精品视频| 欧美视频久久| 欧美日韩视频免费观看| 亚洲主播在线| 国产精品久久久久久模特| 成人精品亚洲| 日韩欧美中文字幕一区二区三区 | 99国产精品久久久久久久成人热| 蜜桃久久久久久| 欧美激情三区| 91精品福利| 国产毛片久久久| 日韩欧美少妇| 日本欧洲一区二区| 精品一区二区三区中文字幕在线| 欧美日韩一区二区综合| 日本亚洲最大的色成网站www| 色爱综合网欧美| 视频一区欧美日韩| 精品免费av| 亚洲欧美日韩综合国产aⅴ| 国产精品任我爽爆在线播放 | 成人国产精品久久| 2023国产精品久久久精品双| 国产欧美大片| 婷婷综合激情| 精品资源在线| 亚洲精品三级| 久久婷婷av| 国产九九精品| 在线一区电影| 成人精品视频| 日韩一区二区三免费高清在线观看| 麻豆网站免费在线观看| 四虎精品永久免费| 激情欧美国产欧美| 老司机精品视频在线播放| 噜噜噜久久亚洲精品国产品小说| 国产免费av一区二区三区| 久久中文字幕av| 国产欧美另类| 丝袜亚洲精品中文字幕一区| 精品国产美女a久久9999| 丝袜a∨在线一区二区三区不卡| 91青青国产在线观看精品| 欧美日本不卡| 蜜桃视频一区二区| 亚洲国产不卡| 免费观看亚洲| 免费亚洲婷婷| 日本在线一区二区三区| 精品高清久久| 国产亚洲高清在线观看| 欧美大黑bbbbbbbbb在线| 国产一区二区三区四区大秀| 日韩高清不卡在线| 在线观看亚洲精品福利片| 国产成人精品一区二区免费看京 | jiujiure精品视频播放| 91亚洲国产高清| 国产精品对白久久久久粗| 蜜臀久久久久久久| 欧美日韩激情| 精品欧美久久| 欧美sss在线视频| 首页国产精品| 国精品产品一区| 欧美国产中文高清| 欧美日韩国产一区二区在线观看| 丝袜诱惑制服诱惑色一区在线观看| 欧美91精品| 欧美91福利在线观看| | 亚洲一级少妇| 成人在线视频区| 麻豆国产欧美一区二区三区 | 中文字幕高清在线播放| 久久国产婷婷国产香蕉| 视频一区日韩精品| 综合干狼人综合首页| 久久国产精品久久w女人spa| 亚洲欧美高清| 欧美另类综合| 伊人影院久久| 日韩视频不卡| 午夜免费一区| 午夜久久99| 99在线精品免费视频九九视| 成人av动漫在线观看| 亚洲激情黄色| 国产一级一区二区| 亚洲一区国产一区| 99国产精品久久久久久久| 免费不卡中文字幕在线| 婷婷丁香综合| 久久国产精品99国产| 一区二区三区网站| 日韩一二三区在线观看| 日韩免费精品| 欧美精品福利| 欧美日韩国产一区二区在线观看| 国产三级一区| 精品视频国内| 国产精品v一区二区三区| 国产精品s色| 麻豆理论在线观看| 久久精品国产大片免费观看| 午夜影院欧美| 蜜臀av亚洲一区中文字幕| 亚洲精品美女91| 日韩精品国产欧美| 国产精品美女午夜爽爽| 精品国产精品国产偷麻豆| 精品三级在线观看视频| 久草免费在线视频| 99成人超碰| 性欧美长视频| 日韩精品一区二区三区免费视频| 青青在线精品| 国产一区二区三区日韩精品| 国产 日韩 欧美一区| 国产亚洲一区在线| 欧美日韩一视频区二区| 精品一区91| 欧美精品一二| 视频一区中文字幕精品| 免费一级欧美片在线观看网站| 鲁鲁在线中文| 亚洲欧美日韩精品一区二区 | 久久精品国产亚洲一区二区三区| 伊人网在线播放| 五月天久久777| 日韩专区视频网站| 精品久久一区| 亚洲精品在线观看91| 深夜福利一区| 成人日韩av| 一区在线免费| 青青草国产成人99久久| 国产在线观看www| 丝袜国产日韩另类美女| 你懂的国产精品永久在线| 日韩欧美一区免费| 欧美精品激情| 国产精品一区二区免费福利视频| 激情国产在线| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久久黄色| 夜夜嗨av一区二区三区网站四季av| 欧美日韩亚洲一区在线观看| 日韩免费看片| 日本一区二区三区视频在线看 | 日韩国产在线观看| 9999国产精品| 在线亚洲自拍| 国产精品麻豆成人av电影艾秋| 久久久夜精品| 日韩高清一级| 精精国产xxxx视频在线野外| 日本不卡一区二区| 久久久人人人| 国产探花在线精品一区二区| 99精品视频在线| 国产精品久久久久av蜜臀| 亚洲欧美一区在线| 久久精品日韩欧美| 日本在线观看不卡视频|