FastDepth:嵌入式系统上的快速单目深度估计
【免费下载链接】fast-depthICRA 2019 "FastDepth: Fast Monocular Depth Estimation on Embedded Systems"项目地址: https://gitcode.com/gh_mirrors/fa/fast-depth
FastDepth 是一个专门为嵌入式系统优化的单目深度估计算法,由 MIT 研究团队开发。该项目在保持高精度的同时,显著提升了深度估计的速度,特别适合在 NVIDIA Jetson TX2 等嵌入式平台上部署。
项目概述
FastDepth 基于 MobileNet 架构,通过深度可分离卷积、跳跃连接和网络剪枝等技术,实现了在资源受限设备上的实时深度感知。该项目在 ICRA 2019 会议上发表,提供了完整的训练模型和评估代码。
系统要求
要运行 FastDepth 项目,需要满足以下要求:
- 安装 PyTorch(推荐版本 v0.4.1)并配备 CUDA GPU
- 安装 HDF5 格式库和相关依赖
- 下载预处理好的 NYU Depth V2 数据集
环境配置
sudo apt-get update sudo apt-get install -y libhdf5-serial-dev hdf5-tools pip3 install h5py matplotlib imageio scikit-image opencv-python数据集准备
NYU Depth V2 数据集需要约 32GB 存储空间:
mkdir data; cd data wget http://datasets.lids.mit.edu/fastdepth/data/nyudepthv2.tar.gz tar -xvf nyudepthv2.tar.gz && rm -f nyudepthv2.tar.gz cd ..预训练模型
FastDepth 提供了多个预训练模型:
- MobileNet-NNConv5
- MobileNet-NNConv5(深度可分离)
- MobileNet-NNConv5(深度可分离),带跳跃连接
- MobileNet-NNConv5(深度可分离),带跳跃连接,剪枝版
最终推荐模型是mobilenet-nnconv5-skipadd-pruned,该模型在编码器和解码器之间使用深度可分离层和跳跃连接,并通过 NetAdapt 进行网络剪枝。
模型下载
mkdir results; cd results wget -r -np -nH --cut-dirs=2 --reject "index.html*" http://datasets.lids.mit.edu/fastdepth/results/ cd ..模型评估
评估过程需要有效的 PyTorch 安装和 NYU Depth v2 数据集副本。建议在配备 CUDA GPU 的主机上进行评估。
评估命令
python3 main.py --evaluate [path_to_trained_model]评估代码将报告模型的 delta1 精度指标以及以毫米为单位的 RMSE。
嵌入式部署
FastDepth 使用 TVM 编译器堆栈将训练好的模型编译为可在 NVIDIA Jetson TX2 上部署的格式。模型在主机上进行交叉编译,然后在 TX2 上部署。
TVM 运行时安装
在目标嵌入式设备上构建 TVM 运行时:
git clone --recursive https://github.com/dmlc/tvm cd tvm git reset --hard ab4946c8b80da510a5a518dca066d8159473345f git submodule update --init cp cmake/config.cmake .修改config.cmake文件:
set(USE_CUDA OFF) -> set(USE_CUDA [path_to_cuda]) set(USE_LLVM OFF) -> set(USE_LLVM [path_to_llvm-config])构建运行时:
make runtime -j2 export PYTHONPATH=$PYTHONPATH:~/tvm/python运行编译后的模型
在设备上运行编译后的模型:
cd deploy python3 tx2_run_tvm.py --input-fp data/rgb.npy --output-fp data/pred.npy --model-dir ../../results/tvm_compiled/tx2_cpu_mobilenet_nnconv5dw_skipadd_pruned/ python3 tx2_run_tvm.py --input-fp data/rgb.npy --output-fp data/pred.npy --model-dir ../../results/tvm_compiled/tx2_gpu_mobilenet_nnconv5dw_skipadd_pruned/ --cuda True性能结果
FastDepth 在 NYU Depth v2 数据集上与其他先进方法进行了比较。运行时间在 NVIDIA Jetson TX2 最大性能模式下测量。
| 方法 | 输入尺寸 | MACs [G] | RMSE [m] | delta1 | CPU [ms] | GPU [ms] |
|---|---|---|---|---|---|---|
| Eigen et al. [NIPS 2014] | 228×304 | 2.06 | 0.907 | 0.611 | 300 | 23 |
| Eigen et al. [ICCV 2015](AlexNet) | 228×304 | 8.39 | 0.753 | 0.697 | 1400 | 96 |
| Laina et al. [3DV 2016](UpProj) | 228×304 | 42.7 | 0.573 | 0.811 | 3900 | 319 |
| FastDepth(本文工作) | 224×224 | 0.37 | 0.604 | 0.771 | 37 | 5.6 |
FastDepth在Jetson TX2 GPU上的性能对比
FastDepth深度估计效果可视化对比
项目优势
- 高效性能:相比传统方法,FastDepth 在 TX2 GPU 上实现了 5.6ms 的推理时间
- 轻量化设计:仅需 0.37 G MACs,适合资源受限设备
- 精度平衡:在保持较高精度的同时显著提升速度
应用场景
FastDepth 特别适用于以下场景:
- 机器人导航与环境感知
- 自动驾驶辅助系统
- AR/VR场景深度理解
- 智能监控与安防系统
总结
FastDepth 为嵌入式系统上的实时深度估计提供了一个高效解决方案。通过优化的网络架构和编译技术,该项目在精度和速度之间达到了良好的平衡,是嵌入式计算机视觉应用的理想选择。
对于需要在实际嵌入式设备上部署深度估计功能的开发者来说,FastDepth 提供了一个完整的工作流程,从模型训练到部署都有详细的指导和支持。
【免费下载链接】fast-depthICRA 2019 "FastDepth: Fast Monocular Depth Estimation on Embedded Systems"项目地址: https://gitcode.com/gh_mirrors/fa/fast-depth
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考