当前位置:网站首页>信息融合之Add与Concat,你了解它们吗?

信息融合之Add与Concat,你了解它们吗?

2021-05-28 15:59:07 灿视学长

大家好,我是灿视。

今天我们来聊下在CV中常用的特征融合手段。

看文章之前,别忘了关注我们,在我们这里,有你所需要的干货哦!

这是目前更新的《百面第三版的汇总》,我们会持续更新,欢迎关注!

《百面计算机视觉汇总,看过来!》

1. 信息融合举例

特征融合目前有两种常用的方式,一种是

add

操作,这种操作广泛运用于

ResNet

FPN

中。一种是

Concat

操作,这种操作最广泛的运用就是

UNet

DenseNet

等网络中。如下图所示:

也有如

HRNet

这样的,多分辨率之间使用

add

形式的特征融合。

2. 代码演示

>>> import torch
>>> img1 = torch.randn(2, 3, 58, 58)
>>> img2 = torch.randn(2, 3, 58, 58)
>>> img3 = img1 + img2
>>> img4 = torch.cat((img1, img2), dim=1)
>>> img3.size()
torch.Size([2, 3, 58, 58])
>>> img4.size()
torch.Size([2, 6, 58, 58])
>>>

那么对于

Add

操作与

Concat

操作,它们中间有哪些区别与联系呢?

3. 联系

add

concat

形式都可以理解为整合多路分支

feature
map

的信息,只不过

concat

比较直观(同时利用不同层的信息),而

add

理解起来比较生涩(为什么两个分支的信息可以相加?)。

concat

操作时时将通道数增加,

add

是特征图相加,通道数不变。

对于两路通入而言,其大小(

H, W

)是一样的。假设两路输入的通道分别为

X_{1}, X_{2}, … X_{c}

Y_{1}, Y_{2},…Y_{n}

则对于

Concat

的操作,通道数相同且后面带卷积的话,

add

等价于

concat

之后对应通道共享同一个卷积核。

当我们需要聚合的两个分支的

Feature

叫做

X

Y

的时候,我们可以使用

Concat

, 概括为:

Z_{out}=\sum_{i=1}^{c} X_{i} * K_{i}+\sum_{i=1}^{c} Y_{i} * K_{i+c}

对于

add

的操纵,可以概括为:

Z_{\text {add }}=\sum_{i=1}^{c}\left(X_{i}+Y_{i}\right) * K_{i}=\sum_{i=1}^{c} X_{i} * K_{i}+\sum_{i=1}^{c} Y_{i} * K_{i}

因此,采用

add

操作,我们相当于加入一种先验。当两个分支的特征信息比较相似,可以用

add

来代替

concat

,这样可以更节省参数量。

4. 区别

  • 对于
Concat

操作而言,通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。

  • 对于
add

层更像是信息之间的叠加。这里有个先验,

add

前后的

tensor

语义是相似的。

5. 结论

因此,像是需要将

A

B

Tensor

进行融合,如果它们语义不同,则我们可以使用

Concat

的形式,如

UNet

,

SegNet

这种编码与解码的结构,主要还是使用

Concat

而如果

A

B

是相同语义,如

A

B

是不同分辨率的特征,其语义是相同的,我们可以使用

add

来进行融合,如

FPN

等网络的设计。

- END -

其它干货


大家好,我是灿视。目前是位算法工程师 + 创业者 + 奶爸的时间管理者!

我曾在19,20年联合了各大厂面试官,连续推出两版《百面计算机视觉》,受到了广泛好评,帮助了数百位同学们斩获了BAT等大小厂算法Offer。现在,我们继续出发,持续更新最强算法面经。

我曾经花了4个月,跨专业从双非上岸华五软工硕士,也从不会编程到进入到百度与腾讯实习。

本文分享自微信公众号 - 灿视学长(baimianAI) ,作者:灿视

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2021-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[灿视学长]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1829662

随机推荐