CLOCs安装与运行

CLOCs项目地址:GitHub - pangsu0613/CLOCs: CLOCs: Camera-LiDAR Object Candidates Fusion for 3D Object Detection

  1. 安装CUDA 9.2。CUDA安装教程:非root用户在Linux系统下安装cuda
  2. 创建conda环境
conda create --name CLOCs python=3.6 pytorch=1.1 cudatoolkit=9.2 torchvision --channel=pytorch
conda activate CLOCs
  1. 检查Pytorch调用CUDA
python
import torch
torch.cuda.is_available()
quit()
  1. 下载CLOCs
git clone https://github.com/pangsu0613/CLOCs.git
mkdir CLOCs/d2_detection_data
mkdir CLOCs/model_dir
  1. 配置SECOND运行环境
conda install scikit-image scipy numba pillow matplotlib shapely cmake
pip install fire tensorboardX protobuf opencv-python pccm
  1. 下载、编译和安装Spconv1.0(8da6f96)
conda install cudnn boost cmake
git clone https://github.com/traveller59/spconv spconv_8da6f96 --recursive
cd spconv_8da6f96
git checkout 8da6f967fb9a054d8870c3515b1b44eca2103634
cd third_party/
git clone https://github.com/pybind/pybind11.git
cd pybind11/
git checkout 085a294
cd ../..
python setup.py bdist_wheel
python -m pip install dist/*.whl

Spconv1.0安装参考教程:复现CLOCs中spconv v1.0 (commit 8da6f96)踩坑记录

  1. Python编译安装apex(因为系统默认使用NVIDIA驱动与conda环境显卡驱动版本不一致)
cd ..
git clone https://github.com/NVIDIA/apex
cd apex
pip install -v --disable-pip-version-check --no-cache-dir ./
  1. 设置用于numba的CUDA文件路径和SECOND的运行路径
echo "export NUMBAPRO_CUDA_DRIVER=/usr/lib/x86_64-linux-gnu/libcuda.so" >> ~/.bashrc
echo "export NUMBAPRO_NVVM=/usr/local/cuda/nvvm/lib64/libnvvm.so" >> ~/.bashrc
echo "export NUMBAPRO_LIBDEVICE=/usr/local/cuda/nvvm/libdevice" >> ~/.bashrc
echo "export PYTHONPATH=$PYTHONPATH:/data1/fengyarong/CLOCs_env/CLOCs/" >> ~/.bashrc
source ~/.bashrc
  1. 构建KITTI数据集路径
└── KITTI_DATASET_ROOT
       ├── training    <-- 7481 train data
       |   ├── image_2 <-- for visualization
       |   ├── calib
       |   ├── label_2
       |   ├── velodyne
       |   └── velodyne_reduced <-- empty directory
       └── testing     <-- 7518 test data
       |   ├── image_2 <-- for visualization
       |   ├── calib
       |   ├── velodyne
       |   └── velodyne_reduced <-- empty directory
       └── kitti_dbinfos_train.pkl
       ├── kitti_infos_train.pkl
       ├── kitti_infos_test.pkl
       ├── kitti_infos_val.pkl
       └── kitti_infos_trainval.pkl

以下代码不具有参考性:根据自己已有的KITTI数据文件夹,通过软连接的方式避免文件重复构建数据集。

mkdir -p KITTI_DATASET/training
mkdir -p KITTI_DATASET/testing
cd KITTI_DATASET/training
ln -s /data/user_name/kitti_data/data_object_image_2/training/image_2 KITTI_DATASET/training/image_2
ln -s /data/user_name/kitti_data/data_object_calib/training/calib KITTI_DATASET/training/calib
ln -s /data/user_name/kitti_data/data_object_label_2/training/label_2 KITTI_DATASET/training/label_2
ln -s /data/user_name/kitti_data/data_object_velodyne/training/velodyne KITTI_DATASET/training/velodyne
mkdir -p KITTI_DATASET/training/velodyne_reduced
ln -s/data/user_name/kitti_data/data_object_image_2/testing/image_2 KITTI_DATASET/testing/image_2
ln -s/data/user_name/kitti_data/data_object_calib/testing/calib KITTI_DATASET/testing/calib
ln -s/data/user_name/kitti_data/data_object_velodyne/testing/velodyne KITTI_DATASET/testing/velodyne
mkdir -p KITTI_DATASET/testing/velodyne_reduced
  1. 初始化数据集索引
cd CLOCs/second
python create_data.py create_kitti_info_file --data_path=../../KITTI_DATASET
python create_data.py create_reduced_point_cloud --data_path=../../KITTI_DATASET
python create_data.py create_groundtruth_database --data_path=../../KITTI_DATASET
  1. 导入作者提供的二维目标检测预训练模型与Cascade-RCNN三维目标检测结果
    下载作者提供的三维目标检测预训练模型second_model.zip和二维目标检测结果cascade_rcnn_sigmoid_dataGoogle云盘地址
  2. CLOCs运行配置
    修改训练配置文件CLOCs/second/configs/car.fhd.config
train_input_reader: {
  ...
  database_sampler {
    database_info_path: "/dir/to/your/kitti_dbinfos_train.pkl"
    ...
  }
  kitti_info_path: "/dir/to/your/kitti_infos_train.pkl"
  kitti_root_path: "/dir/to/your/KITTI_DATASET_ROOT"
}
...
train_config: {
  ...
  detection_2d_path: "/dir/to/2d_detection/data"
}
...
eval_input_reader: {
  ...
  kitti_info_path: "/dir/to/your/kitti_infos_val.pkl"
  kitti_root_path: "/dir/to/your/KITTI_DATASET_ROOT"
}
  1. 运行CLOCs模型算法,进行训练
python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=../model_dir

如果提示CUDA版本与当前conda环境的cudatoolkit不符,则使用如下命令

CUDA_ROOT=/path/to/your/current/cuda/ python ./pytorch/train.py train --config_path=./configs/car.fhd.config --model_dir=../model_dir
  1. 评估CLOCs模型算法训练结果
python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=../model_dir --measure_time=True --batch_size=1

如果提示CUDA版本与当前conda环境的cudatoolkit不符,则使用如下命令

CUDA_ROOT=/path/to/your/current/cuda/ python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=../model_dir --measure_time=True --batch_size=1
  1. 输出测试集预测结果
    修改训练配置文件CLOCs/second/configs/car.fhd.config
eval_input_reader: {
  ...
  kitti_info_path: "/dir/to/your/kitti_infos_test.pkl"
}
CUDA_ROOT=/path/to/your/current/cuda/ python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=../model_dir --measure_time=True --batch_size=1 --pickle_result=False --predict_test=True

注意:

  • 运行过程中提示过多NumbaWarning,可在CLOCs/second/pytorch/train.py开头添加如下代码,屏蔽报错
from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning,NumbaPerformanceWarning,NumbaWarning
import warnings
warnings.simplefilter('ignore', category=NumbaDeprecationWarning)
warnings.simplefilter('ignore', category=NumbaPendingDeprecationWarning)
warnings.simplefilter('ignore', category=NumbaPerformanceWarning)
warnings.simplefilter('ignore', category=NumbaWarning)
warnings.simplefilter('ignore')
warnings.filterwarnings('ignore')
### 关于CLOCS算法的实现复现 CLOCS(Continuous Learning of Object Categories from Streaming Data)是一种用于连续学习物体类别的算法,其核心在于通过流数据动态更新模型的知识库而不遗忘已有知识。以下是其实现和复现的关键要点: #### 数据准备 为了成功复现CLOCS算法,需准备好适合该算法的数据集。通常情况下,这些数据应具有时间序列特性并能反映类别分布的变化。例如,在机器人视觉场景中,可能需要采集不同光照条件下的图像数据[^1]。 #### 组件设计 根据已有的研究经验表明,如何组合不同的预训练模块对于整体性能有着决定性影响。具体而言,可以采用简单状态机模型来进行无监督或者弱监督的学习过程中的参数调整操作。此外还需考虑实际应用环境所带来的约束条件比如计算资源限制等因素的影响从而优化最终解决方案的设计思路。 #### 启发式策略的应用 针对特定应用场景中存在的物理层面局限性问题,则可以通过引入适当形式化的启发规则加以解决以提升执行效率以及鲁棒程度等方面表现水平为例说明如下几点注意事项: - **动作规划**: 设计合理的运动轨迹使得机械臂能够更加灵活准确地抓取目标物品; - **传感器融合处理技术的选择运用**, 如结合深度摄像头获取三维空间坐标信息辅助判断距离远近关系等; ```python def clocs_algorithm(data_stream, pretrained_model): state_machine = initialize_state_machine(pretrained_model) for data_chunk in data_stream: updated_parameters = apply_heuristics(state_machine, data_chunk) # Update the model with new parameters without forgetting old knowledge. fine_tune_model(pretrained_model, updated_parameters) return pretrained_model def apply_heuristics(machine, chunk): heuristic_rules = define_heuristic_logic() adjusted_values = [] for item in chunk: value = machine.process(item) corrected_value = adjust_with_rule(value, heuristic_rules) adjusted_values.append(corrected_value) aggregated_result = aggregate_results(adjusted_values) return calculate_updated_params(aggregated_result) # Example function definitions omitted here... ``` 上述伪代码展示了基于状态转移机制配合自定义逻辑修正输入样本特征值之后再利用微调方式完成整个流程的一个简化版本示意。 ---
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值