点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
自监督学习近一年来可谓是计算机视觉的大热门,今天向大家分享一篇来自 CVPR 2023 的论文『Lite-Mono: A Lightweight CNN and Transformer Architecture for Self-Supervised Monocular Depth Estimation』,介绍一个轻量高效的自监督深度估计框架Lite-Mono。
作者:Ning Zhang, Francesco Nex, George Vosselman, Norman Kerle
单位:University of Twente
收录:CVPR 2023
论文:https://arxiv.org/abs/2211.13202
代码:https://github.com/noahzn/Lite-Mono
01
摘要
自监督深度估计在训练时不需要ground truth标签,在近些年引起了学者们的关注。许多已有模型的准确率受益于使用大型的backbones骨干网络,但是代价是模型也变得很大。
本篇论文结合CNNs和Transformers的优点设计了一个轻量级的模型Lite-Mono, 该模型主要包含两个模块:CDC连续空洞卷积(Consecutive Dilated Convolutions)模块,用于提取增强的多尺度局部特征;以及LGFI局部-全局特征交互(Local-Global Features Interaction)模块 ,用于编码长距离的全局特征。
实验显示Lite-Mono在KITTI数据集上的准确率大大超过了Monodepth2,但参数量少了约80%。该模型可以被部署在边缘计算设备上,如Jetson Xavier。
图1. Lite-Mono模型很小,但是能生成更准确的深度图。
02
主要贡献
1. 提出了一个新的轻量级的自监督深度估计网络Lite-Mono。该模型在模型尺寸以及FLOPs的有效性得到了验证。
2. 所提出的模型在KITTI数据集上和其他一些较大的模型进行了比较,并以最少的参数量取得了有竞争力的准确度。模型的泛化能力也在Make3D数据集上得到了验证。此外,本文还讨论了不同设计选择的有效性。
3. 模型的运行速度在NVIDIA TITAN Xp显卡以及Jetson Xavier平台上进行了测试,取得了模型复杂度和运行速度间的良好平衡。
03
Lite-Mono 框架介绍
图2显示了Lite-Mono的整体框架。DepthNet深度网络是一个编码器解码器结构用于估计深度,PoseNet姿态网络用来估计相邻单目帧的相机运动。DepthNet由4个阶段组成,使用CDC模块和LGFI模块提取丰富的层级特征。这两个模块的详细介绍请参见图3。
图2:Lite-Mono框架。
3.1 设计动机和选择
增强的局部特征:使用较浅的网络可以有效减小模型尺寸,但是随之带来的问题就是:模型的感受野非常小。受空洞卷积的启发,本文使用堆叠的CDC连续空洞卷积(Consecutive Dilated Convolutions)模块使网络在不引入额外可训练参数的前提下,提升网络的感受野。
低计算量的全局特征:增强的局部特征不足以学习输入的全局表示,因此本文借助Transformers来建模长距离信息。最初的Transformer中的多头自注意力模块的计算复杂度和特征维度呈线性关系,难以用它来设计轻量级的模型。本文的LGFI模块采用交叉协方差在特征的通道维度计算注意力,因此计算的内存复杂度和时间复杂度均降低了。
3.2 DepthNet深度网络
编码器:Lite-Mono 在4个阶段聚集多尺度特征。当输入图像的尺寸是H×W×3时,首先经过卷积主干,并使用一个3×3卷积来降采样。接着使用2个stride为1的3×3卷积来提取图像特征,特征图尺寸为H/2 × W/2 × C1。在第2阶段,特征和池化的3通道输入图像串联起来以减少空间信息的损失,并使用一个stride为2的3×3卷积下采样,得到特征图尺寸为H/4 × W/4 × C2。然后特征经过堆叠的CDC模块和LGFI模块学习丰富的特征表示。第二和第三阶段的降采样阶段同时串联来自之上一阶段的降采样后的特征。这样的设计和ResNet的残差连接类似,可以使模型提升对跨阶段信息的利用。类似地,特征图经过第3阶段和第4阶段,并分别得到尺寸为H/8× W/8× C3和H/16 × W/16 × C4的特征图。
连续空洞卷积(CDC):该模块利用空洞卷积提取多尺度局部特征。不用于一些论文中使用并联的空洞卷积层,本文在同一阶段使用连续多个空洞卷积层来提取丰富的多尺度信息。
图3:本文所提出的CDC模块和LGFI模块。在深度编码器的每一阶段,连续使用N个具有不同扩张率的CDC模块。
局部-全局特征交互(LGFI):给定一个输入特征图X,尺寸为H×W×C, 首先将它线性地投影到相同维度的Q=XWq, K=XWk, V=XWv,然后计算交叉协方差注意力来增强输入特征X:
其中:
根据设置不同的特征图通道数、CDC模块数量以及扩张率,本文设置了深度编码器的四种变体,如下表所示:
表1:本文设置的4种结构变体。[3×3, C] × N表示一个CDC模块使用3×3卷积输出特征图的通道为C, 并重复N次。
解码器:本文使用的深度解码器结构简单,如图2所示,包含使用双线性上采样层恢复特征图的尺寸,和使用卷积层串联来自编码器的特征。每个上采样块后跟一个预测头,分别输出原图尺寸1倍,1/2倍,以及1/4倍的逆深度图。
3.3 姿态估计网络
采用[15, 46]中同样的姿态估计网络,编码器部分是一个预训练过的ResNet18。
3.4 自监督训练
和Monodepth2一样,自监督训练的目标是最小化目标图像It以及其对应的重建的图像之间的L1损失。此处也结合了SSIM损失。
同时使用边缘感知的平滑损失:
最终损失函数分别在3个尺度的逆深度图上计算得到:
04
实验结果
4.1 KITTI数据集上的结果
如表2所示。
表2:Lite-Mono和其他一些方法在KITTI数据集Eigen split上得比较。除非另有说明,所有输入图像的尺寸都是640×192。“M”:单目KITTI数据;“M+Se”:单目数据+语义分割;“M*”:输入尺寸为1024×320;“M†”:不使用经过ImageNet预训练的模型。
4.2 Make3D数据集上的结果
如图4所示,本文提出的Lite-Mono可以感知到不同尺寸的物体。
图4
4.3 模型复杂度和速度实验
如表3所示,Lite-Mono模型在Jetson Xavier上的速度也比较快。对于各模型在不同batch size设定下的速度,可访问作者GitHub。
表3:该表中的结果由batch size=16得出。其他batch size下的结果请参阅项目主页。
▲后记
在该项目的GitHub代码库里看到有另一个团队对该算法的鲁棒性进行了测试,超过了以往的方法,且模型最小。
动图:
静态图:
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~