零基础入门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

一键安装步骤

  1. 克隆项目代码

    git clone https://gitcode.com/gh_mirrors/geo/GeoNet cd GeoNet
  2. 安装依赖包建议使用虚拟环境创建独立的运行环境:

    # 创建并激活虚拟环境 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数据集进行训练和评估:

  1. 下载数据

    • 深度和光流任务:下载KITTI raw dataset
    • 姿态任务:下载KITTI odometry dataset
  2. 数据预处理使用项目提供的预处理脚本格式化数据:

    # 深度任务预处理 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数据集可用于预训练模型,提高性能:

  1. 下载Cityscapes数据集的图像序列和校准文件
  2. 运行预处理命令:
    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/

💡 实用技巧与资源

  1. 预训练模型:可下载官方提供的预训练模型快速开始测试,包含深度、光流和姿态估计的预训练权重。

  2. 性能优化:设置--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
  3. 代码结构:核心代码文件说明

    • 主程序: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),仅供参考