深度学习的经典检测方法包括:
- two-stage(两阶段):Faster-rcnn Mask-Rcnn系列(为了得到最终结果,中间加入预选阶段RPN,效果更好)
核心优势:效果较好(实用的通用框架MaskRcnn)
缺点:速度较慢(5FPS) - one-stage(单阶段):YOLO系列(一个CNN网络直接做一个回归即可,中间不需加入其他映衬,无RPN等等),在YOLO算法中把物体检测(object detection)问题处理成回归问题,用一个卷积神经网络结构就可以从输入图像直接预测bounding box和类别概率
核心优势:速度很快,适合做实时检测任务
缺点:效果相对较差
YOLO指标分析:
-
mAP指标(mean average precision):均值平均精度,综合衡量检测效果(越高效果越好),精度(检测到的框和实际标注的框是否吻合)和召回率recall(是否有标注的物体没检测到,没有画框)都需要衡量。
-
IoU:真实框(ground truth)与预测框(predicted box)的交并比,指的是真实值(ground truth bbox)与预测值(prediction bbox)的交集面积占两者并集面积的一个比率,即交集和并集的比值。IoU值越大说明预测检测框的模型算法性能越好,通常在目标检测任务里将IoU>=0.7的区域设定为正例(目标),而将IoU<=0.3的区域设定为负例(背景),其余的会丢弃掉。
-
精确率(查准率)precision:针对预测结果,表示预测为正的样本中有多少是真正的正样本。公式为:正确检测/(正确检测+误报)
-
召回率(查全率)recall:针对原来的样本而言,表示样本中的正例有多少被预测正确了。公式为:正确检测/(正确检测+漏报)
注:
- TP(True Positive):将正类预测为正类数。(正确)
- TN(True Negative):将负类预测为负类数。(正确)
- FP(False Positive):将负类预测为正类数。(错误)----误报(Type | Error)
- FN(False Negative):将正类预测为负类数。(错误)----漏报(Type || Error)
例:
假设我们手上有60个正样本,40个负样本,我们要找出所有的正样本,系统查找出50个,其中只有40个是真正的正样本,计算上述各指标。
TP: 将正类预测为正类数 40
FN: 将正类预测为负类数 20
FP: 将负类预测为正类数 10
TN: 将负类预测为负类数 30
准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN) = 70%
精确率(precision) = TP/(TP+FP) = 80%
召回率(recall) = TP/(TP+FN) = 2/3
参考:http://t.csdnimg.cn/XDbxg
重点:mAP的计算方法
-
多个类别物体检测中,每一个类别都可以根据recall和precision绘制一条曲线,即为PR曲线,recall和precision往往是矛盾关系,AP就是该曲线下的面积,mAP一般指所有图片内的所有类别,考虑不同阈值的AP的平均值。
-
PR曲线通常横坐标为Recall值,而其纵坐标为Precision,对于同一个Recall值,我们取的是最大的Precision。如下图:条形面积为所求的mAP。
-
根据TP,TN,FP,FN计算出recall和precision,然后根据recall和precision绘制的PR曲线去计算区域内最大的precision包围的面积,即为mAP。