MS COCO資料集輸出資料的結果格式(result format)和如何參加比賽(participate)(來自官網)
一,Results Format
本頁面描述了COCO使用的結果格式。結果格式的一般結構類似於所有的註解型別砂(annotation type sand),它們與下載頁面上描述的基本事實的格式非常相似。我們建議在繼續之前檢視實際真值(ground truth)的格式。
每個演算法生成的結果(如物件邊界框,物件片段或影象標題)都會分別儲存在自己的結果結構中。這個單例結果結構必須包含從中產生結果的影象的id(注意單個影象通常會有多個關聯的結果)。整個資料集的結果彙總在一個這樣的結果陣列中。最後,整個結果陣列作為單個JSON檔案儲存到磁碟(通過Matlab中的gason或Python中的json.dump
示例結果JSON檔案在coco/results/中,作為github包的一部分提供。因為結果格式類似於實際真值註釋格式,所以用於訪問實際真值的CocoApi也可以用來視覺化和瀏覽演算法結果。有關詳細資訊,請參閱evalDemo(demo)以及CocoApi中的loadRes()。
下面介紹每個結果型別的資料結構。下面的各個欄位的格式(category_id,bbox,分段等)與基本事實相同 (詳情請看MS COCO官網資料集下載以及API和Format介紹(來自官網)).
1. Object detection (bounding boxes)
[{
"image_id": int,
"category_id": int,
"bbox": [x,y,width,height],
"score": float,
}]
注意:框座標是從左上角的影象角度測量的浮點數(並且是0索引的)。我們建議將座標舍入到最接近的十分之一畫素,以減少生成的JSON檔案大小。
2. Object detection (segmentation)
[{
"image_id": int,
"category_id": int,
"segmentation": RLE,
"score": float,
}]
注意:包含物件段的二進位制掩碼應該使用MaskApi函式encode()編碼為RLE。有關更多詳細資訊,請參閱
3. Keypoint detection
[{
"image_id": int,
"category_id": int,
"keypoints": [x1,y1,v1,...,xk,yk,vk],
"score": float,
}]
注意:關鍵點座標是從左上角影象角度測量的浮點數(並且是0索引的)。我們建議將座標舍入到最近的畫素以減小檔案大小。還要注意,當前並沒有使用可見性標誌vi(除了控制視覺化),我們建議簡單地設定vi = 1。
4. Stuff segmentation
[{
"image_id": int,
"category_id": int,
"segmentation": RLE,
}]
物體分割格式與物件分割格式相同,除了分數字段(score field)是不必要的。注意:我們建議使用單個二進位制掩碼對影象中出現的每個標籤進行編碼。二進位制掩碼應使用MaskApi函式encode()通過RLE進行編碼。有關示例,請參閱cocostuffhelper.py.中的segmentationToCocoResult()。為方便起見,我們還提供了JSON和png格式之間的轉換指令碼。
5. Caption generation
[{
"image_id": int,
"caption": str,
}]
二、Test Guidelines
COCO資料可以從download page.獲得。每個挑戰有不同的培訓/驗證/測試集,詳細資訊在下載頁面上提供,並在這裡總結:
2017 Unlabeled [optional data for any competition]
參與任何COCO挑戰的推薦訓練資料由相應的COCO訓練集組成。驗證資料也可用於在測試集上提交結果時進行訓練(儘管從2017年開始,驗證集只有5K影象,所以這樣做的好處是最小化的)。請注意,2017年的train / val資料包含與2014年的train / val資料相同的影象,因此2017年的比賽使用2014年的訓練資料沒有任何好處。
任何形式的外部資料都是允許的。將結果上傳到伺服器時,必須在“方法說明(method description)”中指定用於訓練的所有外部資料。我們強調,嚴格禁止任何形式的COCO測試集註釋或使用的監督或無監督的培訓。注意:將結果上傳到評估伺服器時,請在“方法描述”中明確指定用於培訓的所有外部資料。
測試集拆分
在2017年之前,測試集有四個拆分(dev / standard / reserve / challenge)。 從2017年開始,我們將測試集簡化為只有dev/challenge分裂,其他兩個拆分被刪除。四個拆分的最初目的是為了保護挑戰的完整性,同時讓研究人員靈活地測試他們的系統。經過多年的挑戰之後,我們沒有看到過度適合特定拆分的證據(輸出空間的複雜性和測試集的大小可以防止簡單的攻擊,例如wacky boosting)。因此,我們在2017年簡化了參與挑戰。
2017測試集拆分
2017年COCO測試集包含〜40K個測試影象。 測試集被分成兩個大致相同大小的分割約20K的影象:test-dev 和test-challenge。每個都在下面詳細描述。另外,當上傳到評估伺服器時,我們現在允許提交5K val分割以除錯上傳過程。請注意,2017年的測試集指南已更改,您可以檢視舊版使用資訊的2015年指南。2017年的測試分割如下:
split | #imgs | submit limit | scores available | leaderboard |
---|---|---|---|---|
Val | ~5K | no limit | immediate | none |
Test-Dev | ~20K | 5 per day | immediate | year-round |
Test-Challenge | ~20K | 5 total | workshop | workshop |
Test-Dev:test-dev split (拆分)是在一般情況下測試的預設測試資料。通常應該在test-dev集中報告論文的結果,以便公正公開比較。每位參與者的提交次數限制為每天上傳5次以避免過度配合。請注意,每個參與者只能向公眾排行榜釋出一次提交(然而,論文可能會報告多個測試開發結果)。測試開發伺服器將保持全年開放。
Test-Challenge::test-challenge split被用於每年託管的COCO挑戰。結果在相關研討會(通常是ECCV或ICCV)中公佈。每個參與者的提交數量限制在挑戰的總長度上最多5次上傳。如果您提交多個條目,則基於test-dev AP的最佳結果將被選中作為參賽者的參賽作品。請注意,每個參與者只能向公眾排行榜釋出一次提交。測試挑戰伺服器將在每年的比賽前保持一段固定的時間。
屬於每個分割的影象在image_info_test-dev2017(用於test-dev)和image_info_test2017(用於test-dev 和test-challenge)中定義。test-challenge 影象的資訊沒有明確提供。相反,在參與挑戰時,必須在完整的測試集(包括test-dev 和test-challenge)上提交結果。這有兩個目標。首先,參與者在挑戰研討會之前通過在test-dev中看到評估結果,獲得關於他們提交的自動反饋。其次,在挑戰研討會之後,它為未來的參與者提供了一個機會,可以與test-devsplit的挑戰條目進行比較。我們強調,當提交到完整的測試集(image_info_test2017)時,必須在所有影象上生成結果而不區分拆分。最後,我們注意到,2017年的dev / challenge分組包含與2015年dev / challenge分組相同的影象,因此跨越多年的結果可以直接進行比較。
為單個專案建立多個帳戶來規避提交上傳限制是不可接受的。如果一個小組發表兩篇描述不相關方法的論文,則可以建立單獨的使用者賬號。對於挑戰,只有在提出實質上不同的挑戰方法(例如基於不同的論文)時,一個小組才可以建立多個帳戶。為了除錯上傳過程,我們允許參與者在val集上提交無限的評估結果。
2015 Test Set Splits
該測試集用於2015年和2016年的檢測和關鍵點挑戰。它不再使用,評估伺服器關閉。但是,對於歷史參考,完整資訊如下。
2015年COCO測試集包含〜80K測試影象。為了限制過擬合,同時給研究人員更多的靈活性來測試他們的系統,我們將測試集劃分為四個大約相同大小的分割約20K的影象:測試開發,測試標準,測試挑戰和測試儲備。提交到測試集自動導致提交每個拆分(拆分的身份不公開顯示)。另外,為了進行除錯和驗證實驗,我們允許研究人員無限制地提交給test-dev。每個測試分割都起著獨特的作用;下面的細節。
split | #imgs | submission | scores reported |
---|---|---|---|
Test-Dev | ~20K | unlimited | immediately |
Test-Standard | ~20K | limited | immediately |
Test-Challenge | ~20K | limited | challenge |
Test-Reserve | ~20K | limited | never |
Test-Dev:我們沒有限制允許測試開發的提交數量。事實上,我們鼓勵使用test-dev進行驗證實驗。在提交到完整的測試集之前,使用test-dev來除錯並完成您的方法。
Test-Standard:測試標準分割是檢測競爭的預設測試資料。 與現有技術相比,結果應該按照測試標準進行報告。
Test-Challenge::測試挑戰分裂用於COCO挑戰。 結果將在相關研討會上公佈。
Test-Reserve:測試預留分割用於防止可能的過度配合。 如果一個方法在測試標準和測試儲備方面的得分有很大的差異,就會引起一個紅旗,並促使進一步的調查。測試儲備的結果將不公開。
2014 Test Set Splits
參與者被推薦但不限於在COCO 2014資料集上訓練他們的演算法。結果應包含每個驗證和測試影象的單個標題,並且必須提交併公開發布在CodaLab排行榜上。將結果上傳到評估伺服器時,請在“方法說明”中指定用於培訓的所有外部資料。
在挑戰截止日期前,驗證和測試集的結果都必須提交給評估伺服器。驗證結果將公開並用於效能診斷和視覺化。競爭對手的演算法將根據評委的反饋進行評估,最佳表現獎將獲得獎項。還將邀請2-3支隊伍參加LSUN研討會。
請按照下載,格式,指南,上傳和評估頁面中的說明進行操作。COCO Caption Evaluation Toolkit也可用。takelit提供標題分析常用指標的評估程式碼,包括BLEU,METEOR,ROUGE-L和CIDEr指標。請注意,對於競爭而言,人為評判者將會評估演算法結果,而不是自動衡量標準。
三、Upload Results to Evaluation Server
此頁面描述了將結果提交給評估伺服器的COCO檢測,關鍵點和材料挑戰的上傳說明(字幕質詢具有單獨的上傳說明)。提交結果可讓您參與挑戰,並將結果與公共排行榜上的最新技術進行比較。請注意,您可以通過在本地執行COCO API中的評估程式碼來獲取val的結果;提交給評估伺服器在測試集上提供結果。我們現在給出提交給評估伺服器的詳細說明:
(1)在CodaLab上建立一個帳戶。這將使您可以參與所有COCO挑戰。
(2)仔細檢視進入COCO挑戰和使用測試集的guidelines。
(3)準備一個包含結果的JSON檔案,以正確的結果格式輸入您想要輸入的問題。
(4)檔案命名:JSON檔案應該命名為“[type] _ [testset] _ [alg] _results.json”。用挑戰型別替換[type],用你正在使用的測試拆分替換[testset],用演算法名替換[alg]。最後將JSON檔案放入名為“[type] _ [testset] _ [alg] _results.zip”的zip檔案中。概要:
Filename: [type]_[testset]_[alg]_results.json
[type] challenge type: "detections", "person_keypoints", or "stuff"
[testset] test split: "val2017", "test-dev2017", or "test-challenge2017"
[alg] your algorithm name
(5)要將您的壓縮結果檔案提交至COCO挑戰,請單擊適當的CodaLab評估伺服器上的“Participate參與”選項卡。選擇測試分割並僅用於檢測測試型別(bbox或segm)。當您選擇““Submit / View Results提交/檢視結果”時,您將可以選擇提交新的結果。請填寫必填欄位並點選“Submit提交”。彈出視窗會提示您選擇要上傳的結果zip檔案。檔案上傳後,評估伺服器將開始處理。要檢視您的提交狀態,請選擇“Refresh Status重新整理狀態”。請耐心等待,評估可能需要一段時間才能完成(從20米到幾個小時)。如果您的提交狀態為“Failed失敗”,請檢查您的檔案是否正確命名並且格式正確。評估伺服器的連結如下所示:
(6)請將提交資訊輸入Codalab。最重要的欄位是“Team name"團隊名稱”,“Method description方法說明”和“Publication URL釋出URL”,用於填充COCO排行榜。另外,在右上角的“user setting使用者設定”下,請新增“Team members團隊成員”。“方法說明”Method Description存在問題,如有必要,我們可能會通過電子郵件收集這些問題。這些設定不直觀,但我們沒有控制的Codalab網站。對於“Method Description方法描述”,特別是對於COCO挑戰條目,我們鼓勵參與者提供詳細的方法資訊,這將有助於評委會以最具創新性的方法邀請參與者。列出使用的外部資料是必需的。您也可以考慮在測試開發(例如,單一模型與整體結果),執行時或您認為可能與突出您的方法的新穎性或功效有關的任何其他資訊上給出一些基本的效能細分。
(7)將結果提交給test-dev評估伺服器後,您可以控制是否將結果公開發布到CodaLab排行榜。要切換結果的公開可見度,請選擇“post to leaderboard釋出到排行榜”或“remove from leaderboard從排行榜中刪除”。只有一個結果可以隨時釋出到排行榜。除了CodaLab排行榜之外,我們還提供我們自己的更詳細的檢測排行榜,關鍵點以及其他結果和方法資訊(如紙質參考資料)。請注意,CodaLab排行榜可能包含尚未遷移到我們自己的排行榜的結果。一旦結果遷移到我們的公共排行榜,他們不能被刪除(但他們可以更新)。對於挑戰排行榜,只有在挑戰獲勝者宣佈時才會填充。
(8)評估完成後,伺服器顯示“Finished完成”狀態,您可以通過選擇“Download evaluation output from scoring step從評分步驟下載評估輸出”下載評估結果。zip檔案將包含三個檔案:
eval.json %測試彙總評估
metadata %自動生成的(安全忽略)
scores.txt %自動生成的(安全忽略)
json eval輸出檔案的格式在相關的評估頁面中描述。