前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVPR单目深度估计竞赛结果出炉,腾讯光影研究室优势夺冠,成果落地应用

CVPR单目深度估计竞赛结果出炉,腾讯光影研究室优势夺冠,成果落地应用

作者头像
机器之心
发布2021-06-08 11:03:58
1.3K0
发布2021-06-08 11:03:58
举报
文章被收录于专栏:机器之心机器之心

机器之心专栏

作者:腾讯光影研究室

MAI(Mobile AI Workshop)是由 CVPR 主办的 Workshop 竞赛。MAI 2021 挑战赛赛已于 2021 年 2 月至 4 月线上举行。近期,MAI 2021 公布了各项挑战赛的最终结果,腾讯光影研究室的 Tencent GYLab 团队在单目深度估计项目上以绝对优势获得冠军。

竞赛结果及相关论文可见:https://arxiv.org/pdf/2105.08630.pd

任务介绍

MAI 2021 单目深度估计挑战赛:基于 RGB 图的实时高性能单目深度估计,任务要求在移动端硬件上对输入的图像实时计算出其场景深度。

输入:输入文件为 RGB 图像,其分辨率为 480x640;

输出:对每一张输入文件,计算出其场景深度。输出深度的分辨率与输入图像分辨率相同;

评价指标:评价方式分为精度指标和速度指标两部分,参赛队伍提交模型(TFLite),由比赛主办方负责在标准平台上测试得出两部分指标。

其中,精度指标:si-RMSE,表征预测得到的深度和 Ground Truth 在 Log 域上的距离,即 Scale 的距离;速度指标:通过测试 TFLite 模型在树莓派(Raspberry Pi 4)上的运行耗时得到。最终排名以精度指标和速度指标相结合的方式呈现,其计算公式为:

团队成绩:来自腾讯光影研究室的 Tencent GYLab 团队以绝对优势获得冠军。

比赛难点有以下两点:

  • 相比于传统单目深度估计算法,MAI 更偏重在移动端上的速度,需要优化足够轻量级的小模型
  • 数据来源于主办方使用 Zed 双目摄像头采集的 RGBD 室外场景数据,数据量有限,存在过拟合(Overfit )风险

引言

单目深度估计任务与语义分割任务类似,都是针对输出的特征图(Feature Map)在像素层级上的监督。两者的区别在于传统的语义分割可以视为对每个像素点的分类任务,而深度估计可以看作对每个像素点的回归。

Tencent GYLab 团队参考常规语义分割模型的设计方式,使用编码器 - 解码器( Encoder - Decoder)的结构,并加以知识蒸馏的方法,实现了移动端高效且高精度的单目深度估计算法。

算法技术方案

模型结构设计

涉及到移动端上的模型优化,网络结构是绕不去的一环。单目深度估计模型采用类语义分割模型的编码器 - 解码器结构,在此基础上逐步进行模型的剪枝与小型化。

由于模型部署的硬件是树莓派(Raspberry Pi 4),且模型会在 FP32 精度下以常规 CPU 测试,因此首先需要明确此次模型小型化的优化目标:对 CPU 运算友好的结构,且不含各类框架、指令集的优化。

我们采用了以 Depthwise 卷积为基础的 MobileNetV3 作为模型的编码器,以逐层两倍上采样的方法构建 解码器,两者之间以残差连接(Skip Connection)相连。在上采样的过程中,我们使用 Resize + Depthwise 卷积的方案代替传统的 反卷积(Deconvolution),以求在保持精度的情况下获得高快的速度。

我们以此模型框架创建了不同宽度的单目深度模型,以求在速度和精度之间找到平衡点。根据我们在自己划分的 trainval 测试集上的实验结果,模型在树莓派上的推理速度大致与其计算量呈线性关系。我们选取了综合指标最高的 90MFLOPS 模型作为后续迭代优化的基础实验,它在树莓派上的运行速度已经高于 10FPS,单帧图像的推理耗时小于 100ms。

备注:以上精度指标 si-RMSE 在自己划分的 trainval 测试集上得到。

知识蒸馏体系

在模型规模变小的过程中,势必会伴随着精度损失。当前常规模型小型化的手段包括剪枝和蒸馏,此处我们采用蒸馏方案 (Knowledge Distillation)。

我们的 Teacher 模型采用开源的 Bts 算法,其模型权重是在此次比赛提供的数据上重新训练获得。由于单目深度估计任务可以看做对输出的特征图上每个点的回归,直接在输出层做软标签(Soft Label)的蒸馏会使模型的监督产生二义性,因此我们选择对模型解码器中每一个分辨率的特征图采取 Hint Feature 的蒸馏监督。

在蒸馏训练过程中,Teacher 和 Student 保持相同的输入分辨率 (128x160),由此在解码器处可以拿到分辨率相同但宽度不同的特征图。我们在 Student 解码器模型后为每一个分辨率增加一层随机初始化的 1x1 Conv,使得两者的形状能够完全相同而监督能够生效。这一层 1x1 Conv 只会在模型训练中发挥作用,在模型推理和部署时,这些冗余的卷积层会被剥离使得模型速度完全不受影响。

通过蒸馏,Baseline 90MFLOPS 模型的精度从 0.3304 提升到了 0.3141,并且模型的推理速度得以保持不变。

数据扩增方案

比赛官方给出了 7385 张训练集图片(带 GT)和 500 张验证集图片(不带 GT),这一数量对于训练一个深度学习模型是不足的,因此我们自然会产生数据增强的需求。

我们以在训练过程中在线数据增强的形式扩展数据集。数据增强分为颜色和形变两个维度。颜色空间上的数据增强包括常规的亮度、对比度、饱和度变化,也会以一定的概率进行颜色空间反转和椒盐噪声增强。

图像形变上的数据增强包括常规的镜像、仿射变换等。除此之外,我们实现了单目深度 RGBD 图像的随机 Crop,利用相似三角形的原理实现深度补偿,在按比例 Crop 出一块区域后将其中的深度值按比例放大。其背后的原理类似于使用相机拍摄时,把画面放大和拍摄者向前走能达到一样的效果。

模型转换链路

Mobile AI Depth 竞赛要求提交的模型以 Float32 TFLite 形式在树莓派(Raspberry Pi 4)上以 CPU 运行。这意味着传统针对卷积等基础算子在 CPU 上的计算优化是不可用的,模型的速度实打实的和模型计算量正相关。

我们当前的模型采用 PyTorch 框架进行训练,为了满足比赛提交要求,我们打通了从 PyTorch -> Onnx -> Keras -> TFLite 这条转换路径的完整链路,并且确保了转换前后模型推理的端到端误差小于 1e-6。

在转换的过程中,从 Onnx 向 Keras 转换的步骤是最困难的,其原因在于当前 Onnx 只支持 CHW 的排布,而 Keras(TF)在 CPU 模式下只支持 HWC 排布,当前没有开源工具能够处理好这一转换环节。在不正确的转换工具下,常规的 Conv2d Layer 会被转换成 Split、Permute、Concat、Conv、Split、Permute、Concat 的组合,其速度自然大幅降低。

为此,我们专门针对这一转换环节开发了常规 PyTorch Layer 向 TensorFlow 转换的工具,使得模型部署不会成为比赛的瓶颈。

在实际的比赛过程中,模型的输入分辨率是 128x160,而比赛的测试图像是 480x640。出于模型速度的考量,模型在获取输入图像后事先 Resize 到输入分辨率,经过模型输出后再 Resize 回图像分辨率。我们将这两个 Resize 环节同样在 TFLite 模型中实现。

结果与总结

采用上述方案,Tencent GYLab 团队在最终的测试集上达到了 129.41 的综合评分,大幅领先其他参赛团队获得冠军。

在保证模型精度的情况下,模型的性能在树莓派上达到 10FPS,证明了该方案在移动端上的有效性。在其他常见移动端芯片的 GPU 环境下,该方案同样保证了高效的性能。

成果落地应用

当前光影研究室的各项 AR 玩法中,或多或少都有单目深度估计技术的身影。通过模型压缩、剪枝、蒸馏获得的小模型可以实时运行在手机移动端,覆盖 iOS 和 Android 各类机型,达到 90% 以上的覆盖率。目前单目深度估计技术已作为基础能力在多个 AR 玩法中发挥作用。

在手机 QQ 的 AR 蛋糕等贴纸类玩法中,单目深度估计技术提供了贴纸目标在空间中的方向与位置,使得 AR 算法能够快速初始化。

在水淹房间特效中,单目深度估计模型可以提供视野中每个点距离相机的远近,结合相机内外参可以计算其在世界坐标系下的位置,从而实现 AR 特效。此外,单目深度也可以单独作为一种 AI 能力,形成雾气等特效效果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档