目标检测中计算数据集每一类别框的数量

在这里插入图片描述
众所周知,一个好的目标检测模型需要大量的数据来训练,当数据量较多的情况,我们没办法直观看到每一类别的目标框个数,就无法判断类别是否平衡。
下面的算法作用就是统计数据集中每一类别的目标框个数,只需要修改xml文件地址就可直接使用。

# -*- coding:utf-8 -*-
import os
import xml.etree.ElementTree as ET
import numpy as np
import matplotlib
from 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 = r'xml文件地址'
    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('信息统计算完毕。')

版权声明:本文为CSDN博主「Fly~~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a_1234567890_/article/details/113111782

Fly~~

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

pytorch建立mobilenetV3-ssd网络并进行训练与预测

前言
这篇文章记录的是我在公司实习用深度学习做车辆信息识别项目时,用来做车辆检测的算法。因为我们公司面向的边缘端计算,边缘盒子的计算能力有限,所以我们在做算法研究时,就尽量选用轻量级算法