gradcamの平均

3 views (last 30 days)
拓 青柳
拓 青柳 on 2 Nov 2022
Edited: 拓 青柳 on 2 Nov 2022
深層学習によるX線画像の2クラス分類及び回帰を行っております。
データセットのうち一部をテストデータとして取り置き、残りを用いて5分割交差検証を実施、5つのモデルでテストデータに対する推測を実施しています。
それに合わせてgradcamも5つのモデルのものを平均しようとしており、2クラス分類ではうまくいったのですが、同じやり方で回帰でも行おうとするとgradcamの平均というよりそれぞれのモデルで少しでも重要だと判断された特徴が合計され全て示されているようなものになってしまいます。
2クラス分類に比べ、回帰の方ではscoreMapが白飛びしており、特徴の重要度が一律になっているように見え、ここに原因があると考えられるのですが、対処がわかりません。ご教示ください。
なお下記のコードは回帰モデルで実行したものですが、上記の通り2クラス分類でも同様に実施しております。
%%
s=24;
for i=1:s
net=netTransfer;
testheart = XTest(:,:,:,i);
predLAAo = predict(net,testheart);
trueLAAo = YTest(i);
RI = imref2d(size(testheart));
RI.XWorldLimits = [0 224];
RI.YWorldLimits = [0 224];
featureLayer = 'activation_49_relu';
reductionLayer = 'new_fc';
reductionFcn = @(x)x;
scoreMap = gradCAM(net,testheart,reductionFcn, ...
'ReductionLayer',reductionLayer, ...
'FeatureLayer',featureLayer);
ax(1) = subplot(1,2,1);
imshow(testheart,RI)
title("True LAAo = " + trueLAAo + '\newline Pred LAAo = ' + round(predLAAo,2))
colormap(ax(1),'gray')
ax(2) = subplot(1,2,2);
imshow(testheart,RI)
hold on
imagesc(rescale(scoreMap),'AlphaData',0.5);
colormap(ax(2),'jet')
title("GradCAM")
hold off
pathname='C:\Users\shinb\Documents\MATLAB\DeepLearning_evalkit\DeepLearning_evalkit\regression\gradcam\';
extension='.jpg' ;
filename=[pathname,num2str(i),extension];
imwrite(scoreMap,filename);
end
%%
%gradcammapのセル配列への読み込み
s=5;
t=24;
A=cell(s,t);
for j=1:t
for i=1:s
pathname='C:\Users\shinb\Documents\MATLAB\DeepLearning_evalkit\DeepLearning_evalkit\regression\gradcam_regression_lat_';
pathname2='val\';
extension='.jpg';
filename=[pathname,num2str(i),pathname2,num2str(j),extension];
A{i,j}=imread(filename);
end
end
%%
%セル配列のファイルへの保存
filename='map';
writecell(A,filename);
%%
s=24;
for i=1:s
scoreMap=A{1,i}*0.2+A{2,i}*0.2+A{3,i}*0.2+A{4,i}*0.2+A{5,i}*0.2;
testheart = XTest(:,:,:,i);
predLAAo = ave(i);
trueLAAo = label(i);
RI = imref2d(size(testheart));
RI.XWorldLimits = [0 224];
RI.YWorldLimits = [0 224];
ax(1) = subplot(1,2,1);
imshow(testheart,RI)
title("True LAAo = " + trueLAAo + '\newline Pred LAAo = ' + round(predLAAo,2))
colormap(ax(1),'gray')
ax(2) = subplot(1,2,2);
imshow(testheart,RI)
hold on
imagesc(rescale(scoreMap),'AlphaData',0.5);
colormap(ax(2),'jet')
title("GradCAM")
hold off
pathname='C:\Users\shinb\Documents\MATLAB\DeepLearning_evalkit\DeepLearning_evalkit\regression\gradcam\';
extension='.jpg' ;
filename=[pathname,num2str(i),extension];
saveas(gcf,filename);
end

Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!