信息融合之Add与Concat,你了解它们吗?
信息融合举例
特征融合目前有两种常用的方式,一种是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∑cXi∗Ki+i=1∑cYi∗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∑cXi∗Ki+i=1∑cYi∗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,你了解它们吗?相关推荐
- concat特征融合_深度特征融合---理解add和concat之多层特征融合
一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...
- 深度特征融合--add和concat【转载】
文章目录 一.如何理解concat和add的方式融合特征 二.concat实操 三.concat与add实例 3.1 Densenet 3.2 Feature-Fused SSD: Fast Dete ...
- 卷积神经网络中的add和concat
参考博客:深度特征融合---理解add和concat之多层特征融合_xys430381_1的博客-CSDN博客_特征图相加 Add是特征图相加,通道数不变 简言之,add是将多次提取到的语义信息叠加, ...
- concat特征融合_如何理解concat和add的方式融合特征
一.如何理解concat和add的方式融合特征 在各个网络模型中,ResNet,FPN等采用的element-wise add来融合特征,而DenseNet等则采用concat来融合特征.那add与c ...
- 几个cvebase_ifo基础信息融合在一起
代码: # encoding=utf-8 ''' 几个基础信息融合在一起 ''' import json if __name__ == '__main__':cve_inf1_file = open( ...
- 多传感器信息融合算法总结
多传感器信息融合算法总结
- d-s 多传感器信息融合 matlab实现_自动驾驶中的多传感器融合
一.多传感器融合多传感器信息融合(Multi-sensor Information Fusion,MSIF),就是利用计算机技术将来自多传感器或多源的信息和数据,在一定的准则下加以自动分析和综合,以完 ...
- opencv 通过标定摄像头测量物体大小_视觉激光雷达信息融合与联合标定
点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 编者按 最近在为车辆添加障碍物检测模块,障碍物检测可以使用激光雷达 ...
- matlab 信息融合,MSDF,matlab,多传感器信息融合
MSDF,matlab,多传感器信息融合 关注次数: 164 下载次数: 15 文件大小: 7.52M 下载需要积分: 1 代码分类: 开发平台: matlab 上传会员: yhcpp 下载代码 预览 ...
最新文章
- Linux系统下给Qt应用程序配置图标(其余的应用程序也是可以实现添加图标的)
- PIX failover+负载
- 【研究报告】城市云脑,智慧城市2.0产生背后的深层原因,两个重要特征是关键
- Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码
- MIna框架I/O Service层设计
- delphi7存储过程传入数组_js数组方法reduce
- springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
- 前端学习(2536) request和response
- Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
- 数据结构实验 5.二叉树深度
- Android RecyclerViewSwipeDismiss:水平、垂直方向的拖曳删除item
- 毛发及眼球的渲染技术
- 一篇文章告诉你[C++]数组初始化
- 使用lockcop软件检测c++死锁
- Python向数据库表格里插入万级数据
- PHP中百度地图和高德地图经纬度互相转换
- CMPSS 涡扇发动机模型
- 电信物联网平台对接教程
- 读者投稿:阿里 P6 面试体验
- helm模板开发-流程控制、作用域、循环