SC_Depth 项目介绍
SC_Depth 项目是一项关于从视频中自我监督学习单目深度估计的研究。该项目提供了 SC-Depth 的 PyTorch Lightning 实现,目前已经发展到 V3 版本。以下是各个版本的详细介绍,以及项目的一些技术要点和使用说明。
SC-DepthV1
在 SC-DepthV1 中,研究团队引入了两大创新来提高预测的深度准确性和一致性:
- 几何一致性损失:通过时间尺度一致的深度预测来实现。
- 自发现掩码:用于在训练过程中检测和去除动态区域和遮挡,以提高准确性。
这些创新确保了预测深度足够准确和一致,可以在 ORB-SLAM2 系统中使用。
SC-DepthV2
SC-DepthV2 主要关注解决在室内场景中,由手持相机捕捉视频时产生的大相对旋转运动带来的挑战。为此,该版本提出了一个自动校正网络(ARN),用于处理相邻帧之间的相对大旋转。该网络与 SC-DepthV1 集成,并与自监督损失联合训练,显著提升了性能。
SC-DepthV3
SC-DepthV3 提出了一个稳健的学习框架,用于在(极其)动态场景中进行准确和清晰的单目深度估计。由于自监督方法中的主要损失——光度损失在动态物体区域和遮挡中的无效性,该版本通过借助外部预训练的深度估计网络来生成单图像深度先验,从而在此基础上提出了有效的损失来约束自我监督的深度学习。评估结果表明,SC-DepthV3 在多个具有挑战性的静态和动态场景的数据集上展示了其有效性。
项目安装
要安装项目,用户需要创建一个 Python 3.8 的虚拟环境,并安装相关依赖包,具体步骤如下:
conda create -n sc_depth_env python=3.8
conda activate sc_depth_env
conda install pytorch torchvision pytorch-cuda=11.7 -c pytorch -c nvidia
pip install -r requirements.txt
数据集管理
视频数据集需按特定格式组织,用于训练和测试模型。用户可以下载我们提供的已处理数据集,如 kitti、nyu、ddad、bonn、tum 等。
训练与测试
项目提供了相应的脚本来指导用户如何进行训练和测试。对于训练,用户需要根据设备编辑配置文件,然后运行指定的训练脚本。而测试脚本则用于在各数据集上评估深度估计的精度。
自定义数据训练
对于自己的数据集,用户需要按照项目要求组织数据格式。同时,提供了一些工具与指南,帮助用户生成伪深度和验证损失,以便在没有真实深度数据时进行训练。
预训练模型与效果演示
项目中提供了不同版本在各种数据集上训练的预训练模型,用户可以下载并用于测试或演示其效果。使用提供的脚本,用户可以轻松进行效果演示和模型验证。
通过以上介绍,希望帮助大家更好地理解和使用 SC_Depth 项目进行单目深度估计的研究与应用。