病理AI项目实战|手把手教你配置环境、读取切片信息以及比较不同染色标准化方法之间的差异|项目实战·24-12-23
小罗碎碎念
这期推送是我非常想写,但是一直没有静下心来写完的,现在给它画个句号。
这期推送我会和大家介绍一个项目——TIAToolBox,这个项目非常适合我们初期了解病理AI究竟是在研究什么,为我们后期从事复杂的研究打下基础。
本期推文涉及的代码是我在原作者的基础上修改的,每一部分都测试过,只要你跟着我的教程走,一定可以复现!虽然我们后期可能不会用这个项目来搭建自己的模型,但是我们可以利用这个项目的某些部分帮助我们快速完成一些可视化展示——例如测试不同染色标准化方法对批次数据的影响。
本期推送只是这个系列的第一篇推送,后续会更新的内容如下,感兴趣的可以点个关注再走!
组织遮罩图像块提取、预测语义分割高级建模细胞核实例分割、多任务分割全切片图像配准导入基础模型……
准备工作:配置环境
首先进入你想存放项目的地址,克隆仓库。
git clone https://github.com/TissueImageAnalytics/tiatoolbox.git
进入仓库
cd tiatoolbox
cd requirements
创建虚拟环境
# conda env create -f requirements.dev.conda.yml
conda create -n tiatoolbox-dev python=3.10
conda activate tiatoolbox-dev
pip install -r requirements_dev.txt
安装内核
# 在当前激活的环境中安装ipykernel,这是一个允许Jupyter Notebook使用conda环境内核的工具
conda install ipykernel
#新的虚拟环境添加到Jupyter Notebook
python -m ipykernel install --user --name=tiatool
# 如果你要删除内核,可以这样操作
jupyter kernelspec uninstall tiatoolbox-dev
conda remove -n tiatoolbox-dev --all
安装库
pip install tiatoolbox
conda install -c conda-forge openslide
一、设置绘图环境
这段代码主要负责配置和设置Python环境中的日志记录器、字典打印、绘图库Matplotlib,以及导入tiatoolbox库的相关模块。
在这里着重强调一下日志记录器的作用——日志记录器是软件开发中用于追踪程序运行时信息的关键工具。它通过记录错误、警告、信息和调试消息,帮助开发者在开发阶段进行问题诊断和性能优化,并在生产环境中快速定位故障。
日志记录器还能用于监控应用程序的健康状况,通过分析日志数据,可以识别潜在的性能瓶颈和安全威胁,确保系统的稳定性和安全性。
此外,日志记录器在满足行业合规性要求、用户行为分析和系统维护等方面也发挥着重要作用,它是连接软件开发、测试和运维的桥梁,为持续改进产品提供了宝贵的数据支持。
这里有一条提示信息,显示我正在使用的 Pixman 版本是 0.38,这个版本已知与 OpenSlide 存在兼容性问题,但是实际测试下来,并没有影响。
二、读取全切片图像(WSI)
这一部分原代码是需要下载一个切片,这里我做了一些调整,可以用自己的切片进行分析。
此处,将file_path更改为自己的文件地址即可。
2-1:切片信息
这段代码和输出是关于使用Python处理全切片图像(Whole Slide Image, WSI)的信息。
全切片图像是一种在显微镜下获取的高分辨率图像,通常用于病理学研究和诊断,我们在开始项目之前,首先要做的就是了解切片的信息。
输出解释
输出的字典包含了WSI文件的详细信息:
‘axes’: ‘YXS’:表示图像的轴向,'YXS’通常意味着图像的维度是高度(Y)、宽度(X)和扫描层级(S)。
‘file_path’: PosixPath(‘/data2/data2_mailab015/…/1800518-1.svs’):这是WSI文件的路径,使用PosixPath表示,这是一个跨平台的路径表示方式(因为我的文件并不存储在项目文件里)。
‘level_count’: 5:表示图像金字塔中的层级数量,图像金字塔是一种存储多分辨率图像的方法。
‘level_dimensions’: ((12051, 11316), (3012, 2829), (753, 707), (188, 176), (47, 44)):每个层级的尺寸,从最高层(原始尺寸)到最低层。
‘level_downsamples’: [1.0, 4.000498007968128, 16.004820886186515, 64.19825918762089, 256.79303675048357]:每个层级相对于原始图像的缩放比例。
‘mpp’: (0.4902, 0.4902):每像素的微米数(microns per pixel),表示图像的分辨率。
‘objective_power’: 20.0:显微镜物镜的放大倍数。
‘slide_dimensions’: (12051, 11316):WSI的原始尺寸,即最高层级的尺寸。
‘vendor’: ‘aperio’:WSI文件的供应商或格式,这里表明文件是由Aperio技术生成的。
2-2:缩略图
2-3:读取切片区域
这里展示两种方式
三、染色标准化
这一部分需要新导入一些包,具体参考完整版代码。
3-1:读取切片
从全切片图像(WSI)中提取瓦片
缩略图以 1.25×1.25\times1.25× 的物镜倍数加载,而WSI以 20×20\times20× 加载。为了转换到最高分辨率,我们将坐标乘以 20/1.25=1620/1.25 = 1620/1.25=16,得到一个名为 sample 的 800×800800\times800800×800 像素的区域,并且这个区域的左上角位于 XY 坐标 [3500,3500][3500, 3500][3500,3500]。
我们称一个图像为“目标图像”,如果我们试图将其他不同组织的图像与目标图像的着色保持一致。我们下载一个不同的图像来作为目标染色图像。
3-2:不同方法对比
未完待续
下列内容会拆分为3~4期推送,尽快在后续推文更新,代码会全部上传至知识星球【项目复现】专栏,感兴趣的可以关注小罗!
组织遮罩图像块提取图像块预测语义分割高级建模细胞核实例分割多任务分割全切片图像配准导入基础模型
