# MonoFlex **Repository Path**: deeplook/MonoFlex ## Basic Information - **Project Name**: MonoFlex - **Description**: 单目3D检测,基于MonoFlex的修改 - **Primary Language**: Python - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-24 - **Last Updated**: 2025-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于MonoFlex的微调 单目3D物体检测,论文[Objects Are Different: Flexible Monocular 3D Object Detection](https://arxiv.org/abs/2103.13413) **工作说明.** ## 安装 基本环境 Ubuntu 20.04, python==3.10, pytorch==2.0.1 and cuda==11.8 显卡:NVIDIA GeForce RTX 3060 12GB ```bash conda create -n monoflex python=3.10 conda activate monoflex ``` 安装 PyTorch 以及其他依赖: ```bash conda install pytorch==2.0.1 torchvision==0.15.2 cudatoolkit=11.8 -c pytorch pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.1/index.html tips:此处编译速度很慢,请耐心等待 pip install -r requirements.txt ``` 构建项目 ```bash python setup.py develop ``` ## 数据准备 下载地址 [KITTI dataset](http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d) 安装如下组织数目录:
不需要点云数据,只下载training和testing数据集,大概12GB ``` #ROOT |training/ |calib/ |image_2/ |label/ |ImageSets/ |testing/ |calib/ |image_2/ |ImageSets/ ``` 请修改 config/paths_catalog.py 具体地址请自行修改 ## 开始训练和评估 在单个GPU上训练. ```bash CUDA_VISIBLE_DEVICES=0 python tools/plain_train_net.py --batch_size 8 --config runs/monoflex.yaml --output output/exp ``` 在训练期间,将定期评估模型(可以在 CONFIG 中调整),您还可以使用以下命令 ```bash CUDA_VISIBLE_DEVICES=0 python tools/plain_train_net.py --config runs/monoflex.yaml --ckpt YOUR_CKPT --eval ``` 您还可以在评估时指定 --vis 以可视化预测的热图和 3D 边界框。train/val split 和 logs 的预训练模型在这里(训练的日志和文件),利用已经选练好的模型进行测试 ```bash CUDA_VISIBLE_DEVICES=0 python tools/plain_train_net.py --config runs/monoflex.yaml --ckpt /data/coding/model_moderate_best_soft.pth --vis --eval ``` ```text default_argument_parser() 方法定义了一系列命令行参数,用于配置和控制训练、评估、测试等流程。以下是各个参数的解释: --config: 指定配置文件的路径,默认值为 "runs/baseline_v0.yaml"。 --eval: 如果存在此参数,则只执行评估操作。 --eval_iou: 如果存在此参数,则评估解耦 IoU (Intersection over Union)。 --eval_depth: 如果存在此参数,则评估深度误差。 --eval_all_depths: 如果存在此参数,则评估所有深度。 --eval_score_iou: 如果存在此参数,则评估检测分数与 IoU 的关系。 --test: 如果存在此参数,则进入测试模式。 --vis: 如果存在此参数,在评估时进行可视化。 --ckpt: 指定测试用检查点(checkpoint)的路径,默认是最近的检查点。 --num_gpus: 指定使用的 GPU 数量,默认为 1。 --batch_size: 指定批次大小,默认为 8。 --num_work: 指定数据加载器使用的线程数,默认为 8。 --output: 指定输出目录,默认为 None。 --vis_thre: 指定可视化检测结果的阈值,默认为 0.25。 --num-machines: 指定分布式训练中的机器数量,默认为 1。 --machine-rank: 指定当前机器的排名(每台机器唯一),默认为 0。 --dist-url: 指定分布式训练中通信的 URL,默认使用自动分配端口。 opts: 允许通过命令行修改配置选项。 这些参数提供了一个灵活的方式来调整模型的行为,例如指定不同的配置文件、启用特定的功能(如评估或可视化)、设置硬件资源(如 GPU 和 CPU 线程数)等。 ``` ## 声明感谢 大量代码参考了 [SMOKE](https://github.com/lzccccc/SMOKE) 和 [MonoFlex](https://github.com/zhangyp15/MonoFlex) 感谢他们的无私奉献.