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

## Overview
CT肺结节分类模型的主要功能是对肺结节检测模块的输出进行结节征象密度四分类处理，实现常见肺结节类型的辅助诊断，其中包含的主要类别为`磨玻璃结节`，`实性结节`，`混合结节`和`钙化结节`。

1. 功能架构
   1. 数据导入子模块：负责对CT肺结节影像及标签数据进行处理以符合后续模型使用的需求。
   2. 数据预处理子模块：负责对影像数据进行预处理，提高模型的分类性能。
   3. 肺结节分类子模块：负责对肺结节影像数据进行分类识别。
   4. 结果输出子模块：负责将模型的输出结果按规定格式进行输出。
2. 算法实现
   1. 数据导入子模块：采用标准DICOM读取协议读取CT肺结节影像数据，并保存为npy格式。
   2. 数据预处理子模块：主要使用pytorch工具，按需求对CT肺结节影像数据进行预处理，包括随机翻转和随机裁切。
   3. 肺结节分类子模块：该模块需要对CT肺结节所属的类别进行区分，于是使用了集成SE模块的ResNet网络模型进行处理。ResNet 是一种深度残差网络，其核心思想是通过添加残差连接来缓解深度网络训练中的梯度消失问题。它可以有效地提高网络的深度，从而提高网络的特征表达能力。SE模块是一种channel-wise的注意力机制，其在常规的卷积之后增加了一条专门计算channel-wise 注意力权重的分支，然后将得到的注意力权重乘到相应的channel上，得以在保留原始特征的基础上，通过学习不同通道之间的关系，提高模型的表达能力。而在SE-ResNet模型中，SE模块被集成在残差分支中，同时增加的SE模块不会增加过多的计算消耗，但是可以有效提高对于肺结节数据的特征表示，可以准确的对肺结节的种类进行识别。
   4. 结果输出子模块：在训练过程中，最好的模型参数会被保存下来，并且会记录每一个训练迭代中的模型输出信息，包括epoch、学习率、训练损失和预测准确率等。


