之前帮兄弟搞 3D 视觉项目他问我“哥昇腾上有没有空间智能的最佳实践我自己在那调 PointNet性能惨不忍睹。”我说有cann-recipes-spatial-intelligence。好问题。今天一次说清楚。cann-recipes-spatial-intelligence 是啥cann-recipes-spatial-intelligence CANN Recipes for Spatial Intelligence昇腾的空间智能3D视觉/点云/三维重建最佳实践集合。PointNet、PointNet、3D-RCNN 这些模型的配置、性能调优方法都在里面。一句话说清楚cann-recipes-spatial-intelligence 是昇腾的空间智能配方集3D 视觉、点云处理、三维重建这些场景的配置、性能调优参数都给你准备好了拿来就能用。你说气人不气人之前自己调 PointNet 一周现在下载个配方改两行就搞定了。为什么要用 cann-recipes-spatial-intelligence三个字拿来用。不用 cann-recipes-spatial-intelligence自己调# 自己手写 3D 视觉脚本importtorchimporttorch.nnasnnimporttorch.nn.functionalasF# 自己写 PointNetclassPointNet(nn.Module):def__init__(self,num_classes40):super(PointNet,self).__init__()# 自己写卷积层self.conv1nn.Conv1d(3,64,1)self.conv2nn.Conv1d(64,128,1)# ... 写了很多层defforward(self,x):# 自己写前向传播xF.relu(self.conv1(x))xF.relu(self.conv2(x))# ... 写了很多行returnx# 问题# 1. 性能慢CPU 版本# 2. 点云处理卡顿# 3. 三维重建慢# 4. 调了一周性能还是不够好用 cann-recipes-spatial-intelligence官方配方# 克隆仓库gitclone https://atomgit.com/cann/cann-recipes-spatial-intelligence.gitcdcann-recipes-spatial-intelligence# 直接用 PointNet 配方cdpointnetbashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 32# Train accuracy: 89.2% (target: 89.0%)# Train time: 2.5 hours (8 NPUs)# Throughput: 1250 samples/s (target: 1000 samples/s)## Config: configs/pointnet_optimal.yaml# 你说气人不气人拿来就能用性能还更好。核心概念就三个1. 配方Recipe每个模型一个配方目录cann-recipes-spatial-intelligence/ ├── pointnet/ # PointNet 配方 │ ├── configs/ # 配置文件 │ │ ├── optimal.yaml # 最优配置 │ │ ├── fast.yaml # 快速配置 │ │ └── accurate.yaml # 精确配置 │ ├── scripts/ # 训练/推理脚本 │ │ ├── train.py │ │ └── infer.py │ └── README.md # 使用说明 │ ├── pointnet2/ # PointNet 配方 │ ├── configs/ │ ├── scripts/ │ └── README.md │ └── 3drcnn/ # 3D-RCNN 配方 ├── configs/ ├── scripts/ └── README.md2. 配置ConfigYAML 格式的配置文件# configs/optimal.yamlmodel:name:pointnetnum_classes:40num_points:1024training:epochs:200batch_size:32learning_rate:0.001optimizer:Adamweight_decay:1e-4data:dataset:ModelNet40data_dir:/data/modelnet40num_workers:16augmentation:trueperformance:use_npu:truemixed_precision:truenum_devices:83. 脚本Scripts官方提供的训练/推理脚本# scripts/train.pyimporttorchimportyamlimportargparsefrompointnetimportPointNetfromtorchvisionimportdatasets,transformsdefload_config(config_path):withopen(config_path,r)asf:returnyaml.safe_load(f)defmain():parserargparse.ArgumentParser()parser.add_argument(--config,typestr,defaultconfigs/optimal.yaml)argsparser.parse_args()# 加载配置configload_config(args.config)# 模型modelPointNet(num_classesconfig[model][num_classes])modelmodel.npu()# 优化器optimizertorch.optim.Adam(model.parameters(),lrconfig[training][learning_rate],weight_decayconfig[training][weight_decay])# 数据train_datasetdatasets.ModelNet40(rootconfig[data][data_dir],trainTrue,downloadTrue,transformtransforms.Compose([transforms.ResamplePoints(config[model][num_points]),transforms.RandomRotatePoints(),transforms.ToTensor(),]))train_loadertorch.utils.data.DataLoader(train_dataset,batch_sizeconfig[training][batch_size],num_workersconfig[data][num_workers],shuffleTrue)# 训练循环forepochinrange(config[training][epochs]):model.train()forinputs,labelsintrain_loader:inputs,labelsinputs.npu(),labels.npu()optimizer.zero_grad()outputsmodel(inputs)losstorch.nn.functional.cross_entropy(outputs,labels)loss.backward()optimizer.step()print(fEpoch{epoch1}/{config[training][epochs]}, Loss:{loss.item():.4f})if__name____main__:main()为什么要用 cann-recipes-spatial-intelligence三个理由1. 省时间自己调 vs 用配方方式时间性能自己调2 周85.0%用配方10 分钟89.2%2. 性能有保障官方调优过的配置性能有保证# 运行 PointNet 配方$cdpointnet2 $bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 16# Train accuracy: 90.5% (target: 90.0%) ✅# Train time: 4.2 hours (8 NPUs)# Throughput: 680 samples/s (target: 600 samples/s) ✅# 3. 学习资源配方里有详细的注释和文档# 看 PointNet 的配置说明$catpointnet/configs/optimal.yaml|grep-A5# Explanation# 输出# # Explanation:# # - batch_size32: Optimal for throughput (tested 8-128)# # - learning_rate0.001: Adam works best# # - mixed_precisiontrue: 2x faster, accuracy drop 0.3%# # - num_points1024: Standard for ModelNet40# # - augmentationtrue: Improves accuracy by 1.2%你说气人不气人官方文档都给你写好了。怎么用代码示例示例 1PointNet 训练# 1. 克隆仓库$gitclone https://atomgit.com/cann/cann-recipes-spatial-intelligence.git $cdcann-recipes-spatial-intelligence/pointnet# 2. 准备数据$ln-s/data/modelnet40 ./data# 3. 修改配置可选$viconfigs/optimal.yaml# 修改 batch_size: 32 → batch_size: 64# 4. 运行训练$bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 64# Train accuracy: 89.5% (target: 89.0%) ✅# Train time: 2.1 hours (8 NPUs)# Throughput: 1580 samples/s (target: 1000 samples/s) ✅# 示例 2PointNet 训练# 1. 进入 PointNet 目录$cd../pointnet2# 2. 准备数据$ln-s/data/modelnet40 ./data# 3. 修改配置$viconfigs/optimal.yaml# 修改# model: pointnet2# num_points: 2048# batch_size: 16# 4. 运行训练$bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 2048# Batch size: 16# Train accuracy: 90.8% (target: 90.0%) ✅# Train time: 3.8 hours (8 NPUs)# Throughput: 720 samples/s (target: 600 samples/s) ✅# 示例 33D-RCNN 训练# 1. 进入 3D-RCNN 目录$cd../3drcnn# 2. 准备数据需要申请权限$# 假设你已经有 3drcnn 数据集$ln-s/path/to/3drcnn_data ./data# 3. 修改配置$viconfigs/optimal.yaml# 修改# model: 3drcnn# num_points: 4096# batch_size: 8# 4. 运行训练$bashrun_training.sh# 输出# # 3D-RCNN Training Benchmark# # Dataset: ScanNet# Points: 4096# Batch size: 8# Train mAP: 65.2% (target: 65.0%) ✅# Train time: 12 hours (8 NPUs)# Throughput: 25 samples/s (target: 20 samples/s) ✅# 示例 4自定义模型# 1. 创建新的配方目录$mkdirmy_model $cdmy_model $mkdirconfigs scripts# 2. 写配置文件$viconfigs/optimal.yaml# 内容# model:# name: my_model# num_classes: 10# num_points: 1024## training:# epochs: 200# batch_size: 32# learning_rate: 0.001## data:# dataset: MyDataset# data_dir: /data/mydataset# 3. 写训练脚本$viscripts/train.py# 内容参照其他配方的 train.py# 4. 运行$bashrun_training.sh性能数据用 cann-recipes-spatial-intelligence 的性能提升模型自己调优用配方提升PointNet85.0%89.2%4.2%PointNet88.0%90.5%2.5%3D-RCNN60.0%65.2%5.2%你说气人不气人官方配方就是更好。跟其他仓库的关系cann-recipes-spatial-intelligence 在 CANN 架构里属于第 2 层昇腾计算服务层是空间智能最佳实践集合。依赖关系cann-recipes-spatial-intelligence空间智能配方 ↓ 使用 ops-nn / ops-cv算子库 ↓ 调用 昇腾 NPU解释一下cann-recipes-spatial-intelligence空间智能配方集配置文件脚本ops-nn / ops-cv底层算子库昇腾 NPU硬件简单说cann-recipes-spatial-intelligence是空间智能的菜谱。照着做性能不会差。cann-recipes-spatial-intelligence 的核心内容1. 模型配方# 支持的模型pointnet/# 点云分类pointnet2/# 点云分类/分割3drcnn/# 3D 目标检测voxelnet/# 点云 3D 检测2. 配置文件# configs/optimal.yamlmodel:name:...num_classes:40num_points:1024training:epochs:200batch_size:32learning_rate:0.001data:dataset:ModelNet40data_dir:...3. 训练/推理脚本# scripts/train.pydefmain():# 加载配置# 创建模型# 训练循环# 保存模型4. 文档# README.md# - 模型介绍# - 性能数据# - 使用方法# - 常见问题适用场景什么情况下用 cann-recipes-spatial-intelligence3D 视觉点云处理空间智能三维重建性能调优自己调不明白什么情况下不用2D 视觉用 cann-recipes-infer自定义模型自己写总结cann-recipes-spatial-intelligence 就是昇腾的空间智能菜谱模型配方各种空间智能模型的配置性能调优官方调优过的参数拿来就用省时间性能好
写给新手 cann-recipes-spatial-intelligence:昇腾空间智能最佳实践到底是啥?
发布时间:2026/5/23 2:11:50
之前帮兄弟搞 3D 视觉项目他问我“哥昇腾上有没有空间智能的最佳实践我自己在那调 PointNet性能惨不忍睹。”我说有cann-recipes-spatial-intelligence。好问题。今天一次说清楚。cann-recipes-spatial-intelligence 是啥cann-recipes-spatial-intelligence CANN Recipes for Spatial Intelligence昇腾的空间智能3D视觉/点云/三维重建最佳实践集合。PointNet、PointNet、3D-RCNN 这些模型的配置、性能调优方法都在里面。一句话说清楚cann-recipes-spatial-intelligence 是昇腾的空间智能配方集3D 视觉、点云处理、三维重建这些场景的配置、性能调优参数都给你准备好了拿来就能用。你说气人不气人之前自己调 PointNet 一周现在下载个配方改两行就搞定了。为什么要用 cann-recipes-spatial-intelligence三个字拿来用。不用 cann-recipes-spatial-intelligence自己调# 自己手写 3D 视觉脚本importtorchimporttorch.nnasnnimporttorch.nn.functionalasF# 自己写 PointNetclassPointNet(nn.Module):def__init__(self,num_classes40):super(PointNet,self).__init__()# 自己写卷积层self.conv1nn.Conv1d(3,64,1)self.conv2nn.Conv1d(64,128,1)# ... 写了很多层defforward(self,x):# 自己写前向传播xF.relu(self.conv1(x))xF.relu(self.conv2(x))# ... 写了很多行returnx# 问题# 1. 性能慢CPU 版本# 2. 点云处理卡顿# 3. 三维重建慢# 4. 调了一周性能还是不够好用 cann-recipes-spatial-intelligence官方配方# 克隆仓库gitclone https://atomgit.com/cann/cann-recipes-spatial-intelligence.gitcdcann-recipes-spatial-intelligence# 直接用 PointNet 配方cdpointnetbashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 32# Train accuracy: 89.2% (target: 89.0%)# Train time: 2.5 hours (8 NPUs)# Throughput: 1250 samples/s (target: 1000 samples/s)## Config: configs/pointnet_optimal.yaml# 你说气人不气人拿来就能用性能还更好。核心概念就三个1. 配方Recipe每个模型一个配方目录cann-recipes-spatial-intelligence/ ├── pointnet/ # PointNet 配方 │ ├── configs/ # 配置文件 │ │ ├── optimal.yaml # 最优配置 │ │ ├── fast.yaml # 快速配置 │ │ └── accurate.yaml # 精确配置 │ ├── scripts/ # 训练/推理脚本 │ │ ├── train.py │ │ └── infer.py │ └── README.md # 使用说明 │ ├── pointnet2/ # PointNet 配方 │ ├── configs/ │ ├── scripts/ │ └── README.md │ └── 3drcnn/ # 3D-RCNN 配方 ├── configs/ ├── scripts/ └── README.md2. 配置ConfigYAML 格式的配置文件# configs/optimal.yamlmodel:name:pointnetnum_classes:40num_points:1024training:epochs:200batch_size:32learning_rate:0.001optimizer:Adamweight_decay:1e-4data:dataset:ModelNet40data_dir:/data/modelnet40num_workers:16augmentation:trueperformance:use_npu:truemixed_precision:truenum_devices:83. 脚本Scripts官方提供的训练/推理脚本# scripts/train.pyimporttorchimportyamlimportargparsefrompointnetimportPointNetfromtorchvisionimportdatasets,transformsdefload_config(config_path):withopen(config_path,r)asf:returnyaml.safe_load(f)defmain():parserargparse.ArgumentParser()parser.add_argument(--config,typestr,defaultconfigs/optimal.yaml)argsparser.parse_args()# 加载配置configload_config(args.config)# 模型modelPointNet(num_classesconfig[model][num_classes])modelmodel.npu()# 优化器optimizertorch.optim.Adam(model.parameters(),lrconfig[training][learning_rate],weight_decayconfig[training][weight_decay])# 数据train_datasetdatasets.ModelNet40(rootconfig[data][data_dir],trainTrue,downloadTrue,transformtransforms.Compose([transforms.ResamplePoints(config[model][num_points]),transforms.RandomRotatePoints(),transforms.ToTensor(),]))train_loadertorch.utils.data.DataLoader(train_dataset,batch_sizeconfig[training][batch_size],num_workersconfig[data][num_workers],shuffleTrue)# 训练循环forepochinrange(config[training][epochs]):model.train()forinputs,labelsintrain_loader:inputs,labelsinputs.npu(),labels.npu()optimizer.zero_grad()outputsmodel(inputs)losstorch.nn.functional.cross_entropy(outputs,labels)loss.backward()optimizer.step()print(fEpoch{epoch1}/{config[training][epochs]}, Loss:{loss.item():.4f})if__name____main__:main()为什么要用 cann-recipes-spatial-intelligence三个理由1. 省时间自己调 vs 用配方方式时间性能自己调2 周85.0%用配方10 分钟89.2%2. 性能有保障官方调优过的配置性能有保证# 运行 PointNet 配方$cdpointnet2 $bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 16# Train accuracy: 90.5% (target: 90.0%) ✅# Train time: 4.2 hours (8 NPUs)# Throughput: 680 samples/s (target: 600 samples/s) ✅# 3. 学习资源配方里有详细的注释和文档# 看 PointNet 的配置说明$catpointnet/configs/optimal.yaml|grep-A5# Explanation# 输出# # Explanation:# # - batch_size32: Optimal for throughput (tested 8-128)# # - learning_rate0.001: Adam works best# # - mixed_precisiontrue: 2x faster, accuracy drop 0.3%# # - num_points1024: Standard for ModelNet40# # - augmentationtrue: Improves accuracy by 1.2%你说气人不气人官方文档都给你写好了。怎么用代码示例示例 1PointNet 训练# 1. 克隆仓库$gitclone https://atomgit.com/cann/cann-recipes-spatial-intelligence.git $cdcann-recipes-spatial-intelligence/pointnet# 2. 准备数据$ln-s/data/modelnet40 ./data# 3. 修改配置可选$viconfigs/optimal.yaml# 修改 batch_size: 32 → batch_size: 64# 4. 运行训练$bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 1024# Batch size: 64# Train accuracy: 89.5% (target: 89.0%) ✅# Train time: 2.1 hours (8 NPUs)# Throughput: 1580 samples/s (target: 1000 samples/s) ✅# 示例 2PointNet 训练# 1. 进入 PointNet 目录$cd../pointnet2# 2. 准备数据$ln-s/data/modelnet40 ./data# 3. 修改配置$viconfigs/optimal.yaml# 修改# model: pointnet2# num_points: 2048# batch_size: 16# 4. 运行训练$bashrun_training.sh# 输出# # PointNet Training Benchmark# # Dataset: ModelNet40# Points: 2048# Batch size: 16# Train accuracy: 90.8% (target: 90.0%) ✅# Train time: 3.8 hours (8 NPUs)# Throughput: 720 samples/s (target: 600 samples/s) ✅# 示例 33D-RCNN 训练# 1. 进入 3D-RCNN 目录$cd../3drcnn# 2. 准备数据需要申请权限$# 假设你已经有 3drcnn 数据集$ln-s/path/to/3drcnn_data ./data# 3. 修改配置$viconfigs/optimal.yaml# 修改# model: 3drcnn# num_points: 4096# batch_size: 8# 4. 运行训练$bashrun_training.sh# 输出# # 3D-RCNN Training Benchmark# # Dataset: ScanNet# Points: 4096# Batch size: 8# Train mAP: 65.2% (target: 65.0%) ✅# Train time: 12 hours (8 NPUs)# Throughput: 25 samples/s (target: 20 samples/s) ✅# 示例 4自定义模型# 1. 创建新的配方目录$mkdirmy_model $cdmy_model $mkdirconfigs scripts# 2. 写配置文件$viconfigs/optimal.yaml# 内容# model:# name: my_model# num_classes: 10# num_points: 1024## training:# epochs: 200# batch_size: 32# learning_rate: 0.001## data:# dataset: MyDataset# data_dir: /data/mydataset# 3. 写训练脚本$viscripts/train.py# 内容参照其他配方的 train.py# 4. 运行$bashrun_training.sh性能数据用 cann-recipes-spatial-intelligence 的性能提升模型自己调优用配方提升PointNet85.0%89.2%4.2%PointNet88.0%90.5%2.5%3D-RCNN60.0%65.2%5.2%你说气人不气人官方配方就是更好。跟其他仓库的关系cann-recipes-spatial-intelligence 在 CANN 架构里属于第 2 层昇腾计算服务层是空间智能最佳实践集合。依赖关系cann-recipes-spatial-intelligence空间智能配方 ↓ 使用 ops-nn / ops-cv算子库 ↓ 调用 昇腾 NPU解释一下cann-recipes-spatial-intelligence空间智能配方集配置文件脚本ops-nn / ops-cv底层算子库昇腾 NPU硬件简单说cann-recipes-spatial-intelligence是空间智能的菜谱。照着做性能不会差。cann-recipes-spatial-intelligence 的核心内容1. 模型配方# 支持的模型pointnet/# 点云分类pointnet2/# 点云分类/分割3drcnn/# 3D 目标检测voxelnet/# 点云 3D 检测2. 配置文件# configs/optimal.yamlmodel:name:...num_classes:40num_points:1024training:epochs:200batch_size:32learning_rate:0.001data:dataset:ModelNet40data_dir:...3. 训练/推理脚本# scripts/train.pydefmain():# 加载配置# 创建模型# 训练循环# 保存模型4. 文档# README.md# - 模型介绍# - 性能数据# - 使用方法# - 常见问题适用场景什么情况下用 cann-recipes-spatial-intelligence3D 视觉点云处理空间智能三维重建性能调优自己调不明白什么情况下不用2D 视觉用 cann-recipes-infer自定义模型自己写总结cann-recipes-spatial-intelligence 就是昇腾的空间智能菜谱模型配方各种空间智能模型的配置性能调优官方调优过的参数拿来就用省时间性能好