gradcamの平均
2 次查看(过去 30 天)
显示 更早的评论
- regression ave.png
- regression model 1.png
- regression model2.png
- regression model 3.png
- regression model 4.png
- regression model 5.png
- regression model 1 color.png
- regression model 2 color.png
- regression model 3 color.png
- regression model 4 color.png
- regression model 5 color.png
- classification ave.png
- classification model1 color.png
- classification model2 color.png
- classification model3 color.png
- classification model4 color.png
- classification model5 color.png
- classification model1.png
- classification model2.png
- classification model3.png
- classification model4.png
- classification model5.png
深層学習による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
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Pattern Recognition and Classification 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!