每月笔记之2019年9月

1、 博客目录:
@[TOC] (文章目录)
CSDN博客改变字体
# 1、论文总述

2、2018vot竞赛总结
DCF依然领跑性能,short-term榜依旧以DCF+CNN为主,尤其UPDT贡献巨大,对前几名算法都有影响,但速度越来越慢看不到边,KCF不堪回首。
SiamNet速度快性能也不差,real-time榜和long-term榜都是SiamNet登顶,尤其SiamRPN潜力巨大,打通了目标跟踪和目标检测,性价比很高,接下来会快速发展壮大,希望速度优势能保得住。

3、关于one stage和two stage之争,这个deformable原文作者已经有说过了:检测追求的是模型精确定位目标即精确找到物体的平移缩放参数,而识别目标类型又需要模型容错一定的平移缩放等变换,二者互相矛盾。所以我认为在one stage检测框架中同时进行目标识别和定位本身就是矛盾的,类间差距越小,one stage越不稳定。所以one stage的问题不是一个FL能解决的。况且,以yolo、ssd为代表的one stage方法的提出,其主要是为了解决预测速度的问题,而不是精度。而且, one stage的词法分割也是存在这个矛盾问题的。如果词法分割能解决得很好,那one stage的问题也同时被解决了,以后就没two stage什么事了。

4、SPPnet 直觉地说,可以理解成将原来固定大小为(3x3)窗口的pool5改成了自适应窗口大小和步长,窗口的大小和feature map成比例,保证了经过pooling后出来的feature的长度是一致的

5、可以看到,现有的视频数据集在质量和数量上都很少与现有的图像数据集(如ImageNet)相匹配。另外,考虑到同一视频片段帧间的高度相关性,现有的视频数据集远远不能满足像视频显著目标检测等像素级视频应用的CNN训练需求。另一方面,就目前而言,创建如此大规模的视频数据集通常是不可行的,因为注释视频既复杂又耗时。
为此就提出了一种综合生成标记视频训练数据的视频数据增强方法,该方法充分利用了现有的大规模图像分割数据集。模拟视频数据易于获取和快速生成,接近真实视频序列,呈现各种运动模式、变形,伴随着自动生成的注解和光流。通过这些自动生成的视频的实验结果,很好地证明了新策略的实用性。

6、ROI Pooling. 基于feature map的理解,ROI pooling实际上使得feature具有了空间位置敏感性.而这之后直接将feature整个连接到FC网络来做.首先FC网络较heavy便催生了诸如R-FCN与Light-head等文章.另外实质上它再次失去了空间信息(自身的相对位置关系).同时对分类与定位(精修)问题而言,一个是空间信息不敏感的,一个是敏感的,二者实质上是相互矛盾而会影响优化过程的,On awakening the classification power of faster rcnn 和 COCO18年的冠军有部分便是在讨论这个事情.

7、对这样的feature 金字塔而言,feature缩放的过程必是不尽如人意的.诸多魔改的融合,扩展策略由此而生.同时既然对于一个物体只有某个尺寸上的feature是有效的,kernel看见了太多其它的物体反而是某种噪声了.直接让网络看到的所有目标都是一个尺寸的便是SNIP与SNIPER所做的了.可以看做传统图像金字塔与网络的良好结合了.同时显示出RCNN较之Faster RCNN在提取一致的特征更加有效.

8、Cornet与CenterNet(这里指object as points)这一线的anchor free的工作.Cornet我之前写过,便不赘述了,虽然这类思想运用在检测上早已有之,但是做的简洁有效的便是CornerNet了.而CenterNet算是得益于了backbone的发展与人们对检测任务的认识了.整个代码框架是极为漂亮与易用,其中包含诸多trick(augmentation,backbone design等),算是集大成者了.

9、DenseBox 这篇在16年便已发表的文章可以说蕴含着诸多极为超前的思想与考量.即使现在读起来也仍有许多有意思的细节.从中你可以看见Retina Net,SNIP(SNIPER),CenterNet…的影子,这里就不赘述了.如果说检测领域一定要精读的三篇文章的话,我可能会选FPN,DenseBox和接下来的RepPoints了.

10、Non-local 虽然可以看做attention一类,也与deformable有着相似的结构.其在单帧检测领域的效果远没有在视频领域内好了.希望这一线工作可以早日完满而不再用什么光流,c3d了.

11、SiamDW最后一层感受野的的大小要与样例图片的大小有关,最好是样例图像的60%-80%。因为太大的感受野虽然增加了目标的上下文信息,但是减少了目标本身的局部信息和判别信息,而且相邻的patch之间overlap比较大,导致特征信息冗余大;而太小的话 context不够,特征抽象层次不够。

12、除了车辆检测之外,地平线还关注车道线以及行人检测。不仅如此,地平线还对于可行驶区域在图像中的分割问题也非常感兴趣,因为在ADAS问题中它和物体检测技术是非常互补的。物体检测可以处理像车,交通标志牌,行人等形状规则的刚体(rigid object) ;对于像路面,马路栏杆等结构不规则的非刚体,图像分割是更合适的选择。
同时可行驶区域的分割也可以提供相对保守的策略保证行驶的安全。前段时间特斯拉的严重交通事故就是因为过于依赖物体检测技术造成的。
黄畅博士认为,在ADAS应用中,不应该只是在平均期望的意义下优化问题,二是应该努力规避最差的情况。驾驶本身就是高风险活动,一旦出错将造成严重的后果。因此,整个系统的冗余是非常必要的,这个冗余来自于不同的传感器,来自于不同的方法,来自于系统中不同的任务和目标。

13、one-stage 和 two-stage 检测器之间的本质区别在于检出率(recall)与定位(localization)之间的权衡(tradeoff)。Recall 是指如果一张图像上有 100 个物体,检测到 99 个,那么 recall 为 99%;Localization 则是指边界框框住物体的空间上的精度。

一般来讲,one-stage 检测器的 recall 较高,但是 localization 会有所折衷;相反, two-stage 检测器的定位能力则较强,但是 recall 较低,主要原因是第二个 stage 可以 refine 框的精度,但是也会误杀一些正样本。但是大家普遍会觉得 one-stage 检测器往往更快,比如 YOLO、SSD; two-stage 检测器往往更准,比如 Faster R-CNN、FPN,但这个事情事实上并不成立,后文会有详述。

14、我们认为,the devil is in the detail,本文将从五个细节点着手去填补这一差距!通过从这些细节点出发,不断优化这项技术,才能推动其走向产品化,更实用、更落地。

从 challenges 的角度讲,我们再次回到现代目标检测的基本框架——输入(图像)-> Backone(主干网络) -> Head(出口) -> NMS(后处理),这其中暴漏了五个潜在的难题:

Backbone,目前主要使用的是 ImageNet Pretrained models,比如 VGG-16、ResNet、DenseNet 等;
Head,传统的 two-stage 网络慢的主要原因在于 head 太厚,可以对其进行加速,变得更薄、更快;
Scale,比如图像中人像的尺寸变化很大,大到 2k x 2k,小到 10 x 10,如何使神经网络算法更好地处理物体尺寸的变化是一个非常有趣的话题;
Batch Size,传统目标检测器的 batch size 非常小,为什么不尝试使用更大的 batch size 呢?
Crowd,无论是传统还是现代目标检测器,都会使用到一个叫做 NMS 后处理步骤,但是目前现有的 Benchmark 对 NMS 的优化并不敏感。

以上五个点相当于抛砖引玉,虽然 RetinaNet 和 Mask R-CNN 出来之后成绩很好,但是一些细节之处依然有待提升,旷视分别就这五个点给出了自己的尝试。

15、DetNet 是第一个针对检测任务而设计的骨干网络,并朝着兼得感受野和空间分辨率的方向而努力。

16、由于anchor shape在One stage方法中只影响bbox regression分支,我们可以在bbox regression的loss中,把anchor也作为一个优化的变量,求导优化。具体细节就不再赘述,有兴趣的读者可以参照原文。

17、,试图解决one stage中一个核心的问题:anchor和其对应的feature怎样align?

18、这一类方法最早的起源是15年的工作DenseBox[10]。(为了避免争议,这是第一篇在这个思想下我认为达到高质量完成度的工作)这一类方法的核心思想是改变one stage detector中对于:1)分类任务中assign正负样本的方式和 2)回归中target的设置。原本anchor based的方法,通过预先指定的anchor和GT的IoU来assign正负样本,回归的都是相对于anchor box的偏移量。在这一批工作中,由于没有anchor的存在,这个流程就简化成了:1) 对是不是某个物体的中心点附近进行分类。2) 对是中心点的位置,直接回归对应的scale(可以是长宽,也可以是到框四条边的距离等)。核心思想是改变了bounding box的编码方式。

19、而全卷积网络(FCN)则是从抽象的特征中恢复出每个像素所属的类别。即从图像级别的分类进一步延伸到像素级别的分类。

20、FCN:全连接层变为卷积层
实际操作中,每次这样的变换都需要把全连接层的权重W重塑成卷积层的滤波器。那么这样的转化有什么作用呢?它在下面的情况下可以更高效:让卷积网络在一张更大的输入图片上滑动,得到多个输出,这样的转化可以让我们在单个向前传播的过程中完成上述的操作。

21、语义分割网络在特征融合时也有2种办法:
FCN式的逐点相加,对应caffe的EltwiseLayer层,对应tensorflow的tf.add()
U-Net式的channel维度拼接融合,对应caffe的ConcatLayer层,对应tensorflow的tf.concat()

22、总结一下,CNN图像语义分割也就基本上是这个套路:
i)下采样+上采样:Convlution + Deconvlution/Resize
ii)多尺度特征融合:特征逐点相加/特征channel维度拼接
iii)获得像素级别的segement map:对每一个像素点进行判断类别

23、目前主流的视频分类的方法有三大类:基于LSTM的方法,基于3D卷积的方法和基于双流的方法。图片 5展示了这三种框架的大体结构[3]。
i)基于LSTM的方法将视频的每一帧用卷积网络提取出每一帧的特征,然后将每一个特征作为一个时间点,依次输入到LSTM中。由于LSTM并不限制序列的长度,所以这种方法可以处理任意长度的视频。但同时,因为LSTM本身有梯度消失和爆炸的问题,往往难以训练出令人满意的效果。而且,由于LSTM需要一帧一帧得进行输入,所以速度也比不上其他的方法。
ii)基于3D卷积的方法将原始的2D卷积核扩展到3D。类似于2D卷积在空间维度的作用方式,它可以在时间维度自底向上地提取特征。基于3D卷积的方法往往能得到不错的分类精度。但是,由于卷积核由2D扩展到了3D,其参数量也成倍得增加了,所以网络的速度也会相应下降。
iii)基于双流网络的方法会将网络分成两支。其中一支使用2D卷积网络来对稀疏采样的图片帧进行分类,另一支会提取采样点周围帧的光流场信息,然后使用一个光流网络来对其进行分类。两支网络的结果会进行融合从而得到最终的类标。基于双流的方法可以很好地利用已有的2D卷积网络来进行预训练,同时光流又可以建模运动信息,所以精度往往也很高。但是由于光流的提取过程很慢,所以整体上制约了这一方法的速度。

24、模型的剪枝过程分为两步:首先,我们会基于LASSO回归来找到每一层中最具代表性的通道,然后将没用的通道去掉,再使用平方差损失微调剪枝后的网络来最小化重构误差。这样的操作会对每一层分别进行,经过几轮迭代后便可以达到不错的压缩效果,同时还可以保证精度不会损失太多。

25、SSD缺点:
i)需要人工设置prior box的min_size,max_size和aspect_ratio值。网络中prior box的基础大小和形状不能直接通过学习获得,而是需要手工设置。而网络中每一层feature使用的prior box大小和形状恰好都不一样,导致调试过程非常依赖经验。
ii)虽然采用了pyramdial feature hierarchy的思路,但是对小目标的recall依然一般,并没有达到碾压Faster RCNN的级别。作者认为,这是由于SSD使用conv4_3低级feature去检测小目标,而低级特征卷积层数少,存在特征提取不充分的问题。

26、InstanceFCN的score maps这样做解决了卷积的平移不变性带来的问题,使得不同ROI中的重叠区域在不同ROI中的score是不一样的。

27、logistic回归简单的是做二分类问题,使用sigmoid函数将所有的正数和负数都变成0-1之间的数,这样就可以用这个数来确定到底属于哪一类,可以简单的认为概率大于0.5即为第二类,小于0.5为第一类。

发布了71 篇原创文章 · 获赞 56 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/j879159541/article/details/102171864