1. 程式人生 > >COCO2017資料集api說明

COCO2017資料集api說明

什麼是COCO?
COCO資料集是Microsoft製作收集用於Detection + Segmentation + Localization + Captioning的資料集,本人收集了其2017年的版本,一共有25G左右的圖片和600M左右的標籤檔案。 
COCO資料集共有小類80個,分別為

[‘person’, ‘bicycle’, ‘car’, ‘motorcycle’, ‘airplane’, ‘bus’, ‘train’, ‘truck’, ‘boat’, ‘traffic light’, ‘fire hydrant’, ‘stop sign’, ‘parking meter’, ‘bench’, ‘bird’, ‘cat’, ‘dog’, ‘horse’, ‘sheep’, ‘cow’, ‘elephant’, ‘bear’, ‘zebra’, ‘giraffe’, ‘backpack’, ‘umbrella’, ‘handbag’, ‘tie’, ‘suitcase’, ‘frisbee’, ‘skis’, ‘snowboard’, ‘sports ball’, ‘kite’, ‘baseball bat’, ‘baseball glove’, ‘skateboard’, ‘surfboard’, ‘tennis racket’, ‘bottle’, ‘wine glass’, ‘cup’, ‘fork’, ‘knife’, ‘spoon’, ‘bowl’, ‘banana’, ‘apple’, ‘sandwich’, ‘orange’, ‘broccoli’, ‘carrot’, ‘hot dog’, ‘pizza’, ‘donut’, ‘cake’, ‘chair’, ‘couch’, ‘potted plant’, ‘bed’, ‘dining table’, ‘toilet’, ‘tv’, ‘laptop’, ‘mouse’, ‘remote’, ‘keyboard’, ‘cell phone’, ‘microwave’, ‘oven’, ‘toaster’, ‘sink’, ‘refrigerator’, ‘book’, ‘clock’, ‘vase’, ‘scissors’, ‘teddy bear’, ‘hair drier’, ‘toothbrush’]

大類12個,分別為

[‘appliance’, ‘food’, ‘indoor’, ‘accessory’, ‘electronic’, ‘furniture’, ‘vehicle’, ‘sports’, ‘animal’, ‘kitchen’, ‘person’, ‘outdoor’]

安裝COCO api
COCO api來自於github, 從github上clone即可, https://github.com/pdollar/coco 
clone下來後在命令列中把路徑切換到該路徑,輸入

python setup.py install
1

我認為自述檔案中有一個誤導性的錯字:

對於Python,在coco / PythonAPI下執行“make”...

它應該是:

對於Python,在coco / cocoapi / PythonAPI下執行“make”...

我安裝了“pip install Cython”,但我還是得到了

clang:錯誤:沒有這樣的檔案或目錄:'pycocotools / _mask.c'clang 
:錯誤:沒有輸入檔案
錯誤:命令'cc'失敗,退出狀態為1

當我跑步時。

我還缺少一箇中間步驟嗎?
我已經在PythonApi目錄中了。

編輯:解決了。我有。Cython for Python3,為Python 2安裝它就可以了。

 

 

對我來說使用python3 
pip install cython 
然後'make'在coco / cocoapi / PythonAPI 
後跟sudo python setup.py install解決了這個問題

 

我有同樣的問題,但為python3安裝了cython。我在Makefile中更改了兩行來安裝非預設的python intrepreter:

all:
    # install pycocotools locally
        python3.6 setup.py build_ext --inplace
        rm -rf build

install:
        # install pycocotools to the Python site-packages
        python3.6 setup.py build_ext install
        rm -rf build


即可,如果遇到錯誤,參考這兩篇博主寫的部落格即可 
https://blog.csdn.net/gxiaoyaya/article/details/78363391 
https://blog.csdn.net/qq_32768743/article/details/80202429 
安裝完成後,開啟pycharm就會在左側外部庫中看到pycocotools的庫

COCO api介紹
使用COCO api,需要首先import COCO的類,然後根據任務例項化

from pycocotools.coco import COCO
coco = COCO(annfile)
1
2
不同任務使用不同的annfile,為下載的資料集中的json檔案,如

E:/Dataset/COCO2017/annotations/instances_train2017.json

COCO類中我們主要使用以下幾種方法:

getCatIds(catNms=[], supNms=[], catIds=[]) 
通過輸入類別的名字、大類的名字或是種類的id,來篩選得到圖片所屬類別的id 
比如,我們想知道dog類的id是多少

catIds = coco.getCatIds(catNms=['dog'])
1
當然catNms可以包含多個類別名字,如

catIds = coco.getCatIds(catNms=['dog', ‘person', 'bicycle'])
1
getImgIds(imgIds=[], catIds=[]) 
通過圖片的id或是所屬種類的id得到圖片的id 
上一步得到了catIds包含了dog、person、bicycle三個類別的id,我們就可以查詢到那些包含有這些類別的圖片的id

imgIds = coco.getImgIds(catIds=catIds)
1
最終得到一個長度為112的list,包含了圖片的id資訊

loadImgs(ids=[]) 
得到圖片的id資訊後,就可以用loadImgs得到圖片的資訊了 
在這裡我們隨機選取之前list中的一張圖片

img = coco.loadImgs(imgIds[np.random.randint(0, len(imgIds))])[0]
1
最終得到的img並不是一張numpy格式或是PIL格式的圖片,而是一個字典,包含了我們找到的這個id所代表的圖片的資訊 
 
有了圖片的file_name,就可以把這張圖片通過matplotlib畫出來 
 
可以看到通過查詢得到的圖片確實包含了dog、person與bicycle

getAnnIds(imgIds=[], catIds=[], areaRng=[], iscrowd=None) 
通過輸入圖片的id、類別的id、例項的面積、是否是人群來得到圖片的註釋id 
我們想要在之前的圖片中畫出對之前給定的三個種類進行例項分割的結果,就需要找到這張圖片的註釋資訊的id

annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
1
這裡我們得到了一個list

[6971, 192383, 218386, 240733]

loadAnns(ids=[]) 
通過註釋的id,得到註釋的資訊

anns = coco.loadAnns(annIds)
1
得到一個list,包含了4個註釋的形狀位置資訊

showAnns(anns) 
使用標註的資訊畫出來分割的結果

coco.showAnns(anns)
1


如果我們重新定義一個coco的類,使用的是keypoints的json檔案,就可以畫出keypoints的圖

annFile = '%s/annotations/person_keypoints_%s.json' % (dataDir, dataType)
coco_kps = COCO(annFile)
plt.imshow(I)
plt.axis('off')
annIds = coco_kps.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco_kps.loadAnns(annIds)
coco_kps.showAnns(anns)
1
2
3
4
5
6
7

--------------------- 
作者:心態已炸_沉迷學習 
來源:CSDN 
原文:https://blog.csdn.net/zym19941119/article/details/80241663 
版權宣告:本文為博主原創文章,轉載請附上博文連結!