光流,liteflownet
code:mmflow
CVPR2018
FlowNet2是最先进的光流估计卷积神经网络(CNN),需要超过160M的参数来实现精确的流量估计。在本文中,我们提出了一种替代网络,它在Sintel和KITTI基准测试上优于FlowNet2,同时在模型尺寸上要小30倍,在运行速度上要快1.36倍。这是通过深入研究当前框架中可能被遗漏的架构细节而实现的:(1)我们通过轻量级级联网络在每个金字塔级提出了一种更有效的流推理方法。它不仅通过早期校正提高了流量估计的精度,而且还允许在我们的网络中无缝地合并描述符匹配。(2)我们提出了一种新的流正则化层,利用特征驱动的局部卷积来改善异常值和模糊流边界的问题。(3)我们的网络拥有一个有效的金字塔特征提取结构,并包含特征扭曲,而不是像FlowNet2中所实践的图像扭曲。
encode是多层的不同尺度的卷积,输出6个尺度。直接看配置
encoder=dict(
type='NetC',
in_channels=3,
pyramid_levels=[
'level1', 'level2', 'level3', 'level4', 'level5', 'level6'
],
out_channels=(32, 32, 64, 96, 128, 192),
strides=(1, 2, 2, 2, 2, 2),
num_convs=(1, 3, 2, 2, 1, 1),
conv_cfg=None,
norm_cfg=None,
act_cfg=dict(type='LeakyReLU', negative_slope=0.1),
init_cfg=None),
整体流程
if upflow is None:
warp_feat = feat2
upflow = torch.zeros_like(feat1)
else:
warp_feat = self.warp_op(feat2, upflow * multiplier)
corr_feat = self.corr(feat1, warp_feat)
corr_feat = self.corr_up(corr_feat)
feat = self.layers(corr_feat)
res_flow = self.pred_flow(feat)
return upflow[:, :2, ...] + res_flow
netS
warp_feat = self.warp_op(feat2, flow * multiplier)
feat = torch.cat((feat1, warp_feat, flow), dim=1)
feat = self.layers(feat)
res_flow = self.pred_flow(feat)
return flow + res_flow