立体匹配 --视差预测‘soft argmin‘

立体匹配中,精准视差图的获取是关键,传统方法通过'argmin'求解最小值。然而,'argmin'不具可微性,阻碍了深度学习的反向传播。GCNet引入'软argmin',利用softmax将成本体积转化为概率分布,生成可计算损失的2D视差图,便于网络优化和反向传播。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.立体匹配的关键任务就是预测精准的视差图,对于视差图每一个像素位置的值并不是(0-255)灰度值,而是一个视差值。
2.那么这些视差值如何得到的呢,最开始是由传统方法的 ’argmin‘得到。

  • arg min 就是使后面这个式子达到最小值时的变量的取值。
  • 例如 函数F(x,y):

arg min F(x,y)就是指当F(x,y)取得最小值时,变量x,y的取值。

3.但这个 'argmin’并不可微,也就是说无法反向传播。
在这里插入图片描述

  • 所以 GCNet这篇文章提出了’soft argmin’这个函数。
    在这里插入图片描述
    在这里插入图片描述
  • 这个函数是‘softmax’操作,经常用于cv的分类任务中,将预测值转换为概率。就是最后的fc-layer将每个分类都赋予概率值。
    在这里插入图片描述
    4.那么在立体匹配中 'soft max’这个函数是如何使用的呢?
### Soft-Argmax 的概念 Soft-argmax 是一种平滑版本的最大值索引选取操作,在神经网络中常用来替代传统的 argmax 函数。传统 argmax 返回的是最大值的位置,是一个离散的选择过程,这使得梯度无法回传给前一层参数更新造成困难。而 soft-argmax 则通过引入 softmax 层来计算加权平均位置,实现了连续化处理,允许反向传播机制正常工作。 定义上,设有一个输入张量 \(X\) ,则 soft-argmax 可表示为: \[ \text{soft\_argmax}(X) = \sum_i i \cdot P(i|X), \] 其中 \(P(i|X)\) 表示经过 softmax 转换后的概率分布[^1]。 ```python import torch import torch.nn.functional as F def soft_argmax(x, beta=100): """ 计算软 argmax. 参数: x (Tensor): 输入张量 beta (float): 温度参数,默认设置较大以逼近硬 argmax 返回: Tensor: 输出张量 """ # 应用softmax函数获得权重 weights = F.softmax(beta * x, dim=-1) # 创建索引tensor并与weights相乘求和得到最终结果 indices = torch.arange(start=0, end=x.shape[-1], dtype=torch.float).to(x.device) result = torch.sum(weights * indices, dim=-1) return result ``` 此 Python 代码片段展示了如何实现一个简单的 soft-argmax 函数。`beta` 参数控制着输出接近真实 argmax 的程度;当 `beta` 值很大时,soft-argmax 将更倾向于返回单个峰值位置而不是多个可能位置之间的均值。 ### Soft-Argmax 的应用场景 在机器学习领域内,soft-argmax 已经被应用于多种场景之中,特别是在那些需要保持可微性的任务里。例如姿态估计、关键点检测以及热图回归等问题都可以见到它的身影。这些应用通常涉及到定位图像中的特定特征点或区域中心的任务,此时采用 soft-argmax 不仅能够提高精度还能简化优化流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值