(七)每个类别计数,基于yolo格式标签

文章讲述了如何使用Python的os库操作文件,统计在BDD100K数据集中val标签文件夹中各类别标签的出现次数,用于对象检测任务中的类别分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os

# 标签文件夹路径
annotation_folder = "D:/PycharmProjects/yolov5-master/bdd100knightyolo/labels/val"

# 统计各类别标签数量的字典
label_counts = {}

# 获取标签文件夹中所有标签文件的路径
annotation_files = os.listdir(annotation_folder)

# 遍历每个标签文件
for annotation_file in annotation_files:
    # 标签文件路径
    annotation_path = os.path.join(annotation_folder, annotation_file)

    # 读取标签数据
    with open(annotation_path, "r") as file:
        annotations = file.readlines()

    # 统计每个标签出现的次数
    for annotation in annotations:
        label = annotation.split()[0]
        if label in label_counts:
            label_counts[label] += 1
        else:
            label_counts[label] = 1

# 打印各类别标签数量
for label, count in label_counts.items():
    print(f"{label}: {count}")

### 统计YOLO格式标签文件中每个类别样本数量 为了统计YOLO格式标注文件中的各个类别的样本数量,可以通过读取这些标注文件并解析其中的内容来完成。通常情况下,YOLO格式的标注文件是以`.txt`形式存在,每一行代表一个边界框,其格式如下: ``` <class_id> <x_center> <y_center> <width> <height> ``` 下面是一个完整的Python脚本来实现这一功能。 #### 导入必要的库 ```python import os from collections import Counter ``` #### 定义统计函数 定义一个名为 `count_classes_in_yolo_format` 的函数,该函数接收YOLO标签所在的路径作为参数,并返回一个字典,键为类别ID,值为对应的数量。 ```python def count_classes_in_yolo_format(labels_directory): class_counts = Counter() # 遍历指定目录下的所有 .txt 文件 for filename in os.listdir(labels_directory): if filename.endswith(".txt"): file_path = os.path.join(labels_directory, filename) with open(file_path, 'r') as f: lines = f.readlines() for line in lines: parts = line.strip().split(' ') class_id = int(parts[0]) class_counts[class_id] += 1 return dict(class_counts) ``` 此部分代码遍历给定目录下所有的 `.txt` 文件,逐行读取内容并将每行的第一个数值视为类别编号进行累加计算[^1]。 #### 使用示例 假设 YOLO 标签存储在一个叫做 `./data/yolo_labels/` 的文件夹内,则可以这样调用上述函数: ```python if __name__ == "__main__": labels_dir = './data/yolo_labels/' result = count_classes_in_yolo_format(labels_dir) print("Class counts:", result) ``` 这段程序会打印出每一个类别及其出现次数的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值