如何獲取COCO的檢測或分割結果瓢喉。MS-COCO共有哪些類宁赤,有哪些標注。今天來看一下MS-COCO數(shù)據(jù)集的內(nèi)容說明栓票,數(shù)據(jù)的定義决左,標注信息

http://cocodataset.org/#download 官網(wǎng)地址
本文的目的是獲取所有圖像的分割結果并保存的工作。

Mask API 中介紹
COCO為每個目標實例都提供了分割Msak走贪,instance_train201X.json表示的是整個數(shù)據(jù)集的結構,下面這部分主要介紹他有哪些數(shù)據(jù)以及其數(shù)據(jù)類型

{
 "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,
}

剛介紹完他的數(shù)據(jù)類型佛猛,現(xiàn)介紹下具體到json文件中的每一部分的具體形式
解析下instance_train2014.json文件,最后我們講一下如何獲取并展示分割結果坠狡。

{
     "info":      #第一個info信息
          {       #數(shù)據(jù)集信息
                  "description": "COCO 2014 Dataset",
                  "url": "http://cocodataset.org",
                  "version": "1.0",
                  "year": 2014,
                  "contributor": "COCO Consortium",
                  "date_created": "2017/09/01"
         },



      "images":  #第二個圖片信息继找,數(shù)組包含了多張圖像
      [   {      #每張圖像的具體信息
                  "license": 5,
                  "file_name": "COCO_train2014_000000057870.jpg",
                  "coco_url": "http://images.cocodataset.org/train2014/COCO_train2014_000000057870.jpg",
                  "height": 480,
                  "width": 640,
                  "date_captured": "2013-11-14 16:28:13",
                  "flickr_url": "http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg",
                  "id": 57870
           },
          ......
          ......   #此處省略很多圖片
         {
                  "license": 4,
                  "file_name": "COCO_train2014_000000475546.jpg",
                  "http://images.cocodataset.org/train2014/COCO_train2014_000000475546.jpg",
                  "height": 375,
                  "width":500,;逃沿、
                  "date_captured": "2013-11-25 21:20:23",
                  "flickr_url": "http://farm1.staticflickr.com/167/423175046_6cd9d0205a_z.jpg",
                  "id": 475546
           }]婴渡,         #圖像描述結束幻锁,下面開始介紹licenses


    "licenses":
         [ {
                  "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/",
                  "id": 1,
                  "name": "Attribution-NonCommercial-ShareAlike License"
           },
            .....#此處省略七個license
            .....
         {
                  "url": "http://creativecommons.org/licenses/by-nc-nd/2.0/",
                  "id": 8,
                  "name": "Attribution-NonCommercial-NoDerivs License"
         }],



      "annotations":
      [   { 
#如果你想了解這個annotations中segment里面是什么,首先它是通過壓縮處理后的分割區(qū)域的一個表示边臼,TFRecord

                 "segmentation":[[312.29,562.89,402.25,511.49,400.96,425.38,398.39,372.69,
                                  388.11,332.85,318.71,325.14,295.58,305.86,269.88,314.86,
                                  258.31,337.99,217.19,321.29,182.49,343.13,141.37,348.27,
                                  132.37,358.55,159.36,377.83,116.95,421.53,167.07,499.92,
                                  232.61,560.32,300.72,571.89]],
                "area": 54652.9556,
                "iscrowd": 0,
                "image_id": 480023,
                "bbox": [116.95,305.86,285.3,266.03],
                "category_id": 58,"id": 86
          },
            .....#此處省略很多圖像的分割標簽
            .....
                "segmentation":[[312.29,562.89,402.25,511.49,400.96,425.38,398.39,372.69,
                                388.11,332.85,318.71,325.14,295.58,305.86,269.88,314.86,
                                258.31,337.99,217.19,321.29,182.49,343.13,141.37,348.27,
                                132.37,358.55,159.36,377.83,116.95,421.53,167.07,499.92,
                                232.61,560.32,300.72,571.89]],
              "area": 54652.9556,
              "iscrowd": 0,
              "image_id": 480023,
              "bbox": [116.95,305.86,285.3,266.03],
              "category_id": 58,
              "id": 86
          },


      "categories":#類別信息
     [   {
              "supercategory": "person",
              "id": 1,
              "name": "person"
          },
              .......#此處省略很多圖像的類標簽
              .......
          {
              "supercategory": "vehicle",
              "id": 2,
              "name": "bicycle"
          },
        {
              "supercategory": "kitchen",#大類
              "id": 50,
              "name": "spoon"
        }

首先哄尔,下載COCOAPI中的pythonAPI到coco文件夾中

git clone https://github.com/cocodataset/cocoapi.git

然后,cd到pythonApi下柠并,執(zhí)行make究飞,可能會出現(xiàn)下面情況

cd coco/PythonAPI
make
#錯誤提示pycocotools/_mask.c:沒有那個文件或目錄
pip install cython  #解決方式
make#再次執(zhí)行make,如果你沒有出現(xiàn)上面的錯誤堂鲤,可以跳過
#接下來亿傅,驗證cocoApi是否安裝成功
python
>>>import pycocotools
#不報錯就成功了一半了

接下來,在coco文件夾瘟栖,下載好image和anotation葵擎。

這里介紹我們的分割結果圖獲取方法

官方給的使用示例在下載目錄下的pycocoDemo.ipynb文件下https://github.com/dengdan/coco/blob/master/PythonAPI/pycocoDemo.ipynb

那么我們首先了解一下,之前為什么要引入pycocotools半哟,因為這個問件下包含了對coco數(shù)據(jù)的json文件的解析工具酬滤,他定義了coco.py這個文件,中包含一下幾個接口寓涨。

#  decodeMask - Decode binary mask M encoded via run-length encoding.
#  encodeMask - Encode binary mask M using run-length encoding.
#  getAnnIds  - Get ann ids that satisfy given filter conditions.
#  getCatIds  - Get cat ids that satisfy given filter conditions.
#  getImgIds  - Get img ids that satisfy given filter conditions.
#  loadAnns   - Load anns with the specified ids.
#  loadCats   - Load cats with the specified ids.
#  loadImgs   - Load imgs with the specified ids.
#  annToMask  - Convert segmentation in an annotation to binary mask.
#  showAnns   - Display the specified annotations.
#  loadRes    - Load algorithm results and create API for accessing them.
#  download   - Download COCO images from mscoco.org server.
# Throughout the API "ann"=annotation, "cat"=category, and "img"=image.

------ 首先盯串,我們獲取COCO數(shù)據(jù)集中共有多少類,需要在pythonAPI下新建一個python文件戒良,命名為segcoco.py用于獲取分割圖,先執(zhí)行下面這段話体捏,獲取下COCO中共有多少類別

import numpy as np
import skimage as io
import matplotlib as mpl
mpl.use('Agg')
#這里為了防止linux沒有GUI報錯
import matplotlib.pyplot as plt
import pylab
import urllib
import numpy as np
from io import BytesIO
import requests as req
from PIL import Image

pylab.rcParams['figure.figsize'] = (8.0, 10.0)

dataDir='..'
dataType='val2014'  #這里改為train2017的話,類別是相同的
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)

coco=COCO(annFile)


cats = coco.loadCats(coco.getCatIds())
#這里loadCats就是coco提供的接口糯崎,獲取類別
nms=[cat['name'] for cat in cats]
print('COCO categories: \n{}\n'.format(' '.join(nms)))

nms = set([cat['supercategory'] for cat in cats])
#cat['supercategory']几缭,從這里可以看出來,cat是一個包含多個屬性的數(shù)組\說是字典更好
print('COCO supercategories: \n{}'.format(' '.join(nms)))

顯示

loading annotations into memory...
Done (t=5.08s)
creating index...
index created!
COCO categories: 
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



COCO supercategories: 
outdoor food indoor appliance sports person animal vehicle furniture accessory electronic kitchen


接下來沃呢,獲取分割圖年栓,按照github的示例,我們在之前代碼的基礎上薄霜,添加一下代碼

imgIds = coco.getImgIds(imgIds=[324158])
img = coco.loadImgs(imgIds[np.random.randint(0, len(imgIds))])[0]
print(img)
print(img['flickr_url'])

response = req.get(img['flickr_url'])
#這里跟github中不一樣某抓,通過request來獲取的圖像url來得到圖像的,因為發(fā)現(xiàn)如果使用coco_url會下載不了圖片惰瓜,可能跟外網(wǎng)有關
image = Image.open(BytesIO(response.content))

plt.imshow(image)
#在這里否副,如果在linux服務器上,由于沒有GUI,會導致錯誤,所以鸵熟, 在前面導包的時候加了import matplotlib as mpl
mpl.use('Agg')
plt.axis('off')

annIds = coco.getAnnIds(imgIds=img['id'])
anns = coco.loadAnns(annIds)
#print(anns)
ax=coco.showAnns(anns)
#如果這里提示了TKL的錯誤

注意副编,在linux服務器上,由于沒有GUI,除非你有Xmanager,否則會導致錯誤TKL...痹届,所以呻待, 在coco.py前面導包的時候加了
import matplotlib as mpl
mpl.use('Agg')
如果在沒有GUI的情況下,是在想看的話队腐,那你就在coco.py的showAnns(ans)這個方法后面蚕捉,加上plt.save('起個名.jpg'),再次執(zhí)行柴淘,就能夠看到這個圖的分割結果了迫淹。

image.png

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市为严,隨后出現(xiàn)的幾起案子敛熬,更是在濱河造成了極大的恐慌,老刑警劉巖第股,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件应民,死亡現(xiàn)場離奇詭異,居然都是意外死亡夕吻,警方通過查閱死者的電腦和手機诲锹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涉馅,“玉大人归园,你說我怎么就攤上這事≈煽螅” “怎么了庸诱?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盐捷。 經(jīng)常有香客問我偶翅,道長,這世上最難降的妖魔是什么碉渡? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮母剥,結果婚禮上滞诺,老公的妹妹穿的比我還像新娘。我一直安慰自己环疼,他們只是感情好习霹,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著炫隶,像睡著了一般淋叶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伪阶,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天煞檩,我揣著相機與錄音处嫌,去河邊找鬼。 笑死斟湃,一個胖子當著我的面吹牛熏迹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凝赛,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼注暗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墓猎?” 一聲冷哼從身側響起捆昏,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毙沾,沒想到半個月后骗卜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡搀军,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年膨俐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罩句。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡焚刺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出门烂,到底是詐尸還是另有隱情乳愉,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布屯远,位于F島的核電站蔓姚,受9級特大地震影響,放射性物質發(fā)生泄漏慨丐。R本人自食惡果不足惜坡脐,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望房揭。 院中可真熱鬧备闲,春花似錦、人聲如沸捅暴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蓬痒。三九已至泻骤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狱掂。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工演痒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人符欠。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓嫡霞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親希柿。 傳聞我的和親對象是個殘疾皇子诊沪,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)曾撤,斷路器端姚,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    小邁克閱讀 2,963評論 1 3
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,444評論 6 428
  • 明天就是元宵節(jié)了,剛好公公去廣州的車票買在明天上午挤悉。上午和婆婆一起帶著孩子去附近新開的超市買點吃的給公公明天帶上渐裸。...
    寬雅閱讀 250評論 0 0
  • 晨冬清亦幽 群山如墨勾 曲徑通何處 盡是思鄉(xiāng)愁
    哇哈哈哈哈閱讀 161評論 0 0