根据label中的txt文件统计不同class的数量,代码实现

import os
import matplotlib.pyplot as plt
import numpy as np

folder_path = r"D:\YWJ\5_zsj_dataset\3500_division\val\labels"  # 存放Labels路径
classes_file = "classes.txt"  # 存放类别文件路径

classes_data = []
file_list = os.listdir(folder_path)

# print(file_list)

for classes in open(classes_file, 'r').readlines():
    dr = [classes.replace("\n", ""),0]
    classes_data.append(dr)
    # print(classes_data)

for item in file_list:
    if item.split('.')[-1] == "txt" and item != "classes.txt":
        for line in open(folder_path + "/" + item, 'r').readlines():
            for i in range(len(classes_data)):
                if line.split(' ')[0] == str(i):
                    classes_data[i][1] += 1
                    # print(max(classes_data[i][1]))

for num1 in range(0,4):
    # num1=0
    print(classes_data[num1][
### 如何统计YOLO数据集中各类别标签的数量 为了实现这一目的,可以通过编写Python脚本来读取YOLO格式的标注文件统计各个类别的实例数量。YOLO格式的标注文件通常是以`.txt`结尾的小型文本文件,其中每行代表一个边界框及其对应的类别索引。 #### 方法概述 通过遍历指定目录下的所有标注文件,解析每个文件中的类别编号,并维护一个字典来记录不同类别的出现次数。最终输出该字典即可得到各分类的具体数目[^1]。 #### Python代码示例 下面是一个简单的Python程序用于完成上述任务: ```python import os def count_class_labels(label_dir, num_classes=80): class_counts = [0] * num_classes for filename in os.listdir(label_dir): if not filename.endswith('.txt'): continue with open(os.path.join(label_dir, filename), 'r') as f: lines = f.readlines() for line in lines: parts = line.strip().split(' ') class_id = int(parts[0]) if class_id >= num_classes or class_id < 0: raise ValueError(f"Invalid class ID {class_id} found.") class_counts[class_id] += 1 return dict(enumerate(class_counts)) label_directory = r'data/labels/train' # 设置为实际存储YOLO格式标签的位置 result = count_class_labels(label_directory) for cls, cnt in result.items(): print(f"Class {cls}: {cnt}") ``` 此段代码定义了一个名为`count_class_labels`的功能函数,接受两个参数:一个是包含YOLO格式标签文件夹路径;另一个是指定的最大可能类别数,默认情况下设为COCO数据集常用的80个类别。对于每一个有效的`.txt`文件,都会逐行处理其内容,提取出第一个字段作为类别ID,并更新相应的计数值。最后返回的是一个键值对形式的结果列表,表示每个类别的总数量[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值