行人检测数据集CrowdHuman简介,odgt标注格式转为yolo格式

行人检测数据集CrowdHuman简介,odgt标注格式转为yolo格式

一、引言

当前业内针对行人检测的数据集有很多,但针对实际场景中的遮挡目标的检测精度仍有待进一步提升。

二、CrowdHuman数据集简介

于是就找到了旷世公开的CrowdHuman数据集。地址:https://www.crowdhuman.org/。该数据集的中文摘要如下:

**近年来,人类检测技术取得了显著进展。然而,在高度拥挤的环境中,人体检测仍面临遮挡问题,且现有的人体检测基准在代表人群场景方面仍显不足。为了解决这一问题,本文介绍了一个新的数据集——CrowdHuman1,以便更好地评估人群场景中的检测器。CrowdHuman数据集规模庞大,注释丰富,具有高度的多样性。该数据集包含47万个人体实例,训练和验证子集中每张图片平均有22.6个人,且包含各种遮挡情况。每个人体实例都配有头部边界框、可见区域边界框和全身边界框的注释。

本文还介绍了基于CrowdHuman数据集的基线性能,展示了最先进的检测框架。在跨数据集泛化的实验中,CrowdHuman在多个之前的数据集(如加州理工学院数据集、CityPersons和Brainwash)上表现出色,取得了领先的性能,无需复杂的特征工程。我们希望CrowdHuman数据集能够作为一个坚实的基准,推动人类检测任务的未来研究。**
在这里插入图片描述
该数据集的图像样本数和图像中的遮挡目标很多,比较适用于实际场景。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、odgt格式转成yolo格式

但是该数据集的标注格式是odgt的,找了很多文章但是都没法解决,要么是转化格式出错,要么是转成的yolo格式的标注数据没有归一化,网上目前开源的转换源码都没法用。

因为我这边只需要检测人员(person),所以干脆就自己写了一个,直接把odgt的标注数据转化到一个文件夹下,生成对应的txt标注数据,
代码如下:

大家只需要改这三处路径即可
odgt_path = odgt后缀的文件位置;
output_dir = 输出的txt文件夹的位置;
img_path = 图像文件夹位置(需要找到原图的尺寸以此计算txt文件归一化后的值)

import os
import json
from PIL import Image

def load_func(fpath):
    """
    Load and parse ODGT file
    """
    assert os.path.exists(fpath), f"File not found: {
     fpath}"
    with open(fpath, 'r') as fid:
        lines = fid.readline
CrowdHuman数据集是一个人群检测数据集,包含了大量的图片和标注信息。如果想要将CrowdHuman数据集转换为YOLO格式的txt文件,可以按照以下步骤进行操作: 1. 安装CrowdHuman数据集Python API CrowdHuman数据集提供了Python API,可以方便地读取数据集中的图片和标注信息。首先需要安装该Python API,可以使用以下命令进行安装: ``` pip install crowdhuman ``` 2. 下载CrowdHuman数据集 在进行转换之前,需要先下载CrowdHuman数据集。可以在CrowdHuman官网上进行下载,也可以使用以下命令进行下载: ``` wget https://storage.googleapis.com/crowdhumandata/crowdhuman_train.zip ``` 3. 编写转换脚本 接下来需要编写Python脚本,将CrowdHuman数据集中的标注信息转换为YOLO格式的txt文件。可以参考以下代码: ```python import os import cv2 import crowdhuman as ch # CrowdHuman数据集的根目录 root = '/path/to/crowdhuman' # YOLO格式的txt文件保存路径 save_path = '/path/to/save' # CrowdHuman数据集中的类别 classes = ['person'] # 遍历CrowdHuman数据集中的所有图片 for img_info in ch.iter_images(root): img_path = img_info['file_name'] img = cv2.imread(img_path) # 获取图片的尺寸 height, width, _ = img.shape # 获取图片中的所有标注框 for ann in img_info['annotations']: category = ann['category'] # 只处理类别为person的标注框 if category not in classes: continue bbox = ann['bbox'] x, y, w, h = bbox # 将标注框转换为YOLO格式 x_center = (x + w / 2) / width y_center = (y + h / 2) / height x_width = w / width y_height = h / height # 保存标注框的信息到txt文件中 save_file = os.path.splitext(os.path.basename(img_path))[0] + '.txt' save_file = os.path.join(save_path, save_file) with open(save_file, 'a') as f: f.write(f'{classes.index(category)} {x_center:.6f} {y_center:.6f} {x_width:.6f} {y_height:.6f}\n') ``` 上述代码中,首先遍历CrowdHuman数据集中的所有图片,然后获取图片中的所有标注框。接着将标注框转换为YOLO格式的坐标,并保存到txt文件中。 4. 运行转换脚本 编写完转换脚本后,就可以运行该脚本,将CrowdHuman数据集中的标注信息转换为YOLO格式的txt文件。可以使用以下命令进行运行: ``` python convert.py ``` 上述命令中,convert.py是转换脚本的文件名。在运行之前,需要将root和save_path分别替换为CrowdHuman数据集的根目录和YOLO格式的txt文件保存路径。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值