统计数据集中目标大、中、小个数
最近看到一篇论文,其中在数据集介绍部分统计了大、中、小目标信息。因此,为了获取数据集的统计信息,我参考了作者写的代码基于tensorpack统计coco数据集中大、中、小目标的数量
精简版代码如下(内有多个参数需要修改,仔细查看注释)
# 1、统计数据集中小、中、大 GT的个数
# 2、统计某个类别小、中、大 GT的个数
# 3、统计数据集中ss、sm、sl GT的个数
import os
from pathlib import Path
import matplotlib.pyplot as plt
# 设置中文字体为微软雅黑
plt.rcParams['font.sans-serif'] = 'SimHei'
def getGtAreaAndRatio(label_dir):
"""
得到不同尺度的gt框个数
:params label_dir: label文件地址
:return data_dict: {dict: 3} 3 x {'类别':{’area':[...]}, {'ratio':[...]}}
"""
data_dict = {
}
assert Path(label_dir).is_dir(), "label_dir is not exist"
txts = os.listdir(label_dir) # 得到label_dir目录下的所有txt GT文件
for txt in txts: # 遍历每一个txt文件
with open(os.path.join(label_dir, txt), 'r') as f: # 打开当前txt文件 并读取所有行的数据
lines = f.readlines()
for line in lines: # 遍历当前txt文件中每一行的数据
temp = line.split() # str to list{5}
coor_list = list(map(lambda x: x, temp[1:])) # [x, y, w, h]
area = float(coor_list[2]) *