总述
AnchorBased是指需要人为设定框的方法。AnchorBased方法占目标检测的主导地位。其基本流程是先提出许许多多人为设定的anchor,然后网络一边预测这些anchor的类别,一边对anchor坐标进行微调。
AnchorBased方法可进一步分为Two Stage和One Stage。Two Stage对anchor进行多次微调,而One Stage只有一次,所以前者精度会更高。
近年来流行AnchorFree的方法。根据剃刀原则,如果AnchorFree能取得和AnchorBased相同的效果,那最好选择前者。越来越多的工作证明anchor是个冗余的概念。
AchorFree可分为Keypoint based和 Center based。前者先定位几个预定义的或自学习的关键点,然后得出目标的位置。后者预测每个像素点到目标上下左右四个边界的距离。
术语
一般来说,两阶段(Two Stage)的检测网络由以下部分组成
-
backbone. 顾名思义,backbone是整个网络中的支柱部分,作用是特征提取。输入图像,得到一系列不同尺度的特征图(feature map)。常用的backbone有vgg/ResNet50/ResNet101。
-
neck. 由于backbone通常是专门为分类设计的,其提取的特征图可能不适合检测(原因之前的文章已经讲过了),所以还需要对backbone提取的特征图再加工。比如在neck中将特征图再用卷积处理,然后通过双线性插值将不同尺度的特征图融合,最后又用卷积处理统一不同的特征图的通道,为下一步作准备。可以说backbone和neck都用于特征提取。
-
RPN. 区域生成网络(region proposal network)首先对neck得到的一系列特征图作两路卷积,一路生成前景/背景置信度cls,一路生成坐标的回归bbox_pred,然后事先已经有了人为设定好的anchors,根据cls的大小选出top k k k个anchors,再对这些anchors进行非极大抑制,得到剩余的 k ′ ( k ′ ≤ k ) k'(k'\le k) k′(k′≤k)个anchors, 最后经过对应的bbox_pred的转换,输出最终的 k ′ k' k′个bbox。
-
ROI:根据RPN得到的bbox从featuremap上扣出对应部分的区域,由于这些区域大小不一样,变换(可以是自适应池化,adaptive pooling)成固定尺寸(比如7x7)。通道数不变。
-
classification and regression: 这一步其实就是对ROI得到的结果进行类别预测和坐标回归。比如ROI得到 k ′ × 256 × 7 × 7 k'\times 256\times7\times7 k′×256×7×7的特征图,变成 k ′ × 12544 k'\times 12544 k′×12544的向量,经过两层共享的全连接层得到 k ′ × 1024 k'\times1024 k′×1024的向量,再经过两个独立的全连接层分别得到 k ′ × 81 k'\times 81 k′×81的类别预测结果和 k ′ × 324 k'\times 324 k′×324的坐标回归结果。其中81为类别数。
到第5步推断过程其实就差不多了,剩下的工作包括非极大抑制等等。