Matlab实现深度学习可解释以医学影像为例

前言

前一篇文章介绍了使用Matlab实现深度学习模型训练以及一些基础的概念,但是我们不难发现,深度学习是一个端到端的过程,而中间过程是一个“黑盒子”,有时候我们需要知道模型是如何得出最终预测结果及基于何种考虑,特别是在医疗领域,可解释性更显得尤为重要。本文将介绍利用Matlab深度学习工具箱中相关函数实现模型训练过程可视化。

一、介绍

Matlab中可解释性方法有Grad-CAM, occlusion sensitivity, LIME,和 deep dream这几种,如下示意图以动物识别为例。
在这里插入图片描述

二、实现方法

为了便于直观对比原图像与可解释性图像有必要介绍一个Matlab函数
imagesc:Display image with scaled colors
其中一个语法是imagesc(___,Name,Value),如果要实现更改透明度可以设置“Name”为“AlphaData”,“Value”值可取0-1。再使用hold on和hold off可以实现在原图像上覆盖透明度图像。为了方便集成,我写了一个函数,实现一个输入原始图像返回原始图像和三个输出图像。

代码如下:

function plotMaps(img,map1,map2,map3,title1,title2,title3,alpha,cmap)

figure
subplot(1,4,1)
imshow(img)

subplot(1,4,2)
imshow(img)
hold on
imagesc(map1,'AlphaData',alpha)
colormap(cmap)
title(title1)
hold off

subplot(1,4,3)
imshow(img)
hold on
imagesc(map2,'AlphaData',alpha)
colormap(cmap)
title(title2)
hold off

subplot(1,4,4)
imshow(img)
hold on
imagesc(map3,'AlphaData',alpha)
colormap(cmap)
title(title3)
hold off
end

然后就可以配置可解释方法的几个函数(以gradCAM和LIME为例)其中LIME做了良性和恶性的对比
,也就是比较在同一个影像图片中模型基于不同的分类的关注点。

%gardCAM
scoreMap = gradCAM(trainedNetwork_2,I,label);
%LIME
limeMapClass1 = imageLIME(trainedNetwork_2,I,"benign");
limeMapClass2 = imageLIME(trainedNetwork_2,I,"malignant");
plotMaps(I,scoreMap,limeMapClass1,limeMapClass2,"gardCAM","LIME(benign)","LIME(malignant)",0.5,"jet")

完整代码如下:

%% TestCode识别图像类型
clc;clear
% 加载训练好的模型
load('trainedNetwork_2');
% 调整图像大小
[file,path] = uigetfile('*');
image = fullfile(path,file);
I = imresize(imread(image),[227,227]);
file
% 使用模型分类
label = classify(trainedNetwork_2, I)
%gardCAM
scoreMap = gradCAM(trainedNetwork_2,I,label);
%LIME
limeMapClass1 = imageLIME(trainedNetwork_2,I,"benign");
limeMapClass2 = imageLIME(trainedNetwork_2,I,"malignant");
plotMaps(I,scoreMap,limeMapClass1,limeMapClass2,"gardCAM","LIME(benign)","LIME(malignant)",0.5,"jet")

我们可以看到输出结果如下:
在这里插入图片描述
从图片中可以看出,对于gardCAM和LIME红色的区域都是模型训练过程中感兴趣区域,基本都处在结节处,其余颜色包裹在边界周围,而传统的医生阅片也是观察结节的边界形状规则度、清晰度和内核回声度,实现了模型的可解释性.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值