PSMNet debug(四)

 

使用视差回归的方式来估算连续的视差图。根据由softmax操作得到预测代价Cd来计算每一个视差值d的可能性。预测视差值d'由每一个视差值*其对应的可能性求和得到,如下式

 

 

    视差值回归比基于分类的立体匹配方法鲁棒性更强

1.submodule.py

class disparityregression(nn.Module):
    def __init__(self, maxdisp):
        super(disparityregression, self).__init__()
        #self.disp = Variable(torch.Tensor(np.reshape(np.array(range(maxdisp)),[1,maxdisp,1,1])).cuda(), requires_grad=False)
        self.disp = Variable(torch.Tensor(np.reshape(np.array(range(maxdisp)),[1,maxdisp,1,1])).cpu(), requires_grad=False)#ll

    def forward(self, x):
        print('submodule.py disparityregression x ')
        print(x.size()[0])
        print(x.size()[1])
        print(x.size()[2])
        print(x.size()[3])
        print('submodule.py disparityregression self.disp ')
        print(self.disp.size()[0])
        print(self.disp.size()[1])
        print(self.disp.size()[2])
        print(self.disp.size()[3])
        disp = self.disp.repeat(x.size()[0],1,x.size()[2],x.size()[3])

       print('submodule.py disparityregression disp ')
        print(disp.size()[0])
        print(disp.size()[1])
        print(disp.size()[2])
        print(disp.size()[3])


        out = torch.sum(x*disp,1)
        return out

打印结果:

submodule.py disparityregression x 
1
192
384
1248
submodule.py disparityregression self.disp 
1
192
1
1

submodule.py disparityregression disp 
1
192
384
1248

 

2.

def forward(self, x):
        print(self.disp)

        disp = self.disp.repeat(x.size()[0],1,x.size()[2],x.size()[3])

 

submodule.py disparityregression self.disp 
tensor([[[[  0.]],

         [[  1.]],

         [[  2.]],

         [[  3.]],

         [[  4.]],

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值