此篇文章会不断补充内容,建议长期关注。最后更新日期为2018年11月25日。

需要用到的工具:

UltraEdit

Git

Python ,包含 jupyter notebook,以及其它必要的包

Adobe Photoshop CC

目前官方 API 只提供了 Lua 脚本、Python 脚本和 Matlab 脚本的编程接口,暂时没有适配 .net 框架的接口。其中只有 Matlab 脚本才能使用 analyze() 函数对评估结果进行分析。

coco 数据集有五种标注类型,分别是“目标检测”、“关键点检测”、“素材分割”、“全景分割”和“图像说明”。标注信息使用 JSON 格式存储。请注意,下载页面上描述的 COCO API 可用于访问和操作所有“标注”。 所有“标注”都具有下面相同的基本数据结构:

{

"info" : info,

"images" : [image],

"annotations" : [annotation],

"licenses" : [license],

}

info{

"year" : int,

"version" : str,

"description" : str,

"contributor" : str,

"url" : str,

"date_created" : datetime,

}

image{

"id" : int,

"width" : int,

"height" : int,

"file_name" : str,

"license" : int,

"flickr_url" : str,

"coco_url" : str,

"date_captured" : datetime,

}

license{

"id" : int,

"name" : str,

"url" : str,

}

接下来只描述“对象检测”的特定格式:

一、对象检测

每个对象实例的标注都包含一系列字段,包括对象的类别ID(category_id)和分段掩码(segmentation)。 分段格式取决于实例是表示单个对象(iscrowd = 0,在这种情况下使用多边形)还是对象集合(iscrowd = 1,在这种情况下使用RLE)。 请注意,单个对象(iscrowd = 0)可能需要多个多边形,例如,如果被遮挡。 人群注释(iscrowd = 1)用于标记大组对象(例如一群人)。 此外,为每个对象提供一个封闭的边界框(框坐标是从左上角的图像角测量的,并且是0索引的)。 最后,标注结构的 categories 字段存储 category id 到 category 和 supercategory 名称的映射。 另请参阅检测任务。

annotation{

"id" : int,

"image_id" : int,

"category_id" : int,

"segmentation" : RLE or [polygon],

"area" : float,

"bbox" : [x,y,width,height],

"iscrowd" : 0 or 1,

}

categories[{

"id" : int,

"name" : str,

"supercategory" : str,

}]

TODO:其它四种格式的说明。

对象检测 JSON 结构总览

其中,info、licenses、images、annotations 和 categories 均为数组。

二、对象检测示例

COCO 数据集提供了应用程序编程接口和使用实例,并托管在了 GitHub 仓库中。

点击此处访问 COCO API 的仓库。

点击此处访问 COCO API 使用示例。

以上使用示例中未曾提到边界框属性(bbox),以下将演示如何使用边界框属性。

以2017年的验证集中编号为174482的图片为例(如果没有2017年的数据集,可以点击下方链接下载完整压缩包,或只单独下载某张图片):

图片正中央为自行车。

打开 标注压缩包,找到instance_val2017.json文件中第一个图片编号为174482的标注属性,如下所示:

图片编号为174482的第一个标注。

该段内容中 “segmentation” 属性太长,故折叠。

其中“bbox”属性为实例的边界框(bounding box)。这四个数字的含义为左上角横坐标、左上角纵坐标、宽度、高度,单位为像素。这个框为大致画出,因此对实例的标注并非完全精确,如下所示:

使用 bbox 属性画出的边界框。

三、对象检测评估

1. 度量

以下12个度量标准用于表征COCO上对象检测器的性能:

平均精度(Average Precision, AP)

平均精度在 IoU=.50:.05:.95 (主要度量挑战)

平均精度在 IoU=.50 (PASCAL VOC 度量)

平均精度在 IoU=.75 (严格度量)

不同尺度的平均精度(Average Precision Across Scale, APAS)

小型对象平均精度,面积小于

中等对象平均精度,面积介于

之间

大型对象平均精度,面积超过

平均重复调用次数(Average Recall, AR)

每张图片检测 1 次

每张图片检测 10 次

每张图片检测 100 次

不同尺度的平均重复调用次数(Average Recall Across Scale, ARAS)

小型对象平均重复调用次数,面积小于

 中等对象平均重复调用次数,面积介于

之间

大型对象平均重复调用次数,面积超过

2. 评估代码

评估代码可在 COCO GitHub 网站上获得。 具体来说,分别在 Matlab 或 Python 代码中查看 CocoEval.m 或 cocoeval.py。 另请参阅 Matlab 或 Python 代码(演示)中的evalDemo。 在运行评估代码之前,请以结果格式页面中描述的格式准备结果。

评估参数如下(括号中的默认值,通常无需更改):

params{

"imgIds" : [all] N img ids to use for evaluation

"catIds" : [all] K cat ids to use for evaluation

"iouThrs" : [.5:.05:.95] T=10 IoU thresholds for evaluation

"recThrs" : [0:.01:1] R=101 recall thresholds for evaluation

"areaRng" : [all,small,medium,large] A=4 area ranges for evaluation

"maxDets" : [1 10 100] M=3 thresholds on max detections per image

"useSegm" : [1] if true evaluate against ground-truth segments

"useCats" : [1] if true use category labels for evaluation

}

通过调用evaluate()函数和accumulate()运行评估代码会生成两个测量检测质量的数据结构。 这两个结构是evalImgs和eval,它们分别测量每个图像的质量并在整个数据集中进行聚合。 evalImgs结构具有KxA个条目,每个评估设置一个,而eval结构将此信息组合到精度和重新调用数组中。下面是两个结构的详细信息(另请参阅CocoEval.m或cocoeval.py):

evalImgs[{

"dtIds" : [1xD] id for each of the D detections (dt)

"gtIds" : [1xG] id for each of the G ground truths (gt)

"dtImgIds" : [1xD] image id for each dt

"gtImgIds" : [1xG] image id for each gt

"dtMatches" : [TxD] matching gt id at each IoU or 0

"gtMatches" : [TxG] matching dt id at each IoU or 0

"dtScores" : [1xD] confidence of each dt

"dtIgnore" : [TxD] ignore flag for each dt at each IoU

"gtIgnore" : [1xG] ignore flag for each gt

}]

eval{

"params" : 用于评估的参数

"date" : 执行评估的日期

"counts" : [T,R,K,A,M] 参数维度(见上)

"precision" : [TxRxKxAxM] 每次评估设置的精度

"recall" : [TxKxAxM] 每次评估设置的最多重复调用次数

}

最后,summary() 函数根据eval结构计算前面定义的12个检测指标。

3. 分析代码

除了评估代码之外,我们还提供了一个函数analyze()函数来执行误报的详细分类。 这是受到Derek Hoiem等人在物体探测器中诊断错误的启发,但在实现和细节上有很大不同。 代码生成如下图:

两个图都显示了何恺明(上海交通大学)等人的ResNet(bbox)探测器的分析,该探测器是2015年探测挑战赛的获胜者。 第一个图显示了人员类ResNet错误的细分;第二个图是对所有类别的平均ResNet的整体分析。

每个图是一系列精确的回忆曲线,其中每个PR曲线保证严格高于之前的曲线,因为评估设置变得更加宽松。 曲线如下:

C75: PR at IoU=.75 (AP at strict IoU), area under curve corresponds to APIoU=.75 metric.

C50: PR at IoU=.50 (AP at PASCAL IoU), area under curve corresponds to APIoU=.50 metric.

Loc: PR at IoU=.10 (localization errors ignored, but not duplicate detections). All remaining settings use IoU=.1.

Sim: PR after supercategory false positives (fps) are removed. Specifically, any matches to objects with a different class label but that belong to the same supercategory don’t count as either a fp (or tp). Sim is computed by setting all objects in the same supercategory to have the same class label as the class in question and setting their ignore flag to 1. Note that person is a singleton supercategory so its Sim result is identical to Loc.

Oth: PR after all class confusions are removed. Similar to Sim, except now if a detection matches any other object it is no longer a fp (or tp). Oth is computed by setting all other objects to have the same class label as the class in question and setting their ignore flag to 1.

BG: PR after all background (and class confusion) fps are removed. For a single category, BG is a step function that is 1 until max recall is reached then drops to 0 (the curve is smoother after averaging across categories).

FN: 删除所有剩余错误后的PR(通常AP = 1)。

每条曲线下方的区域显示在图例的括号中。 在ResNet检测器的情况下,IoU = .75的总体AP为.399,完美的本地化将AP增加到.682。 有趣的是,删除所有类混淆(超类别和跨超类别)只会略微提高AP到.713。 删除背景fp会将性能提升到.870 AP,其余的错误都会丢失检测(尽管如果添加更多检测,这也会增加很多fps)。 总之,ResNet的错误主要是不完美的本地化和背景混淆。

对于给定的检测器,代码总共生成372个图! 共有80个类别,12个超类别和1个总体结果,总共93个不同的设置,并且分析以4个等级(所有,小,中,大,所以93 * 4 = 372个图表)进行。 文件命名为[supercategory] – [category] – [size] .pdf,每个类别80 * 4的结果,整体 – [supercategory] – [size] .pdf,每个超类别结果为12 * 4,总体而言 – all- [size] .pdf为1 * 4整体结果。 在所有图中,通常整体和超类别结果是最感兴趣的。

注意:analyze()函数可能需要很长时间才能运行完毕,请耐心等待。因此,我们通常不在评估服务器上运行此代码;您必须使用验证集在本地运行代码。最后,目前analyze()只是Matlab API的一部分;Python代码即将推出。

赞过:

赞 正在加载……

相关

coco关键点标注json_COCO 数据集中目标检测标注说明相关推荐

  1. coco关键点数据集水平翻转数据增强,连同标注一起变化

    对coco图片进行水平翻转时,连同关键点标注也要对应着进行变化. 首先是x坐标,从x变为了width-1-x,然后对应的,人体的左右边要进行交换,比如原来的左手就变成右手,原来的右手变成左手,通过以下 ...

  2. 处理激光雷达数据实现目标检测的方法

    处理激光雷达数据实现目标检测的方法 1.三维数据的精确性和匿名性 1.音乐节现场人数如何检测? 2.需要考虑哪些方面? 4.关于点云对象的壳体与边框 5.人们会怎么移动? 6.结果:以列表形式呈现 7 ...

  3. 数据民工,也能移动办公了:目标检测标注App上线Google Play,分分钟创建私人数据集...

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 想要快速建立目标检测模型,建立自己私人数据集吗? 现在用手机就可以做到. 最近,Reddit上介绍了这样一款移动版边框标注工具Mantha ...

  4. 动手学无人驾驶(4):基于激光雷达点云数据3D目标检测

    上一篇文章<动手学无人驾驶(3):基于激光雷达3D多目标追踪>介绍了3D多目标追踪,多目标追踪里使用的传感器数据为激光雷达Lidar检测到的数据,本文就介绍如何基于激光雷达点云数据进行3D ...

  5. 实用教程!使用YOLOv3训练自己数据的目标检测

    点击我爱计算机视觉标星,更快获取CVML新技术 YOLOv3是当前计算机视觉中最为流行的实时目标检测算法之一. 昨天LearnOpenCV网站博主又发福利,post了一个清晰明了的教程,一步一步示例, ...

  6. 目标检测标注格式转换:labelme2yolo yolo2labelme

    <labelme2yolo & yolo2labelme>    训练 yolo 系列模型的时候需要用到 labelme 标注一些数据,或者用众包标注大量数据.有些时候目标检测的场 ...

  7. ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...

    构建自己的模型之前,推荐先跑一下Tensorflow object detection API的demo JustDoIT:目标检测Tensorflow object detection API​zh ...

  8. 目标检测标注工具(可自定义生成标签模板)

    点击查看项目源码 全新升级,整改为JAR包运行模式,既然是java项目自然支持各个系统 下载JAR包 JDK版本要求:JDK8-JDK10 上不去github的戳这 CSDN 0积分下载 运行方式 j ...

  9. 【虹科】处理激光雷达数据实现目标检测

    激光雷达传感器获取的点云可以绘制三维环境图.这种由距离点组成的"云"提供了大量有价值的环境信息.然而,对于某些应用来说,这些信息过于复杂,无法进一步处理.例如,自动驾驶功能.交通监 ...

最新文章

  1. pyinstaller 打包tensorflow2.0为单个文件
  2. 超详细中文预训练模型ERNIE使用指南
  3. 第六周项目二-带武器的游戏角色
  4. ubuntu16.04_install_saltstack_更新版本
  5. python语言及其应用-Python语言及其应用.PDF
  6. 【iHMI43 应用演示】之 modbus 协议(从机)通信演示
  7. 事务学习总结(1)——事务的基本概念
  8. android studio 手把手叫你NDK开发环境搭建及基础使用
  9. RestTemplate 了解和学习
  10. activemq网页管理端使用_极周PC端(网页版)使用说明
  11. HenCoder 3-1 触摸反馈,以及 HenCoder Plus
  12. im即时通讯开发:群聊消息的已读未读功能
  13. h5盲盒商城源码 修复版 附带详细教程
  14. win32API网址
  15. HTML5汽车赛道飙车游戏,死亡赛道飙车
  16. java gmail 发送邮件_使用JavaMail对Gmail进行邮件收发
  17. git clone 出现fatal: unable to access ‘https://github.com/xxx: Failed to connect to github.com
  18. 不需要支撑结构的3D打印技术:多轴机器人3D打印系统
  19. 计算机系本科毕业论文评阅评语,本科毕业生毕业论文评阅意见/论文评语
  20. js:js中加载js文件

热门文章

  1. fastjson异常问题
  2. Windows下一个比较完美的线程池实现
  3. Windows7下安装LabelImg标注工具
  4. Kinect学习(七):综合提取彩色、深度、人体骨骼点
  5. 数字图像处理实验(10):PROJECT 05-01 [Multiple Uses],Noise Generators
  6. 怎么测试本地网页在不同分辨率下电脑显示效果_干货:微信小程序测试过程中的各个要点...
  7. 十进制转十六进制_汇编语言 输入一位十六进制数,输出其十进制表示
  8. LibSVM学习(三)——LibSVM使用规范
  9. 二线城市IT人员如何发展
  10. REST技术第四步 多个參数注解问题