Switch to side-by-side view

--- a
+++ b/functions/computeGradCam.m
@@ -0,0 +1,119 @@
+function computeGradCam(imagesCellTest_original, imagesCellTest_unsharpened, meanAll_test_original, meanAll_test_unsharp, ...
+    indexes_test_imUnsharpened, netTransfer_original, netTransfer_unsharp, convLayerName, inputSize, filenameTest, TestLabels, dirResults)
+
+lgraph = layerGraph(netTransfer_unsharp.Layers);
+lgraph = removeLayers(lgraph, lgraph.Layers(end).Name);
+dlnet = dlnetwork(lgraph);
+% softmaxName = 'softmax';
+softmaxName = 'prob';
+% convLayerName = 'conv5_3';
+
+%loop on imgs
+%for ind_im = 1 : numel(imagesCellTest_unsharpened)
+for ind_im = 1 : 10 %only some images
+    
+    %only images unsharpened
+    if ~indexes_test_imUnsharpened(ind_im)
+        continue
+    end %if indexes
+    
+    img = imagesCellTest_unsharpened{ind_im};
+    
+    %img = img + meanAll_test_unsharp(ind_im);
+    
+    img = imresize(img, inputSize(1:2));
+    %img = im2uint8(img);
+    
+    [classfn, score] = classify(netTransfer_unsharp, img);
+    dlImg = dlarray(single(img), 'SSC');
+    [convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn);
+    gradcamMap = sum(convMap .* sum(dScoresdMap, [1 2]), 3);
+    gradcamMap = extractdata(gradcamMap);
+    gradcamMap = rescale(gradcamMap);
+    gradcamMap = imresize(gradcamMap, inputSize(1:2), 'Method', 'bicubic');
+    
+    imOriginal = imagesCellTest_original{ind_im};
+    
+    %imOriginal = imOriginal + meanAll_test_original(ind_im);    
+
+    imOriginal = imresize(imOriginal, inputSize(1:2));
+    %imOriginal = im2uint8(imOriginal);
+    
+    [classfn_original, score_original] = classify(netTransfer_unsharp, imOriginal);
+    dlImg = dlarray(single(imOriginal), 'SSC');
+    [convMap, dScoresdMap] = dlfeval(@gradcam, dlnet, dlImg, softmaxName, convLayerName, classfn_original);
+    gradcamMap_original = sum(convMap .* sum(dScoresdMap, [1 2]), 3);
+    gradcamMap_original = extractdata(gradcamMap_original);
+    gradcamMap_original = rescale(gradcamMap_original);
+    gradcamMap_original = imresize(gradcamMap_original, inputSize(1:2), 'Method', 'bicubic');
+    
+    
+    resVisFact = 1;
+    
+    fsfigure(11);
+    
+    subplot(2,2,1)
+    imshow(imresize(imOriginal, resVisFact));
+    title(sprintf('%s; Real: %s; Class.: %s (score: %.2f)', filenameTest{ind_im}, num2str(TestLabels(ind_im)), classfn_original, score_original(classfn_original)), 'Interpreter', 'none');
+    subplot(2,2,2)
+    imshow(imresize(imOriginal, resVisFact));
+    hold on;
+    imagesc(imresize(gradcamMap_original, resVisFact),'AlphaData',0.5);
+    colormap jet
+    hold off;
+    title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
+    
+    subplot(2,2,3)
+    imshow(imresize(img, resVisFact));
+    title(sprintf('%s; Real: %s; Class.: %s (score: %.2f)', filenameTest{ind_im}, num2str(TestLabels(ind_im)), classfn, score(classfn)), 'Interpreter', 'none');
+    subplot(2,2,4)
+    imshow(imresize(img, resVisFact));
+    hold on;
+    imagesc(imresize(gradcamMap, resVisFact),'AlphaData',0.5);
+    colormap jet
+    hold off;
+    title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
+    
+    set(gcf, 'color', 'w');
+    
+    export_fig(gcf, [dirResults, filenameTest{ind_im}]);
+    
+    if 0
+        %write separate
+        resVisFact = 5;
+        
+        [C, ind] = strsplit(filenameTest{ind_im}, '.');
+        fileNameGradCAMOriginal = [C{1} '_gradcamOriginal.png'];
+        fileNameGradCAMsharp = [C{1} '_gradcamUnsharp.png'];
+        
+        fileNameGradimOriginal = [C{1} '_Original.png'];
+        fileNameGradimsharp = [C{1} '_Unsharp.png'];
+        
+        imwrite(imOriginal, [dirResults, fileNameGradimOriginal]);
+        imwrite(img, [dirResults, fileNameGradimsharp]);
+        
+        fsfigure(12);
+        imshow(imresize(imOriginal, resVisFact));
+        hold on;
+        imagesc(imresize(gradcamMap_original, resVisFact),'AlphaData',0.5);
+        colormap jet
+        hold off;
+        %title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
+        export_fig(gcf, [dirResults, fileNameGradCAMOriginal]);
+        
+        fsfigure(13);
+        imshow(imresize(img, resVisFact));
+        hold on;
+        imagesc(imresize(gradcamMap, resVisFact),'AlphaData',0.5);
+        colormap jet
+        hold off;
+        %title([filenameTest{ind_im} '; Grad-CAM'], 'Interpreter', 'none');
+        export_fig(gcf, [dirResults, fileNameGradCAMsharp]);
+    end
+    
+    pause(0.1)
+    %pause
+    
+end %for ind_im
+
+