服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

R-FCN、Mask RCNN、YoLo、SSD、FPN、RetinaNet…你都掌握了吗?一文总结目标识别必备经典模型(二)

日期: 来源:机器之心收集编辑:机器之心SOTA模型

 机器之心专栏

本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。
 
本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

本文将分 3 期进行连载,共介绍 17 目标检测任务上曾取得 SOTA 的经典模型。


  • 第 1 期:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN、OHEM

  • 第 2 期:R-FCN、Mask RCNN、YoLo、SSD、FPN、RetinaNet

  • 第 3 期:RRC detection、CornerNet、M2Det、FOCS、ObjectBox

您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。

第 1 期回顾:R-CNN、SPP-Net、Fast R-CNN…你都掌握了吗?一文总结目标检测必备经典模型(一)


本期收录模型速览

模型SOTA!模型资源站收录情况模型来源论文
R-FCN

https://sota.jiqizhixin.com/project/rfcn

收录实现数量:47

支持框架:PyTorch,TensorFlow等

R-FCN: Object Detection via Region-based Fully Convolutional Networks
Mask RCNN

https://sota.jiqizhixin.com/project/mask-r-cnn

收录实现数量:13

支持框架:PyTorch,TensorFlow等

Mask R-CNN
YoLo

https://sota.jiqizhixin.com/project/yolo-2017

收录实现数量:3

支持框架:PaddlePaddle、TensorFlow等

You Only Look Once: Unified, Real-Time Object Detection
SSD

https://sota.jiqizhixin.com/project/ssd-4

收录实现数量:27

支持框架:PyTorch,TensorFlow等

SSD: Single Shot Multibox Detector
FPN

https://sota.jiqizhixin.com/project/fpn-4

收录实现数量:4

支持框架:PaddlePaddle,TensorFlow等

Feature Pyramid Networks for Object Detection
RetinaNet

https://sota.jiqizhixin.com/project/retinanet-2021

收录实现数量:210

支持框架:PyTorch,TensorFlow等

Focal Loss for Dense Object Detection

目标检测作为计算机视觉的基本问题之一,是许多其他计算机视觉任务的基础,如实例分割、图像字幕、对象跟踪等。简单来说,目标检测就是对图片中物体正确分类,同时找到物体的具体位置,具体是指识别图片中有哪些物体以及物体的位置(坐标位置)的技术。在互联网、大数据、人工智能等技术的发展浪潮下,目标检测展现出巨大的应用价值,受到工业界、学术界越来越多的关注。

目标检测的发展大致经历了两个历史时期:“ 传统的目标检测时期 ” ( 2014年以前 ) 和 “ 深度学习的目标检测时期 ” ( 2014年以后 )。本文重点回顾深度学习时代的经典模型。在深度学习时代,目标检测可以分为两类:“ two-stage detection ” 和 “ one-stage detection ”,前者将检测框定为一个 “ 从粗到细 ” 的过程,而后者将其定义为 “ 一步完成 ”。我们在介绍过程中,将分两类进行分析。两阶段模型(two-stage detection)因其对图片的两阶段处理得名,也称为基于区域(Region-based)的方法,R-CNN系列工作就是这一类型的代表。单阶段模型(one-stage detection)没有中间的区域检出过程,直接从图片获得预测结果,也被称为Region-free方法。

本文回顾目标检测中必备的TOP模型,包括one-stage模型和two-stage模型。


一、two-stage 模型


1、 R-FCN

前文描述的 R-CNN,SPPNET,Fast R-CNN,Faster R-CNN 的目标检测都是基于全卷积网络彼此共同分享以及 ROI 相关的彼此不共同分享的计算的子网络,R-FCN算法使用的这两个子网络是位置比较敏感的卷积网络,而舍弃了之前算法所使用的最后的全连接层,目的是让所有的计算都可以共享。因此,R-FCN的出发点就是为了减少重复计算,尽可能地共享网络。为了将 translation variance 引入到全卷积网络中,本文设计了一种特殊的卷积层作为全卷积网络的输出,该卷积层输出 position-sensitive 的 score map,每个 score map 引入了位置信息。在网络的最后一层,再接一个 position-sensitive RoI pooling 层,完成对物体的检测。在整个网络框架中,所有可学习的层都是卷积层,同时把空间位置信息引入特征学习中,使得整个网络可以进行端到端的学习。

R-FCN 算法进行目标检测的步骤如下:(1)候选区域:使用的是 RPN(Region Proposal Network)候选区域网络,同时 RPN 网络结构是全卷积的网络;(2)分类和回归:采用的是 RPN 特征共享的性质来进行目标的分类。在进行 bbox 回归的时候,通常将 C 选取为 4。

R-FCN采用 ResNet 101 的卷积层作为基础的卷积网络结构,再接一个卷积层用于降维,最后接一个产生 k^2(C+1)个 score map 的 position-sensitive 的卷积层,然后接一个 position-sensitive RoI pooling 层,最后使用 Softmax 判断 RoI 的类别。此外,还可以接一个产生 4k^2个 map 用于回归 Bounding box 的位置,同样应用 position-sensitive RoI pooling 层,最后得到一个回归的位置。具体结构如图1所示。


图1. R-FCN的整体架构。使用区域建议网络(RPN)提出候选RoI,然后将其应用于score map。所有可学习的权重层都是卷积的,并且是在整个图像上计算的;每个RoI的计算成本可以忽略不计


对于position-sensitive 卷积层,为了将位置信息引入到 position-sensitive 的 feature map 中,对于每个 RoI,将其分割成 k*k 个 bins,每个 bin 的大小约等于 w/k∗h/k。最后一个卷积层为每个类别生成 k^2 个 score map。在第 (i,j)个 bin (0≤i,j≤k−1)上的 position RoI pooling 操作定义为:

每个类别上都可以得到 k 个 position-sensitive 的 score,文章直接对这些值求平均值,得到最终的 score,因为分母都相同,均为 k,因此这个 score 就可以写成 r_c(Θ)=∑_i.j r_c(i,j∣Θ),在对这个 RoI 分类时,采用 Softmax 的方式在每个类别上的响应可以写成 :


在训练过程中采用交叉熵的方式进行训练。图8给出了position-sensitive 卷积层的详细

展示


图2. R-FCN的关键思想。图中有一个全卷积网络产生的k×k=3×3的位置敏感分数图。对于一个RoI中的每一个k×k bins,只对k^2个map中的一个进行汇集(用不同的颜色标记)


R-FCN是 Faster R-CNN 的改进版本,其 loss function 定义基本上是一致的:

在该网络框架下,所有可学习的层都是卷积层,使用 Online Hard Example Mining (OHEM) ,几乎不会增加训练时间。


当前 SOTA!平台收录 R-FCN 共 47 个模型实现资源。



项目SOTA!平台项目详情页
R-FCN前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/rfcn


2、 Mask-RCNN

Mask R-CNN是一个两阶段的框架,第一个阶段扫描图像并生成建议区域(proposals,即有可能包含一个目标的区域),第二阶段分类提议并生成边界框和掩码。Mask R-CNN是在Faster R-CNN的基础上添加了一个预测分割mask的分支,即在目标检测的基础上再进行分割。Mask R-CNN算法主要是Faster R-CNN+FCN,更具体一点就是ResNeXt+RPN+RoI Align+Fast R-CNN+FCN,如下图所示:


图3. Mask R-CNN 结构图

Mask R-CNN算法步骤如下:(1)输入一张图片,进行数据预处理(尺寸,归一化等等);(2)将处理好的图片传入预训练的神经网络中(例如,ResNet)以获得相应的feature map;(3)通过feature map中的每一点设定ROI,获得多个ROI候选框;(4)对这些多个ROI候选框送到RPN中进行二值分类(前景或后景)和BB回归(Bounding-box regression),过滤掉一部分候选的ROI;(5)对剩下的ROI进行ROI Align操作(即先将原图和feature map的pixel对应起来,然后将feature map和固定的feature对应起来);(6)对这些ROI进行分类(N类别分类),BB回归和Mask生成(在每一个ROI里面进行FCN操作)。

首先,Mask R-CNN采用ResNet-50或者ResNet-101作为特征提取器提取特征,然后采用FPN(特征金字塔网络)的结构来进行特征融合。FPN可以同时利用低层特征图的空间信息和高层特征图的语义信息,其原理就是把分辨率较小的高层特征首先通过1×1卷积降维(减少计算量),然后上采样至前一个特征图的相同尺寸,再进行逐元素相加,就能得到融合后的特征。在得到增强后的特征后,利用RPN(Region Proposal Network)帮助网络推荐感兴趣的区域(ROI区域)。

接下来,需要把所有的ROI都pooling成相同大小的feature map后,才能将它reshape 成一个一维的向量,从而完成后面的分类与回归任务。与Faster RCNN中的ROI pooling不同,使用ROI pooling会造成较大的量化误差,这对于分割任务来说会造成较大的误差,因此Mask R-CNN中对ROI pooling进行了改进,提出了ROI Align。RoI Align的思路很简单:取消量化操作,使用双线性内插的方法获得坐标为浮点数的像素点上的图像数值,从而将整个特征聚集过程转化为一个连续的操作。值得注意的是,在具体的算法操作上,RoI Align并不是简单地补充候选区域边界上的坐标点,然后将这些坐标点进行池化,而是重新设计了一套流程:(1)遍历每一个候选区域,保持浮点数边界不做量化。(2)将候选区域分割成

相关阅读

  • 理解大语言模型——10篇论文的简明清单

  • 导语理解大语言模型的一份最短阅读清单,应该包含哪些论文?近日一位博主梳理了10篇里程碑式的论文。关键词:语言模型,机器学习Sebastian Raschka | 作者范思雨 | 译者邓一雪 | 编
  • 3D点云初探:基于全卷积神经网络实现3D物体识别

  • 点击下方卡片,关注“新机器视觉”公众号重磅干货,第一时间送达来源丨人工智能大讲堂在当今的计算机视觉系统中,2D图像识别技术已经相对成熟,但3D物体识别依然是一个关键但未被充
  • IT 热门:AI 美女模型 Chilloutmix 作者放弃版权

  • 点击上方蓝字 ● 关注Linux公社 今天这期不谈 Linux,不谈编程与运维。近期 AI 应用相当火热,除了 ChatGPT 这类 AI 聊天机械人外,还有不少 AI 绘图应用,大家都可能在讨论区

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章