TYS的博客

算法小白努力学习中

0%

mmdetection结果评估

mmdetection 结果评价函数

{‘bboxes’: array([[119., 111., 244., 252.]], dtype=float32), ‘labels’: array([8]), ‘bboxes_ignore’: array([], shape=(0, 4), dtype=float32), ‘masks’: [[[119.0, 111.0, 244.0, 252.0]]], ‘seg_map’: ‘ER0437_233.png’}

1
python tools/test.py configs/faster_rcnn/faster_rcnn_r50_fpn_2x_coco.py work_dir/faster_rcnn/epoch_80.pth --work-dir . --out ./tmp.pkl
1
python tools/analysis_tools/analyze_results.py configs/faster_rcnn/faster_rcnn_r50_fpn_2x_coco.py ./tmp.pkl ./results
1
python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_2x_coco.py --work-dir/ ./work_dirs/faster_rcnn1

COCO数据集标注文件有三种信息

  • annotations标注的列表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
    "id": 1655,
    "image_id": 1011,
    "category_id": 1,
    "bbox": [
    38.760299625468164,
    84.26966292134831,
    100.1198501872659,
    90.47940074906366
    ],
    "area": 9058.784048029847
    }
  • categories标注列表

    1
    2
    3
    4
    {
    "id": 1,
    "name": "Prim"
    }
  • images列表

    1
    2
    3
    4
    5
    6
    {
    "height": 363,
    "width": 360,
    "id": 0,
    "file_name": "ER0437_233.jpg"
    }

    coco_eval做了些什么?

    首先创建哈希表,_gts与_dts键位image_id与category_id,值为标注与预测bbox与类别信息。

    分析结果

    对结果进行分析

    mmdetection检测结果

    单纯用Precision与Recall评价检测器并不公平,AP计算了不同Recall下的Precision,综合性地评价了检测器,PR曲线,对所有BBox给出的置信度从高到低进行排序,当把置信度取某一个值S时,依次对前n个大于置信度的BBox计算Precison与Recall得到一组(P, R)结果。在计算AP时,都要对P-R曲线做一次修正,将P值修正为当r>R时最大的P

$$
Precision = \frac{TP}{TP + FP} \
Recall = \frac{TP}{TP + FN} \
AP = \int_{0}^{1} \max({P(r) | r \ge R}) dR
$$
对于BBox是TP还是FP的算法判断,如某一个BBox预测的label为1,则需要计算其与该图片中所有label为1的GT Box的IOU值,当大于iou_thres时,则该预测box为TP,否则为FP。当某一个GT被置信度最大的BBox匹配后,会从GT Box集合中移除。

TP + FN为测试集中该种类的样本的个数,因此不需要计算FN的个数,一个BBox与GT BOX是一一对应的,最后未检出的GT为FN

preview

类别平衡问题,mAP,所有类别的检测性能(AP)取平均,就是检测算法在这个IOU下的性能。

位置偏差

不同场景下对预测位置准确度的要求不同。 mmAP,设置一组iou阈值,每一个IOU

https://zhuanlan.zhihu.com/p/60707912 画出不同IOU下的PR曲线。

可以计算一个mAP,对这些性能取平均,在coco数据集中,mAP的计算针对10个IOU阈值下的AP取平均值np.linspace(0.5, 0.95, 10)

https://blog.csdn.net/lppfwl/article/details/108018950

https://zhuanlan.zhihu.com/p/55575423