欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据集label的统计分布

程序员文章站 2022-06-21 14:50:59
...

在训练模型前,需要知道数据集与标注的分布情况。看看有没有标注缺失的图像,做标注补全;类别数量不平衡的话,也要做相应的数据预处理,否则模型训练的效果不好。因此需要统计数据集的标注数量【num_anno】,类别数量【num_classes】,及各个类别标注的分布【num_label】。以xml标注文件为例,获取各类别的标签数据分布。

import  xml.dom.minidom
import os,sys
import matplotlib.pyplot as plt  
 
rootdir = '../mmdetection/data/abn/VOCdevkit/VOC2012/Annotations/'
doc_xml = os.listdir(rootdir) 
print('num_anno', len(doc_xml))
classes_list = []
num_label = {}
for i in range(0,len(doc_xml)):
    path = os.path.join(rootdir,doc_xml[i])
    if os.path.isfile(path):
        #打开xml文档
        dom = xml.dom.minidom.parse(path)
        #得到dom元素的label
        root = dom.documentElement
        label=dom.getElementsByTagName('name')
        for i in range(len(label)):
            c1 = label[i]
            class_name = c1.firstChild.data
            #列表中不存在则存入列表
            if classes_list.count(class_name)==0:
                classes_list.append(class_name)
                num_label[class_name] = 0
            num_label[class_name] += 1
print('num_classes', len(classes_list))
print('num_label', num_label)
plt.bar(range(len(num_label.keys())), num_label.values(), color='skyblue', tick_label=num_label.keys())

可视化各个类别的标注数量,更直观看到标注分布情况。

数据集label的统计分布

相关标签: 代码工具