yikaiw / CEN

[TPAMI 2023, NeurIPS 2020] Code release for "Deep Multimodal Fusion by Channel Exchanging"
MIT License
284 stars 43 forks source link

In the end of CE #16

Closed rginjapan closed 2 years ago

rginjapan commented 2 years ago

你好,将设我有AB两个模态,AB之间做CE,如果我理解正确的话,会让一个其中一个feature vector变得越来越重要,另一个越来越不重要,那么最后是应该直接丢弃那个越来越不重要的,还是用soft_alpha去fuse他们两个呢。。。

yikaiw commented 2 years ago

Hi,如果AB之间做CE,对于某些channel,会让其中一个feature map变得越来越重要,另一个越来越不重要。最后丢弃那个不重要的,并用另一模态相应位置的feature map来替代。soft_alpha跟feature map无关,它只是用来在最终的prediction进行ensemble的。

rginjapan commented 2 years ago

你好,所以说CE就是最后丢弃不重要的那个feature map.。我看了一篇对您CE应用的文章,发表于机器人顶会ICRA2022. http://www.ok.sc.e.titech.ac.jp/res/MLF-VO/

截屏2022-07-28 15 20 36

按照您对CE的解释,那在最后一个CE结束之后,应该只用一个feature map,而不是依旧fuse这两个吧。他文章中的解释是:The final output of relative pose is obtained as a weighted sum of the outputs of each stream, where the weighting factor is jointly learned during the training. 我也看了他的代码,https://github.com/Beniko95J/MLF-VO/blob/master/models/multi_layer_fusion.py#:~:text=x%20%3D%20%5Btorch.cat,1%5D%5B%3A%2C%203%3A6%5D。他确实是用一个weight factor: alpha_soft去fuse了。那请问是不是这样用CE是有问题的呢。。。

yikaiw commented 2 years ago

因为CE是双向的,对于某些channel,可能模态A重要,对于其他channel,可能模态B重要。因此,在最后一个CE结束后,依然会有两个模态分支对应的feature map。可以参考CEN论文中的Figure 2。

这篇ICRA文章对CE的解释是对的,网络最终会得到RGB prediction、depth prediction以及用alpha_soft加权得到的ensemble prediction,这三个prediction都分别与ground truth计算损失函数。

rginjapan commented 2 years ago

因为CE是双向的,对于某些channel,可能模态A重要,对于其他channel,可能模态B重要。因此,在最后一个CE结束后,依然会有两个模态分支对应的feature map。可以参考CEN论文中的Figure 2。

谢谢您的回复,可是交换的方向不是一定的么,就是中A中重要的会继续在A中,B中重要的会被交换到A中,A中不重要的也会被交换到B中,那么最后留下A不就好了么。为什么还要fuseA和B呢,B中的重要channel已经交换到A了啊,我是有什么理解的不对的地方么?

yikaiw commented 2 years ago
image

如图所示,对于某个通道,交换的方向是一定的。A中重要的会继续在A中,A中不重要的会被B对应位置替换,CE主要是在发现不重要的通道(并将其替代),并不能直接找到重要的通道,所以“B中的重要channel已经交换到A了”这样说不太准确。

rginjapan commented 2 years ago

@yikaiw 谢谢您,🙏。 还是我对CE的理解有问题,对于AB来说都是重要的会继续在自己这里,不重要的会被对方那个channel替换,对么?这样的话就make sense了。

yikaiw commented 2 years ago

不客气。对的

rginjapan commented 2 years ago

@yikaiw 做CE交换的时候用一个threshold来比较,假如A的bn<threshold, 就用B的特征,可是怎么保证这个时候B的特征对A来说是好的呢?

yikaiw commented 2 years ago

可以参考CEN文章的Figure 3,应该不能直接保证,但实验发现这种交换过去的特征信息量是相对更大的。