DSMIL论文代码复现,Dual-stream Multiple Instance Learning Network for Whole Slide Image Classification with
(个人学习笔记,如有错误,欢迎大家提出建议)
首先附上论文和代码链接:
https://arxiv.org/abs/2011.08939
https://github.com/binli123/dsmil-wsi
为了在论文中提取特征而采用了SimCLR框架,在这一过程中带来了较大的计算负担
保存格式为.csv文件。(按照以下文件格式排列即可)



二.之后进入train_tcga(个人是在windows下,使用pycharm编译器进行)
请根据以下图片配置参数设置(请注意:我们基于Camelyon数据集,在代码中将num_class指定为1,并将epoch设为10以进行测试)。

三. 仔细查看整个训练代码库,考察是否存在尚未处理的参数设置。在第177至180行之间进行定位,并将bags_csv更新为位于Camelyon16.csv文件夹内的路径

进行完以上几个步骤,没有出现报错等原因。
四.深入了解具体进入训练与验证阶段的情况时无需展示图示内容;但想探讨整个训练与验证阶段中代码关注的重点以及个人疑问点。

1. Debug进入到train函数中(这里函数返回的是每个bag的损失)

具体来说,在dismil.py----FCLayer模型中并未提及作者提到的Max Pooling过程。我的理解是,在对simclr进行预训练之后, 作者仅通过一个简单的线性变换处理了各个instance的特征, 并计算出每个instance对应的分数作为输出结果。

2.Masked non-local block

首先分别经过不同的线性和非线性变换得到Q和V公式如下

随后将实例分数按照从最大到最小的顺序进行排序,并提取出关键实例m_feats;接着通过连续应用Linear-ReLU-Linear-Tanh层得到q_m(即上图模型结构中的qm),并完成相关公式推导。

随后的代码整体较为简单,并且通过包与实例来计算损失并更新梯度。
开发用于测试和绘制主注意力图的代码位于attention_map文件夹内。作者已公开提供该代码库,并包含四幅图像,在完成裁剪后建议按照特定顺序排列这些裁剪后的文件。此外,请确保加载训练阶段的权重参数以及嵌入模型。值得注意的是,在我的第一次运行中发现生成的关注力图全部呈黑色状态,并经检查确认颜色通道值均为零。
欢迎大家一起交流学习,之后我也会陆续分享自己复现代码的心得。
