信息融合举例

特征融合目前有两种常用的方式,一种是addaddadd操作,这种操作广泛运用于ResNetResNetResNet与FPNFPNFPN中。一种是ConcatConcatConcat操作,这种操作最广泛的运用就是UNetUNetUNet,DenseNetDenseNetDenseNet等网络中。如下图所示:

也有如HRNetHRNetHRNet这样的,多分辨率之间使用addaddadd形式的特征融合。

代码演示

>>> 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])
>>>

那么对于AddAddAdd操作与ConcatConcatConcat操作,它们中间有哪些区别与联系呢?

联系

addaddadd 和concatconcatconcat 形式都可以理解为整合多路分支featurefeaturefeature mapmapmap 的信息,只不过concatconcatconcat 比较直观(同时利用不同层的信息),而addaddadd 理解起来比较生涩(为什么两个分支的信息可以相加?)。concatconcatconcat 操作时时将通道数增加,addaddadd 是特征图相加,通道数不变。

对于两路通入而言,其大小(H,WH, WH,W )是一样的。假设两路输入的通道分别为X1,X2,…XcX_{1}, X_{2}, … X_{c}X1​,X2​,…Xc​, Y1,Y2,…YnY_{1}, Y_{2},…Y_{n}Y1​,Y2​,…Yn​。

则对于ConcatConcatConcat的操作,通道数相同且后面带卷积的话,addaddadd等价于concatconcatconcat之后对应通道共享同一个卷积核。

当我们需要聚合的两个分支的FeatureFeatureFeature叫做XXX与YYY的时候,我们可以使用ConcatConcatConcat, 概括为:
Zout=∑i=1cXi∗Ki+∑i=1cYi∗Ki+cZ_{out}=\sum_{i=1}^{c} X_{i} * K_{i}+\sum_{i=1}^{c} Y_{i} * K_{i+c} Zout​=i=1∑c​Xi​∗Ki​+i=1∑c​Yi​∗Ki+c​

对于addaddadd的操纵,可以概括为:
Zadd =∑i=1c(Xi+Yi)∗Ki=∑i=1cXi∗Ki+∑i=1cYi∗KiZ_{\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} Zadd ​=i=1∑c​(Xi​+Yi​)∗Ki​=i=1∑c​Xi​∗Ki​+i=1∑c​Yi​∗Ki​
因此,采用addaddadd操作,我们相当于加入一种先验。当两个分支的特征信息比较相似,可以用addaddadd来代替concatconcatconcat,这样可以更节省参数量。

区别

  • 对于ConcatConcatConcat操作而言,通道数的合并,也就是说描述图像本身的特征增加了,而每一特征下的信息是没有增加。
  • 对于addaddadd层更像是信息之间的叠加。这里有个先验,addaddadd前后的tensortensortensor语义是相似的。

结论

因此,像是需要将AAA与BBB的TensorTensorTensor进行融合,如果它们语义不同,则我们可以使用ConcatConcatConcat的形式,如UNetUNetUNet, SegNetSegNetSegNet这种编码与解码的结构,主要还是使用ConcatConcatConcat。

而如果AAA与BBB是相同语义,如AAA与BBB是不同分辨率的特征,其语义是相同的,我们可以使用addaddadd来进行融合,如FPNFPNFPN等网络的设计。

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

我曾在19,20年联合了各大厂面试官,连续推出两版《百面计算机视觉》,受到了广泛好评,帮助了数百位同学们斩获了BAT等大小厂算法Offer。现在,我们继续出发,持续更新最强算法面经。
我曾经花了4个月,跨专业从双非上岸华五软工硕士,也从不会编程到进入到百度与腾讯实习。
欢迎加我私信,点赞朋友圈,参加朋友圈抽奖活动。如果你想加入<百面计算机视觉交流群>,也可以私我。

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

  1. concat特征融合_深度特征融合---理解add和concat之多层特征融合

    一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...

  2. 深度特征融合--add和concat【转载】

    文章目录 一.如何理解concat和add的方式融合特征 二.concat实操 三.concat与add实例 3.1 Densenet 3.2 Feature-Fused SSD: Fast Dete ...

  3. 卷积神经网络中的add和concat

    参考博客:深度特征融合---理解add和concat之多层特征融合_xys430381_1的博客-CSDN博客_特征图相加 Add是特征图相加,通道数不变 简言之,add是将多次提取到的语义信息叠加, ...

  4. concat特征融合_如何理解concat和add的方式融合特征

    一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...

  5. 几个cvebase_ifo基础信息融合在一起

    代码: # encoding=utf-8 ''' 几个基础信息融合在一起 ''' import json if __name__ == '__main__':cve_inf1_file = open( ...

  6. 多传感器信息融合算法总结

    多传感器信息融合算法总结

  7. d-s 多传感器信息融合 matlab实现_自动驾驶中的多传感器融合

    一.多传感器融合多传感器信息融合(Multi-sensor Information Fusion,MSIF),就是利用计算机技术将来自多传感器或多源的信息和数据,在一定的准则下加以自动分析和综合,以完 ...

  8. opencv 通过标定摄像头测量物体大小_视觉激光雷达信息融合与联合标定

    点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 编者按 最近在为车辆添加障碍物检测模块,障碍物检测可以使用激光雷达 ...

  9. matlab 信息融合,MSDF,matlab,多传感器信息融合

    MSDF,matlab,多传感器信息融合 关注次数: 164 下载次数: 15 文件大小: 7.52M 下载需要积分: 1 代码分类: 开发平台: matlab 上传会员: yhcpp 下载代码 预览 ...

最新文章

  1. Linux系统下给Qt应用程序配置图标(其余的应用程序也是可以实现添加图标的)
  2. PIX failover+负载
  3. 【研究报告】城市云脑,智慧城市2.0产生背后的深层原因,两个重要特征是关键
  4. Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
  5. MIna框架I/O Service层设计
  6. delphi7存储过程传入数组_js数组方法reduce
  7. springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
  8. 前端学习(2536) request和response
  9. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
  10. 数据结构实验 5.二叉树深度
  11. Android RecyclerViewSwipeDismiss:水平、垂直方向的拖曳删除item
  12. 毛发及眼球的渲染技术
  13. 一篇文章告诉你[C++]数组初始化
  14. 使用lockcop软件检测c++死锁
  15. Python向数据库表格里插入万级数据
  16. PHP中百度地图和高德地图经纬度互相转换
  17. CMPSS 涡扇发动机模型
  18. 电信物联网平台对接教程
  19. 读者投稿:阿里 P6 面试体验
  20. helm模板开发-流程控制、作用域、循环

热门文章

  1. 小学四年级计算机学会使用颜色,四年级信息技术《漂亮文字我来变》教案
  2. 【STM32学习】(26)STM32实现舵机旋转并实现超声波检测
  3. 趋高智能机器开发工业相机ccd视觉检测系统定制软件硬件
  4. centos,nodejs升级+GLIBC升级
  5. Python数据分析实战【九】:用Python处理省份城市编码数据【文末源码地址】
  6. monkey测试linux设备,关于使用Monkey运行脚本测试
  7. 安装redhat linux 7 64位
  8. 关于图形的一些基础知识
  9. java接受JSON字符串
  10. 最优化理论与设计——最优化设计的基本概念