Scale-Invariant Error

文章目录

Eigen D., Puhrsch C. and Fergus R. Depth Map Prediction from a Single Image using a Multi-Scale Deep Network. NIPS 2014.

看这篇文章单纯是为了看一看这个scale-invariant error.

主要内容

我们时常通过平方误差来衡量两个图片的差异, 但是这个损失是很依赖与scale的.
比如, 有两个图片 x , x ′ \bm{x}, \bm{x}' x,x, 则其误差为
∥ x − x ′ ∥ 2 2 = ∑ i = 1 n ( x i − x i ′ ) 2 , \|\bm{x} - \bm{x}'\|_2^2 = \sum_{i=1}^n (\bm{x}_i - \bm{x}_i')^2, xx22=i=1n(xixi)2,
倘若此时 x x x的每一个元素都增加了 c c c, 则变成了
∥ x + c − x ′ ∥ 2 2 , \|\bm{x} + c - \bm{x}'\|_2^2, x+cx22,
这个实际不是非常友好的, 我们是希望这个损失最好是Scale-Invariant的, 所以我们在损失的部分加入一个值
∥ x − x ′ + α ∥ 2 2 , \| \bm{x} - \bm{x}' + \alpha \|_2^2, xx+α22,
注意, 这里的 x \bm{x} x可以理解为 x + c \bm{x} + c x+c, 那么选择一个怎样的 α \alpha α能够使得上述的误差最小呢(关于特定的 x , x ′ \bm{x}, \bm{x}' x,x).
2 ( x − x ′ + α ) T 1 = 0 ⇒ α = 1 n ( x ′ − x ) T 1 = 1 n ∑ i = 1 n ( x i ′ − x i ) . 2(\bm{x} - \bm{x}' + \alpha)^T \bm{1} = 0 \Rightarrow \alpha = \frac{1}{n} (\bm{x}'- \bm{x})^T \bm{1} = \frac{1}{n}\sum_{i=1}^n (x_i' - x_i). 2(xx+α)T1=0α=n1(xx)T1=n1i=1n(xixi).

故, 最后的损失函数是
∥ x − x ′ + 1 n ( x − x ′ ) T 1 ∥ 2 2 = ∥ x − x ′ ∥ 2 2 − 1 n ( ( x − x ′ ) T 1 ) 2 . \| \bm{x} - \bm{x}' + \frac{1}{n}(\bm{x} - \bm{x}')^T \bm{1}\|_2^2 = \|\bm{x} - \bm{x}'\|_2^2 - \frac{1}{n} ((\bm{x} - \bm{x}')^T \bm{1})^2. xx+n1(xx)T122=xx22n1((xx)T1)2.

注: 如果我们将像素置于对数空间, 即考虑 log ⁡ x \log \bm{x} logx, 则上述实际上考虑的 c ⋅ x c \cdot \bm{x} cx 的scale.

代码

import torch
import torch.nn as nn
import torch.nn.functional as F

def scale_invariant_loss(outs: torch.Tensor, targets: torch.Tensor, reduction="mean"):
    """
    outs: N ( x C) x H x W
    targets: N ( x C) x H x W
    reduction: ...
    """
    outs = outs.flatten(start_dim=1)
    targets = targets.flatten(start_dim=1)
    alpha = (targets - outs).mean(dim=1, keepdim=True)
    return F.mse_loss(outs + alpha, targets, reduction=reduction)

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值