# 基于深度学习的格里森系数分类
## 数据预处理
### 数据下载
本项目所用到的所有数据来源于国外的一个癌症研究所的The Cancer Genome Atlas Program(TCGA),其中有400余例公开的前列腺癌症患者的组织切片以及病理报告中的格里森系数以供本文的模型训练与测试。其中,组织切片的格式为SVS,是WSI数据,仅一份文件就非常庞大(GB为数量级);病理报告格式为PDF,我们主要想从其中获得对应病例的格里森系数。
![webimage](./image/webimage.png)
(TCGA官网)
项目伊始,为获得数据,我们直接想到的方法是从其官网直接下载。通过简单的点选操作从而选择前列腺癌症的相关数据,这种方法是可行的,我们可以顺利获得所需要的SVS文件。但又需手动下载病理报告,过程较为繁琐。之后又尝试使用R语言中的TCGAbiolinks程序包,这样可以快速批量下载所需要的数据。详细应用可参考官网:https://www.bioconductor.org/packages/release/bioc/html/TCGAbiolinks.html
至此我们得到了449张诊断切片(Diagnostic slide),723张(Tissue slide)与481张病理报告(Pathology report)。
<img src="./image/example1.png" alt="image_transform" style="zoom:33%;" />
(诊断切片)
![example2](./image/example2.png)
(病理报告)
由此我们获得了最终的数据集,并将其进行标签。
### 数据筛选
由于WSI图像尺寸过大,现通过下采样对图像进行缩略处理。经过筛选之后再映射回原图。
首先,我们将每一张WSI图像切割为多个小尺寸的patch。第一步的数据筛选便是基于其RGB值来进行的。此处我们引入一个蓝比(Blue Rate)公式:
$$
B R_{i}=\frac{100 \times B_{i}}{1+R_{i}+G_{i}} \times \frac{256}{1+R_{i}+G_{i}+B_{i}}
$$
由以上公式可以直观看出,蓝比也即反映了“B值”在图像中的占比。这对我们的数据筛选以及之后的模型训练过程起到了至关重要的作用。同理,我们也可以计算出图像的红比(Red Rate)。由于在本文的图像数据集中,蓝色和红色两个通道占绝大部分,由此我们只考虑这两种颜色的影响。
对于一些的patch,其所包含的信息为噪声信息,需要将其过滤:例如部分有过多的无效染色,或包含了太多的背景信息。针对无效染色,我们设置如果一个patch的蓝比大于100,或是红比大于110,或是包含图像信息大于99%,我们将其过滤;针对背景信息过多,我们设置如果一个patch包含图像信息少于70%,我们将其过滤。经过筛选,我们得到的patch数据集大致如下:
<img src="./image/Patch_many.png" alt="Patch_many" style="zoom: 30%;" />
在不同的染色切片中,染色深浅的不同也会影响模型的准确度。为了消除这个因素,我们选择将其进行色彩归一化:
在此参考了非常早 ( 02年 ) 的一篇文章 《Color transfer between images》,主要是对色彩进行的迁移。感觉其实虽然这个属于数字图像处理的内容,不过它的论文感觉已经有了“风格迁移”的感觉。可能从那时已经有这种念头,可惜到近几年GAN的成熟这个方向才开始羽翼丰满。在此主要是使用一张图像作为模版图,从而将其他图像的色彩转化到模版图上去。方法也非常简单:在Lab色彩域做归一化即可。
<img src="./image/image_transform.png" alt="image_transform" style="zoom:33%;" />
<img src="./image/image_transform2.png" alt="image_transform" style="zoom:33%;" />
当前尝试的框架是Timm提供的swin-transformer,选取transformer的原因单纯因从我参加过的kaggle比赛来看它实在太能打了,但发现事情并没有这么一帆风顺。
<img src="./image/loss.png" alt="image_transform" style="zoom:33%;" />
val_acc卡在80%左右上不去,这与我最初预期有差距。按道理来讲在此使用的backbone是最新的,效果应该比两年前的要好。但看nature的文章他们使用的数据集好像是diagnose切片,而我使用的是issue切片。在此考虑换切片类型。这是我第一次在百GB级的数据上进行操作,写了许多自动化工具,但做到这里又重头做起确实是最开始没有研究透彻。
将数据改为diagnose切片,肉眼观察下并看不出太大差距,在此选用small-transformer作为backbone进行分类,由于对医学图像数据并无过多了解,在此并不对图像做数据增广,仅以原图切片作为数据。在同样大小数据集上经过调参准确度可以达到96%。
<img src="./image/visualDL.png" alt="image_transform" style="zoom:33%;" />
<img src="./image/parameters.png" alt="image_transform" style="zoom:33%;" />
该准确度仅是以batch作为数据源的,而我们针对的是svs图片,因此考虑实验验证该网络性能结果。前文已述根据svs图片大小我们根据权值选取前5%的batch作为训练集,认定这些batch内包含病的相关信息。那么在此对于20张全新的svs病理图片进行认证,仍选取切割后前5%的图片作为训练集,计算分类正确的batch所占比例,结果为最差情况下**87.3%**的所选batch分类正确。
这显然是一个不错的结果,本repo采取的去噪方法与图像色彩归一化方法均比较落后,后续可考虑使用U-net与语义分割做进一步尝试。
# 运行说明
#初始化数据
```python
!a.sh
!file.sh
```
#从svs图片中切割patch并进行色域的转变
```shell
python3 select_pic.py
python3 trans_lab.py
```
#model的训练
```shell
python3 main.py
```
#实验结果验证
```shell
python3 accuracy.py
```
也可单纯通过sweep来寻找较优超参数,并在wandb中查看结果(推荐)
```
python3 sweep.py
```
本实验所用模型为文件model_best
基于深度学习的格里森分级.zip
需积分: 5 90 浏览量
2024-02-06
19:05:32
上传
评论
收藏 12.44MB ZIP 举报
妄北y
- 粉丝: 1w+
- 资源: 1万+
最新资源
- 基于matlab实现电磁优化计算功能,进行线型规划优化电磁设计.rar
- 基于matlab实现带精英策略的非支配排序遗传算法matlab 源码.rar
- 基于matlab实现差分进化算法,最新的用于替代遗传算法,是以后的主要发展方法.rar
- VSCode配置c/c++环境教程.md
- 基于matlab实现标准合作型协同进化遗传算法matlab源程序
- 七下人教.zip
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
- 基于matlab实现蝙蝠算法优化相关向量机建模对数据进行建模和预测.rar
- 基于matlab实现编写的禁忌搜索算法,解决了TSP问题,对初学者有重要的参考价值.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈