-
声明
- 代码:源自MMDetection3D
- 论文题目:Dynamic Graph CNN for Learning on Point Clouds
- 论文连接:https://par.nsf.gov/servlets/purl/10124348
- 测试环境:PyTorch 1.9.0 Python 3.8(ubuntu18.04) Cuda 11.1
- 测试文件:dgcnn_32x4_cosine_100e_s3dis_seg-3d-13class-area1.py
- 测试数据集:S3DIS Seg Dataset
1.模型初始化
1.1GF模块
1.2FA模块
1.3Decode_head
2.训练流程测试
2.1配置文件
①.分割器使用的EncoderDecoder3D;主干网络DGCNNBackbone;头部DGCNNHead;
②.data中samples_per_gpu=32表示batch;采样点数num_points=4096;
2.2EncoderDecoder3D
def forward_train(self, points, img_metas, pts_semantic_mask):
①.输入的数据points:类型list-32,大小(4096,9);img_metas: 类型list-32,每个元素为dict-2;pts_semantic_mask:类型list-32,大小(4096,)
points_cat = torch.stack(points)
pts_semantic_mask_cat = torch.stack(pts_semantic_mask)
②.points_cat:(32,4096,9); pts_semantic_mask_cat: (32,4096)
x = self.extract_feat(points_cat)
③.调用EncoderDecoder3D中提取特征的方法,进入backbone中
def extract_feat(self, points):
x = self.backbone(points)
......
进入DGCNNBackbone
2.3DGCNNBackbone
def forward(self, points):
gf_points = [points]
......
①.前向传播,gf_points:list类型,元素大小(32,4096,9)
for i in range(self.num_gf):
cur_points = self.GF_modules[i](gf_points[i])
gf_points.append(<