基于注意力的深度多示例学习
作者:Maximilian Ilse (ilse.maximilian@gmail.com)、Jakub M. Tomczak (jakubmkt@gmail.com) 和 Max Welling
概述
我们论文"基于注意力的深度多示例学习"的 PyTorch 实现:
- Ilse, M., Tomczak, J. M., & Welling, M. (2018). 基于注意力的深度多示例学习. arXiv 预印本 arXiv:1802.04712. 链接。
安装
使用 pip 或 conda 安装 Pytorch 0.3.1 应该可以解决所有依赖项。 已在 Python 2.7 上测试,但也应该适用于 3.x。 在 CPU 和 GPU 上均已测试。
内容
该代码可用于运行 MNIST-BAGS 实验,参见我们论文中的第 4.2 节和图 1。 为了保持简洁的实验设置,代码有以下限制:
- 平均包长度参数不应远大于 10,对于较大的数字,训练数据集会很快变得不平衡。您可以单独运行数据加载器进行检查,请参见 dataloader.py 的 main 部分
- 训练期间未使用验证集,也未进行早停
注意:要在组织病理学数据集上运行实验,请下载乳腺癌和结肠癌数据集。在组织病理学实验中,我们使用了类似于 model.py
中的模型,详情请参见论文。
使用方法
dataloader.py
:通过组合多个 MNIST 图像生成训练集和测试集。如果包含一个或多个标签为 target_number 变量指定的图像,则给包分配正标签。
如果作为主程序运行,它会计算正包的比例以及包中实例数量的平均值、最大值和最小值。
mnist_bags_loader.py
:添加了我们在实验中使用的原始数据加载器。它可以处理任何包长度而不会导致数据集不平衡。这可能不是创建包的最有效方法。此外,它仅针对目标数字为 '9' 的情况进行了测试。
main.py
:使用 Adam 优化算法训练小型 CNN。
训练持续 20 个周期。最后,计算模型在测试集上的准确率和损失。
此外,还打印了包标签和实例标签的子集。
model.py
:该模型是经过修改的 LeNet-5,参见 http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf。
基于注意力的 MIL 池化位于模型的最后一层之前。
目标函数是伯努利分布的负对数似然。
问题和疑问
如果您发现任何错误或对此代码有任何疑问,请联系 Maximilian 或 Jakub。我们不能保证为此软件提供任何支持。
引用
如果您在研究中使用此代码,请引用我们的论文:
@article{ITW:2018,
title={基于注意力的深度多示例学习},
author={Ilse, Maximilian and Tomczak, Jakub M and Welling, Max},
journal={arXiv 预印本 arXiv:1802.04712},
year={2018}
}
致谢
Maximilian Ilse 的工作由荷兰科学研究组织资助(DLMedIa 项目:用于医学图像分析的深度学习)。
Jakub Tomczak 的工作由欧盟委员会玛丽·斯克沃多夫斯卡-居里个人资助计划资助(拨款编号:702666,"用于医学成像的深度学习和贝叶斯推断")。