數據集
訓練集DETRAC-Train-Images裏面是60個視頻序列,60個文件夾;每個文件夾中是一個序列的n個.jpg圖片。
-DETRAC-Train-Images
--MVI_20011
---img00001.jpg
測試集 DETRAC-Test-Images 40個不同的序列
標籤
DETRAC-Train-Annotations-XML
DETRAC-Train-Annotations-XML-v3 修改了車型和顏色
DETRAC-Train-Annotations-MAT 僅包含標註框
DETRAC-Test-Annotations-XML
DETRAC-Test-Annotations-MAT
測試集標籤,格式同訓練集。(:沒想到測試集竟然有標籤
但是訓練集和測試集的scale和遮擋率可能需要注意
測試數據集評估工具DETRAC-toolkit-test-det
DETRAC_experiment.m 是評估代碼
initialize_environment.m 需要修改配置參數
-這裏面gtPath參數並沒有被調用,也不知道是如何載入標籤 判斷算法輸出的檢測框是否正確的。
所以這個文件裏主要修改options.detPath = ‘result’這個參數。就是你算法輸出的檢測結果文件。
我的存儲的格式:
result
- DPM
- MVI_39031_Det_DPM.txt
- MVI_39051_Det_DPM.txt
......
MVI_39051_Det_DPM.txt文件裏面的存儲格式
文件的每一行應設置爲Frame
,Number
,Left
,Top
,Width
,Height
,Score
這個格式是根據檢測提交格式分析出來的。具體是什麼README裏面好像沒說,不過我猜的應該是對的
而且代碼裏面:
在preProcessDetectionResults.m文件第32行發現“scores = cat(1,scores,detections(:,end));”,也就是說最後一列是scores。
在dropDetections.m文件第14行發現“ curDet = max(1,round(detections(i,3:6)));”也就是說第3-6行是目標框位置。
我是這樣設置的
function options = initialize_environment()
options.imgPath = ''; % the path of images
options.detPath = 'H:\DataSet\DETRAC\result\'; % the path of detections
options.gtPath = ''; %H:\DataSet\DETRAC\label\DETRAC-Train-Annotations-XML-v3\ % the path of annotations (e.g., XML, MAT)
options.evaluateType = 'Detection';
options.evaluateSeqs = 'DETRAC-Test';
options.track3d = false; defaultly
options.detectionThreStep = 0.05;
options.showDetectionCurve = true;
detectionEvaluation.m裏面是評估
是會循環判斷'full','easy','medium','hard','cloudy','night','rainy','sunny'這些序列的APscore
處理好相應的文件。把命令丟到DETRAC_DET_EVAL.exe裏面去。也就是核心代碼人家封裝起來了。這工具包就做了個前處理、載入數據的工作。
preProcessDetectionResults.m這裏是進行評估的前處理
會把置信度scores拿出來進行歸一化,再保存起來。
bug!?? 但是這裏面歸一化計算方式可能會出錯。在preProcessDetectionResults.m文件第54行“scores_ = (detections(:,end)-minScore)/(maxScore-minScore);”是歸一化公式。如果預測置信度相同(預測置信度都爲1),則分母爲0。
運行完
運行完會在DETRAC-Test-Det裏面多出個results文件夾。就是pr曲線
這個正如他的README_evaluation.txt文件中所述的,左邊是召回recall,右邊是精度precision
然後會給個PR曲線。(我這個是用的標籤當的結果,所以是1)