I have created simple CNN for semantic segmentation and repalced last layer with focal loss layer to use focal loss fucntion instead of pixel classification function.
Network = [
imageInputLayer([256 256 3],"Name","imageinput")
convolution2dLayer([3 3],128,"Name","conv_1","BiasLearnRateFactor",2,"Padding","same")
reluLayer("Name","relu_1")
batchNormalizationLayer("Name","batchnorm")
transposedConv2dLayer([3 3],2,"Name","transposed-conv","Cropping","same")
reluLayer("Name","relu_3")
softmaxLayer("Name","softmax")
focalLossLayer(2,0.25,"Name","focal-loss")];
after training the network, I used,
pxdsResults = semanticseg(imdsTest,Trained_network, …
'MiniBatchSize',5, …
'WriteLocation',tempdir, …
'Verbose',false);
for test images but I got error the following error;
Error using semanticseg>iFindAndAssertNetworkHasOnePixelClassificationLayer (line 584)
The network must have a pixel classification layer.
Error in semanticseg>iParseInputs (line 377)
pxLayerID = iFindAndAssertNetworkHasOnePixelClassificationLayer(net);
Error in semanticseg (line 216)
params = iParseInputs(I, net, varargin{:});
Now its obvious that last layer must be pixel classification layer. but if I am using focal loss layer how to evaluate this?
Best Answer