[机器视觉]目标检测评价指标及其实现

一、模型分类目标

        数据的分类情况为两类正例(Postive)和负例(Negtive),分别取P和N表示。

        同时在预测情况下,分类正确表示为T(True),错误表示为F(False);便有了以下四类表示:

TP:(True Positive

        正确的判断为正例

        实际正例)

TN:(True Negtive

        正确的判断为负例

        实际负例)

FP:(Fasle Positive

        错误的判断为正例

        实际负例)

FN:(False Negtive

        错误的判断为负例

        实际正例)

        Ps.其中的P和N为分类器认为的正例和负例,实际的正例和负例要结合分类是否正确来看

二、分类评估指标

        ①精确度(Precision)

                (TP在所有判断为正例中占的比例)

                Precision = TP / ( TP +FP )                   

        ②召回率(Recall)

                (TP在实际正例中占的比例)

                Recall = TP / ( TP + FN ) = TP / P        

        ③F1 Score

                F_1=2*\frac{P*R}{P+R}        P = Precision        R = Recall

        ④support

                支持度:原始的真实数据中属于该类的个数

        ⑤准确率(Acc)

                预测为正确类的在总数中的比例

                accuracy=\frac{TP+TN}{P+N} 

        ⑥加权平均(weighted avg)

                weighted avg = \frac{(P1*support1+P2*support2)}{support1+support2}

                        权重为该样本的support

三、目标检测评估指标

       ①IoU

                交并比,即预测框(prediction)和实际目标(ground truth)的交集和并集的比值。用以确定预测目标的置信度,当一个预测框的IoU大于某个阈值时才认定其为正分类(一般为0.5或0.3)

                 即  IoU=\frac{A\cap B}{A\cup B}        通俗点理解就是重叠面积总面积之比

        ②AP

                平均精确度(Average Precision),表示PR曲线下的面积。PR曲线即分别以PrecisionRecall为XY轴的曲线,获得方法如下:

                        1.将模型预测结果按照预测值置信度降序排列

                        2.依据Recall分别选取11组不同的数据(Recall = [0,0.1...0.9,1.0])

                        3.以这11组数据绘制图像

                而 AP=\frac{1}{11} \sum P_{interp}(r)

                在目标检测的情况下,Precision和Recall可以简化为以下公式:

                        Precision=\frac{TP}{all \quad detections}         Recall=\frac{TP}{all \quad ground \quad truths}

            以下放的图像为例(绿色为ground truth,红色为prediction)

                 1.处理时将预测框按照置信度从高低到排列,绘制下表(其中ACC表示累加)

                         例如对于对象K,ACC TP = K前面所有TP的个数(含K), ACC FP同理;而对象K的求解PrecisionRecall的公式可以简化为:

                Precision=\frac{ACC \quad TP}{ACC \quad TP+ACC \quad FP}=\frac{6}{6+11}

                Recall=\frac{TP}{all \quad ground \quad truths}=\frac{6}{15}        (15为实际存在的目标个数)

                2.处理完成后将所有的点绘制为PR图

                 3.计算AP

                         AP = A1+A2+A3+A4,对于每组Recall,取P值最大的一个计算即可,例如图形A3=(0.4-0.13333)x0.4285=0.1142

        ③mAP

                所有类别的AP求和取平均

                mAP仅作为一个相对较好的度量指标,用以对比目标检测算法新旧之间的差别。

三、代码实现

        参见:mAP的绘制,绘制时需要以下两个txt文件作为数据源:

                detection-results:预测结果的坐标(第一维为置信度)

                ground-truth:真实目标的坐标

                可以自己编写程序,将VOC库的xml文件转换为 ground-truth且将预测结果输出为detection-results

         如果需要绘制所有类的混合mAP图则需要修改

                 修改循环,将所有类依次绘制到同一张图中,最后再保存,涉及到清除plt控件(plt.cla)和保存图片(plt.savefig),详见plt控件的应用

猜你喜欢

转载自blog.csdn.net/weixin_37878740/article/details/128643370