DVS Domain Adaption Note
Unsupervised Domain Adaption Algorithms
- GRL: Gradient Reversal Layer。 目标是让两个domain的distribution在feature extractor眼中无法区分(即match两个domain使其分布趋同)。
- MMD:Minimize the Maximum Mean Discrepancy between the target and source domain。最小化两个域之间的最大平均差异。作者提出了一个metric来衡量域间差异,通过加loss来抑制这个差异,最终达到让网络最终层输出与域无关的稳定feature。
- AFN:比较玄学。他们说之所以在target domain上表现不好是因为目标向量的norm相比源域的更小。所以它们就逐渐提高深度embedding的L2 norms来解决这个问题。
- Rotation:作者添加了一个额外的自监督任务,即预测图片的绝对旋转角度。因为它同时接受源域和目标域的输入,所以理论上会学的更倾向于用共通的参数。甚至还有人扩展了这个方法,让网络直接去预测paired多模态图片的相对旋转角度。
- Entropy:Grandvalet提出了一种表征目标域不确定性的方法,通过加一个正则项来帮助减缓domain shift的影响。
N-ROD: a Neuromorphic Dataset for Synthetic-to-Real Domain Adaptation
CVPRW, 2021, Site
核心思想就是用已有的上面提到的各种UDA方法来减轻Synthetic和Real Event Data的domain shift。
Pipeline也非常直接,就是给RGB和Event frame分别整一个Feature Extractor,然后让Synthetic的rgb和events feature concat到一起,real的concat到一起,送入一个通用的Domain Adaptation Block(DABlock)作为一个branch,另一个branch做预测。
训练的时候他们用了RGB和Event Frames,但测试的时候只用Event Frames。
值得一提的是,既然能用这种架构,说明上面那些UDA方法都可以被归纳为一个auxiliary head来进行plug-and-play。
另外,他们提供了一个数据集,包含有相同目标的real和syn版本。
Bridging the Gap Between Events and Frames Through Unsupervised Domain Adaptation
IEEE ROBOTICS AND AUTOMATION LETTERS, 2022
感性的认知上,这篇文章主要的手法是循环式Loss,类似cycle gan;主要的逻辑是style transfer。
核心优点有两个:
- 不使用视频生成events,而是从单个image直接生成。
- 不需要paired data。
缺点:
- 高度依赖所参考的events frame的参数,如dvs相机的ego motion speed,events frame的accumulation方法和参数(如时间)
- 有前提假设:环境亮度恒定,且events frame的采样时间短。
不被拒稿的创新点:
首先是整体流程相对新颖,他们通过先生成optical flow,再结合frame图像的gradient和time difference生成events的。
把events frame和rgb image之间的domain adaption转化成了一个style transfer问题。events frame只需要贡献style feature就好,而rgb image则基于这个style,它自己的feature map,以及它自己的gradient输出相应的events frame。最后的loss计算也非常有style transfer的味道:
- 计算原始rgb image和最终生成的events frame的feature map二者对应的content feature的Loss。
- 计算原始event frame和最终生成的events frame的feature map二者对应的style feature的Loss。
通过上述手段,相当于作者强制让event feature extractor和rgb frame feature extractor输出的content feature达成一致,从而做到让RGB frame干的活(task,这里是目标检测)同样的events frame出来的feature也能干。
虽然作者说他的
作者大量使用了Loss,尤其是Adversarial Loss来enforce每个环节生成的内容都足够符合目标域的distribution。
以下是主Loss:
- 原始rgb image的feature map做输入,在task(这里是object Detection)上面的loss。
- 最终生成的events frame的feature map做输入,在task上面的loss。
循环(Cycle)Loss:
- Content部分:让生成的events frame的feature map与最初rgb image的feature map做L1 Loss
- Style部分:让生成的events frame的style feature map和最初events frame的feature map做L1 Loss
对抗Loss:
首先是最开始rgb image和event frame生成的两个feature map,训练一个PatchGAN Discriminator来尽可能区分二者,同时加一个generator loss到主loss。
对生成的events frame和原始的events frame也做一个GAN,尽可能让Discriminator无法区分出来生成的和真实的。
作者不但在深度学习pipeline上做的很好,还充分利用了events 生成的物理知识,通过结合image gradient、optical flow、event trigger mechanism等,在整体流程中把物理prior完美融入。
核心idea是把event features拆分成两部分,一部分是内容,另一部分是运动特征。通过这种方式,他们可以很高效的让events和images的潜在空间(latent space)进行匹配。他们使用了一个生成式事件模型。
虽然说的是直接生成events,实际上生成的是accumulated events frame。
注意他的\(R_{ref}\)并非一个深度学习block,而是一个使用了原图gradient和pseudo flow的内积操作!
同样值得一提的是,他们在pseudo flow generation部分并没有加额外的supervision!之所以即使这样还能生成挺好的pseudo flow,是因为如果想用image gradient和这里生成的东西内积后得到events,根据公式这个feature map必须是flow:
虽然左下角那个content feature没用到,但同样的events feature extractor,再最右边生成的feature map则被用来做了content reference。
作者怎么控制的events feature extractor出来的两个feature map分别代表content和style?
- 通过他定义的各种GAN Loss和Cycle Loss教这两个feature map做人。
他们做的augmentation也挺有趣,基本是这样的:先正常预测到pseudo flow为止,然后适当随机给预测的全局flow加一个bias,预测出events后再次生成pseudo flow,进行cycle loss。目的是确保events frame feature extractor输出的两个feature map分别表征内容和style(motion)。
Object Tracking by Jointly Exploiting Frame and Event Domain
ICCV, 2021
目标问题:Object Tracking。
Modality:DVS+RGB。本文研究的不是domain shift而是domain fusion,或者说,如何用DVS信息来提高RGB表现。
Pipeline理解:
- 首先,每个rgb frame会对应好几个events frame。
- events frame们先每个单独进行feature extraction,self-attention,然后结果被element-wise add到一起。
- rgb frame则直接过一系列的feature extraction blocks,直接得到feature map。
- 这两者的feature map被送到CDMS block中做cross-attention互相融合,然后过adaptive weighting module被分别赋予不同的权重,最后加到一起得到一个统一的feature map。
- 上述过程中,无论是rgb还是events frame,都有深浅两个branch,浅的那个就是early exit。最终会得到两个feature map,一个是\(K_l\),一个是\(K_h\)。
- 后面其实就没什么好说的了,就是单纯把这两个feature map放到classifier和Bbox regressor里面就好了。
Multi-domain collaborative feature representation for robust visual object tracking
- The Visual Computer, 2021
- 目标问题:Object Tracking
- Pipeline:
- 整体思路是比较典中典的N路并行多模态运算啦。
- 第一路:一个SNN feature extractor,输入是raw events(根据shape推算,其实应该是time voxel)。
- 第二路:accumulate events into event count frames, 然后和RGB图concat。之后过一个feature extractor。
- 第三路:RGB-only feature extractor。
- 最后把三路结果concat起来,过一些block,得到tracking result。
- 整体思路是比较典中典的N路并行多模态运算啦。
- 有点意思的是,他们的SNN branch是直接用的pretrain model然后给freeze起来用了。模型来自于“Eventbased angular velocity regression with spiking networks”。