Clear Filters
Clear Filters

getting error while making rcnn.mat file on my dataset

1 view (last 30 days)
% Load the MAT file containing your ground truth data
annoDir =
'E:\MSCS\4th_sem\advance neural network\assignment\task4\dataset_root\R1.mat';
loadedData = load(annoDir);
% Extract the groundTruth object
gTruth = loadedData.gTruth;
% Continue with the rest of your code
baseNetwork = resnet50();
% Load pre-trained ResNet-50 network
% Resize input images to a fixed size (e.g., 224x224)
inputSize = [
224 224 3];
% Define additional R-CNN specific layers
layers = [
imageInputLayer(inputSize,
'Name', 'input')
convolution2dLayer(
64, 3, 'Padding', 'same', 'Name', 'conv1')
reluLayer(
'Name', 'relu1')
maxPooling2dLayer(
2, 'Stride', 2, 'Name', 'maxpool1')
fullyConnectedLayer(
128, 'Name', 'fc1')
reluLayer(
'Name', 'relu2')
fullyConnectedLayer(
2, 'Name', 'my_classification_layer')
softmaxLayer(
'Name', 'softmax')
classificationLayer(
'Name', 'my_output')
];
% Combine the base network with R-CNN layers
lgraph = layerGraph(baseNetwork);
lgraph = addLayers(lgraph, layers);
% Connect layers appropriately
lgraph = connectLayers(lgraph,
'maxpool1', 'fc1');
% Set training options
options = trainingOptions(
'sgdm', ...
'MiniBatchSize', 32, ...
'InitialLearnRate', 1e-6, ...
'MaxEpochs', 10);
% Train the R-CNN
rcnn = trainRCNNObjectDetector(gTruth, lgraph, options,
'NegativeOverlapRange', [0 0.3]);
% Save the trained R-CNN model to a MAT file
save(
'your_rcnn_model.mat', 'rcnn');
error
Error using nnet.cnn.LayerGraph/addLayers
Layer names in layer array must be different from the names of layers in layer graph.
Error in exmp_5 (line 29)
lgraph = addLayers(lgraph, layers);

Answers (1)

T.Nikhil kumar
T.Nikhil kumar on 12 Apr 2024
Hello Rimsha,
I can see that you are facing an error with layer names while combining your base network with custom RCNN layers.
It seems that there is a conflict in layer names between the layers you're trying to add to the ‘layerGraph’ and the existing layers within the ‘baseNetwork’ (ResNet-50). It is because ResNet-50 already includes layers with names like 'input', 'conv1', 'relu1', and so on and when you attempt to add new layers with these same names to the ‘layerGraph’, an error is thrown due to the duplicate names.
To resolve the error, you need to ensure that the new layers you're adding have unique names that don't conflict with the existing layer names within the ‘baseNetwork’. You can use the following code snippet for the layers:
layers = [
imageInputLayer(inputSize, 'Name', 'input_rcnn')
convolution2dLayer(64, 3, 'Padding', 'same', 'Name', 'conv1_rcnn')
reluLayer('Name', 'relu1_rcnn')
maxPooling2dLayer(2, 'Stride', 2, 'Name', 'maxpool1_rcnn')
fullyConnectedLayer(128, 'Name', 'fc1_rcnn')
reluLayer('Name', 'relu2_rcnn')
fullyConnectedLayer(2, 'Name', 'my_classification_layer')
softmaxLayer('Name', 'softmax_rcnn')
classificationLayer('Name', 'my_output_rcnn')
];
Since the names have changed, you must also ensure that you are connecting the correct custom layers to the appropriate layer in the ‘baseNetwork’.
Hope this helps you resolve the error.

Tags

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!