1. 简介

WiderPerson数据集是比较拥挤场景的行人检测基准数据集,其图像是从多种场景中选择的,不再局限于交通场景。 选择13382张图像,并用各种遮挡标记约40万个注释。 我们随机选择8000/1000/4382图像作为训练,验证和测试集。 与CityPersons和WIDER FACE数据集相似,不发布测试图像的标注文件。

可以在官网上进行下载:http://www.cbsr.ia.ac.cn/users/sfzhang/WiderPerson/

2. 标注详解

随便打开一个标注文件如下所示:

1. 第一行代表了标注框的数目,从第二行开始才是真正的标注框

2. 从第二行开始,第一列代表了这个标注框的类别,后面分别是xmin ymin xmax ymax也就是左上角右下角坐标

[class_label, xmin, ymin, xmax, ymax]

写了个可视化程序进行查看:

import os
import cv2if __name__ == '__main__':path = '../WiderPerson/trainval.txt'with open(path, 'r') as f:img_ids = [x for x in f.read().splitlines()]for img_id in img_ids: # '000040'img_path = '../WiderPerson/images/' + img_id + '.jpg'img = cv2.imread(img_path)im_h = img.shape[0]im_w = img.shape[1]label_path = img_path.replace('images', 'Annotations') + '.txt'with open(label_path) as file:line = file.readline()count = int(line.split('\n')[0]) # 里面行人个数line = file.readline()while line:cls = int(line.split(' ')[0])# < class_label =1: pedestrians > 行人# < class_label =2: riders >      骑车的# < class_label =3: partially-visible persons > 遮挡的部分行人# < class_label =4: ignore regions > 一些假人,比如图画上的人# < class_label =5: crowd > 拥挤人群,直接大框覆盖了if cls == 1 or cls == 2 or cls == 3:xmin = float(line.split(' ')[1])ymin = float(line.split(' ')[2])xmax = float(line.split(' ')[3])ymax = float(line.split(' ')[4].split('\n')[0])img = cv2.rectangle(img, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0, 255, 0), 2)line = file.readline()cv2.imshow('result', img)cv2.waitKey(0)

可以看到都是一些比较拥挤场景的行人图片,不过跟实际比较贴切一些,不像其他一些数据集都是在国外开奔驰的场景,感觉对自己的实际场景应该会有帮助:

需要注意000040.jpg.txt貌似有问题,自己删掉就好了

3. 类别解析

官网是这么说的,但是自己还是有点不理解,就自己绘制看看了

...
< class_label =1: pedestrians >
< class_label =2: riders >
< class_label =3: partially-visible persons >
< class_label =4: ignore regions >
< class_label =5: crowd >
...

类别 1:pedestrians 行人

根据自己的可视化代码,cls == 1的时候绘制出来。可以看到都是比较完整的行人图片,这个比较好理解

类别 2:riders 骑车的人

这个很好理解

类别 3:partially-visible persons 被挡住了一部分的人

这个也比较好理解,就是遮挡嘛,不过有些时候遮挡严重都快看不出来是个人了。。

类别 4:ignore regions

这个是重点了,一开始有点懵,不知道啥意思,绘制出来如下(这是“假人”,自己实际应用并不需要这样的假人,不过VOC COCO数据集都标注为person了):

类别 5:crowd

拥挤人群直接大框笼罩了,COCO 数据集很多也这样而且还标成person了

4 数据集转换

转成VOC格式

import os
import numpy as np
import scipy.io as sio
import shutil
from lxml.etree import Element, SubElement, tostring
from xml.dom.minidom import parseString
import cv2def make_voc_dir():# labels 目录若不存在,创建labels目录。若存在,则清空目录if not os.path.exists('../VOC2007/Annotations'):os.makedirs('../VOC2007/Annotations')if not os.path.exists('../VOC2007/ImageSets'):os.makedirs('../VOC2007/ImageSets')os.makedirs('../VOC2007/ImageSets/Main')if not os.path.exists('../VOC2007/JPEGImages'):os.makedirs('../VOC2007/JPEGImages')if __name__ == '__main__':classes = {'1': 'pedestrians','2': 'riders','3': 'partially','4': 'ignore','5': 'crowd'}VOCRoot = '../VOC2007'widerDir = '../WiderPerson'  # 数据集所在的路径wider_path = '../WiderPerson/trainval.txt'make_voc_dir()with open(wider_path, 'r') as f:imgIds = [x for x in f.read().splitlines()]for imgId in imgIds:objCount = 0  # 一个标志位,用来判断该img是否包含我们需要的标注filename = imgId + '.jpg'img_path = '../WiderPerson/images/' + filenameprint('Img :%s' % img_path)img = cv2.imread(img_path)width = img.shape[1]  # 获取图片尺寸height = img.shape[0]  # 获取图片尺寸 360node_root = Element('annotation')node_folder = SubElement(node_root, 'folder')node_folder.text = 'JPEGImages'node_filename = SubElement(node_root, 'filename')node_filename.text = 'VOC2007/JPEGImages/%s' % filenamenode_size = SubElement(node_root, 'size')node_width = SubElement(node_size, 'width')node_width.text = '%s' % widthnode_height = SubElement(node_size, 'height')node_height.text = '%s' % heightnode_depth = SubElement(node_size, 'depth')node_depth.text = '3'label_path = img_path.replace('images', 'Annotations') + '.txt'with open(label_path) as file:line = file.readline()count = int(line.split('\n')[0])  # 里面行人个数line = file.readline()while line:cls_id = line.split(' ')[0]xmin = int(line.split(' ')[1]) + 1ymin = int(line.split(' ')[2]) + 1xmax = int(line.split(' ')[3]) + 1ymax = int(line.split(' ')[4].split('\n')[0]) + 1line = file.readline()cls_name = classes[cls_id]obj_width = xmax - xminobj_height = ymax - ymindifficult = 0if obj_height <= 6 or obj_width <= 6:difficult = 1node_object = SubElement(node_root, 'object')node_name = SubElement(node_object, 'name')node_name.text = cls_namenode_difficult = SubElement(node_object, 'difficult')node_difficult.text = '%s' % difficultnode_bndbox = SubElement(node_object, 'bndbox')node_xmin = SubElement(node_bndbox, 'xmin')node_xmin.text = '%s' % xminnode_ymin = SubElement(node_bndbox, 'ymin')node_ymin.text = '%s' % yminnode_xmax = SubElement(node_bndbox, 'xmax')node_xmax.text = '%s' % xmaxnode_ymax = SubElement(node_bndbox, 'ymax')node_ymax.text = '%s' % ymaxnode_name = SubElement(node_object, 'pose')node_name.text = 'Unspecified'node_name = SubElement(node_object, 'truncated')node_name.text = '0'image_path = VOCRoot + '/JPEGImages/' + filenamexml = tostring(node_root, pretty_print=True)  # 'annotation'dom = parseString(xml)xml_name = filename.replace('.jpg', '.xml')xml_path = VOCRoot + '/Annotations/' + xml_namewith open(xml_path, 'wb') as f:f.write(xml)# widerDir = '../WiderPerson'  # 数据集所在的路径shutil.copy(img_path, '../VOC2007/JPEGImages/' + filename)

转成YOLO格式

5. 数据集清洗

这么大数据集而且又是密集场景,难免错标漏标,而且类别为crowd拥挤场景和ignore‘假人’对于自己实际用也是不需要的

WiderPerson行人检测数据集相关推荐

  1. WiderPerson行人检测数据集转yolo格式

    widerPerson数据集属于密集人群标注类型数据集 内部图片看标记为网络收集,很多带有水印 数据集对行人检测,分为5个类别,分别为1正常行人,2骑车人,3遮挡部分的人体,4人形物体,5无法区分的密 ...

  2. 车辆重识别、行人检测数据集、多摄像头数据集

    Time:2022 / 8/ 19 Author:QHL-taki content:Dataset Sharing 前言 ​ 近期博主在做多摄像头行人重识别的任务,查询多方资料,收集到一些重识别相关的 ...

  3. 车辆行人检测数据集_澎思科技行人再识别技术取得突破,刷新三大数据集世界记录...

    近日,国内人工智能企业澎思科技(Pensees)在行人再识别(Person Re-identification,简称ReID)算法上取得突破,在三大主流ReID数据集测试Market1501,Duke ...

  4. 用python将MSCOCO和Caltech行人检测数据集转化成VOC格式

    代码:转换用的代码放在这里 之前用Tensorflow提供的object detection API可以很方便的进行fine-tuning实现所需的特定物体检测模型(看这里).那么现在的主要问题就是数 ...

  5. 车辆行人检测数据集_开源 | 相机和激光雷达融合的行人车辆检测跟踪

    声明:本文首发于我的公众号[当SLAM遇见小王同学],谢绝私自转载,如有需要,可加我微信进行授权!! 最近在GitHub上发现了一个开源项目,关于相机和激光雷达融合的行人车辆检测跟踪. 项目 http ...

  6. 计算机视觉常用数据集总结:包括MS COCO、ImageNet、VOC、人脸识别、行人检测等...

    1.PASCAL VOC(权威鼻祖) PASCAL VOC是一个图像集,由Mark Everingham (University ofLeeds).Luc van Gool (ETHZ, Zurich ...

  7. 用HOG+SVM在Inria数据集上做行人检测与评测

    by baiyu33 功能 基于OpenCV在Inria行人检测数据集上,做训练和测试,生成bbs用于评测 代码 在OpenCV3.0中的例程opencv/sources/sample/cpp/tra ...

  8. 【车辆行人检测和跟踪数据集及代码汇总】

    车辆行人检测和跟踪数据集和代码汇总 1. 车辆检测和跟踪 1.1 车辆检测数据集和训练权重 1.2 车辆跟踪 2. 行人检测和跟踪 2.1 行人检测数据集和训练权重 2.2行人多目标跟踪 3. 车辆行 ...

  9. CVPR 2020夜间行人检测挑战赛两冠一亚:DeepBlueAI团队获胜方案解读

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:机器之心 近日,由 CVPR 2020 Workshop 举办的 NightOwl ...

最新文章

  1. 为什么建议大家使用Linux开发?
  2. 车辆管理系统之继续自己的任务(四)
  3. 国赛来咯,全国大学生智能汽车竞赛百度赛道正式开启
  4. ASIHTTPRequest的环境配置和使用示例
  5. 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
  6. ubuntu php 树莓派,树莓派3 安装ROS环境(ubuntu mate 16.04+kinetic)
  7. 今天没白过之《Linux的变量》
  8. python源代码制作星空_用python画星空源代码是什么
  9. 人工智能——支持向量机(SVM)思维导图
  10. 数位板的主要参数解析
  11. Excel——检查单元格是否包含文本(不区分大小写)
  12. 油耳戴什么款式耳机好?骨传导耳机最合适
  13. SDCC 2016讲师、知名JavaScript专家周爱民议题公布:有前端思想的物联网系统架构...
  14. Mc1.16forge官混教程/教补-#3 物品材质覆盖注意要点[分支1]
  15. Android保存图片和视频到本地并更新相册
  16. gorilla/mux实现http服务示例
  17. 两种方法教你在postman设置请求里带动态token
  18. 利用笔记本热点AP功能实现在没有越狱的iPad/iPhone抓包
  19. [创业-19]:财务报表 - 所有者权益之实收资本
  20. 华为瘦胖ap互转_华为瘦胖ap互转

热门文章

  1. O2OA框架使用笔记
  2. 【视频播放器】potplayer调教教程
  3. 无线上网卡占用计算机网卡吗,电脑使用无线网卡总是掉线是怎么回事?
  4. F5(负载均衡)使用配置文档
  5. 聊聊字符集与字符编码这些事儿
  6. 最新!OMNI3D:3D目标检测的大型基准和模型(Meta AI)
  7. Mysql| order by 排序检索数据(ASC,DESC)
  8. 寻找书籍,以及格式转换网站
  9. mysql时间戳与PHP时间戳,php – 当mysql时间戳gt; 20分钟时删除时间戳比较
  10. YOLO V2得到的启发