GwcNet:逐组相关的立体匹配网络(CVPR 2019)

概述

GwcNet源于文章《Group-Wise Correlation Stereo Network》,是CVPR2019的文章。
文章链接。无论是什么时候的理论发展,总是站在前人的基础上一步一步的去推进,GwcNet也是在PSMNet上进行的扩展。在前人基础上,做出一些一些的改进,才有了精度更好的效果,而GwcNet相比起PSMNet则做出了这样的改动:

  1. 使用group-wise相关的代价空间。
  2. 使用了改进的3D stacked 沙漏网络(hourglass network)。

暂时看来,其group-wise相关的代价空间对后来的网络有一定的借鉴意义。

网络架构

在这里插入图片描述
图一是整体的gwc-net的架构,分为四个部分,一维的特征提取,代价空间的构建,3D的代价聚合以及视差预测,和传统的立体匹配方法基本上对应上了。至于代价空间被分成了两个部分,一个是直接级联的Cat(通过级联左右特征得到的),另一个是通过group-wise相关得到的Gwc。
图二则是3D 代价聚合模块的架构。这个网络先是在开头整了四个卷积,然后紧跟着,整了3个3D hourglass network。然后移除掉了hourglass network之间的shortcut connections。

3.2. Group-wise correlation volume

要说group-wise的cost volume的话,那么先去看看与之相对的,之前的cost volume是如何构造的。以psm-net的描述为例。在psm-net中有着这样的描述—“We concatenate the left and right feature maps into a cost volume”,而这个cost volume是4D(高 × \times × × \times ×视差 × \times ×特征的size)的,由左右特征级联而成的。在实际代码中,有:

def build_concat_volume(refimg_fea, targetimg_fea, maxdisp):
    B, C, H, W = refimg_fea.shape
    volume = refimg_fea.new_zeros([B, 2 * C, maxdisp, H, W])
    for i in range(maxdisp):
        if i > 0:
            volume[:, :C, i, :, i:] = refimg_fea[:, :, :, i:]
            volume[:, C:, i, :, i:] = targetimg_fea[:, :, :, :-i]
        else:
            volume[:, :C, i, :, :] = refimg_fea
            volume[:, C:, i, :, :] = targetimg_fea
    volume = volume.contiguous()
    return volume

具体解释见另一篇博客,在此不赘述。
而对于基于其进行改进的group-wise correlation volume,代码为:

def groupwise_correlation(fea1, fea2, num_groups):
    B, C, H, W = fea1.shape
    assert C % num_groups == 0
    channels_per_group = C // num_groups
    cost = (fea1 * fea2).view([B, num_groups, channels_per_group, H, W]).mean(dim=2)
    assert cost.shape == (B, num_groups, H, W)
    return cost


def build_gwc_volume(refimg_fea, targetimg_fea, maxdisp, num_groups):
    B, C, H, W = refimg_fea.shape
    volume = refimg_fea.new_zeros([B, num_groups, maxdisp, H, W])
    for i in range(maxdisp):
        if i > 0:
            volume[:, :, i, :, i:] = groupwise_correlation(refimg_fea[:, :, :, i:], targetimg_fea[:, :, :, :-i],
                                                           num_groups)
        else:
            volume[:, :, i, :, :] = groupwise_correlation(refimg_fea, targetimg_fea, num_groups)
    volume = volume.contiguous()
    return volume

可以看到,所谓的group-wise相关的代价体其实是将unary features分成许多个组,然后一个组一个组的计算他们的点积,也就是得到代价,这更贴近于我们传统匹配方法中代价的概念,而且通过组的概念减少了参数。在网络中,这个group-wise相关的cost volume后面还跟着级联的cost volume,只不过后面跟着的级联的cost volume的通道要少一些。文章中说,实验结果证明这种相关的cost volume与级联的cost volume是complementary的。

3.3 Improved 3D aggregation module

在psm-net中,代价聚集模块使用的网络架构是stacked hourglass。
gwc-net在其基础上又加了一个辅助输出的模块。此外,去除了不同output模块之间的连接。通过 1 × 1 × 1 1 \times 1\times1 1×1×1的3D卷积在每个hourglass模块间形成了连接。再放一次代价聚集的模块图,可以和附录中的psm-ne代价聚集部分的网络进行比对。
在这里插入图片描述

3.4 Output module and loss function

注意到在代价聚集模块中,有0,1,2,3共四个output module, 对于每一个output module而言,都有两个3D卷积,使其输出为一个4D的cost volume, 随即这个volume被上采样并通过在视差维度上使用softmax
函数将其转换为一个概率volume。此时,就可以使用以下公式得到每一个像素的估计视差:
d ~ = ∑ k = 0 D m a x − 1 k ⋅ p k \widetilde d = \sum_{k=0}^{D_{max}-1}k \cdot p_k d =k=0Dmax1kpk
其中, k k k p k p_k pk分别表示候选视差的下标以及对应的概率。
从四个output module输出的视差分别记为 d ~ 0 \widetilde d_0 d 0, d ~ 1 \widetilde d_1 d 1, d ~ 2 \widetilde d_2 d 2, d ~ 3 \widetilde d_3 d 3
对于整个网络来说,整体的损失函数为:
L = ∑ i = 0 i = 3 λ i ⋅ S m o o t h L i ( d ~ i − d ∗ ) L = \sum_{i=0}^{i=3} \lambda _i \cdot Smooth_{L_i}(\widetilde d_i - d^{*}) L=i=0i=3λiSmoothLi(d id)
其中, λ i \lambda_i λi表示第 i i i个视差结果的系数, d ∗ d^{*} d表示真值, S m o o t h L 1 Smooth_{L_1} SmoothL1就是Smooth L1,相对于 L 1 L1 L1损失来说处理了0附近的梯度爆炸问题,具体为:

S m o o t h L 1 ( x ) = { 0.5 x 2 ,  if  ∣ x ∣ < 1 ∣ x ∣ − 0.5 ,  otherwise  Smooth_{L_{1}}(x)=\left\{ \begin{array}{ll}0.5 x^{2}, & \text { if }|x|<1 \\ |x|-0.5, & \text { otherwise }\end{array} \right. SmoothL1(x)={0.5x2,x0.5, if x<1 otherwise 

附录

hourglass network

文中的hourglass network可以追踪到PsmNet,在psm-net中首次出现的关于hourglass的原文是:
“Moreover, we design a stacked hourglass
3D CNN in conjunction with intermediate supervision to
regularize the cost volume. The stacked hourglass 3D CNN
repeatedly processes the cost volume in a top-down/bottomup manner to further improve the utilization of global context information.”
即,设计的stacked hourglass 3D CNN模块中间加了自监督,这个模块反反复复的对代价空间进行处理,目的就是尽可能多的利用全局语义信息。
下图为PSM的整体网络结构,我用红框标出来的部分就是stacked hourglass了:
在这里插入图片描述
其实stacked hourglass network的出处是《Stacked Hourglass Networks for Human Pose Estimation》,作者设计这个网络的初衷是想要捕捉整合图像所有尺度的信息,至于为什么叫做stacked hourglass network呢,其实就是这个网络结构,长得很像堆起来的沙漏。
参考链接1:源于知乎

<think>好的,我现在需要处理用户关于如何撰写技术简历或寻找技术简历模板的请求。首先,用户可能希望得到具体的结构建议、内容优化方法以及模板资源。根据任务要求,我需要调用网络搜索工具来获取相关信息,并整合成清晰的步骤,同时避免使用第一人称和步骤词汇,还要分点说明。 首先,用户需要技术简历的结构。根据搜索的结果,技术简历通常包括联系信息、职业目标、技术技能、项目经验、工作经历、教育背景和证书等部分。需要强调技术技能部分,分门别类列出编程语言、框架、工具等,并量化熟练程度。例如,可以将技能分为“精通”、“熟悉”、“了解”等级别。 接下来是项目经验,这部分对技术简历尤为重要。需要详细描述每个项目的技术细节,使用STAR法则(情境、任务、行动、结果)来展示问题解决能力。同时,加入量化成果,比如性能提升百分比、用户增长数据等,能增加说服力。例如:“优化数据库查询,将响应时间从2秒降低至0.5秒,效率提升60%。” 在工作经历部分,应突出技术职责和成就,而不仅仅是岗位描述。使用动词开头,如“开发”、“设计”、“优化”,并配合具体的技术栈和成果。例如:“主导微服务架构设计,使用Spring Boot和Docker容器化部署,系统吞吐量提升40%。” 关于模板资源,GitHub、LaTeX和Notion都是常用平台。需要提供具体的链接或搜索关键词,如“Awesome CV模板GitHub”、“Overleaf技术简历模板”,方便用户直接访问。同时提醒避免使用复杂设计,保持简洁专业,使用ATS友好的格式,比如避免表格和图形元素。 在注意事项方面,关键词匹配很重要,用户需要根据招聘要求调整简历中的技术术语。另外,版本控制和持续更新也是重点,建议使用Git管理简历版本,并定期更新项目经验。 最后,检查格式要求,确保没有使用第一人称,分点用换行分隔,代码和公式部分正确使用格式。比如,在提到Git命令时用代码块包裹,并注明语言类型。数学公式如果有的话,正确使用$符号包裹。 生成相关问题部分时,要基于用户的原问题,比如如何量化项目成果、ATS优化技巧、技术简历常见错误等,确保问题相关且具有延伸性。</think>技术简历撰写需遵循结构化表达与专业内容展示原则,以下为关键要点及资源推荐: **一、核心模块构建** 1. **技术技能分层呈现** 按熟练度分类标注编程语言、框架及工具,例如: - 编程语言:Python(精通)、Java(熟练)、Rust(了解) - 开发框架:Django(项目级应用)、React(件开发经验) - 工具链:Git/GitLab CI、Docker/Kubernetes、AWS EC2 2. **项目经验深度解析** 采用技术指标+业务影响的双维度描述: > "设计分布式日志采集系统(ElasticSearch+Fluentd),实现200+节点实时监控,错误排查效率提升70%" > "重构单体架构为微服务(gRPC+Protobuf),API平均响应时间从800ms降至120ms" 3. **工作经历技术聚焦** 突出技术决策与实施细节: - 主导MySQL到TiDB的迁移方案,处理200TB级数据,QPS从1.2k提升至8.5k - 实现基于BERT模型的文本分类系统(准确率92.5%),集成至客户服务平台 **二、模板资源推荐** ```markdown # 技术简历模板源 - [GitHub热门仓库](https://github.com/sb2nov/resume):Latex工程师模板(Star 8.2k+) - [Overleaf模板库](https://www.overleaf.com):搜索"Modern Technical Resume" - [Notion模版库](https://www.notion.so):技术岗位专用模板套件 ``` **三、格式优化技巧** 1. **ATS兼容性原则** - 使用标准标题如"Work Experience"而非"Professional Journey" - 避免表格/图形元素,采用纯文本+项目符号 - 嵌入JD关键词:$匹配度 \geq 80\%$ 2. **版本控制实践** ```bash # 简历版本管理示例 git init my-resume git checkout -b "2024-swe-version" ``` **四、量化公式应用** 技术成果可通过公式强化表达: $$ 性能提升比 = \frac{T_{原始} - T_{优化}}{T_{原始}} \times 100\% $$ $$ 系统可靠性 = 1 - \frac{故障时间}{总运行时间} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLOWVERSE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值