# PFNet-PointCloudCompletion **Repository Path**: kellyworld0/pfnet-point-cloud-completion ## Basic Information - **Project Name**: PFNet-PointCloudCompletion - **Description**: 本项目基于PFNet(Point Fractal Network)实现了点云补全任务,通过多尺度特征提取和分层生成策略,从残缺的点云数据中恢复完整的3D形状。网络采用从粗到细的三级生成结构(中心点→中间层→精细层),并结合Chamfer Distance损失与对抗训练损失进行优化,有效提升了补全结果的准确性与细节质量,适用于ShapeNet Part等标准点云数据集的训练与评估。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-25 - **Last Updated**: 2026-06-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PF-Net: Point Fractal Network ## 项目简介 PF-Net(Point Fractal Network)是一个基于深度学习的3D点云补全网络。该项目利用点云分形结构和生成对抗网络(GAN)的思想,从不完整的点云数据中重建完整的3D形状。 ## 项目特点 - **多尺度特征提取**:使用不同点数的点云(2048、1024、512)进行特征提取 - **分形结构**:采用类似分形的层级结构进行点云生成 - **GAN框架**:包含生成器(G-Net)和判别器(D-Net)的对抗训练 - **Chamfer Distance损失**:使用Chamfer距离作为点云重建的损失函数 - **支持多种数据集**:支持ShapeNet和ModelNet40数据集 ## 项目结构 ``` PF-Net-Point-Fractal-Network/ ├── model_PFNet.py # 网络模型定义(G-Net、D-Net、特征提取等) ├── Train_PFNet.py # 训练脚本 ├── data_utils.py # 数据增强工具类 ├── utils.py # 工具函数(Chamfer距离、最远点采样等) ├── ModelNet40Loader.py # ModelNet40数据加载器 ├── shapenet_part_loader.py # ShapeNet数据加载器 ├── show_CD.py # 可视化Chamfer距离结果 ├── show_recon.py # 可视化重建结果 ├── Test_csv.py # 测试脚本 ├── Checkpoint/ # 模型检查点保存目录 ├── dataset/ # 数据集目录 ├── test_example/ # 测试示例 └── test_one/ # 单点测试 ``` ## 依赖环境 - Python 3.x - PyTorch - NumPy ## 数据集准备 ### ShapeNet数据集 将ShapeNet数据集放置在以下路径: ``` ./dataset/shapenet_part/shapenetcore_partanno_segmentation_benchmark_v0/ ``` ### ModelNet40数据集 取消训练脚本中的ModelNet40相关注释并注释掉ShapeNet部分。 ## 训练模型 ### 使用GAN训练(推荐) ```bash python Train_PFNet.py --D_choose 1 --niter 200 --batchSize 8 --crop_point_num 512 ``` 主要参数说明: - `--D_choose 1`: 使用判别器进行GAN训练 - `--niter`: 训练轮数 - `--batchSize`: 批次大小 - `--crop_point_num`: 裁剪点数 - `--learning_rate`: 学习率(默认0.0002) - `--cropmethod`: 裁剪方法(random_center/random/center) ### 仅使用生成器训练 ```bash python Train_PFNet.py --D_choose 0 --niter 200 --batchSize 8 --crop_point_num 512 ``` ## 测试模型 ```bash python Test_csv.py ``` ## 可视化结果 ### 重建结果可视化 ```bash python show_recon.py ``` ### Chamfer距离可视化 ```bash python show_CD.py ``` ## 网络架构 ### 生成器(G-Net) 生成器采用多尺度层级结构: 1. **Latentfeature模块**:从不同尺度点云提取特征 2. **分形生成**:从64个中心点逐步扩展到64×2×N个点 3. **输出**:三层点云输出(中心点1、中心点2、精细点) ### 判别器(D-Net) 判别器用于判断点云的真实性: - 卷积层提取局部特征 - 最大池化聚合全局特征 - 全连接层输出真伪判断 ## 损失函数 - **Chamfer Distance**:衡量两点云之间的距离 - **GAN损失**:对抗训练损失 - **多尺度损失**:包含不同层级点的重建损失 ## 训练策略 - 使用Adam优化器,学习率为0.0001 - 每40个epoch将学习率乘以0.2 - 多尺度点云输入(2048、1024、512) - 随机视角裁剪进行数据增强 ## 注意事项 - 训练前请确保已正确配置数据集路径 - 建议使用GPU进行训练以获得更好的性能 - 模型检查点会每10个epoch保存一次 ## 许可证 请参考原项目的许可证。