声明:本篇博客内容是作者在制作数据集时的一些记录,引用了一些博客的内容,并结合个人理解进行了归纳,引用出处在“参考内容”章节,若有侵权,请联系作者删除。若有纰漏和错误,敬请指正!
1、COCO2017数据集的标注格式及含义
COCO
的全称是Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。
总共有80个类别。
COCO数据集现在有3种标注类型:object instances(目标实例),object keypoints(目标上的关键点)和image captions(看图说话),使用json文件存储。
如下:
打开person_keypoints_val2017.json文件。
从头至尾按照顺序分为以下段落,看起来和目标检测差不多。
json文件主要包含以下几个字段:
{
"info": info, # dict
"licenses": [license], # list ,内部是dict
"images": [image], # list ,内部是dict
"annotations": [annotation], # list ,内部是dict
"categories": # list ,内部是dict
}
1、info 类型:
就是一些信息记录,如下
{"info":
{"description": "COCO 2017 Dataset",
"url": "http://cocodataset.org",
"version": "1.0",
"year": 2017,
"contributor": "COCO Consortium",
"date_created": "2017/09/01"},
}
2、Licenses:
包含多个license的数组,可以看成是一种版权许可证。
"licenses": [
{
"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/",
"id": 1,
"name": "Attribution-NonCommercial-ShareAlike License"
},
{
"url": "http://creativecommons.org/licenses/by-nc/2.0/",
"id": 2,
"name": "Attribution-NonCommercial License"
},
3、images:
记录了一些关键信息,如图像的文件名、宽、高,图像id等信息。height代表是图片的高度,weight代表图像的宽度,id代表的是图片的id,每一张图片具有唯一id
"images": [
{
"license": 4,
"file_name": "000000397133.jpg",
"coco_url": "http://images.cocodataset.org/val2017/000000397133.jpg",
"height": 427,
"width": 640,
"date_captured": "2013-11-14 17:02:52",
"flickr_url": "http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg",
"id": 397133
},]
4、annotations:
包含了目标检测中annotation所有字段,另外额外增加了2个字段。
新增的keypoints是一个长度为3 ∗k
的数组,其中k
是category中keypoints的总数量。每一个keypoint是一个长度为3的数组,第一和第二个元素分别是x和y
坐标值,第三个元素是个标志位v
,v为0
时表示这个关键点没有标注(这种情况下 x = y = v = 0),v为 1
时表示这个关键点标注了但是不可见(被遮挡了),v为2
时表示这个关键点标注了的同时也可见。num_keypoints
表示这个目标上被标注的关键点的数量(v > 0),比较小的目标上可能就无法标注关键点。id字段:
指的是这个annotation的一个idimage_id:
等同于前面image字段里面的id。category_id:
类别id
segmentation:area:
标注区域面积bbox:
标注框,x,y为标注框的左上角坐标。iscrowd:
决定是RLE格式还是polygon格式。
从person_keypoints_val2017.json文件中摘出一个annotation的实例如下:
{
"segmentation": [[125.12,539.69,140.94,522.43,100.67,496.54,84.85,469.21,73.35,450.52,104.99,342.65,168.27,290.88,179.78,288,189.84,286.56,191.28,260.67,202.79,240.54,221.48,237.66,248.81,243.42,257.44,256.36,253.12,262.11,253.12,275.06,299.15,233.35,329.35,207.46,355.24,206.02,363.87,206.02,365.3,210.34,373.93,221.84,363.87,226.16,363.87,237.66,350.92,237.66,332.22,234.79,314.97,249.17,271.82,313.89,253.12,326.83,227.24,352.72,214.29,357.03,212.85,372.85,208.54,395.87,228.67,414.56,245.93,421.75,266.07,424.63,276.13,437.57,266.07,450.52,284.76,464.9,286.2,479.28,291.96,489.35,310.65,512.36,284.76,549.75,244.49,522.43,215.73,546.88,199.91,558.38,204.22,565.57,189.84,568.45,184.09,575.64,172.58,578.52,145.26,567.01,117.93,551.19,133.75,532.49]],
"num_keypoints": 10,
"area": 47803.27955,
"iscrowd": 0,
"keypoints": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,309,1,177,320,2,191,398,2,237,317,2,233,426,2,306,233,2,92,452,2,123,468,2,0,0,0,251,469,2,0,0,0,162,551,2],
"image_id": 425226,
"bbox": [73.35,206.02,300.58,372.5],
"category_id": 1,
"id": 183126
},
5、categories字段:
对于每一个category结构体,相比目标检测中的中的category新增了2个额外的字段,keypoints 是一个长度为k的数组,包含了每个关键点的名字;skeleton 定义了各个关键点之间的连接性(比如人的左手腕和左肘就是连接的,但是左手腕和右手腕就不是)。目前,COCO的keypoints只标注了person category(分类为人)。
2、人脸关键点综述内容
2.1 人脸关键点检测基本概念
人脸关键点检测也称为人脸关键点检测、定位或者人脸对齐,是指给定人脸图像,定位出人脸面部的关键区域位置,包括眉毛、眼睛、鼻子、嘴巴、脸部轮廓等和人脸检测类似,由于受到姿态和遮挡等因素的影响,人脸关键点检测也是一个富有挑战性的任务。
把关键点的集合称作形状(shape),形状包含了关键点的位置信息,而这个位置信息一般可以用两种形式表示,第一种是关键点的位置相对于整张图像,第二种是关键点的位置相对于人脸框(标识出人脸在整个图像中的位置)。把第一种形状称作绝对形状,它的取值范围是[0,img_width]或者[0,img_height];第二种形状称作相对形状,它的取值范围是0到1。这两种形状可以通过人脸框来相互转换。
人脸关键点的检测有许多重要的应用场景。
人脸姿态对齐:人脸识别等算法都需要对人脸的姿态进行对齐从而提高模型的精度。
人脸美颜与编辑:基于关键点可以精确分析脸型、眼睛形状、鼻子形状等,从而对人脸的特定位置进行修饰加工,实现人脸特效美颜,贴片等娱乐功能。
人脸表情分析与嘴型识别:基于关键点可以对人的面部表情进行分析,从而用于互动娱乐,行为预测等场景。
人脸关键点检测方法分类:
基于ASM(Active Shape Model)和AAM (Active Appearnce Model)的传统方法
基于级联形状回归的方法
基于深度学习的方法
人脸关键点的里程碑算法如下。
1995年,Cootes的ASM(Active Shape Model)。
1998年,Cootes 的AAM(Active Appearance Model) 算法。
2006年,Ristinacce的CLM(Constrained Local Model)算法。
2010年,Rollar 的cascaded Regression 算法。
2013年,Sun 开创深度学习人脸关键点检测的先河,首次将 CNN 应用到人脸关键点定位上。
目前,应用最广泛且效果精度最高的是基于深度学习的方法。
2.2 人脸关键点标注点数发展
因为实验需要的数据集的格式要求,这里主要介绍5点标注和68点标注两种。
2.2.1、5点标注
标注人脸面部最关键的有5个点,分别为左右两个嘴角,两个眼的中心,鼻子,这5个关键点属于人脸内部关键点,根据它们就可以计算出人脸的姿态。
2014年发布的MTFL/MAFL数据集中标注了双眼、鼻子和2个嘴角共5个关键点。
2.2.2、68点标注
68点标注是现今最通用的一种标注方案,早期在1999年的Xm2vtsdb数据集中就被提出,300W数据集和XM2VTS等数据集也都采用了68个关键点的方案,被OpenCV中的Dlib算法中所采用。
68个关键点的标注也有一些不同的版本,这里介绍最通用的Dlib中的版本,它将人脸关键点分为内部关键点和轮廓关键点,内部关键点包含眉毛、眼睛、鼻子、嘴巴共计51个关键点,轮廓关键点包含17个关键点。
3、YOLO的数据标签格式
将COCO-WholeBody数据集的JSON标签转换为YOLO格式,并使用一个*.txt文件(如果图像中没有人脸,则不需要*.txt文件)。*.txt文件规格如下:
-
每个对象一行
-
每行的格式是:class x_center y_center width height
-
方框的坐标必须要归一化到(0-1),如果方框以像素为单位,请将x_center和width除以图像宽度,将y_center和height除以图像高度。
-
类别必须从0开始。
对应于下面图像的标签文件包含2个类别,分别是人体(person,类别0)和人脸(face,类别1):
然后将YOLO的标签数据可视化,如下所示:
|
文章来源:https://www.toymoban.com/news/detail-481063.html
4 参考内容
COCO数据集标注格式及意义
理解COCO数据集中的关键点标注
[yolov5] yolo的数据标签格式
人脸关键点综述
感谢这些作者的知识分享。文章来源地址https://www.toymoban.com/news/detail-481063.html
到了这里,关于COCO2017标注文件格式和YOLO标注文件格式的解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!