立体匹配 -- GC-Net网络结构分析

本文深入解析GC-Net的网络结构,包括特征提取、cost volume构建、3D卷积下采样、上采样过程及视差回归。通过2D卷积和残差网络提取特征,形成代价体后,利用3D卷积进行下采样,再通过上采样恢复细节,最终进行视差回归。
摘要由CSDN通过智能技术生成
  1. 首先看代码要对应着网络结构图和网络层的表格。
    在这里插入图片描述
    在这里插入图片描述
一.Unary Features 特征提取

1.使用2-D卷积提取深度特征。首先使用fiter size:5*5,stride:2的conv2d 将输入降维(1/2H,1/2W).

 imgl0=F.relu(self.bn0(self.conv0(imgLeft)))
 imgr0=F.relu(self.bn0(self.conv0(imgRight)))
self.conv0=nn.Conv2d(3,32,5,2,2)
self.bn0=nn.BatchNorm2d(32)

2.后面紧接着是8层残差网络。
在这里插入图片描述

  • 注意到这里 num_block[0] ,这里的取值是8 代表八层残差,变量定义在下面
 self.res_block=self._make_layer(block,self.in_planes,32,num_block[0],stride=1)
 def _make_layer(self,block,in_planes,planes,num_block,stride):
        strides=[stride]+[1]*(num_block-1)
        layers=[]
        for step in strides:
            layers.append(block(in_planes,planes,step))
        return nn.Sequential(*layers)
  • 注意到这个’num_block’参数,是一个数组 [8,1],
  • 这个for循环需要注意一下,因为残差结构穿进去的num_block=8,所以这里strides=[[1],[1],[1],[1],[1],[1],[1],[1]],step每次取值都是,所以传到block中的步长stride=1

def GcNet(height,width,maxdisp):
    return GC_NET(BasicBlock,ThreeDConv,[8,1],height,width,maxdisp)
  • 下面详细剖析8层残差的代码细节
  • 残差结构有两层conv(input=32,output=32,kernel_size=3,stride=1,padding=1)组成,
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值