Pascal VOC(Pascal Visual Object Classes)数据集
VOC数据集是目标检测/分割经常用的一个数据集,从05年到12年都会举办比赛
VOC数据集的格式
用于分割
Paslcal VOC 2012 用于分隔的数据集是由20个类+1个背景类
训练集1464张
val集 1449张
Microsoft COCO(Common Objects in Context)数据集
COCO是微软团队2014年发布的一个可以用来进行图像识别的数据集。
在MS COCO数据集上可以做多种任务
coco2017数据集共80个类,类别id号不连续,最大为90。 8w张图
COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像,其使用了亚马逊的Mechanical Turk(AMT)
Image Captioning也是用的这个数据集
2014版本的coco dataset包括82,783 个训练图像、40,504个验证图像以及40,775个测试图像,270k的分割出来的人以及886k的分割出来的物体。数据集有20G左右的图片和500M左右的标签文件。标签文件标记了每个segmentation+bounding box(即分割物+分割物的边界)的精确坐标,其精度均为小数点后两位。
MS COCO种类数要远比 PASCAL VOC多(VOC有的种类他都有),每个类别标注的目标个数,COCO数据集也明显比VOC多。所以很多文章都会使用COCO数据集进行预训练,再用迁移学习方法在VOC上进行再训练。而且如果想训练自己的数据集的话,一般也会基于COCO数据集预训练好的权重去做迁移学习
test集是不放出来的
标注格式
coco的segmentation格式
iscrowd=0的时候,表示这是一个单独的物体,轮廓用Polygon(多边形的点)表示,iscrowd=1的时候表示两个没有分开的物体,轮廓用RLE编码表示,比如说一张图片里面有三个人,一个人单独站一边,另外两个搂在一起(标注的时候距离太近分不开了),这个时候,单独的那个人的注释里面的iscrowing=0,segmentation用Polygon表示,而另外两个用放在同一个anatation的数组里面用一个segmention的RLE编码形式表示
[poly]的形式是这样的[x1,y1,x2,y3,x3,y3,...,xn,yn]
mask不论是polygon还是rle都会被转换成rle再做iou
COCO相关数据格式可视化
Mask_RCNN/inspect_data.ipynb at master · matterport/Mask_RCNN (github.com)
COCO的格式示例
可以看到它这里是images和annotations是分开的
即annotations里面可能好几项都是同一个图片的框
{ # "info": 'coco', #optional # "license": ['none'], #optional "images": [ { "height": 224, #int "width": 224, #int "id": 0, #int 必须 "file_name": 'figure1.jpg' #str }, { "height": 224, "width": 224, "id": 1, "file_name": 'figure2.jpg' } ] "annotations":[ { "id": 0, #int 必须 "image_id": 0, #int 必须 "category_id": 10, #int "segmentation": [[1, 1, 1, 1, 1, 1, 1, 1],], #值是double类型的 "bbox": [0, 0, 1, 1], #格式[x,y,w,h], 4值都是double类型,xy指左上角的点 "iscrowd": 0, #0/1 "area": 1 #area是area of encoded masks,是标注区域的面积,可以int可以double #如果是矩形框,那area就是高乘宽;如果是polygon或者RLE,那就复杂点。 }, ] "categories": [ { "id": 0, #int "name": "1", #str "supercategory": "name" #str }, ] }
最主要是有images, annotations, categories这三类就行,info和license也可以没有
images, annotations, categories这三类的元素个数不是相同的
像publaynet的example
len(images)就是图片个数
len(annotations)会远大于len(images),因为一张图多个标注
它们会通过id对应起来
len(categories)就是class种类数
categories也会和annotations同过id对应起来
COCO做图像标注任务
COCO数据集现在有3种标注类型:object instances(目标实例,用于目标检测), object keypoints(目标上的关键点,用于姿态估计), and image captions(看图说话),每种标注类型都有相应的json标注文件