coco關鍵點標註json coco資料集

2021-10-14 10:11:10 字數 4312 閱讀 7356

可以看到其中有上面所述的三種型別,每種型別又包含了訓練和驗證,所以共6個json檔案。

以instances_train2014.json為例,總體形式如下:

(1)images欄位列表元素的長度等同於劃入訓練集(或者測試集)的的數量;

(2)annotations欄位列表元素的數量等同於訓練集(或者測試集)中bounding box的數量;

(3)categories欄位列表元素的數量等同於類別的數量,coco為80(2023年);

這是用來train的json中儲存的東西,首先json儲存的是乙個大的字典:

info這個key指向的字典是一些基本資訊,包括時間,版本,貢獻者,**鏈結等不重要,可以忽略。

下乙個license這個key指向的資訊也可以忽略不計,就是途中被我選中標黑的那個部分。

再下乙個annotations這個key是本json中最最最最最重要的乙個部分了。

annotations欄位是包含多個annotation例項的乙個陣列,annotation型別本身又包含了一系列的字段,如這個目標的category id和segmentation mask。segmentation格式取決於這個例項是乙個單個的物件(即iscrowd=0,將使用polygons格式)還是一組物件(即iscrowd=1,將使用rle格式)。如下所示:

annotation
注意,單個的物件(iscrowd=0)可能需要多個polygon來表示,比如這個物件在影象中被擋住了。而iscrowd=1時(將標註一組物件,比如一群人)的segmentation使用的就是rle格式。

注意啊,只要是iscrowd=0那麼segmentation就是polygon格式;只要iscrowd=1那麼segmentation就是rle格式。另外,每個物件(不管是iscrowd=0還是iscrowd=1)都會有乙個矩形框bbox ,矩形框左上角的座標和矩形框的長寬會以陣列的形式提供,陣列第乙個元素就是左上角的橫座標值。

該key指向的是乙個list,然後包含多個字典,每個字典包含乙個物體分割的資訊。看該列表中第乙個字典,segmentation指向是的乙個套著兩個list的東西,裡面一堆數字的含義是畫素級分割得到的物體邊緣座標(有心的同學會發現這裡面的數字個數都是偶數,因為座標是成對出現的);area指向該segmentation的面積,iscrowd目前來看都指向0,表示沒有重疊吧,有重疊指向1(我的理解是這樣,可能有偏差,不過影響不大);image_id就是前面images中儲存的id !讀取json資訊的時候會用到;bbox指向的就是物體的框;category_id指向的數字代表類別(這裡說一下,有些部落格說是有90類,但是從coco2014上來看,只是category_id標定到了90這個數字而已,但是實際類數只有80類,因為,1-90這數字中有一些是跳過的,即有些數字沒有);id不同於images中的id,images中的id是每幅的身份編號,而此處的id是每個框的身份編號,注意區分。

最後一部分

比如上圖中的person_keypoints_train2017.json、person_keypoints_val2017.json這兩個檔案就是這種格式。

object keypoint這種格式的檔案從頭至尾按照順序分為以下段落,看起來和object instance一樣啊:

是的,你開啟這兩個檔案,雖然內容很多,但從檔案開始到結尾按照順序就是這5段。其中,info、licenses、images這三個結構體/型別 在第一節中已經說了,在不同的json檔案中這三個型別是一樣的,定義是共享的。不共享的是annotation和category這兩種結構體,他們在不同型別的json檔案中是不一樣的。

images陣列元素數量是劃入訓練集(測試集)的的數量;

annotations是bounding box的數量,在這裡只有人這個類別的bounding box;

categories陣列元素的數量為1,只有乙個:person(2023年);

2,annotations欄位

這個型別中的annotation結構體包含了object instance中annotation結構體的所有字段,再加上2個額外的字段。

新增的keypoints是乙個長度為3*k的陣列,其中k是category中keypoints的總數量。每乙個keypoint是乙個長度為3的陣列,第一和第二個元素分別是x和y座標值,第三個元素是個標誌位v,v為0時表示這個關鍵點沒有標註(這種情況下x=y=v=0),v為1時表示這個關鍵點標註了但是不可見(被遮擋了),v為2時表示這個關鍵點標註了同時也可見。

num_keypoints表示這個目標上被標註的關鍵點的數量(v>0),比較小的目標上可能就無法標註關鍵點。

annotation
從person_keypoints_val2017.json檔案中摘出乙個annotation的例項如下:

,
3,categories欄位

最後,對於每乙個category結構體,相比object instance中的category新增了2個額外的字段,keypoints是乙個長度為k的陣列,包含了每個關鍵點的名字;skeleton定義了各個關鍵點之間的連線性(比如人的左手腕和左肘就是連線的,但是左手腕和右手腕就不是)。目前,coco的keypoints只標註了person category (分類為人)。

定義如下:

從person_keypoints_val2017.json檔案中摘出乙個category的例項如下:

1,整體json檔案格式

比如上圖中的captions_train2017.json、captions_val2017.json這兩個檔案就是這種格式。

image caption這種格式的檔案從頭至尾按照順序分為以下段落,看起來和object instance一樣,不過沒有最後的categories欄位:

是的,你開啟這兩個檔案,雖然內容很多,但從檔案開始到結尾按照順序就是這4段。其中,info、licenses、images這三個結構體/型別 在第一節中已經說了,在不同的json檔案中這三個型別是一樣的,定義是共享的。不共享的是annotations這種結構體,它在不同型別的json檔案中是不一樣的。

images陣列的元素數量等於劃入訓練集(或者測試集)的的數量;

annotations的數量要多於的數量,這是因為乙個可以有多個場景描述;

2,annotations欄位

annotation
從captions_val2017.json中摘取的乙個annotation例項如下:

coco資料集標註檔案json格式化檢視

ubuntu如何快速格式化json檔案 安裝jq工具 sudo apt get update sudo apt get install jq格式化json檔案輸出到新檔案 cat 檔名 jq newfile.json例子 cat instances val2014.json jq 111.json然...

尋找關鍵點

尋找關鍵點 problem description 現定義關鍵點為一條鏈中處於中間位置的節點,例如 1 3 4中,3就是這個整數鏈中的關鍵點。現在小玉得到了乙個整數鏈,確保鏈中的各個數都互不相同且數列中數的個數為奇數。可是,由於小玉的一些特殊要求,她可能會對這個鏈進行一些特別的操作。操作 1 給定兩...

尋找關鍵點

現定義關鍵點為一條鏈中處於中間位置的節點,例如 1 3 4中,3就是這個整數鏈中的關鍵點。現在小玉得到了乙個整數鏈,確保鏈中的各個數都互不相同且數列中數的個數為奇數。可是,由於小玉的一些特殊要求,她可能會對這個鏈進行一些特別的操作。由於小玉特殊的要求,她保證鏈中肯定會有值為1和2的節點,並且這兩個節...