# MeshSegNet **Repository Path**: ai-models-cn/MeshSegNet ## Basic Information - **Project Name**: MeshSegNet - **Description**: 复制 MeshSegNet,修正代码中的冗余,添加中文注释。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master_CN - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-07-08 - **Last Updated**: 2025-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MeshSegNet Created by [Chunfeng Lian](https://github.com/chunfenglian/), Li Wang, [Tai-Hsien Wu](https://github.com/Tai-Hsien), Fan Wang, Pew-Thian Yap, Ching-Chang Ko, and Dinggang Shen ![meshsegnet_architecture](docs/pics/meshsegnet_architecture.png) ## 前提 参见 requirtments.txt ## 介绍 MeshSegNet 的 PyTorch 实现,已经发表在 *IEEE Transactions on Medical Imaging* () 和 *MICCAI 2019* ()。 MeshSegNet 用于对口扫获取的数字化 3D 牙齿表面模型中的牙齿进行精确标记。 在本仓库中,有六个 Python 脚本,其中有三个(step1、step2、step3)为关键的,另三个(step3_1、step4、step5)为可选的。很遗憾,我们无法提供数据。关于代码的详细说明参见下文。 ## 流程 ### 第一步:数据增强 为了增加训练数据集,我们首先通过以下方法对每个网格在合理的荡地内增强了可用的口扫数据: 1. 随机旋转 2. 随机平移 3. 随机缩放 在本次研究中,口扫数据以 VTP(VTK多边形数据)格式存储。使用开发包 [**vedo**](https://github.com/marcomusy/vedo) 读取、写入和操作 VTP 文件,使用 GUI 工具 [Mesh_Labeler](https://github.com/Tai-Hsien/Mesh_Labeler) 读取、标注和保存 VTP 文件,以及修改标签。在本次研究中,总共有 36 个口扫文件,所有这些文件都做过下采样处理。其中 24 个文件是训练集,6 个文件是验证集,6 个文件是测试集。对于训练集和验证集,每个扫描文件(例如:`Sample_01_d.vtp`)及其翻转文件(例如:`Sample_01001_d.vtp`)都得到了 20 次增强。所有生成的口扫文件都属于增强后的数据,都将保存在 `*./augmentation/vtk/data` 目录下。 在 `step1_augmentation.py` 中,需要定义变量 `vtk_path`,即口扫文件夹的路径。然后,执行下面的命令: ```shell python step1_augmentation.py ``` 注:由于使用 3DTeethSeg22 数据集后,数据增强已经被抛弃。 ### 第一步:数据预处理 在牙齿数据中,数据预处理步骤是否有效,需要通过实验来证明,当前提供了两个归一化手段(①0均值,[-1,+1]范围;②0均值,1方差)。并将所有网格的咬合面都与z轴垂直。 具体参考代码:`src/data/3d_teeth_seg22.py`。 ### 第二步:生成训练和验证数据列表 在 `src/data/split_list.py` 中。因为我们使用了 30个扫描文件中的 24个作为训练数据,因此 `train_size=0.8`。然后,执行下面的命令: ```shell python split_list.py ``` 然后,在同一目录下会生成两个 CSV 文件(即:`train_list.txt` 和 `val_list.txt`)。 ### 第三步:训练模型 在 `src/train.py` 中,需要为 [visdom](https://github.com/facebookresearch/visdom) 环境定义变量 `model_name`。如果系统中没有 visdom,则设置变量 `use_visdom=False`。在本次研究中,分类的类别数为 15,包括牙龈和 14颗牙。特征的数量为 15,对应于面片顶点坐标(9个元素)、面片法向量(3个元素)和相对位置(3个元素)。为了在训练阶段进一步增强我们的数据集,我们在 `./augmentation_vtk_data` 中基于原始的扫描数据,选择了所有的牙齿面片(即:三角面片)和一些随机选择的牙龈面片,总共构成了 6000个面片的输入数据。为了预备输入特征和进一步增强的数据,以及计算用的邻接矩阵(A~S~ 和 A~L~,详见原文),需要执行 `Mesh_dataset.py` 文件,而 **MeshSegNet** 的网络架构则定义在 `meshsegnet.py` 文件中。 训练 **MeshSegNet** 模型则执行下面的命令: ```shell python train.py ``` 两个训练好的模型,以及训练曲线保存在 `./models` 目录中。 可选项: 如果需要继续训练先前的模型,可以依据 `step_3_1_continous_training.py` 文件进行修改和执行: ```shell python train.py ``` ### 第四步:测试模型 如果获得了训练好的模型,那么可以基于你自己的测试数据集使用 `src/test.py` 测试模型。需要定义测试数据集的路径变量 `mesh_path`,而文件名则基于你的数据。具体为执行下面的命令: ```shell python src/test.py ``` 发布的结果保存在 `/output/csv` 目录下,评价指标(DSC、SEN、PPV)则被显示出来。 ### 第五步:模型预测 `predict.py` 与 `test.py` 文件非常类似。一旦设置了相应的文件路径和文件名,那么就可以在未见过的口扫数据上预测牙齿的标签了。发布的结果也将保存在 `/test` 目录下,没有计算任何评价指标,因为未见过的口扫数据没有真实值。 执行的命令如下: ```shell python predict.py ``` 注:如果面片数目 > 1万时,这个步骤需要对网格下采样。否则很可能遇到 GPU 内在不够的错误出现。 注:TODO 下步尝试面片数目不固定方式的训练和推理。 ### 第六步:预测结果后处理 我们在 [*IEEE Transactions on Medical Imaging*]() 上发表的论文提及了多标签图切法精调预测结果。为了达到目标,需要执行下面的命令: ```shell python step6_predict_with_post_processing_pygco.py ``` 多标签图切由 Python 包 [pygco](https://github.com/amueller/gco_python) 实现完成。 ## 授权 The MeshSegNet code is released under MIT License (see LICENSE file for details). ## 引用 If you find our work useful in your research, please cite: * C. Lian et al., "Deep Multi-Scale Mesh Feature Learning for Automated Labeling of Raw Dental Surfaces From 3D Intraoral Scanners," in IEEE Transactions on Medical Imaging, vol. 39, no. 7, pp. 2440-2450, July 2020, doi: 10.1109/TMI.2020.2971730. * Lian C. et al. (2019) MeshSNet: Deep Multi-scale Mesh Feature Learning for End-to-End Tooth Labeling on 3D Dental Surfaces. In: Shen D. et al. (eds) Medical Image Computing and Computer Assisted Intervention – MICCAI 2019. MICCAI 2019. Lecture Notes in Computer Science, vol 11769. Springer, Cham. [https://doi.org/10.1007/978-3-030-32226-7_93] * Wu TH. et al. (2021) Machine (Deep) Learning for Orthodontic CAD/CAM Technologies. In: Ko CC., Shen D., Wang L. (eds) Machine Learning in Dentistry. Springer, Cham. [https://doi.org/10.1007/978-3-030-71881-7_10]