零基础入门GeoNet:从环境搭建到数据准备的完整指南
零基础入门GeoNet:从环境搭建到数据准备的完整指南
【免费下载链接】GeoNetCode for GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose (CVPR 2018)项目地址: https://gitcode.com/gh_mirrors/geo/GeoNet
GeoNet是一个基于深度学习的无监督学习框架,能够同时估计密集深度、光流和相机姿态,是CVPR 2018年的重要研究成果。本指南将帮助零基础用户快速掌握GeoNet的环境搭建、数据准备和基础使用方法,让你轻松开启计算机视觉之旅。
🌟 GeoNet核心功能概览
GeoNet采用创新的两阶段架构,通过无监督学习从单目视频中同时预测深度、光流和相机姿态。其核心优势在于:
- 多任务学习:一次训练即可完成深度估计、光流预测和相机姿态估计三大任务
- 无监督学习:无需人工标注数据,降低数据获取成本
- 端到端训练:从原始图像到最终结果的端到端学习流程
图:GeoNet系统架构展示了从输入帧到最终结果的完整流程,包含DepthNet、PoseNet和ResFlowNet等核心组件
📋 环境准备:快速配置开发环境
核心依赖要求
GeoNet的官方环境配置如下:
- Python 2.7
- TensorFlow 1.1
- CUDA 8.0
- Ubuntu 16.04
一键安装步骤
克隆项目代码
git clone https://gitcode.com/gh_mirrors/geo/GeoNet cd GeoNet安装依赖包建议使用虚拟环境创建独立的运行环境:
# 创建并激活虚拟环境 virtualenv -p python2.7 geonet-env source geonet-env/bin/activate # 安装依赖 pip install tensorflow-gpu==1.1.0 pip install numpy scipy matplotlib pillow
📊 数据准备:构建训练数据集
KITTI数据集准备
KITTI数据集是自动驾驶领域的重要基准,GeoNet支持使用KITTI数据集进行训练和评估:
下载数据
- 深度和光流任务:下载KITTI raw dataset
- 姿态任务:下载KITTI odometry dataset
数据预处理使用项目提供的预处理脚本格式化数据:
# 深度任务预处理 python data/prepare_train_data.py --dataset_dir=/path/to/kitti/dataset/ --dataset_name=kitti_raw_eigen --dump_root=/path/to/formatted/data/ --seq_length=3 --img_height=128 --img_width=416 --num_threads=16 --remove_static # 光流任务预处理 python data/prepare_train_data.py --dataset_dir=/path/to/kitti/dataset/ --dataset_name=kitti_raw_stereo --dump_root=/path/to/formatted/data/ --seq_length=3 --img_height=128 --img_width=416 --num_threads=16 --remove_static # 姿态任务预处理 python data/prepare_train_data.py --dataset_dir=/path/to/kitti/dataset/ --dataset_name=kitti_odom --dump_root=/path/to/formatted/data/ --seq_length=5 --img_height=128 --img_width=416 --num_threads=16 --remove_static
Cityscapes数据集准备(可选)
Cityscapes数据集可用于预训练模型,提高性能:
- 下载Cityscapes数据集的图像序列和校准文件
- 运行预处理命令:
python data/prepare_train_data.py --dataset_dir=/path/to/cityscapes/dataset/ --dataset_name='cityscapes' --dump_root=/path/to/formatted/data/ --seq_length=3 --img_height=171 --img_width=416 --num_threads=16
🚀 开始训练:两种训练模式详解
GeoNet支持两种训练模式,对应不同的学习任务:
深度和姿态训练(train_rigid模式)
python geonet_main.py --mode=train_rigid --dataset_dir=/path/to/formatted/data/ --checkpoint_dir=/path/to/save/ckpts/ --learning_rate=0.0002 --seq_length=3 --batch_size=4 --max_steps=350000关键参数说明:
--seq_length:深度任务建议设为3,姿态任务建议设为5--dispnet_encoder:设置网络编码器类型--scale_normalize:启用深度尺度归一化(可提升性能)
光流训练(train_flow模式)
python geonet_main.py --mode=train_flow --dataset_dir=/path/to/formatted/data/ --checkpoint_dir=/path/to/save/ckpts/ --learning_rate=0.0002 --seq_length=3 --flownet_type=direct --max_steps=400000可通过--flownet_type参数选择直接光流学习或残差光流学习。
📝 模型测试:评估你的模型性能
深度估计测试
# 生成深度预测 python geonet_main.py --mode=test_depth --dataset_dir=/path/to/kitti/raw/dataset/ --init_ckpt_file=/path/to/trained/model/ --batch_size=1 --depth_test_split=eigen --output_dir=/path/to/save/predictions/ # 评估深度结果 python kitti_eval/eval_depth.py --split=eigen --kitti_dir=/path/to/kitti/raw/dataset/ --pred_file=/path/to/predictions/相机姿态测试
# 生成姿态预测 python geonet_main.py --mode=test_pose --dataset_dir=/path/to/kitti/odom/dataset/ --init_ckpt_file=/path/to/trained/model/ --batch_size=1 --seq_length=5 --pose_test_seq=9 --output_dir=/path/to/save/predictions/ # 生成姿态真值片段 python kitti_eval/generate_pose_snippets.py --dataset_dir=/path/to/kitti/odom/dataset/ --output_dir=/path/to/save/gtruth/pose/snippets/ --seq_id=09 --seq_length=5 # 评估姿态结果 python kitti_eval/eval_pose.py --gtruth_dir=/path/to/gtruth/pose/snippets/ --pred_dir=/path/to/predicted/pose/snippets/光流测试
# 格式化测试数据 python kitti_eval/generate_multiview_extension.py --dataset_dir=/path/to/data_scene_flow_multiview/ --calib_dir=/path/to/data_scene_flow_calib/ --dump_root=/path/to/formatted/testdata/ --cam_id=02 --seq_length=3 # 生成光流预测 python geonet_main.py --mode=test_flow --dataset_dir=/path/to/formatted/testdata/ --init_ckpt_file=/path/to/trained/model/ --flownet_type=direct --batch_size=1 --output_dir=/path/to/save/predictions/💡 实用技巧与资源
预训练模型:可下载官方提供的预训练模型快速开始测试,包含深度、光流和姿态估计的预训练权重。
性能优化:设置
--scale_normalize=True可显著提升深度估计性能,官方报告的改进结果如下:- Abs Rel: 0.149
- Sq Rel: 1.060
- RMSE: 5.567
- RMSE(log): 0.226
- Acc.1: 0.796
- Acc.2: 0.935
- Acc.3: 0.975
代码结构:核心代码文件说明
- 主程序:geonet_main.py
- 模型定义:geonet_model.py
- 网络结构:geonet_nets.py
- 数据加载:data_loader.py
- 评估工具:kitti_eval/
通过本指南,你已经掌握了GeoNet的基本使用流程。接下来可以尝试调整网络参数、探索不同的数据集,或者基于GeoNet进行二次开发,创造出更强大的计算机视觉应用!
【免费下载链接】GeoNetCode for GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose (CVPR 2018)项目地址: https://gitcode.com/gh_mirrors/geo/GeoNet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
