COCO数据集简介
MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集。COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。图像包括91类目标,328,000影像和2,500,000个label。数据集主要解决3个问题:目标检测,目标之间的上下文关系,目标的2维上的精确定位。
官网地址:
COCO数据集格式
COCO_2017/
├── val2017 # 总的验证集
├── train2017 # 总的训练集
├── annotations # COCO标注
│ ├── instances_train2017.json # object instances(目标实例) ---目标实例的训练集标注
│ ├── instances_val2017.json # object instances(目标实例) ---目标实例的验证集标注
│ ├── person_keypoints_train2017.json # object keypoints(目标上的关键点) ---关键点检测的训练集标注
│ ├── person_keypoints_val2017.json # object keypoints(目标上的关键点) ---关键点检测的验证集标注
│ ├── captions_train2017.json # image captions ---训练集标注
│ ├── captions_val2017.json # image captions ---验证集标注
COCO数据集制作
COCO一共有5种不同任务分类,分别是目标检测、关键点检测、语义分割、场景分割和图像描述。COCO数据集的标注文件以JSON格式保存,官方的注释文件有仨 captions_type.json instances_type.json person_keypoints_type.json,其中的type是 train/val/test+year。
前期准备
- 新建文件夹
COCO
- 在
COCO
下新建images/
和annotations/
- 使用
labelme
标注数据集 - 在
anaconda
中安装labelme
输入命令pip install labelme
。 - 安装成功后输入
labelme
,打开labelme
。 - 点击open Dir选择你要标注的文件夹。
- 点击Create Polygons开始标注数据集。
- 将标注好生成的josn文件保存至指定文件夹。
- 改写josn文件。
Pascal VOC 数据集简介
PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning,是一个由欧盟资助的网络组织。很多模型都基于此数据集推出.比如目标检测领域的yolo,ssd等等。
VOC数据集格式
├── Annotations
├── ImageSets
│ ├── Action
│ ├── Layout
│ ├── Main
│ │ ├─ train.txt
│ │ ├─ val.txt
│ │ ├─ trainval.txt
│ └── Segmentation
├── JPEGImages
├── SegmentationClass
└── SegmentationObject
VOC数据集制作
- 按上图创建文件夹。
- 使用
pip
命令安装labelimg
。 - 如上
COCO
数据集标注,将标注好的数据放入Annotations
文件夹下。 - 生成4个txt文件。
import os
import random
def _main():
trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'F:/jupyter/process/VOC2007/Annotation/'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open('VOC2007/ImageSets/Main/trainval.txt', 'w')
ftest = open('VOC2007/ImageSets/Main/test.txt', 'w')
ftrain = open('/VOC2007/ImageSets/Main/train.txt', 'w')
fval = open('VOC2007/ImageSets/Main/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftest.write(name)
else:
fval.write(name)
else:
ftrain.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
if __name__ == '__main__':
_main()
数据集转换
VOC和COCO数据集转换可以使用paddleX和paddleDection中集成好的工具,当然大佬可以自己写。
VOC和COCO数据集的制作方法很多,本文使用的labelme和labelimg只是众多工具中的两个。