<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何正確使用COCO數(shù)據(jù)集

          共 5410字,需瀏覽 11分鐘

           ·

          2021-08-25 11:28

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          簡介


          COCO數(shù)據(jù)集,意為“Common Objects In Context”,是一組具有挑戰(zhàn)性的、高質量的計算機視覺數(shù)據(jù)集,是最先進的神經(jīng)網(wǎng)絡,此名稱還用于命名這些數(shù)據(jù)集使用的格式。


          COCO 是一個大規(guī)模的對象檢測、分割和字幕數(shù)據(jù)集。COCO有幾個特點:

          - 對象分割

          - 在上下文中識別

          - 超像素素材分割

          - 330K 圖像(> 200K 標記)

          - 150 萬個對象實例

          - 80 個對象類別


          該數(shù)據(jù)集的格式可以被高級神經(jīng)網(wǎng)絡庫自動理解,例如Facebook的Detectron2,甚至還有專門為處理 COCO 格式的數(shù)據(jù)集而構建的工具,例如COCO- annotator和COCOapi。了解此數(shù)據(jù)集的表示方式將有助于使用和修改現(xiàn)有數(shù)據(jù)集以及創(chuàng)建自定義數(shù)據(jù)集。具體來說,我們對注釋文件感興趣,是因為完整的數(shù)據(jù)集由圖像目錄和注釋文件組成,提供機器學習算法使用的元數(shù)據(jù)。


          可以用COCO做什么?


          實際上有多個 COCO 數(shù)據(jù)集,每個數(shù)據(jù)集都是為特定的機器學習任務創(chuàng)建的,并帶有附加數(shù)據(jù)。3個最受歡迎的任務是:

          • 對象檢測——模型應該獲取對象的邊界框,即返回對象類列表和它們周圍矩形的坐標;物體(也稱為“事物”)是離散的、獨立的物體,通常帶有零件,如人和汽車。

          • 對象分割——模型不僅應該得到對象(實例/“事物”)的邊界框,還應該得到分割掩碼,即圍繞對象的多邊形坐標。

          • 實例分割——模型應該做對象分割,但不是在單獨的對象(“事物”)上,而是在背景連續(xù)模式上,比如草或天空。

          在計算機視覺中,這些任務有著巨大的用途,例如用于自動駕駛車輛(檢測人和其他車輛)、基于人工智能的安全性(人體檢測和/或分割)和對象重新識別(對象分割或實例分割去除背景有助于檢查對象身份)。


          COCO數(shù)據(jù)格式


          基本結構和常見元素:COCO 注釋使用的文件格式是 JSON,它有字典(大括號內的鍵值對{…})作為頂部值,它還可以有列表(括號內的有序項目集合,[…])或嵌套在其中的字典。


          基本結構如下:

          {
           "info": {…},
           "licenses": […],
           "images": […],
           "categories": […],
           "annotations": […]
          }


          讓我們仔細看看基本結構中的每一個部分。


          “info”部分:

          該字典包含有關數(shù)據(jù)集的元數(shù)據(jù),對于官方的 COCO 數(shù)據(jù)集,如下:

          {
           "description": "COCO 2017 Dataset",
           "url": "http://cocodataset.org",
           "version": "1.0",
           "year": 2017,
           "contributor": "COCO Consortium",
           "date_created": "2017/09/01"
          }


          如我們所見,它僅包含基本信息,"url"值指向數(shù)據(jù)集官方網(wǎng)站(例如 UCI 存儲庫頁面或在單獨域中),這是機器學習數(shù)據(jù)集中常見的事情,指向他們的網(wǎng)站以獲取更多信息,例如獲取數(shù)據(jù)的方式和時間。


          licenses”部分:

          以下是數(shù)據(jù)集中圖像許可的鏈接,例如知識共享許可,具有以下結構:

          [
           {
             "url": "http://creativecommons.org/licenses/by-nc-sa/2.0/",
             "id": 1,
             "name": "Attribution-NonCommercial-ShareAlike License"
           },
           {
             "url": "http://creativecommons.org/licenses/by-nc/2.0/",
             "id": 2,
             "name": "Attribution-NonCommercial License"
           },
           …
          ]

          這里要注意的重要一點是"id"字段——"images"字典中的每個圖像都應該指定其許可證的“id”。


          在使用圖像時,請確保沒有違反其許可——可以在 URL 下找到全文。


          如果我們決定創(chuàng)建自己的數(shù)據(jù)集,請為每個圖像分配適當?shù)脑S可——如果我們不確定,最好不要使用該圖像。


          “image”部分:

          可以說是第二重要的,這本字典包含有關圖像的元數(shù)據(jù):

          {
           "license": 3,
           "file_name": "000000391895.jpg",
           "coco_url": "http://images.cocodataset.org/train2017/000000391895.jpg",
           "height": 360,
           "width": 640,
           "date_captured": "2013–11–14 11:18:45",
           "flickr_url": "http://farm9.staticflickr.com/8186/8119368305_4e622c8349_z.jpg",
           "id": 391895
          }


          接下來我們看一下這些字段:

          • "license":來自該"licenses" 部分的圖像許可證的 ID

          • "file_name": 圖像目錄中的文件名

          • "coco_url", "flickr_url": 在線托管圖像副本的 URL

          • "height", "width": 圖像的大小,在像 C 這樣的低級語言中非常方便,在這種語言中獲取矩陣的大小是非常困難的

          • "date_captured": 拍照的時候


          "id"領域是最重要的領域,這是用于"annotations"識別圖像的編號,因此如果我們想識別給定圖像文件的注釋,則必須在"圖像"中檢查相應圖像文檔的“id”,然后在“注釋”中交叉引用它。


          在官方COCO數(shù)據(jù)集中"id"與"file_name"相同。需要注意的是,自定義 COCO數(shù)據(jù)集可能不一定是這種情況!這不是強制的規(guī)則,例如由私人照片制成的數(shù)據(jù)集可能具有與沒有共同之處的原始照片名稱"id"。


          "categories"部分:

          本部分對于對象檢測和分割任務以及對于實例分割任務有點不同。


          對象檢測/對象分割:

          [
           {"supercategory": "person", "id": 1, "name": "person"},
           {"supercategory": "vehicle", "id": 2, "name": "bicycle"},
           {"supercategory": "vehicle", "id": 3, "name": "car"},
           …
           {"supercategory": "indoor", "id": 90, "name": "toothbrush"}
          ]


          這些是可以在圖像上檢測到的對象類別("categories"在 COCO 中是類別的另一個名稱,我們可以從監(jiān)督機器學習中了解到)。


          每個類別都有一個唯一的"id",它們應該在 [1,number of categories] 范圍內。類別也分為“超類別”,我們可以在程序中使用它們,例如,當我們不關心是自行車、汽車還是卡車時,一般檢測車輛。


          實例分割:

          [
           {"supercategory": "textile", "id": 92, "name": "banner"},
           {"supercategory": "textile", "id": 93, "name": "blanket"},
           …
           {"supercategory": "other", "id": 183, "name": "other"}
          ]


          類別數(shù)從高開始以避免與對象分割沖突,因為有時這些任務可以一起執(zhí)行。從 92 到 182 的 ID 是實際的背景素材,而 ID 183 代表所有其他沒有單獨類的背景紋理。


          “annotations”部分:

          這是數(shù)據(jù)集最重要的部分,其中包含對特定 COCO 數(shù)據(jù)集的每個任務至關重要的信息。

          {
           "segmentation":
           [[
             239.97,
             260.24,
             222.04,
             …
           ]],
           "area": 2765.1486500000005,
           "iscrowd": 0,
           "image_id": 558840,
           "bbox":
           [
             199.84,
             200.46,
             77.71,
             70.88
           ],
           "category_id": 58,
           "id": 156
          }


          • "segmentation":分割掩碼像素列表;這是一個扁平的對列表,因此我們應該采用第一個和第二個值(圖片中的 x 和 y),然后是第三個和第四個值,以獲取坐標;需要注意的是,這些不是圖像索引,因為它們是浮點數(shù)——它們是由 COCO-annotator 等工具從原始像素坐標創(chuàng)建和壓縮的

          • "area":分割掩碼內的像素數(shù)

          • "iscrowd":注釋是針對單個對象(值為 0),還是針對彼此靠近的多個對象(值為 1);對于實例分割,此字段始終為 0 并被忽略

          • "image_id": 'images' 字典中的 'id' 字段;警告:這個值應該用于將圖像與其他字典交叉引用,而不是"id"字段!

          • "bbox":邊界框,即對象周圍矩形的坐標(左上x,左上y,寬,高);從圖像中提取單個對象非常有用,因為在像 Python 這樣的許多語言中,它可以通過訪問圖像數(shù)組來完成,例如cropped_object = image[bbox[0]:bbox[0] + bbox[2], bbox[1]:bbox[1] + bbox[3]]

          • "category_id":對象的類,對應"類別"中的"id"字段

          • "id": 注釋的唯一標識符;警告:這只是注釋ID,這并不指向其他詞典中的特定圖像!


          在處理人群圖像 ( "iscrowd": 1) 時,該"segmentation"部分可能會有所不同:

          "segmentation":
          {
           "counts": [179,27,392,41,…,55,20],
           "size": [426,640]
          }

          這是因為對于許多像素,明確列出所有像素創(chuàng)建分割掩碼將占用大量空間,相反,COCO使用自定義的運行長度編碼(RLE)壓縮,這是非常有效的,因為分段掩碼是二進制的,僅0和1的RLE可能會將大小減小很多倍。


          總結


          我們探討了用于最流行任務的COCO數(shù)據(jù)集格式:對象檢測、對象分割和實例分割。COCO官方數(shù)據(jù)集質量高、規(guī)模大,適合初學者項目、生產環(huán)境和最新研究。我希望本文能夠幫助小伙伴理解如何解釋這種格式,并將其用于小伙伴的ML應用程序。


              下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 74
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产女人18毛片水18精品软件 | 撸撸撸在线观看 | 豆花视频免费版 | 亚洲波多野结衣 | 一级黄片在线看 |