Switch to unified view

a b/functions/computeGradCam.m
1
function computeGradCam(imagesCellTest_original, imagesCellTest_unsharpened, meanAll_test_original, meanAll_test_unsharp, ...
2
    indexes_test_imUnsharpened, netTransfer_original, netTransfer_unsharp, convLayerName, inputSize, filenameTest, TestLabels, dirResults)
3
4
lgraph = layerGraph(netTransfer_unsharp.Layers);
5
lgraph = removeLayers(lgraph, lgraph.Layers(end).Name);
6
dlnet = dlnetwork(lgraph);
7
% softmaxName = 'softmax';
8
softmaxName = 'prob';
9
% convLayerName = 'conv5_3';
10
11
%loop on imgs
12
%for ind_im = 1 : numel(imagesCellTest_unsharpened)
13
for ind_im = 1 : 10 %only some images
14
    
15
    %only images unsharpened
16
    if ~indexes_test_imUnsharpened(ind_im)
17
        continue
18
    end %if indexes
19
    
20
    img = imagesCellTest_unsharpened{ind_im};
21
    
22
    %img = img + meanAll_test_unsharp(ind_im);
23
    
24
    img = imresize(img, inputSize(1:2));
25
    %img = im2uint8(img);
26
    
27
    [classfn, score] = classify(netTransfer_unsharp, img);
28
    dlImg = dlarray(single(img), 'SSC');
29
    [convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn);
30
    gradcamMap = sum(convMap .* sum(dScoresdMap, [1 2]), 3);
31
    gradcamMap = extractdata(gradcamMap);
32
    gradcamMap = rescale(gradcamMap);
33
    gradcamMap = imresize(gradcamMap, inputSize(1:2), 'Method', 'bicubic');
34
    
35
    imOriginal = imagesCellTest_original{ind_im};
36
    
37
    %imOriginal = imOriginal + meanAll_test_original(ind_im);    
38
39
    imOriginal = imresize(imOriginal, inputSize(1:2));
40
    %imOriginal = im2uint8(imOriginal);
41
    
42
    [classfn_original, score_original] = classify(netTransfer_unsharp, imOriginal);
43
    dlImg = dlarray(single(imOriginal), 'SSC');
44
    [convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn_original);
45
    gradcamMap_original = sum(convMap .* sum(dScoresdMap, [1 2]), 3);
46
    gradcamMap_original = extractdata(gradcamMap_original);
47
    gradcamMap_original = rescale(gradcamMap_original);
48
    gradcamMap_original = imresize(gradcamMap_original, inputSize(1:2), 'Method', 'bicubic');
49
    
50
    
51
    resVisFact = 1;
52
    
53
    fsfigure(11);
54
    
55
    subplot(2,2,1)
56
    imshow(imresize(imOriginal, resVisFact));
57
    title(sprintf('%s; Real: %s; Class.: %s (score: %.2f)', filenameTest{ind_im}, num2str(TestLabels(ind_im)), classfn_original, score_original(classfn_original)), 'Interpreter', 'none');
58
    subplot(2,2,2)
59
    imshow(imresize(imOriginal, resVisFact));
60
    hold on;
61
    imagesc(imresize(gradcamMap_original, resVisFact),'AlphaData',0.5);
62
    colormap jet
63
    hold off;
64
    title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
65
    
66
    subplot(2,2,3)
67
    imshow(imresize(img, resVisFact));
68
    title(sprintf('%s; Real: %s; Class.: %s (score: %.2f)', filenameTest{ind_im}, num2str(TestLabels(ind_im)), classfn, score(classfn)), 'Interpreter', 'none');
69
    subplot(2,2,4)
70
    imshow(imresize(img, resVisFact));
71
    hold on;
72
    imagesc(imresize(gradcamMap, resVisFact),'AlphaData',0.5);
73
    colormap jet
74
    hold off;
75
    title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
76
    
77
    set(gcf, 'color', 'w');
78
    
79
    export_fig(gcf, [dirResults, filenameTest{ind_im}]);
80
    
81
    if 0
82
        %write separate
83
        resVisFact = 5;
84
        
85
        [C, ind] = strsplit(filenameTest{ind_im}, '.');
86
        fileNameGradCAMOriginal = [C{1} '_gradcamOriginal.png'];
87
        fileNameGradCAMsharp = [C{1} '_gradcamUnsharp.png'];
88
        
89
        fileNameGradimOriginal = [C{1} '_Original.png'];
90
        fileNameGradimsharp = [C{1} '_Unsharp.png'];
91
        
92
        imwrite(imOriginal, [dirResults, fileNameGradimOriginal]);
93
        imwrite(img, [dirResults, fileNameGradimsharp]);
94
        
95
        fsfigure(12);
96
        imshow(imresize(imOriginal, resVisFact));
97
        hold on;
98
        imagesc(imresize(gradcamMap_original, resVisFact),'AlphaData',0.5);
99
        colormap jet
100
        hold off;
101
        %title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
102
        export_fig(gcf, [dirResults, fileNameGradCAMOriginal]);
103
        
104
        fsfigure(13);
105
        imshow(imresize(img, resVisFact));
106
        hold on;
107
        imagesc(imresize(gradcamMap, resVisFact),'AlphaData',0.5);
108
        colormap jet
109
        hold off;
110
        %title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
111
        export_fig(gcf, [dirResults, fileNameGradCAMsharp]);
112
    end
113
    
114
    pause(0.1)
115
    %pause
116
    
117
end %for ind_im
118
119