论文太多来不及看,有些论文用了很大篇幅印证了某种模块有用或者没用,对于不研究这部分的人来说了解一下结论,这个模块有什么优缺点就够了。因而记录一下2018-2019-2020这几年泛读的论文梗概:

文章目录

  • Deep Residual Learning for Image Recognition
    • 自身捷径(identity) vs 投影(projection)捷径:
  • FPN Feature Pyramid Networks for Object Detection
  • DetNet: A Backbone network for Object Detection
  • SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization
  • EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
  • CornerNet:Detecting Objects as Paired Keypoints
      • 检测部分
      • loss
    • cornor pooling
    • hourglass
  • CenterNet: Objects as Points
    • 具体模型讲解我单独写了一篇博客

Deep Residual Learning for Image Recognition

2016
更深的网络已经很大程度上被标准初始化,正则化解决了,确保几十层网络可以收敛。但是更深的网络会暴露出退化的问题(先饱和,再快速变差)
推到极端,如果一个映射是可优化的,那么也会很容易将残差推至0.把残差推到0可比把该映射逼近到另一个非线性映射要容易的多。
shortcut快捷连接可以跳过一个或者多个层,本例中,我们选用最简单的自身映射。
F+x逐个元素相加,具有二阶非线性。
这个重构的动机是出于对退化问题的反直觉现象(图1,左)。正如我们在介绍中讨论的,如果添加的层可以以恒等的方式被构造为自身映射,一个加深的模型的训练误差一定会不大于较浅的对应模型。

本文的实验涉及一个函数F,它有两个或三个层(图5),然而它可能有更多的层。但如果F只有一个单层,则eqn.(1)类似于线性层:y=w1x+x,对此我们没有发现任何优势。

中间模块有几个卷积是可以随意的,但要大于等于2;因为只有一个的话,会等价于一个线性层,y = W1x + x,这样一来就没有可见的优势了。

元素级加法是在两个特征映射上相应通道上执行的。.
在实际情况下,恒等映射不太可能是最优的,但是我们的重新表达对于这个问题的预处理是有帮助的。**如果最优函数更接近于恒等映射而不是零映射,则求解者应该更容易找到与恒等映射有关的扰动(perturbations),而不是将其作为新的扰动来学习。**我们通过实验(图7)证明了学习的残差函数一般都有较小的响应,说明恒等映射提供了合理的预条件。

设计普通网络的原则:
1:对于相同尺寸的feature map,每层必须含有相同数量的过滤器。
2:如果特征图谱的尺寸减半,则过滤器的数量必须翻倍,以保持每层的时间复杂度。卷积层(stride=2)进行下采样
我们的34层基本计算量为3.6亿FLOPS(包括乘法和加法),这仅仅是VGG(196亿FLOPs)的18%

当输入输出尺寸发生增加时
(a)快捷连接仍然使用自身映射,对于维度的增加用零来填补空缺。此策略不会引入额外的参数;
(b)投影捷径(公式2)被用来匹配尺寸(靠1×1的卷积完成)。
问题:这两个策略只见到了2,1是什么时候用的?
实现:图片被根据短边等比缩放,按照256,480区间随即裁剪。
BN层用在每个卷积层和激活层之间

自身捷径(identity) vs 投影(projection)捷径:

y = F(x, {Wi}) +Wsx. (公式2)-> projection
零paddimg -> identity
我们已经证实了无参数的自身捷径对训练有增益作用。
A零填充捷径用来增加维度,所有的捷径都是没有参数的自身捷径
B投影捷径用来增加维度,其他的捷径都是没有参数的自身捷径。
C所有的捷径都是投影捷径

三种都比平铺网络好,
B 比A 稍好,因为补0部分没有进行学习
C比B稍好,因为有额外的参数

为了ImageNet准备更深的网络,为防止过漫长的训练时间,我们设计了一种Bottleneck瓶颈设计,由三个卷积层构成。先1x1减少层数然后3x3,在1x1恢复层数。
无参数自身快捷连接在瓶颈架构中非常的重要,如果把自身连接(图5右)换成投影连接,可以看出时间复杂度和模型尺寸都会翻倍,因为该快捷连接连到了两个高维端,所以自身连接会为瓶颈设计带来更高的效率。

分析网络响应:响应是指的每个3x3层的输出(Batch-normalization后,其他非线性操作前(Relu/addition),响应确实较小,更接近0,更深的网络响应也更小。
卷积,BN,(分析这个地方),relu

FPN Feature Pyramid Networks for Object Detection

2016.2017年 论文地址 代码地址

利用深度卷积网络内在的多尺度、金字塔分级来构造具有很少额外成本的特征金字塔
传统图像金字塔尺度是不变的,通过不同层级上预测来使用不同级别的信息,就很慢。
图像金字塔鲁棒性强,准确。推断时间增加,训练时间内存增加,或者训练不用测试用时有不一致。
深度网络逐层计算特征,下采样层后的特征层内在的具有多尺度金字塔形状。缺点是高分辨率表征能力弱。
SSD是首先尝试多尺度的网络,且是零成本的。但是只从最高层的几层来构建,并且加了几个新层,没有使用到高分辨率的层,我们会证明这对小目标而言很重要。
我们将一个特征金字塔,在所有级别都具有丰富的语义,且不牺牲速度、表征能力。

有些人的工作是跳跃或向下传递到最底层,只在一层上预测。我们是在没一层上都独立的预测。
在检测和分割任务上简单粗暴的涨点,且没有引入花哨的其他东西。
目标检测上AR提高8个点,AP提高2.3个点
在实例分割上也有优势
且能端到端的训练和测试,具有一致性。

自底向上:以step=2的层为界,输入输出同分辨率的堆叠的几层属于一个stage组。我们为每个stage定义一级金字塔,选取该stage最后一层。(对resnet来说,选取每个stage最后一个残差块来输出,忽略地一层)

Faster等还是使用单一尺度上的特征,因为精度和速度有折衷。然而,多尺度精度还是更高些,尤其对小目标。
多层方法中。
诸如横向、跳跃连接不同分辨率和语义层次,比如U-Net等

DetNet: A Backbone network for Object Detection

论文:DetNet: A Backbone network for Object Detection,2018年清华,Face++旷世合作论文,孙剑大神参与
某人的实现代码点这

目标分类训练的网络作为目标检测backbone是否合适?任务不同肯定有不同,本文就是研究任务切换时backbone直接用的优劣分析。
ImageNet分类模型直接做backbone不够好,检测分类两个任务有差异。
(i)诸如FPN和RetinaNet之类的最新物体检测器通常涉及额外的stage,以完成图像分类任务,以处理各种比例的物体。
(ii)对象检测不仅需要识别对象实例的类别,而且还需要在空间上定位位置。较大的下采样因子会带来较大的有效接收场,这对图像分类有利,但会损害对象的定位能力。
DetNet,这是专门为目标检测设计的新型骨干网络。
DetNet(4.8G FLOP)包括传统backbone分类任务,也保持了空间分辨率。MSCOCO上检测和分割任务都最棒。

检测的Backbone通常从ImageNet分类上面借鉴。

  1. AlexNet是第一个增加CNN层数的,为了减少计算,并增加感受野,它用stride为32下采样。
  2. VGGNet堆叠了k=3的卷积,来搭建更深的网络,也用了stride为32。
  3. GoogleNet提出了inception block来提取更多样的特征。
  4. ResNet在每个stage用了“bottleneck”和residual sum operation,这样就有了更高效的方式搭建更深的网络。
  5. ResNext和Xception都用了group convolution来替代传统卷积,它能减少参数量同时增加精度。
  6. DenseNet稠密地concat几层,在保证一定精度情况下减少参数。
  7. Dilated Residual Network跟他们不一样,它能用更小的stride来提取特征,DRN在分割上面取得可圈可点的成绩,但是在目标检测上面说的很少。

    为解决小目标丢失,作者提出DetNet有以下特点:
  8. stage数量是直接为目标检测设计的
  9. 虽然用了更多的stage,但是保持了高的空间分辨率的同时保持高感受野
    DetNet有以下优点:
  10. 它有检测要用的一样的stage数目,额外的stage P6都在ImageNet上训练过
  11. 得益于最后一个stage的高分辨率,DetNet在定位大目标的边界和找到丢失的小目标上表现很好。

    DetNet59实现细节:
  12. backbone中多一个stage P6,之后会被FPN使用,stage 4后固定空间分辨率是原图的16倍下采样,不在Pooling
  13. stage4之后,每个stage开始的时候用dilated bottleneck with 1x1 convolution projection (B),作者发现它对于multi-stage detectors(FPN)很重要。
  14. 作者用了bottleneck with dilation来增加感受野,因为dilated conv比较费时,stage 5 和 stage 6保持和stage 4相同的通道(256 input channels for bottleneck block),这与传统的backbone不同,传统的都会在后面stage加倍通道。

    DetNet比ResNet计算量少,准确率高。

SpineNet: Learning Scale-Permuted Backbone for Recognition and Localization

谷歌出品
论文:点这
学习规模-用于识别和本地化的置换主干
DetNet的升级版,从编码器解码器的体系结构来解释分类网络在检测任务中的使用情况,提出更好的方法。
我们认为编码器-解码器体系结构由于主干的规模减小而无法有效生成强大的多尺度特征。我们建议使用SpineNet,这是一个具有比例排列的中间功能和跨比例连接的主干,可以通过神经体系结构搜索在对象检测任务中学习。COCO上效果最好,计算量减少60%,优于ResNet-FPN

现在通用做法是建立解码器恢复特征分辨率,同时解码器和编码器之间还引入了多尺度跨层连接来生成更好的多尺度特征图。
因为分类任务构建编码器不断降采样会丢失大量的空间细节信息,而这些信息很难通过解码器进行恢复。
SpineNet,将编码器和解码器合二为一构建了尺度可变的backbone,这个backbone同时具备之前提到的编码器和解码器功能,因此也是直接连在分类和回归网络上的。
与HRNet类似又不同,HRNet是并行多尺度设计,SpineNet是更自由的多尺度设计

采用的NAS进行搜索,和NAS-FPN[3]一样也是在RetinaNet基础上进行的,不用ImageNet直接COCO
以ResNet-50为基准,并使用ResNet-50中的bottleneck blocks作为搜索空间中的候选feature blocks,然后再搜索feature blocks的排列,以及每个feature blocks的两个输入连接关系。

SpineNet网络可以看作在一个通用的ResNet-50网络基础上搜索不同feature blocks的排列方式以及连接关系得到的。也和NAS-FPN一样,从第3层到第7层选取了5个输出feature blocks,用于产生最终的P3-P7的多尺度特征层,其他剩余的feature blocks看作是中间feature blocks。
三个搜索空间:1 feature blocks的排列顺序 2 每个feature blocks的两个输入连接关系 3 feature blocks自身的尺度以及block类型调整了
(维度匹配问题)跨层时需要考虑尺度缩放和通道缩放引入了比例因子α(默认为0.5)将输入特征尺寸C调整为α×C,然后使用最近邻差值上采样或者下采样来匹配目标分辨率。最后,再应用1×1卷积将输入特征图的通道数α×C与目标特征图的通道数相匹配,如下图所示:

从实验结果来看,SpineNet取得非常不错的效果,而且虽然SpineNet是在检测数据集搜出来的网络结构,但是用在检测,实例分割以及分类上都能取得不错的效果。


学习尺度多变网络的跨层链接效果比学习固定尺度排列网络的跨层效果好。
Neural Architecture Search (NAS) 网络结构搜索
本文是第一篇真正意义上的NAS在检测上的应用(之前的NAS+Det论文要么固定backbone搜neck,要么固定neck搜backbone,这个设定明显非常奇怪)

EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks

论文
代码
Quoc V. Le大神于谷歌,2019年出品

Abstract
NAS模型,系统地研究了模型缩放,新方法使用简单而高效的复合系数来均匀缩放深度/宽度/分辨率的所有维度。
ImageNet上效果最好达84.4%top-1 / 97.1%top-5,比最好的网络卷积小了8.4倍,快了6.1倍。

作者做了以上实验,得出两个结论:

  1. 扩展网络宽度、深度或分辨率中的任何维度都可以提高精度,但是对于较大的模型,精度增益会降低,对应Figure 3中的尾部收敛。
  2. 为了追求更高的精度和效率,在ConvNet缩放过程中平衡网络宽度、深度和分辨率的所有维度是至关重要的,对应figure 4。

提出一种新的复合标度方法,使用复合系数ϕ\phiϕ来均匀缩放网络宽度、深度和分辨率:

α,β,γ是可以通过小型网格搜索确定的常量,而ϕ\phiϕ从直观上解释是是用户按照能够提供的额外计算资源开销。α,β,γ则是确定如何分别为网络宽度、深度和分辨率分配这些额外资源。
因此用公式(3)对网络进行缩放时,会使得总体FLOPS增加大约
作者利用MNAS Net方法,利用多目标神经网络架构搜索,同时优化准确率和FLOPS

提出Mobilesize的EfficientNet,在ImageNet和五个常用的迁移学习数据集上,用更少的参数和FLOPS达到超越SOTA的精度。
在此之前,通常提高准确率的方法是单纯增加深度,宽度或者分辨率中的某一种,但是效果不能达到最优。在相同计算资源的限制下,平衡这三者的贡献才能让网络得到最好的效果。

CornerNet:Detecting Objects as Paired Keypoints

anchor-free的文章,
检测目标框左上,坐下两个成对的关键点,左上,右下,消除anchor,引入corner pooling,优于所有One-stage。anchor需要设计数量,长宽比,尺寸的超参

左上角,右下角通常不在目标像素上面,想确定该点,需要设计:corner pooling layer:它包含两个特征图; 在每个像素位置,它最大池化从第一个特征映射到右侧的所有特征向量,最大池化从第二个特征映射下面的所有特征向量.即对最上角的像素点来说,向右看取最大,向下看,取最大得到左上角脚点。每检测到一个关键点都会有一个嵌入向量,根据嵌入向量分组

作者认为

  1. 检测两角点分别依赖两条边,检测中心要依赖四个边因而后者更难。2是一种更离散的方式来找边界框,相比w2h
  2. 复杂度,只有wh这么多空间复杂度(而非w方h方)

1两组热度图各有C个通道,C为类别数量。对于中心点很近的其他点使用2D高斯减小其惩罚

检测部分

不使用多尺度,使用hourglass网络的输出,预测两组热图,一组左上角,一组右上角
每组C个通道,C是类别数,尺寸H x W,不包含背景通道
每个通道是二进制掩码,指示角点位置
正负样本的区分
标签中的角点为正样本,其余全为负.但不能同等的惩罚,对正样本半径内位置给予惩罚.(与CenterNet类似)
这个半径有物体大小来确定.依据:半径内的点生成的边界框与GT的IOU>=t,默认0.3
惩罚减少量
σ为半径的三分之一

loss

  1. 检测loss


N是一张image中的目标个数
α=2,β=4是超参数, (1-y)项减少了GT周围的惩罚
2. 偏移loss


下采样因子n, Ok是偏移量,所有类别的左上角共享一组偏移量
所有类别的右下角共享另一组偏移量 L1平滑损失

3. 嵌入向量(多个目标如何组合)

多个目标,自己目标两个角点的嵌入向量之间的距离更小.以此来分组
pull,缩小同类角点距离
push,扩大不同角点距离

1维嵌入向量,pull来训练,push来分离角点
公式中三角设置为1,

训练时:

cornor pooling

以左上角角点为例,向右向下取最大值,然后两张图对应相加

对中,大目标而别有用,平均提高2% 的AP

hourglass

是一个全卷积网络,由一个或多个 hourglass 模块组成。
我们只使用步幅 2 的卷积层来减少特征分辨率,而不是使用最大池化层(这是现在主流的做法,虽然增加了很多参数量和计算量,但效果要好很多)
比FPN训出来好8.2%

CenterNet: Objects as Points

Anchor-free的一篇很火的文章,论文,代码都很工整,佩服佩服。one-stage兼顾了速度与效果,同时也可以替换不同的backbone得到不同精度速度的模型,还可以直接迁移到姿态估计、3D目标检测等领域。模型由于设置了合适的尺寸及损失函数等原因,不需要NMS等后处理就可以得到很好的结果。

具体模型讲解我单独写了一篇博客

https://blog.csdn.net/u012925946/article/details/106130807

CTPN (2016)
文本检测,自底向上的回归方法
CNN+检测文本的切片,再使用连接的方法把小块连起来

Top-down regression-based method for arbitrary-shaped text detection
cvpr2019
SE-VGG +(ROI Pooling)+ LSTM
LSTM一直输出坐标点,但是长度可变化,复杂文本会被更曲折的轮廓(五边形,六边形等)预测,简单的文本就是四边形

基于分割的
ICCV2019
Segmentation method for arbitrary-shaped text detection
PAN-Net
小backbone + 每一个尺度上进行通道上的统一+FPEM模块 + 特征融合
输出:文本区域的分割,文本实例,相似性向量(3)
(3):用于区分两个位置很接近的文本实例
FPEM可以自适应设置数量

分割+回归
CVPR2020
Hybrid Segmentation and Regression
速度慢,精度高,假阳性少
二阶段
1自适应RPN里面,中心点+wh偏移量,对文字不够友好,增加了边界框的回归
2正交的文本感知模块,1 x k k x 1得到两个heatmap

目标检测论文核心思想,18-19-20年论文梗概相关推荐

  1. 蓝桥杯 算法训练 - 连续正整数的和 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27。   输入一个正整数 n(<=10000)   输出 m 行(n有m

    问题描述 78这个数可以表示为连续正整数的和,1+2+3,18+19+20+21,25+26+27. 输入一个正整数 n(<=10000) 输出 m 行(n有m种表示法),每行是两个正整数a,b ...

  2. cvpr2019 目标检测算法_CVPR2019 | 0327日更新12篇论文及代码汇总(多目标跟踪、3D目标检测、分割等)...

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  3. 目标检测综述:Object Detection in 20 Years: A Survey

    文章目录 1. INTRODUCTION 1.1 区别 1.2 目标检测中的困难和挑战 2. OBJECT DETECTION IN 20 YEARS 3. SPEED-UP OF DETECTION ...

  4. 【目标检测】CornerNet: Detecting Objects as Paired Keypoints论文理解

    文章目录 摘要 1 引言 2 相关工作 2.1 两阶段检测器 2.2 单阶段检测器 2.3 anchor free的检测器 3 CornerNet 3.1 概述 3.2 检测角点 3.3 分组角点 3 ...

  5. 小甲鱼python课后习题【16,17,18,19,20】

    [学习笔记,仅供学习交流使用,知识源于鱼c论坛] 作业16: 测试题: 0.我们根据列表.元祖和字符串的共同特点,把它们三统称为什么? 序列   1)都可以通过索引得到每一个元素   2)默认索引值总 ...

  6. C4D R14/15/16/17/18/19/20软件安装包及教程

    软件介绍: 中文名4D电影,外文名CINEMA 4D,研发公司为德国Maxon Computer,特点为极高的运算速度和强大的渲染插件,使用在电影<毁灭战士><阿凡达>中,获得 ...

  7. PHP笔记 17 18 19 20 21

    目录 自定义函数 参数 函数返回值 PHP变量的范围 局部变量 全局变量 静态变量 参数的传递 按值传递参数 按引用传递参数 函数的默认参数 可变长度参数 可变函数(变量函数) **递归函数** 内部 ...

  8. CTFshow 信息收集 web16 17 18 19 20

    目录 web16 提示: flag: web17 flag: web18 提示: flag: web19 提示: flag: web20 信息收集收官 提示: flag: web16 提示: 对于测试 ...

  9. fedora 18 19 20 21 22 23 怎么安装中文语言包

    Fedora 默认选择英文安装后,如何切换成中文: #yum install system-config-language #system-config-language 选择简体中文

最新文章

  1. 避免重蹈欧美“超级电厂”覆辙 瑞星全力保障国内电力行业信息安全
  2. javascript,jquery 操作 dropdownlist ,select
  3. Linux系统文件与目录权限管理
  4. SIFT讲解(SIFT的特征点选取以及描述是重点)
  5. 下载国外网站资料需java_Java开发必知道的国外10大网站
  6. Ubuntu系统下安装MATLAB2014a
  7. 欧姆龙cp1h指令讲解_欧姆龙plc指令讲解.ppt
  8. PAT-A1013. 数素数 (20)
  9. 数学之美——自然常数e小故事和宇宙第一公式
  10. 项目总结:快餐店POS收银系统
  11. windows 电脑图片/视频不展示预览图
  12. Telegram Bot Api使用教程
  13. 【java】方法练习1-商品总价对应折扣
  14. Yocto系列讲解[技巧篇]81 - 如何打patch修复打补丁出错的recipe
  15. win10系统调出计算机和网络图标
  16. C语言编译器及其工作流程
  17. LabVIEW数据采集程序打包中遇到的问题
  18. 3华为工程师 ,带你实战C++(2018版)-王桂林-专题视频课程
  19. Ab3d.PowerToys and Ab3d.DXEngine Crack
  20. java 开发文档协作_Java 网络编程---分布式文件协同编辑器设计与实现

热门文章

  1. python_变量特性、作用域、函数
  2. vue 悬浮图标_vue实现移动端悬浮窗效果
  3. CocosCreator 2.4.1版本 打包微信抖音小游戏CDN配置问题
  4. 两行轨道报(TLE)简介
  5. linux里进程状态为sl,Linux ps state sl+是什么意思
  6. 认识物联网系列——物联网架构
  7. 数据库概述09(数据库中的锁机制)
  8. MarkdownPad2 使用教程
  9. 8086汇编(7、80x25彩色缓冲区)
  10. 挂载NTFS分区的两种方法