[目标检测]:one-stage目标检测算法

目标检测算法框架

  • 概述
  • 模型详解
    • 网格方法
    • Anchors 锚机制
    • 预测输出
    • 评估

概述

相比与图像分类,目标检测更加困难。图像分类只需要分辨图像中的主要物体是什么要找到多个物体,并且预测bounding box。

目标检测模块要预测多个边界框。每个边界框给定一个置信度(confidence score),代表其包含该物体的可能性大小。目标检测算法可以分为one-stagetwo-stage。其中two-stage以R-CNN系列为代表,可以看Mask R-CNN 网络结构详解 : R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN, FCN,本文总结一下one-stage目标检测算法,最典型的one-stage检测算法包括YOLO,SSD,SqueezeDet以及DetectNet。

模型详解

网格方法

如果使用回归方法预测,因此一张图片只能预测一个边界框,目标检测器学会专注于某些位置的物体预测多个边界框。one-stage的方法是使用固定网格,two-stage的方法是预测候选框。

目标检测网络一般可以简化为特征提取目标检测两部分。前者Inception,ResNet以及DarkNet都可以充当,轻量级的有SqueezeNet以及MobileNet;后者预测边界框和概率,两者可以在不同数据集上训练。

假设特征提取器以416×416图像作为输入,经过检测网络,最终输出13×13的特征图,每个特征图包含五个检测器,每个检测器产生25个值,分别是表征类别概率的20个值、4个边界框坐标(中心x,中心y,宽度w,高度h)、1个值表示置信度,置信度用于表征模型认为此预测边界框包含真实物体的可能性。这样会产生大量重叠框,采用非最大抑制(NMS)来去除重叠框

Anchors 锚机制

网格限制了检测器可以在图像中找到物体的位置,Anchors可以提供物体形状的约束。Anchors是几个长宽比不同的检测器,也可以理解为确定目标形状的先验框。YOLO通过在所有训练图像的所有边界框上进行k-means聚类来选择Anchors,SSD不使用k-means来确定先验框。相反,它使用数学公式来计算先验框尺寸,因此SSD的先验框与数据集无关;另一个小差异是:YOLO的先验框只是宽度和高度,但SSD的先验框也有x,y位置。

预测输出

模型预测的不是边界框在图像中的绝对坐标,而是4个偏移值:
delta_x, delta_y:边界框中心点在网格单元内部的坐标;
delta_w, delta_h: 边界框的宽和高相对先验框的缩放值。
要得到边界框在图像中的真实宽与高,YOLO和SSD计算方式不同。
YOLO:


box_w[i, j, b] = anchor_w[b] * exp(delta_w[i, j, b]) * 32
box_h[i, j, b] = anchor_h[b] * exp(delta_h[i, j, b]) * 32
box_x[i, j, b] = (i + sigmoid(delta_x[i, j, b])) * 32
box_y[i, j, b] = (j + sigmoid(delta_y[i, j, b])) * 32

SSD的先验框坐标是归一化到[0,1],这样它们独立于网格大小(SSD之所以这样是采用了不同大小的网格):

# 32代表像素
box_w[i, j, b] = anchor_w[b] * exp(delta_w[i, j, b]) * 32
box_h[i, j, b] = anchor_h[b] * exp(delta_h[i, j, b]) * 32
box_x[i, j, b] = (anchor_x[b] + delta_x[i, j, b]*anchor_w[b]) * image_w
box_y[i, j, b] = (anchor_y[b] + delta_y[i, j, b]*anchor_h[b]) * image_h

预测置信度和概率:

confidence[i, j, b] = sigmoid(predicted_confidence[i, j, b])
classes[i, j, b] = softmax(predicted_classes[i, j, b])
# 在YOLO中,结合置信度和最大类别概率来过滤预测值(条件概率):
confidence_in_class[i, j, b] = classes[i, j, b].max() * confidence[i, j, b]

以上的预测都是可以通过卷积核来预测输出,每个单元格有5个检测器,每个检测器有25个输出,所以需要125个卷积核,这125个卷积核在所有单元格中共享。

评估

对于目标检测模型,评估指标有

  1. 每个检测物体的分类准确度;
  2. 预测框与真实框的重合度(IOU)
  3. 模型是否找到图片中的所有物体(召回,recall)。

本文参考 深入理解one-stage目标检测算法

你可能感兴趣的:(神经网络,语义分割,目标检测)