Why has my RCNN network stuck at 70% training accuracy

16 vues (au cours des 30 derniers jours)
Jay Li
Jay Li le 24 Nov 2018
Hi,
I have been trying to train an RCNN network for object detection. I have created a 16 layer training program, but no matter what I adjust in the layers and in the data the accuracy keeps on capping at 75% and I have not been able to correctly classify my target object. Below are the training data for the network as well as my layers. I would greatly apperciate any insight on this. Thanks.
layers = [
imageInputLayer([227 227 3])
convolution2dLayer(5,96,'Stride',4)
reluLayer
convolution2dLayer(3,32,'padding',2)
reluLayer
maxPooling2dLayer(2,'Stride',2)
convolution2dLayer(3,32)
reluLayer
convolution2dLayer(3,32)
reluLayer
fullyConnectedLayer(64)
reluLayer
dropoutLayer
fullyConnectedLayer(2)
softmaxLayer
classificationLayer];
|=========================================================================================|
| Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning|
| | | (seconds) | Loss | Accuracy | Rate |
|=========================================================================================|
| 1 | 1 | 1.07 | 0.6930 | 71.88% | 1.00e-06 |
| 2 | 50 | 52.68 | 0.6930 | 75.00% | 1.00e-06 |
| 4 | 100 | 107.11 | 0.6929 | 75.00% | 1.00e-06 |
| 5 | 150 | 160.94 | 0.6928 | 78.13% | 1.00e-06 |
| 7 | 200 | 214.72 | 0.6928 | 75.00% | 1.00e-06 |
| 9 | 250 | 271.34 | 0.6927 | 75.00% | 1.00e-06 |
| 10 | 300 | 327.56 | 0.6927 | 75.00% | 1.00e-06 |
| 10 | 310 | 338.58 | 0.6927 | 75.00% | 1.00e-06 |
|=========================================================================================|

Réponses (1)

Kushagr Gupta
Kushagr Gupta le 27 Nov 2018
The primary reason that I can think is the "stride of 4" in the first convolution layer. Having such a huge stride reduces the amount of information for the next layer drastically, which will eventually prevent the network from learning some valuable features.
If the reason behind this design choice is to reduce the output activation size, it would be better acheived with gradually reducing the size over multiple convolution-relu layers.
There can be many other reasons behind the accuracy saturating at around 75% and here are some things that can be tried to avoid it.
  1. Train the network for more number of epochs.
  2. Vary the learning rate, starting with a larger number (1e-2) and gradually decreasing it after every n(5-10) epochs. The following weblink talks about how tto do this: Vary training Options for DL Network
  3. There aren't enough parameters in the network. Adding more neurons in the pen-ultimate fullyConnected layer can help solve this issue.
Hope this helps

Community Treasure Hunt

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

Start Hunting!

Translated by