博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CrowdHuman数据集格式 ——odgt文件格式
阅读量:3905 次
发布时间:2019-05-23

本文共 3215 字,大约阅读时间需要 10 分钟。

注:之前说要将Crowd Human数据集标注转换成COCO数据集标注格式,现在先来看一下odgt文件里的数据是怎么样保存的。

demo下的odgt标注文件

在Crowd Human数据集目录下,还有一个demo文件夹。这个demo是干么的呢,博主查了一下说是提取odgt里面的数据的?所以就先看里面的代码和odgt文件

在这里插入图片描述
data下面有一个get_human.odgt,大小才66k,方便打开。(原标注文件的val23M,train80M,这么大的文件在电脑或服务器中打开,要卡好久…)。而demo.py文件涉及到线程等一大堆难懂的东西,博主直接放弃,直接看odgt文件了。

先说一下坑吧,这个odgt里面的键值和原标注文件odgt里的键值不是对应的。最明显的区别:demo下的odgt有width、height这两个key,没有head_attr这个键值。但是,在原标注文件odgt里面没有这两个键值width、height有head_attr

所以博主根据demo里面的odgt写了crowdhuman转到coco标注格式的函数后,兴致勃勃的去跑原crowdhuman的标注文件,然后就直接出现了如下的error。一脸懵逼,这格式居然不是一致的。

在这里插入图片描述

打开了annotation_val.odgt文件,比对了一下,发现里面格式并不是一致的。不过,看完get_human.odgt这个文件,理解了大概是怎么放数据的,再去看annotation_val.odgt就能快速看懂数据的存放,只不过有些键值没有而已,不影响理解。

下面的代码是get_human.odgt文件中的一行数据

{
"fpath": "", #字典"gtboxes": [ #gtboxes里面是个列表 {
"tag": "person", #标签 "extra": {
#下面这几个数博主不清楚,有知道的大佬,还望告知一下。 "occ": 0, "vbox_id": 0, "box_id": 0}, "vbox": [[67, 60, 333, 740]], # 检测框可视框 "box": [67, 60, 333, 740], # 读取人头检测框? "fbox": [67, 60, 333, 810] #检测框全身框 }, {
"tag": "person", "extra": {
"occ": 0, "vbox_id": 0, "box_id": 1}, "vbox": [[438, 205, 175, 541]], "box": [438, 205, 175, 541], "fbox": [438, 205, 175, 541] }, {
"tag": "person", "extra": {
"occ": 1, "vbox_id": 0, "box_id": 2}, "vbox": [[576, 212, 185, 543]], "box": [576, 212, 185, 543], "fbox": [568, 208, 194, 550]}, {
"tag": "person", "extra": {
"occ": 1, "vbox_id": 0, "box_id": 3}, "vbox": [[670, 216, 108, 389]], "box": [670, 216, 108, 389], "fbox": [637, 215, 139, 393]}, {
"tag": "mask", "extra": {
"vbox_id": 0, "ignore": 1}, "vbox": [[776, 382, 25, 220]], "box": [776, 382, 25, 220], "fbox": [776, 382, 25, 220] } ], "width": 1200, #图片的宽"height": 800, #图片的高"nori_path": "", "ID": "273278,600e5000db6370fb", #图片ID,是str类型"nori_id": ","} # ID+'.jpg' = 图片的file_name

原odgt标注文件

在这里插入图片描述

这两个odgt文件就是crowdhuman的训练和验证的标注文件。
里面只有两个key:ID和gtboxes这两个。
下面是val的标注文件中的一行

{
"ID": "273271,c9db000d5146c15", "gtboxes": [ {
"fbox": [72, 202, 163, 503], "tag": "person", "hbox": [171, 208, 62, 83], "extra": {
"box_id": 0, "occ": 0}, "vbox": [72, 202, 163, 398], "head_attr": {
"ignore": 0, "occ": 0, "unsure": 0}}, {
"fbox": [199, 180, 144, 499], "tag": "person", "hbox": [268, 183, 60, 83], "extra": {
"box_id": 1, "occ": 0}, "vbox": [199, 180, 144, 420], "head_attr": {
"ignore": 0, "occ": 0, "unsure": 0}}, {
"fbox": [310, 200, 162, 497], "tag": "person", "hbox": [363, 219, 54, 71], "extra": {
"box_id": 2, "occ": 0}, "vbox": [310, 200, 162, 400], "head_attr": {
"ignore": 0, "occ": 0, "unsure": 0}}, {
"fbox": [417, 182, 139, 518], "tag": "person", "hbox": [455, 190, 53, 78], "extra": {
"box_id": 3, "occ": 0}, "vbox": [417, 182, 139, 418], "head_attr": {
"ignore": 0, "occ": 0, "unsure": 0}}, ]}

需要注意的是,标注文件里的ignore字段,当tag是person时,ignore再head_attr字典里,当tag是mask时,ignore字段是在extra字典里的。(目前我观察的格式中,是这样的,当然写函数提取ignore的时候,不要去判断tag是啥,然后根据tag找字段,万一翻车了呢)

以上就是两个标注文件的格式,看网上对crowdhuman的解析资料基本没有,博主也刚接触几天,不能够更详细的解析具体字段的作用,什么时候对crowdhuman更了解了,再来修改完善。

  • 关于如何将crowdhuman的标注转换成COCO数据集的标注,请看博主的下一篇博客()。
  • 关于coco数据集的标注文件详解,请看:

转载地址:http://mjxen.baihongyu.com/

你可能感兴趣的文章
推荐几篇文章--支持函数式编程范式语言的入门教程
查看>>
工欲善其事,必先利其器之—MAC下搭建groovy的开发环境
查看>>
工欲善其事,必先利其器之—MAC下搭建clojure的开发环境
查看>>
如何在gradle脚本中判断运行时的系统
查看>>
工欲善其事,必先利其器之—MAC下安装与配置emacs
查看>>
开始使用Sublime Text 2
查看>>
有关Android编译相关知识点的文章
查看>>
通过AS直接查看APK的resources.arsc文件(应用资源表)
查看>>
不通过R.jav类仅通过字符串名称获取各类资源
查看>>
不通过R类获取自定义样式资源ID数组
查看>>
使用WebView的注意事项(加载视频播放页)
查看>>
bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
查看>>
工欲善其事,必先利其器之—命令行下使用jdb调试android应用(MAC环境)
查看>>
android仅通过自定义属性id值获取样式自定义属性值
查看>>
工欲善其事,必先利其器之—Charles截包工具的配置与使用
查看>>
OpenGLRenderer: Bitmap too large to be uploaded into a texture 的原因简析
查看>>
Nexus 5 Android6.0.1 Chrome下载apk失败的原因分析
查看>>
emacs + cscope 的使用
查看>>
ubuntu各文件夹简介
查看>>
Android系统中setprop,getprop,watchprops命令的使用
查看>>