• For any query, contact us at
  • +91-9872993883
  • +91-8283824812
  • info@ris-ai.com

Object Detection with Python

clear
% Load the ground truth data
load('DaataAndCars.mat')
load('rcnnStopSigns.mat')
% Update the path to the image files to match the local file system
DaataAndCars.imageFilename = fullfile('carData/', DaataAndCars.imageFilename);
% Display a summary of the ground truth data
summary(DaataAndCars)
Variables: imageFilename: 41×1 cell array of character vectors stopSign: 41×1 cell carRear: 41×1 cell carFront: 41×1 cell
% Only keep the image file names and the stop sign ROI labels
carFront = DaataAndCars(:, {'imageFilename','carRear'});
% Display one training image and the ground truth bounding boxes
I = imread(carFront.imageFilename{1});
I = insertObjectAnnotation(I,'Rectangle',carFront.carRear{1},' Car Rear','LineWidth',24);
figure
imshow(I)
Object Detection
% A trained detector is loaded from disk to save time when running the
% example. Set this flag to true to train the detector.
% Set training options
options = trainingOptions('sgdm',...
'MiniBatchSize', 128, ...
'InitialLearnRate', 1e-3, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropFactor', 0.1, ...
'LearnRateDropPeriod', 100, ...
'MaxEpochs', 100, ...
'Verbose', true);
% Train an R-CNN object detector. This will take several minutes.
rcnn = trainRCNNObjectDetector(carFront, cifar10Net, options, ...
'NegativeOverlapRange', [0 0.3], 'PositiveOverlapRange',[0.5 1])
******************************************************************* Training an R-CNN Object Detector for the following object classes: * carRear --> Extracting region proposals from 41 training images...done.
Warning: Invalid bounding boxes from 32 out of 41 training images were removed. The following rows in trainingData have invalid bounding box data:

Invalid Rows
____________

5
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
26
27
28
29
30
31
32
33
34
35
36
37
38
39
41

Bounding boxes must be fully contained within their associated image and must have positive width and height.
--> Training a neural network to classify objects in training data... Training on single GPU. Initializing input data normalization. |========================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Base Learning | | | | (hh:mm:ss) | Accuracy | Loss | Rate | |========================================================================================| | 1 | 1 | 00:00:00 | 62.50% | 0.6585 | 0.0010 | | 25 | 50 | 00:00:15 | 100.00% | 0.0018 | 0.0010 | | 50 | 100 | 00:00:31 | 100.00% | 0.0008 | 0.0010 | | 75 | 150 | 00:00:46 | 100.00% | 0.0014 | 0.0010 | | 100 | 200 | 00:01:02 | 100.00% | 0.0001 | 0.0010 | |========================================================================================| Network training complete. --> Training bounding box regression models for each object class...100.00%...done. Detector training complete (with warnings):
Warning: Invalid bounding boxes from 32 out of 41 training images were removed. The following rows in trainingData have invalid bounding box data:

Invalid Rows
____________

5
6
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
26
27
28
29
30
31
32
33
34
35
36
37
38
39
41

Bounding boxes must be fully contained within their associated image and must have positive width and height.
*******************************************************************
rcnn =
rcnnObjectDetector with properties: Network: [1×1 SeriesNetwork] RegionProposalFcn: @rcnnObjectDetector.proposeRegions ClassNames: {'carRear' 'Background'} BoxRegressionLayer: 'conv_2'
% Read test image
testImage = imread('image003.jpg');
% Detect stop signs
[bboxes,score,label] = detect(rcnn,testImage,'MiniBatchSize',128)
bboxes = 2×4
1016 427 609 378 782 363 406 407
score = 2×1 single column vector
0.9983 0.5087
label = 2×1 categorical array
carRear carRear
% Display the detection results
[score, idx] = max(score);
bbox = bboxes(idx, :);
annotation = sprintf('%s: (Confidence = %f)', label(idx), score);
outputImage = insertObjectAnnotation(testImage, 'rectangle', bbox, annotation);
figure
imshow(outputImage)
Object Detection Results