use carf10net
load('rcnnStopSigns.mat','cifar10Net')
%% classes
summary(trainingData)
imageshow
% Read one of the images.
num=150;
I = imread(ResTrain.filename{num});
% Insert the ROI labels.
I = insertShape(I, 'Rectangle', ResTrain.rebar{num});
% Resize and display image.
I = imresize(I,3);
figure
imshow(I)
train net
options = trainingOptions('sgdm', ...
'MiniBatchSize', 128, ...
'InitialLearnRate', 1e-3, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropFactor', 0.1, ...
'LearnRateDropPeriod', 100, ...
'MaxEpochs', 5, ...
'Verbose', true);
% Train an R-CNN object detector. This will take several minutes.
rcnn = trainRCNNObjectDetector(trainingData, cifar10Net, options, ...
'NegativeOverlapRange', [0 0.3], 'PositiveOverlapRange',[0.5 1])
===============================================
*******************************************************************
Training an R-CNN Object Detector for the following object classes:
* rebar
--> Extracting region proposals from 286 training images...done.
Warning: Unable to find any region proposals to use as positive training samples in these images:
F:\machine learning\rebar\0images_big_rebar\train\rebar\20.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\23.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\26.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\31.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\34.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\35.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\37.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\39.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\42.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\49.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\50.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\61.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\62.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\64.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\69.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\70.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\76.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\88.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\101.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\102.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\104.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\105.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\121.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\151.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\161.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\223.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\229.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\244.BMP
They will not be used for training.
Warning: Unable to find any region proposals to use as negative training samples in these images:
F:\machine learning\rebar\0images_big_rebar\train\rebar\20.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\23.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\31.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\37.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\39.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\42.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\50.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\61.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\62.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\64.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\76.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\88.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\101.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\102.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\104.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\151.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\161.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\216.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\223.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\229.BMP
F:\machine learning\rebar\0images_big_rebar\train\rebar\244.BMP
rcnn =
rcnnObjectDetector with properties:
Network: [1×1 SeriesNetwork]
RegionProposalFcn: @rcnnObjectDetector.proposeRegions
ClassNames: {'rebar' 'Background'}
BoxRegressionLayer: 'conv_2'
2 use the original data to train
*******************************************************************
Training an R-CNN Object Detector for the following object classes:
* rebar
--> Extracting region proposals from 286 training images...done.
--> Training a neural network to classify objects in training data...
Training on single CPU.
Initializing image normalization.
|========================================================================================|
| Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning |
| | | (hh:mm:ss) | Accuracy | Loss | Rate |
|========================================================================================|
| 1 | 1 | 00:00:00 | 31.25% | 0.7632 | 0.0010 |
| 1 | 50 | 00:00:18 | 96.88% | 0.0816 | 0.0010 |
| 1 | 100 | 00:00:36 | 96.09% | 0.0797 | 0.0010 |
| 1 | 150 | 00:00:54 | 99.22% | 0.0309 | 0.0010 |
| 1 | 200 | 00:01:11 | 97.66% | 0.1210 | 0.0010 |
| 1 | 250 | 00:01:29 | 96.88% | 0.0863 | 0.0010 |
| 2 | 300 | 00:01:47 | 96.88% | 0.0486 | 0.0010 |
| 2 | 350 | 00:02:05 | 99.22% | 0.0270 | 0.0010 |
| 2 | 400 | 00:02:23 | 99.22% | 0.0264 | 0.0010 |
| 2 | 450 | 00:02:40 | 97.66% | 0.0465 | 0.0010 |
| 2 | 500 | 00:02:58 | 96.88% | 0.1099 | 0.0010 |
| 2 | 550 | 00:03:16 | 99.22% | 0.0117 | 0.0010 |
| 3 | 600 | 00:03:34 | 99.22% | 0.0249 | 0.0010 |
| 3 | 650 | 00:03:51 | 98.44% | 0.0309 | 0.0010 |
| 3 | 700 | 00:04:09 | 99.22% | 0.0312 | 0.0010 |
| 3 | 750 | 00:04:27 | 98.44% | 0.0499 | 0.0010 |
| 3 | 800 | 00:04:45 | 97.66% | 0.0428 | 0.0010 |
| 3 | 850 | 00:05:02 | 98.44% | 0.0494 | 0.0010 |
| 4 | 900 | 00:05:20 | 99.22% | 0.0234 | 0.0010 |
| 4 | 950 | 00:05:37 | 96.09% | 0.0727 | 0.0010 |
| 4 | 1000 | 00:05:55 | 100.00% | 0.0124 | 0.0010 |
| 4 | 1050 | 00:06:13 | 99.22% | 0.0117 | 0.0010 |
| 4 | 1100 | 00:06:31 | 97.66% | 0.0633 | 0.0010 |
| 4 | 1150 | 00:06:49 | 96.88% | 0.0852 | 0.0010 |
| 5 | 1200 | 00:07:06 | 99.22% | 0.0113 | 0.0010 |
| 5 | 1250 | 00:07:24 | 100.00% | 0.0043 | 0.0010 |
| 5 | 1300 | 00:07:41 | 100.00% | 0.0205 | 0.0010 |
| 5 | 1350 | 00:07:59 | 98.44% | 0.0425 | 0.0010 |
| 5 | 1400 | 00:08:17 | 99.22% | 0.0238 | 0.0010 |
| 5 | 1450 | 00:08:34 | 98.44% | 0.0450 | 0.0010 |
| 5 | 1455 | 00:08:36 | 99.22% | 0.0175 | 0.0010 |
|========================================================================================|
Network training complete.
--> Training bounding box regression models for each object class...100.00%...done.
Detector training complete.
*******************************************************************
Test R-CNN Stop Sign Detector
The R-CNN object detector can now be used to detect stop signs in images. Try it out on a test image:
% Read test image
num=1;
testImage = imread(testData.filename{num});
% Detect stop signs
[bboxes,score,label] = detect(rcnn,testImage,'MiniBatchSize',128)
% show the result
% Insert the ROI labels.
I = insertShape(testImage, 'Rectangle', bboxes);
% Resize and display image.
figure
imshow(I)
3 Progress
I have spent a week on using DAG network, but failed again and agian, now use carf10net, it works.
I will go deeper in CNN.
However, good news.
4Plan
Try with more dataset,use different pre-trained network