gmflow

简介

gmflow中采用矩阵乘法求两个图像的全局匹配,而以前的光流算法多采用一定半径的局部求相关性,而两个超多元素的矩阵乘法会严重增加计算量,所以这里对全局匹配的结果进行可视化,进行直观感受。

1. 全局匹配

gmflow中全局匹配的code

# global correlation
b, c, h, w= feature0.shape
feature0 = feature0.view(b, c, -1).permute(0, 2, 1)  # [B, H*W, C]
feature1 = feature1.view(b, c, -1)  # [B, C, H*W]

correlation = torch.matmul(feature0, feature1).view(b, h, w, h, w) / (c ** 0.5)  # [B, H, W, H, W]
correlation = correlation.view(b, h * w, h * w)  # [B, H*W, H*W]
prob = F.softmax(correlation, dim=-1)  # [B, H*W, H*W]

就是对两个特征用matmul求相关性。后面可视化就是对prob的可视化。

2. 可视化

整体流程:

  • 在feature0的尺度上,高度,宽度方向分别均匀采样N=20个点,整幅图就有N**2个点
  • 画出每个点的Class Activation Map(CAM)图,我参考的代码为:CAM
  • 最后对所有点的CAM图求和,再和原图相加得到最后的可视化图像。

code:
在这里插入图片描述

在这里插入图片描述
第一张图是前向光流可视化图,第二张图分别是400个点对应的ativation map图。
可以看到:

  • 相关性上还是呈现一个局部相关性,所有用matmul理论上应该是非必须的。可以以当前点为基点,在一定范围内做局部匹配
  • 核心的光流部分点的匹配,相较于静止点,其AM还是有不一样的。

总结

  • 找一种高效的局部匹配方式进行替换。
Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐