ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何从零训练SPVNAS基线模型:SemanticKITTI数据加载、配置系统与多卡分布式训练实战

如何从零训练SPVNAS基线模型:SemanticKITTI数据加载、配置系统与多卡分布式训练实战 如何从零训练SPVNAS基线模型SemanticKITTI数据加载、配置系统与多卡分布式训练实战【免费下载链接】spvnas[ECCV 2020] Searching Efficient 3D Architectures with Sparse Point-Voxel Convolution项目地址: https://gitcode.com/gh_mirrors/sp/spvnasSPVNAS 是 ECCV 2020 提出的高效 3D 点云网络搜索方法Searching Efficient 3D Architectures with Sparse Point-Voxel Convolution基于稀疏点-体素卷积曾登顶 SemanticKITTI 语义分割榜单并夺得 NuScenes 挑战赛冠军。本文带你从零开始下载 SemanticKITTI 数据、读懂配置系统、单卡/多卡分布式训练 SPVCNN 基线模型并测试、可视化最终效果。一、先搞清楚训练什么模型仓库开源了**手工设计基线模型SPVCNN 与 MinkUNet**的完整训练代码用于与 NAS 搜索得到的 SPVNAS 架构做对比而 SPVNAS 搜索出的模型则以预训练权重形式在 model_zoo.py 中提供可直接下载测试。模型参数量计算量验证集 mIoUSPVCNN5.5M30G60.8 ± 0.5SPVNAS预训练10.8M65G64.7论文值也就是说基线模型从零训练SPVNAS 官方模型直接评测二者共同构成完整的实验闭环。二、一键安装构建 PyTorch 稀疏卷积环境SPVNAS 依赖torchsparse稀疏卷积 CUDA 算子和torchpack分布式训练工具推荐用 conda 一键搭建conda create -n torch python3.7 conda activate torch conda install pytorch torchvision torchaudio cudatoolkit10.2 -c pytorch conda install numba opencv pip install torchpack pip install --upgrade githttps://github.commit-han-lab/torchsparse.git克隆代码仓库git clone https://gitcode.com/gh_mirrors/sp/spvnas.git 注意PyTorch 版本需 ≥ 1.6Python 需在 3.6 ~ 3.8 之间torchsparse需要编译 CUDA 算子请确保gcc与 CUDA Toolkit 版本匹配。三、SemanticKITTI 数据加载目录结构与序列划分数据下载与放置按照 SemanticKITTI 官网说明下载 KITTI Odometry 点云数据与语义标签将sequences下的 22 个序列文件夹00~21解压到统一根目录默认路径为/dataset/semantic-kitti每个序列内含velodyne.bin 点云与labels.label 标签两个子文件夹。训练/验证/测试划分数据集类在core/datasets/semantic_kitti.py中默认划分如下训练集序列00–07、09、10验证集代码中的 test split序列08挑战赛测试集序列11–21无标签加载时会对点云做两项关键预处理体素下采样按voxel_size: 0.055cm量化去重并随机采样到每帧 80000 点num_points: 80000保证训练效率与显存稳定标签重映射原始 34 类标签含 moving 前缀的动态目标变体被压缩到 19 个训练类无效标签统一置为ignore_label: 255不参与损失计算。四、读懂配置系统三层 YAML 如何叠加SPVNAS 使用 torchpack 的递归配置机制train.py启动时按全局默认 → 数据集默认 → 模型专属三层深度合并 YAMLconfigs/default.yaml全局开关如workers_per_gpu: 8、distributed: True、amp_enabled: True混合精度configs/semantic_kitti/default.yaml数据集级参数——19 分类、体素大小 0.05m、num_epochs: 15、batch_size: 2、SGD 优化器lr 0.24、momentum 0.9、nesterov与cosine_warmup学习率调度模型配置如configs/semantic_kitti/spvcnn/cr0p5.yaml仅两行——name: spvcnn与cr: 0.5其中crchannel ratio是控制网络宽度的关键超参cr: 0.5对应约 30G MACs 的轻量版cr: 0.64对应约 47G MACs 的加强版MinkUNet 同理见configs/semantic_kitti/minkunet/目录。配置在core/builder.py中被解析make_dataset()依据dataset.name实例化数据集make_model()依据model.name与cr构建网络make_criterion()/make_optimizer()/make_scheduler()依次生成损失、优化器与调度器。想改任何超参只需新建一个覆盖对应字段的 YAML无需改一行代码。五、最快训练方法单卡与多卡分布式启动单卡模式快速验证跳过 MPI直接以非分布式方式运行适合本地调试python train.py configs/semantic_kitti/spvcnn/cr0p5.yaml --distributed False多卡分布式模式正式训练使用torchpack dist-run启动 N 卡训练-np指定 GPU 数torchpack dist-run -np 8 python train.py configs/semantic_kitti/spvcnn/cr0p5.yamltrain.py内部的关键机制值得了解模型被包裹进DistributedDataParallelfind_unused_parametersTrue每张卡只处理全量数据的一部分梯度自动跨卡同步每个数据分片使用DistributedSampler做无重叠切分仅训练集开启 shuffle随机种子按seed rank × workers_per_gpu × num_epochs逐卡偏移避免多卡采样到相同数据子集每轮结束后在验证集上运行MeanIoU回调MaxSaver自动保留 mIoU 最高的权重Saver周期性保存检查点均写入run_dir。六、测试预训练模型与结果可视化训练完成后或想直接评测官方模型可加载模型库中的预训练权重在验证集上推理torchpack dist-run -np 1 python evaluate.py configs/semantic_kitti/default.yaml --name SemanticKITTI_val_SPVNAS65GMACs生成彩色分割图无显示器的服务器上建议用 xvfb 虚拟显示xvfb-run --server-args-screen 0 1024x768x24 python visualize.py可视化结果输出到assets/目录即文首那张 19 类彩色点云图。此外tutorial.ipynb提供了 Colab 教程适合新手快速跑通推理流程。七、新手避坑清单显存不足优先降低batch_size默认每卡 2点云帧长 8 万点单帧即可占大量显存或调小num_points分布式启动失败确认已安装 MPI 且mpirun在 PATH 中单卡调试务必加--distributed False结果轻微波动torchsparseCUDA 后端存在浮点原子加操作8 卡复现 mIoU 会有 ±0.5 内的正常波动不必担心路径不对若数据不在/dataset/semantic-kitti修改configs/semantic_kitti/default.yaml中的dataset.root即可。按照本文流程你已能独立完成 SPVNAS 基线模型从数据加载到多卡分布式训练、评测可视化的完整闭环。下一步可尝试更换cr值训练不同算力的网络感受稀疏点-体素卷积在精度与效率之间的权衡。【免费下载链接】spvnas[ECCV 2020] Searching Efficient 3D Architectures with Sparse Point-Voxel Convolution项目地址: https://gitcode.com/gh_mirrors/sp/spvnas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表