# 3D-分割
## Requirements
- `os`
- `json`
- `numpy == 1.22.4`
- `torch == 1.13.0`
- `logging`
- `argparse`

## Overview
CT肺结节分割模型的主要功能是从CT肺部影像中分割出存在的肺结节。

1. 功能架构
   1. 数据导入子模块：负责对CT肺部影像及标签数据进行处理以符合后续模型使用的需求。
   2. 数据预处理子模块：负责对影像数据进行预处理，提高模型的分割性能。
   3. 肺结节分割子模块：负责对肺结节区域进行分割处理。
   4. 结果输出子模块：负责将模型的输出结果按规定格式进行输出。
2. 算法实现
   1. 数据导入子模块：采用标准DICOM读取协议读取CT肺部影像数据，影像数据、mask信息都被保存为npy格式数据。
   2. 数据预处理子模块：主要使用pytorch工具，按需求对CT肺部影像数据进行预处理，包括随机调换影像的维度、随机旋转、随机翻转和随机添加噪声等操作。
   3. 肺结节分割子模块：为了更好得对CT肺部影像中的肺结节区域进行分割，使用了集成了空洞卷积、ASPP模块和跳跃连接操作的3D-UNet模型。3D-UNet是一种常用的分割模型，其中编码器用于逐步减小特征图的尺寸和提取高级别的抽象特征，解码器通过对编码器的输出特征图进行上采样或者反卷积操作，逐步恢复特征图的尺寸。3D-UNet的最后一层通常是一个1x1的卷积，用于生成分割结果。这一层输出的特征图与输入图像的分辨率相同，并且每一个像素点对应图像中的一个区域，其数值表示该像素点是否属于肺结节区域。空洞卷积通过在卷积核中引入膨胀率，扩大了每个卷积核的感受野，使得模型可以获得更多的上下文信息，从未提高分割模型对于整体语意的理解能力。相比于普通卷积操作，空洞卷积可以在扩大感受野的同时，做到减少参数数量和保持图像的分辨率。ASPP模块是分割任务中的一种特殊卷积网络结构，其作用在于提高网络模型对不同尺度信息的感知能力，从而改善分割模型的性能。ASPP模块通过使用不同膨胀率的空洞卷积，可以捕捉不同尺度下的特征信息。这样，模型可以同时考虑局部细节和全局上下文信息，有助于更准确地对肺结节进行分割。在3D-UNet模型中，跳跃连接操作允许低级别的特征图与高级别的特征图直接相连，使得网络可以在不同层次的特征表示之间传递信息，这有助于保留更多的细节信息和上下文信息。
   4. 结果输出子模块：在训练过程中，最好的模型参数会被保存下来，并且会记录每一个训练迭代中的模型输出信息，包括epoch、学习率、训练损失和预测准确率等。


