我正在关注Steven Puttemans 的 OpenCV 3 Blueprints 第 5 章工业应用对象检测
训练成功完成,我计算出的 F1 分数约为 0.86,这在 523 张图像的训练数据集上得到了验证(只是为了测试训练是否正常)。
前任。
[root@cobalt workspace]# opencv_traincascade -vec npimages.vec -data output_lbp2/ -numPos 444 -numNeg 888 -bg negatives.txt -numStages 20 -featureType LBP -precalcValBufSize 2048 -precalcIdxBufSize 2048 -w 24 -h 24
然而,我的主要问题是绘制 Precision-Recall Curve (PRC) 曲线,正如第 5 章所建议的,我们可以使用 ff. 输出分数:
detector.detectMultiScale(equalize, objects, levels, scores, 1.05, 1, 0, Size(), Size(), true);
但我得到的分数变化很小:
FILENAME NUM_RECT X Y WIDTH HEIGHT SCORE
/home/cobalt/Data/IMG_20160610_170847.jpg 1 190 287 68 68 -1.08848
/home/cobalt/Data/IMG_20160610_170925.jpg 1 186 294 68 68 -1.06534
/home/cobalt/Data/IMG_20160610_170957.jpg 1 189 286 68 68 -1.06534
/home/cobalt/Data/IMG_20160610_171038.jpg 1 191 289 67 67 -0.998512
... ... .. .. .. ...
/home/cobalt/Data/IMG_20160610_205103.jpg 1 190 291 68 68 1.82761
/home/cobalt/Data/IMG_20160610_205106.jpg 1 190 291 68 68 1.82761
/home/cobalt/Data/IMG_20160610_205122.jpg 1 194 297 68 68 1.82761
这为精确召回提供了相当小的值:
前任。坐标.txt
0.00761905 0.00761905 -1.09
0.00763359 0.00761905 -1.08
0.00763359 0.00761905 -1.07
0.00766284 0.00761905 -1.06
0.00766284 0.00761905 -1.05
0.00766284 0.00761905 -1.04
... .. ...
0.00952381 0.00761905 1.77
0.00952381 0.00761905 1.78
0.00952381 0.00761905 1.79
0.00952381 0.00761905 1.8
0.00952381 0.00761905 1.81
0.00952381 0.00761905 1.82
使用上述值,我无法获得像样的 PRC 曲线。我不太确定这里有什么问题......虽然,我可以使用我在此处修改的 detect_simple.cpp 计算 Precision-Recall 值:
https://gist.github.com/melvincabatuan/45a0de3624e99a5c34d308d4a0b99b45
前任。输出:
The number of true positives (TP) are: TP = 628.
The number of false positives (FP) are: FP = 185.
The number of false negatives (FN) are: FN = 7.
Precision = 0.772448.
Recall = 0.988976.
F1 Score = 0.867403.