coco关键点标注json_COCO 数据集中目标检测标注说明
此篇文章會(huì)不斷補(bǔ)充內(nèi)容,建議長(zhǎng)期關(guān)注。最后更新日期為2018年11月25日。
需要用到的工具:
UltraEdit
Git
Python ,包含 jupyter notebook,以及其它必要的包
Adobe Photoshop CC
目前官方 API 只提供了 Lua 腳本、Python 腳本和 Matlab 腳本的編程接口,暫時(shí)沒(méi)有適配 .net 框架的接口。其中只有 Matlab 腳本才能使用 analyze() 函數(shù)對(duì)評(píng)估結(jié)果進(jìn)行分析。
coco 數(shù)據(jù)集有五種標(biāo)注類型,分別是“目標(biāo)檢測(cè)”、“關(guān)鍵點(diǎn)檢測(cè)”、“素材分割”、“全景分割”和“圖像說(shuō)明”。標(biāo)注信息使用 JSON 格式存儲(chǔ)。請(qǐng)注意,下載頁(yè)面上描述的 COCO API 可用于訪問(wèn)和操作所有“標(biāo)注”。 所有“標(biāo)注”都具有下面相同的基本數(shù)據(jù)結(jié)構(gòu):
{
"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,
}
接下來(lái)只描述“對(duì)象檢測(cè)”的特定格式:
一、對(duì)象檢測(cè)
每個(gè)對(duì)象實(shí)例的標(biāo)注都包含一系列字段,包括對(duì)象的類別ID(category_id)和分段掩碼(segmentation)。 分段格式取決于實(shí)例是表示單個(gè)對(duì)象(iscrowd = 0,在這種情況下使用多邊形)還是對(duì)象集合(iscrowd = 1,在這種情況下使用RLE)。 請(qǐng)注意,單個(gè)對(duì)象(iscrowd = 0)可能需要多個(gè)多邊形,例如,如果被遮擋。 人群注釋(iscrowd = 1)用于標(biāo)記大組對(duì)象(例如一群人)。 此外,為每個(gè)對(duì)象提供一個(gè)封閉的邊界框(框坐標(biāo)是從左上角的圖像角測(cè)量的,并且是0索引的)。 最后,標(biāo)注結(jié)構(gòu)的 categories 字段存儲(chǔ) category id 到 category 和 supercategory 名稱的映射。 另請(qǐng)參閱檢測(cè)任務(wù)。
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:其它四種格式的說(shuō)明。
對(duì)象檢測(cè) JSON 結(jié)構(gòu)總覽
其中,info、licenses、images、annotations 和 categories 均為數(shù)組。
二、對(duì)象檢測(cè)示例
COCO 數(shù)據(jù)集提供了應(yīng)用程序編程接口和使用實(shí)例,并托管在了 GitHub 倉(cāng)庫(kù)中。
點(diǎn)擊此處訪問(wèn) COCO API 的倉(cāng)庫(kù)。
點(diǎn)擊此處訪問(wèn) COCO API 使用示例。
以上使用示例中未曾提到邊界框?qū)傩?bbox),以下將演示如何使用邊界框?qū)傩浴?/p>
以2017年的驗(yàn)證集中編號(hào)為174482的圖片為例(如果沒(méi)有2017年的數(shù)據(jù)集,可以點(diǎn)擊下方鏈接下載完整壓縮包,或只單獨(dú)下載某張圖片):
圖片正中央為自行車。
打開(kāi) 標(biāo)注壓縮包,找到instance_val2017.json文件中第一個(gè)圖片編號(hào)為174482的標(biāo)注屬性,如下所示:
圖片編號(hào)為174482的第一個(gè)標(biāo)注。
該段內(nèi)容中 “segmentation” 屬性太長(zhǎng),故折疊。
其中“bbox”屬性為實(shí)例的邊界框(bounding box)。這四個(gè)數(shù)字的含義為左上角橫坐標(biāo)、左上角縱坐標(biāo)、寬度、高度,單位為像素。這個(gè)框?yàn)榇笾庐嫵?#xff0c;因此對(duì)實(shí)例的標(biāo)注并非完全精確,如下所示:
使用 bbox 屬性畫出的邊界框。
三、對(duì)象檢測(cè)評(píng)估
1. 度量
以下12個(gè)度量標(biāo)準(zhǔn)用于表征COCO上對(duì)象檢測(cè)器的性能:
平均精度(Average Precision, AP)
平均精度在 IoU=.50:.05:.95 (主要度量挑戰(zhàn))
平均精度在?IoU=.50 (PASCAL VOC 度量)
平均精度在?IoU=.75 (嚴(yán)格度量)
不同尺度的平均精度(Average Precision Across Scale, APAS)
小型對(duì)象平均精度,面積小于
中等對(duì)象平均精度,面積介于
和
之間
大型對(duì)象平均精度,面積超過(guò)
平均重復(fù)調(diào)用次數(shù)(Average Recall, AR)
每張圖片檢測(cè) 1 次
每張圖片檢測(cè) 10 次
每張圖片檢測(cè) 100 次
不同尺度的平均重復(fù)調(diào)用次數(shù)(Average Recall Across Scale, ARAS)
小型對(duì)象平均重復(fù)調(diào)用次數(shù),面積小于
?中等對(duì)象平均重復(fù)調(diào)用次數(shù),面積介于
和
之間
大型對(duì)象平均重復(fù)調(diào)用次數(shù),面積超過(guò)
2. 評(píng)估代碼
評(píng)估代碼可在 COCO GitHub 網(wǎng)站上獲得。 具體來(lái)說(shuō),分別在 Matlab 或 Python 代碼中查看 CocoEval.m 或 cocoeval.py。 另請(qǐng)參閱 Matlab 或 Python 代碼(演示)中的evalDemo。 在運(yùn)行評(píng)估代碼之前,請(qǐng)以結(jié)果格式頁(yè)面中描述的格式準(zhǔn)備結(jié)果。
評(píng)估參數(shù)如下(括號(hào)中的默認(rèn)值,通常無(wú)需更改):
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
}
通過(guò)調(diào)用evaluate()函數(shù)和accumulate()運(yùn)行評(píng)估代碼會(huì)生成兩個(gè)測(cè)量檢測(cè)質(zhì)量的數(shù)據(jù)結(jié)構(gòu)。 這兩個(gè)結(jié)構(gòu)是evalImgs和eval,它們分別測(cè)量每個(gè)圖像的質(zhì)量并在整個(gè)數(shù)據(jù)集中進(jìn)行聚合。 evalImgs結(jié)構(gòu)具有KxA個(gè)條目,每個(gè)評(píng)估設(shè)置一個(gè),而eval結(jié)構(gòu)將此信息組合到精度和重新調(diào)用數(shù)組中。下面是兩個(gè)結(jié)構(gòu)的詳細(xì)信息(另請(qǐng)參閱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" : 用于評(píng)估的參數(shù)
"date" : 執(zhí)行評(píng)估的日期
"counts" : [T,R,K,A,M] 參數(shù)維度(見(jiàn)上)
"precision" : [TxRxKxAxM] 每次評(píng)估設(shè)置的精度
"recall" : [TxKxAxM] 每次評(píng)估設(shè)置的最多重復(fù)調(diào)用次數(shù)
}
最后,summary() 函數(shù)根據(jù)eval結(jié)構(gòu)計(jì)算前面定義的12個(gè)檢測(cè)指標(biāo)。
3. 分析代碼
除了評(píng)估代碼之外,我們還提供了一個(gè)函數(shù)analyze()函數(shù)來(lái)執(zhí)行誤報(bào)的詳細(xì)分類。 這是受到Derek Hoiem等人在物體探測(cè)器中診斷錯(cuò)誤的啟發(fā),但在實(shí)現(xiàn)和細(xì)節(jié)上有很大不同。 代碼生成如下圖:
兩個(gè)圖都顯示了何愷明(上海交通大學(xué))等人的ResNet(bbox)探測(cè)器的分析,該探測(cè)器是2015年探測(cè)挑戰(zhàn)賽的獲勝者。 第一個(gè)圖顯示了人員類ResNet錯(cuò)誤的細(xì)分;第二個(gè)圖是對(duì)所有類別的平均ResNet的整體分析。
每個(gè)圖是一系列精確的回憶曲線,其中每個(gè)PR曲線保證嚴(yán)格高于之前的曲線,因?yàn)樵u(píng)估設(shè)置變得更加寬松。 曲線如下:
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: 刪除所有剩余錯(cuò)誤后的PR(通常AP = 1)。
每條曲線下方的區(qū)域顯示在圖例的括號(hào)中。 在ResNet檢測(cè)器的情況下,IoU = .75的總體AP為.399,完美的本地化將AP增加到.682。 有趣的是,刪除所有類混淆(超類別和跨超類別)只會(huì)略微提高AP到.713。 刪除背景fp會(huì)將性能提升到.870 AP,其余的錯(cuò)誤都會(huì)丟失檢測(cè)(盡管如果添加更多檢測(cè),這也會(huì)增加很多fps)。 總之,ResNet的錯(cuò)誤主要是不完美的本地化和背景混淆。
對(duì)于給定的檢測(cè)器,代碼總共生成372個(gè)圖! 共有80個(gè)類別,12個(gè)超類別和1個(gè)總體結(jié)果,總共93個(gè)不同的設(shè)置,并且分析以4個(gè)等級(jí)(所有,小,中,大,所以93 * 4 = 372個(gè)圖表)進(jìn)行。 文件命名為[supercategory] – [category] – [size] .pdf,每個(gè)類別80 * 4的結(jié)果,整體 – [supercategory] – [size] .pdf,每個(gè)超類別結(jié)果為12 * 4,總體而言 – all- [size] .pdf為1 * 4整體結(jié)果。 在所有圖中,通常整體和超類別結(jié)果是最感興趣的。
注意:analyze()函數(shù)可能需要很長(zhǎng)時(shí)間才能運(yùn)行完畢,請(qǐng)耐心等待。因此,我們通常不在評(píng)估服務(wù)器上運(yùn)行此代碼;您必須使用驗(yàn)證集在本地運(yùn)行代碼。最后,目前analyze()只是Matlab API的一部分;Python代碼即將推出。
贊過(guò):
贊 正在加載……
相關(guān)
總結(jié)
以上是生活随笔為你收集整理的coco关键点标注json_COCO 数据集中目标检测标注说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 08 域控 架构主机 转移_论无服务器架
- 下一篇: YOLO3实现目标检测(VS2015+O