AI Challenge Human Pose 評測代碼分析

評測方法和標準

  • 根據最終提交的submit.json文件和ground.json文件計算mAP得分;

  • 評測代碼最終會輸出mAP結果,錯誤信息和警告信息;

主函數分析

主函數代碼1

  • 讀入檢測結果的json文件和ground truth的json文件名稱,分別賦值給args.submit和args.ref;

這裏寫圖片描述

  • 初始化返回字典,包含一個error信息,一個score信息,多個warning信息;

這裏寫圖片描述

  • 加載標註文件信息,load_annotations分析見下;

這裏寫圖片描述

  • 加載檢測結果文件信息,load_predictions分析見下(這裏很重要,關係到我們生成預測結果文件的格式);

這裏寫圖片描述

  • 根據解壓後的標註和預測信息,計算得分,keypoint_eval分析見下;

load_annotations函數分析

這裏寫圖片描述

  • 初始化輸出字典,其中包括image_ids字段用來存儲圖片ID,annos字段用來存儲人體框標註和關鍵點標註,delta字段用來存儲14個關鍵點的得分權重信息;

這裏寫圖片描述

  • 加載標註json文件,如果在加載標註文件時發生讀取錯誤,輸出錯誤信息並退出程序;

這裏寫圖片描述

  • 將標註文件中的信息逐一加載到輸出字典中;

  • 最終輸出字典格式如下:annotations[‘image_ids’]=[‘image1_id’,’image2_id’,’image3_id’…],annotations[‘annos’]=[‘image1_id’][‘human_annos’]+[‘image1_id’][‘keypoint_annos’]+[‘image2_id’][‘human_annos’]+[‘image2_id’][‘keypoint_annos’]+[‘image3_id’][‘human_annos’]+[‘image3_id’][‘keypoint_annos’];

load_predictions函數分析

這裏寫圖片描述

  • 初始化輸出字典,其中包括’image_ids’和’annos’字段,分別爲列表和字典,最後的id_set與輸出無關,僅僅用來判斷是否在結果文件中多次包含一個圖片id和結果;

這裏寫圖片描述

  • 加載結果json文件,如果在加載結果文件時發生讀取錯誤,輸出錯誤信息並退出程序;

這裏寫圖片描述

  • 對結果文件中的每一項,判斷是否有’image_id’和’keypoint_annotations’關鍵字,沒有則發出警告;

這裏寫圖片描述

  • 獲取去掉.jpg的image_id,加入到id_set中,用以後續判斷是否有重複ID;

這裏寫圖片描述

  • 將結果文件信息添加到輸出信息predictions中,最終predictions格式爲:predictions[‘image_ids’]=[‘image1_id’,’image2_id’,’image3_id’…],predictions[‘annos’]=[image_id1][‘keypoint_annos’]+[image_id2][‘keypoint_annos’]+[image_id3][‘keypoint_annos’];

keypoint_eval函數分析

這裏寫圖片描述

  • oks_all:得分統計結果,oks_num:max(預測人數,標註人數);

這裏寫圖片描述

  • 如果預測文件中包含了標註文件中的圖片ID,使用compute_oks返回得分矩陣,compute_oks函數解析見下;

這裏寫圖片描述

  • 收集與每一個標註信息間得分最大的標註信息,統計入結果oks_all中;

  • oks_num用以對過多的結果預測進行懲罰;

這裏寫圖片描述

  • 如果沒有對標註圖片進行預測,會在oks_num中增加標註人數,進行最後的得分懲罰;

這裏寫圖片描述

  • 以多個閾值計算mAP,並取平均;

compute_oks函數分析

這裏寫圖片描述

  • anno_count:本圖片中標註了多少個人的關鍵點,predict_count:本圖片中預測了多少個人的關鍵點,oks建立得分矩陣,大小爲anno_count*predict_count,對應每一個標註和每一個預測;

這裏寫圖片描述

  • 對於標註文件中預測的每一個人,獲取其標註信息(其中包括標註點及該點是否可見)和其人的面積信息;

  • 用預測的每一個信息與標註信息計算得分,計算過程中只關心標註信息中可見點的得分,也就是說我在輸出信息的時候要輸出14*3個信息,對於第3個信息並不關心輸出值是多少,對於不可見點並不關心輸出的x和y是多少——總而言之,對我輸出預測結果的複雜度要求還是很低的;

  • 得分計算使用技巧:歐氏距離,尺度歸一,高斯分佈,加權,去平均;

最後預祝大家取得好成績

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章