【笔记】特征融合

一、数据预处理

这几天写人脸关键点检测代码,中间忘了将图片在送入网络之前,减去图片的均值,从有关函数的名称来看,这算是一种归一化操作。总之,缺少这个操作的结果,就是loss一直在抖,丝毫没有下降或上升的趋势。所以今天从这个问题入手,对这问题相关进行掌握。
看了一些深度学习框架的例程,处理原图为黑白比如mnist数据集,不需要进行图片均值减去处理,而三通道彩图,一般都需要。

二、特征融合

https://blog.csdn.net/xys430381_1/article/details/88370733?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
在很多工作中,融合不同尺度的特征是提高分割性能的一个重要手段。低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。如何将两者高效融合,取其长处,弃之糟泊,是改善分割模型的关键。
很多工作通过融合多层来提升检测和分割的性能,按照融合与预测的先后顺序,分类为早融合(Early fusion)和晚融合(Late fusion)。

早融合(Early fusion): 先融合多层的特征,然后在融合后的特征上训练预测器(只在完全融合之后,才统一进行检测)。这类方法也被称为skip connection,即采用concat、add操作。这一思路的代表是Inside-Outside Net(ION)和HyperNet。 两个经典的特征融合方法:
(1)concat:系列特征融合,直接将两个特征进行连接。两个输入特征x和y的维数若为p和q,输出特征z的维数为p+q;
(2)add:并行策略,将这两个特征向量组合成复向量,对于输入特征x和y,z = x + iy,其中i是虚数单位。

晚融合(Late fusion):通过结合不同层的检测结果改进检测性能(尚未完成最终的融合之前,在部分融合的层上就开始进行检测,会有多层的检测,最终将多个检测结果进行融合)。这一类研究思路的代表有两种:
(1)feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)
(2)feature进行金字塔融合,融合后进行预测,如Feature Pyramid Network(FPN)等。

关于深度特征融合—高低层特征融合,归纳起来共讨论了4类方法:
(1)早融合:用经典的特征融合方法:在现有的网络(如VGG19)中,用concat或add融合 其中的某几层;
FCN、Hypercolumns—>add
Inside-Outside Net(ION)、 ParseNet 、HyperNet—>concat
变种:用DCA特征融合方法代替concat和add操作;

(2)晚融合
(2.1)采用类似特征金字塔网络(FPN)的思想,对特征融合后进行预测。 (FPN一般用于目标检测,提高小目标检测能力) 三个变种:
1.YOLO2的方法,只在金字塔的top-down路径的最后一层进行预测,此外还有 U-Net [31] and SharpMask for segmentation, Recombinator networks for face detection, and Stacked Hourglass networks for keypoint estimation.
2.YOLO3的方法,在金字塔的每一层都进行预测
3.FSSD的方法,对 FPN进行细微改造

(2.2)feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)

(3)用一个具有高低特征融合能力的网络替代普通的网络,如Densenet;

(4)不进行高低层特征融合,而是在高层特征预测的基础上,再用底层特征进行预测结果的调整

2.1、DCA特征融合方法

特征融合的目的,是把从图像中提取的特征,合并成一个比输入特征更具有判别能力的特征。如何正确融合特征是一个难题。两个经典的特征融合方法:

(1)concat:系列特征融合,直接将两个特征进行连接。两个输入特征x和y的维数若为p和q,输出特征z的维数为p+q;
(2)add:并行策略,将这两个特征向量组合成复向量,对于输入特征x和y,z = x + iy,其中i是虚数单位。

孙等人[38]引入典型相关分析canonical correlation analysis (CCA) 来融合特征。基于CCA的融合方法使用两个输入特征间的相关关系,计算两种变换,变换后的特征比输入的两个特征集有更高的相关性 。
CCA的主要不足,在于忽略了数据集中类结构间的关系。我们想要最大化特征集之间的相关性,所以将每组特征中的类分开。
最近,https://blog.csdn.net/snail_crawling/article/details/84568071解决了CCA的弱点,引入了DCA。DCA最大化两个特征集中对应特征的相关关系,同时最大化不同类之间的差异。
【笔记】特征融合_第1张图片

2.2、改进的SSD目标检测算法(DenseNet)

改进在于使用DenseNet代替原始SSD结构中的VGG,以提高目标检测准确性。下图显示了以DenseNet为基础网络的SSD。
改进后的SSD网络对小物体比较敏感,能够对小物体产生很好的拟合。SSD中小物体检测的弱点可以通过所提出的模型来解决,并且对于具有独特上下文的类来说,性能更好。
【笔记】特征融合_第2张图片
【笔记】特征融合_第3张图片

2.3、FPN(feature pyramid networks)

https://blog.csdn.net/wangdongwei0/article/details/83140839
https://blog.csdn.net/WZZ18191171661/article/details/79494534
特征金字塔是识别不同尺度的目标时常用的结构,但是特征金字塔需要较大的计算量和显存,所以最近研发的一些探测器都不再使用这种结构。
作者开发出的一种构建特征金字塔的新方法,可以减少额外的对计算量和显存的消耗
使用FPN作为backbone,Faster RCNN的精度进一步提升(因为提取的特征更加丰富),速度为6fps on a GPU
最近在coco和imagenet上取得靠前名次的网络都采用了多尺度的方法。
【笔记】特征融合_第4张图片
看链接给出的两篇文章,理解比较特征金字塔形式。

2.4、YOLOv3——引入:FPN+多尺度检测 (目标检测)(one-stage)(深度学习)(CVPR 2018)

https://blog.csdn.net/Gentleman_Qin/article/details/84350496
【笔记】特征融合_第5张图片
YOLOv2网络结构中有一个特殊的转换层(Passthrough Layer),假设最后提取的特征图的大小是1313,转换层的作用就是将前面的2626的特征图和本层的1313的特征图进行堆积(扩充特征维数据量),而后进行融合,再用融合后的特征图进行检测。这么做是为了加强算法对小目标检测的精确度。为达更好效果,YOLOv3将这一思想进行了加强和改进。
【笔记】特征融合_第6张图片
YOLO v3采用(类似FPN)上采样和融合做法,融合了3个尺度(13
13、2626和5252),在多个尺度的融合特征图上分别独立做检测,最终对于小目标的检测效果提升明显。(有些算法采用多尺度特征融合的方式,但是一般是采用融合后的单一特征图做预测,比如YOLOv2,FPN不一样的地方在于其预测是在不同特征层进行的。)

2.5、利用多层卷积神经网络(CNN)特征的互补优势 进行图像检索

https://blog.csdn.net/qq_40716944/article/details/78506086
高层特征用于度量语义相似度,低层特征用于度量细粒度相似度。给出一个简单易懂的例子,当查询图像是一个建筑物时,高层相似性捕捉到的图像包含一个建筑物,而低层相似性则捕获同一个从属同类实体的建筑物。显然,低层和高层特征的互补性可以提高查询图像与其他候选图像之间的相似性度量。一些现有的方法试图利用多尺度无序汇集来进行CNN激活。例如,CNN特征分别从不同层次提取和编码,然后将这些不同层次的聚合特征进行连接以测量图像。但直接拼接不能充分利用高层和低层特征的互补性。高层特征可以搜索具有相似语义的候选图像的集合作为查询图像,但是它不足以描述细粒度的细节。因此,高层相似性会削弱低层相似性的有效性,当最近邻居之间的细粒度差别被区分时,语义相似。
在本文中,我们建议以一种简单而有效的方式利用不同层次的CNN特征的更多互补优势。我们的方法试图突出低层相似性的有效性,当查询图像和最近的邻居之间的细粒度的相似性与相似的语义。换句话说,低层特征用于细化高层特征的排序结果,而不是直接连接多个层。高层特征不足以描述细节信息,而低层特征则来自背景混乱和语义歧义。**以直接拼接的方式,由于高层相似度的影响,低层相似度在区分细粒度差异方面不起重要作用。使用映射函数,我们的方法利用低层特征来测量查询图像与具有相同语义的最近邻居之间的细粒度相似性。**在实验中,我们证明了我们的方法比单层功能,多层连接以及其他基于手工特征的方法更好。

2.6、五种方法提升特征融合的效率

参考文章:
ExFuse: Enhancing Feature Fusion for Semantic Segmentation
https://arxiv.org/abs/1804.03821
https://blog.csdn.net/u010158659/article/details/80413719
https://blog.csdn.net/weixin_41876817/article/details/83058437
这篇文章着重研究语义分割网络中高低层特征融合的效率问题。本文发现,当前语义分割方法直接融合高、低特征并不奏效,继而提出新架构 ExFuse.

本文工作主要聚焦于 U-Net 分割架构的特征融合问题,并选择当前最优的 U-Net 架构之一——全局卷积网络(Global Convolutional Network/GCN)——作为主要的 backbone 分割架构.

这篇文章从两个大的方向上提出了改善思路,即
(1).增加低层特征的语义
(2).在高层特征中增加更多空间信息。

其中包括5个改善的细节,在下面一一介绍。

(1)Direction 1: Introducing More Semantic Information into Low-level Features
这篇文章中,作者为了增加低层特征的语义信息做了三点改进:

网络结构重排(layer rearrengement),构建更适合于分割的预训练模型;
深度语义监督(semantic supervision);
语义嵌入支路(semantic embedding branch),将高层特征融入低层特征。
(2)Direction 2: Embedding More Spatial Resolution into High-level Features
高层特征空间信息的损失只要是由于其自身的低分辨率(尺寸小)。这篇文章尝试将更多的空间特征融入到通道(channel)中去,包括:

通道分辨率嵌入(explicit channel resolution embedding);
稠密邻域预测(densely adjacent prediction)。
上述每一方法都带来了显著提升,组合使用涨点高达 4%。

你可能感兴趣的:(笔记,深度学习)