Введение
MS COCO
Набор данных — еще один очень известный большой набор данных в области обнаружения объектов (описанный ранее).PASCAL VOC
),вCOCO
даCommon Objects in COntext
Аббревиатура для , созданная корпорацией Microsoft, которая содержитdetection
,segmentation
,keypoints
и другие задачи, текущими главными спонсорами являютсяMicrosoft
,Facebook
,Google
Ждите больших заводов.
иPASCAL VOC
По сравнению с набором данных,MS COCO
Данные изображения в , объекты больше, размер меньше, а фон изображения сложнее, поэтому задача с этим набором данных сложнее. Для текущего алгоритма обнаружения вMS COCO
Результаты обнаружения вышеперечисленного стали стандартом де-факто для измерения качества модели.
MS COCO
Всего содержит 91stuff categories
, 80object cagegories
То есть к категории предметов мы часто говорим, к которой относится следующая картинаPASCAL VOC
Сравнение категорий и объемов данных
Критерии оценки
MS COCO
Стандартное соотношение оценкиPASCAL VOC
строже, сPASCAL VOC
использоватьmAP
разные,MS COCO
Основной оценочный показательAP
Как вы можете видеть на изображении выше:
-
MS COCO
серединаAP
находится в 10IOU
(начиная с 0,5, шаг 0,05 до 0,95) уровень и среднее значение 80 уровней класса - для трех разных размеров (
small
,medium
,large
) предложил разные стандарты измерения - Кроме
AP
, также предлагаетсяAR
который(Average Recall
) стандарт оценки, его метод расчета такой же, какAP
похож
Формат выноски
отличается отPASCAL VOC
, одна картинка соответствует однойxml
документ,MS COCO
заключается в прямом преобразовании всех изображений и соответствующихbbox
информация записывается вjson
в файле. отмеченjson
Файл такой
{
"info": info,
"images": [image],
"annotations": [annotation],
"licenses": [license],
"categories": [category]
}
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": int,
"name": str,
"supercategory": str,
"keypoints": [str],
"skeleton": [edge]
}
annotation{
"id": int,
"image_id": int,
"category_id": int,
"segmentation": RLE or [polygon],
"area": float,
"bbox": [x,y,width,height],
"iscrowd": 0 or 1,
}
Вот несколько ключевых слов для объяснения
-
info
: запись основной информации о наборе данных -
license
: Информация об авторских правах, которая является источником изображения. -
images
: Содержит информацию о каждом изображении, включая имя файла, ширину, высоту,id
Ждать -
categories
: информация о категории,id
Нумерация начинается с 1, 0 — это фон, аsupercategory
, такие как собаки и кошки,supercategory
животное -
annotations
: в тренировочном наборе (или тестовом наборе)bbox
количество
MS COCO
В наборе данных есть три типа аннотаций, а именноobject instances
,object keypoints
иimage captions
,в,info
,licenses
иimages
Три структуры являются общими в разныхjson
Три типа в файле одинаковы, иannotation
иcategory
это отличается
Загрузка набора данных
В основном имеется два набора данных за 2014 и 2017 годы, а данные за 2014 год используются дляDetection
Обнаружение цели,Captioning
субтитры,Keypoints
В трех задачах обнаружения ключевых точек, а данные 2017 года основаны на этом, большеStuff
иPanoptic
Разделите задачи.
Инструмент аннотации
рекомендоватьlabelme, Используйте напрямуюpip install labelme
для завершения установки. Он также очень прост в использовании,labelImg
почти слишком много
Взаимное преобразование PASCAL VOC и MS COCO
Вы можете использовать следующий инструмент с открытым исходным кодомGitHub.com/ver Идентификатор позы, о…
COCO API
MS COCO
при условии соответствующегоAPI
, используемый для операций с наборами данных, адрес:GitHub.com/cocoDataSet…,Это обеспечиваетPython
,Lua
иMatlib
интерфейс, здесьPython
Например
Первый — установить
git clone https://github.com/cocodataset/cocoapi.git
cd cocoapi/PythonAPI
make
Ниже приведен официальный пример использования
from pycocotools.coco import COCO
import numpy as np
import skimage.io as io
import matplotlib.pyplot as plt
import pylab
pylab.rcParams['figure.figsize'] = (8.0, 10.0)
dataDir='..'
dataType='val2017'
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)
# 通过instance annotations的json文件得到coco对象
coco=COCO(annFile)
cats = coco.loadCats(coco.getCatIds())
nms=[cat['name'] for cat in cats]
# 输出目标类别
print('COCO categories: \n{}\n'.format(' '.join(nms)))
nms = set([cat['supercategory'] for cat in cats])
# 输出大类别,supercategory
print('COCO supercategories: \n{}'.format(' '.join(nms)))
# get all images containing given categories, select one at random
catIds = coco.getCatIds(catNms=['person','dog','skateboard']);
imgIds = coco.getImgIds(catIds=catIds );
imgIds = coco.getImgIds(imgIds = [324158])
# 得到img对象,图片信息都在这里
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
# 读取图片并显示出来
# I = io.imread('%s/images/%s/%s'%(dataDir,dataType,img['file_name']))
# use url to load image
I = io.imread(img['coco_url'])
plt.axis('off')
plt.imshow(I)
plt.show()
Отображается после выполнения кода