【光流】——《GMFlow: Learning Optical Flow via Global Matching》基于全局匹配的光流估计算法可视化
gmflow中采用矩阵乘法求两个图像的全局匹配,而以前的光流算法多采用一定半径的局部求相关性,而两个超多元素的矩阵乘法会严重增加计算量,所以这里对全局匹配的结果进行可视化,进行直观感受。gmflow中全局匹配的code就是对两个特征用matmul求相关性。后面可视化就是对的可视化。整体流程:code:第一张图是前向光流可视化图,第二张图分别是400个点对应的ativation map图。可以看到:
·
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还是有不一样的。
总结
- 找一种高效的局部匹配方式进行替换。
更多推荐
所有评论(0)