目标检测网络的介绍及应用(一) -- 目标检测任务

摘要:在这之前我们已经介绍了神经网络、卷积神经网络的原理、应用以及常见的分类神经网络模型。但在实际情况中,我们很难直接得到一个只包含待检测物体的图像来进行分类。本文旨在介绍常用的目标检测模型,目标检测的任务是除了给出待检测目标的类别信息外,还需要给出物体在图像中的位置,并用一个最小的矩形框将其包围起来,即分类+定位。自从卷积神经网络被提出以来,目标检测领域也得到了飞速的发展,从Faster-RCNN到YOLO再到SSD算法大大提高了目标检测的准确率,将目标检测任务推向了一个新的高度。

一、目标检测任务

在介绍目标检测网络之前,我们要了解目标检测的任务是什么,它要完成什么工作,以及评价目标检测效果的指标有哪些。

1.1 目标检测任务描述

目标检测是图像处理学科的一个重要难题,检测任务除了要实现目标分类外还要在输入图片中找出存在的物体的类别和位置(可能存在多种物体)。物体检测可能会存在多个检测目标,这不仅需要我们判别出各个物体的类别,而且还要准确定位出物体的位置,如下图所示:

目标检测网络的介绍及应用(一) -- 目标检测任务_第1张图片

1.2目标检测任务评价指标

对于目标分类,我们可以通过评测对于训练样本的输出预测标签与样本的实际标签的对比来评价算法的准确性。对于目标检测而言,为了对检测算法的效果进行评价,有一些常用的概念,包括Bounding
Box
IoU准确率Accuracy查准率Precision查全率RecallAPmAP等。下面来一一介绍这些在目标检测中常用的衡量指标。、

  • Bounding Box (bbox)

Bbox概念比较简单,它表示包含物体的最小矩形,该物体在最小矩形内部。其用一组坐标 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)来表达,其中, x , y x,y x,y表示bbox的左下角的坐标, w , h w,h w,h表示矩形的宽和高。当然不同的数据集有不同的坐标形式。

  • Intersection over Union(IoU)

IoU表示两个矩形区域的重合度,是目标检测的评价指标之一,在目标检测算法中具有指导意义。假设存在两个矩形区域 R R R R ′ R' R,IoU的计算公式如下:

O ( R , R ′ ) = ∣ R ∩ R ′ ∣ ∣ R ∪ R ′ ∣ O\left( R,R^{'} \right) = \frac{\left| R \cap R^{'} \right|}{\left| R \cup R^{'} \right|} O(R,R)=RRRR

目标检测网络的介绍及应用(一) -- 目标检测任务_第2张图片

IoU表示候选框BBOX与标定框GT(Ground Truth)的重合程度,在实际应用时,通过对比算法给定的BBOX与标定框的IoU来确定该标定框是否被采用。

  • 精度Accuracy、查准率Precision及查全率Recall

对于分类任务而言,我们有多种评价指标,包括精度Accuracy、查准率Precision及查全率Recall等。假设有一个分类器,其分类结果有如下四种情况:

预测为1类且标签为1类(TP) 预测为1类但标签不为1类(FP)
预测不为1类但标签为1类(FN) 预测不为1类且标签不为1类(TN)

很自然地,我们会想到使用精度来评价算法性能。精度表示全局的准确程度,其用分类正确的样本除以所有的样本数来表示,即:精度=(TP+TN)/(TP+TN+FP+FN)。但是准确率有时候不能完全反映一个算法的性能,还需要其他的评价指标来补充。

查准率表示分类器分类出来的正确正样本数与分类器分类出来的所有正样本总数之比,即:准确率=TP/(TP+FP)

查全率表示分类器分类出来的正确正样本数与实际为正样本总数之比,即:召回率Recall=TP/(TP+FN)

举个例子,假如我们有1000个样本,其中只有1个肺结核病例,其余999个是正常影像图像,那么我们训练了一个分类器,它对这1000个样本的预测结果全部为肺结核,那么它的分类精度为0.01%,对肺结核的分类准确率为0.01%,对肺结核的召回率却为100%。从上例可以看出查准率与查全率通常是一对相互矛盾的指标。一般而言,当查全率比较高时,查准率通常比较低;当查准率高时,查全率通常较低。在实际的模型评估中,仅用Precision或Recall两个值是不够的,通常使用Recall-Precision曲线来表征分类器的性能。如果一个分类器的性能较好,那么它通常有如下特征:在Recall增长的同时,Precision的值保持在一个很高的水平。而性能较差的分类器则可能会损失很多的Precision才能换来Recall值的提高。Precision-Recall曲线如下图所示:

目标检测网络的介绍及应用(一) -- 目标检测任务_第3张图片

之前一直在说什么Precision什么Recall,但是这好像是针对目标分类的指标啊,和目标检测没有关系啊?我们直接通过下面这个例子来说明,假设一个数据集的某个类总共有7张图片,绿色框表示我们标定的真实标定框(GT),红色框表示我们的网络的输出预测结果,其目标检测结果如下:

目标检测网络的介绍及应用(一) -- 目标检测任务_第4张图片

对每个红色的预测框我们的网络都会给定一个置信度Confidence来表示检测结果的得分,如果检测框与目标框的IoU大于0.5,我们就将其记为TP,否则记为FP。如果有多个检测框与目标框的IoU大于0.5,则将检测框与目标框的IoU最大的那个记为TP,注意这里是IoU最大,而不是Confidence最大。如下表所示:

目标检测网络的介绍及应用(一) -- 目标检测任务_第5张图片

有了TP和FP以及检测图像中标定框的个数,我们就能计算Precision和Recall了,将计算结果按照Confidence进行排序,并分别随着Confidence的增加计算TP和FP的和,Acc TP和ACC FP,如下表所示。我们以第一个为例来计算Precision和Recall,由于7幅图中共有15个标定框,所以TP+FN=15。

P r e c i s i o n = ACC TP ACC TP + ACC FP = 1 1 = 1 Precision = \frac{\text{ACC TP}}{\text{ACC TP + ACC FP}} = \frac{1}{1} = 1 Precision=ACC TP + ACC FPACC TP=11=1

R e c a l l = ACC TP T P + F N = 1 15 = 0.0666 Recall = \frac{\text{ACC TP}}{TP + FN} = \frac{1}{15} = 0.0666 Recall=TP+FNACC TP=151=0.0666
目标检测网络的介绍及应用(一) -- 目标检测任务_第6张图片

  • AP (Average Precision) 及 mAP (mean Average Precision)

有了Precision和Recall就可以计算AP及mAP了,尽管PR曲线可以反映出检测算法的性能,但是总感觉不太直观,AP就是综合了Precision和Recall的一个目标检测算法的一个评价指标。计算AP有三种不同的方法,这里只介绍VOC2007方法,对其他方法有兴趣的同学可以阅读这里。AP的计算方式是给定一组阈值[0,0.1,0.2,…,1],对于recall大于每一个阈值我们都能得到一个对应的最大的precision。这样我们就能得到11个precision,然后计算这11个precision即为AP,这种方法也称为11点插值平均精度(11-point interpolated average precision)。上例中的AP按这种方法的结果:

AP = 1 11 ( 1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0 + 0 ) = 26.84 % {\text{AP} = \frac{1}{11}\left( 1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0 + 0 \right)}{= 26.84\%} AP=111(1+0.6666+0.4285+0.4285+0.4285+0+0+0+0+0+0)=26.84%

但是由于我们的数据集通常不止包含一个类别,比如VOC中有20个类,COCO数据集中有80个类别,所以我们使用mAP来衡量整个数据集的性能。mAP的计算就比较简单了,就是分别计算不同类别的AP的值,然后再对其求平均值就得到了mAP。

目标检测的基本任务及一些常用的概念这里基本就介绍完了,下面我们具体来针对一些经典的算法来全面的了解基于深度学习的目标检测是怎么实现的,其中的精彩程度可是要远超目标分类算法。

参考文献

[1] Object Detection–RCNN,SPPNet,Fast RCNN,FasterRCNN论文详解

[2] 目标检测—评价指标

[3] AP、mAP计算解析

[4] 非极大值抑制(Non-Maximum Suppression,NMS)

你可能感兴趣的:(教程,人工智能,深度学习)