ResNet50 on multi-spectral image segmentation
    3 views (last 30 days)
  
       Show older comments
    
    OJ27
 on 9 Jul 2020
  
    
    
    
    
    Answered: Srivardhan Gadila
    
 on 13 Jul 2020
            Is there a way to use any pretrain network (not necessarily Resnet) to segment multispectral images in MATLAB? 
deeplabv3plusLayers
 only allows [height width 3]  or [height width] input images. While I tried bypassing the error deeplabv3plusLayers returns, when I used trainNetwork I get an error referring to the wrong input data 224x224xN.
Can the first convolutional layer of the pretrained network be replaced to process more than 3 channels? An example done in python can be found here. 
0 Comments
Accepted Answer
  Srivardhan Gadila
    
 on 13 Jul 2020
        You can copy the layerGraph of the pretrained network and change the imageInputLayer, the first convolutionLayer to match the input image channel dimension & convolution filter dimensions. Then you can freeze/unfreeze the existing pretrained weights during training the new network accordingly.
You can do something like below:(N=50)
imageSize = [224 224 3];
% Specify the number of classes.
numClasses = 10;
N = 50;
% Create DeepLab v3+.
lgraph = deeplabv3plusLayers(imageSize, numClasses, "resnet50");
analyzeNetwork(lgraph)
layers = lgraph.Layers
%%
newlgraph = replaceLayer(lgraph,'input_1',imageInputLayer([224 224 N],'Name','input'));
newlgraph = replaceLayer(newlgraph,'conv1',convolution2dLayer(7,64,'stride',[2 2],'padding',[3 3 3 3],'Name','conv1'))
analyzeNetwork(newlgraph)
0 Comments
More Answers (0)
See Also
Categories
				Find more on Deep Learning Toolbox in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
