Обучите детектор объектов глубокого обучения SSD
обучает однократный мультибокс-детектор (SSD) с помощью глубокого обучения. Можно обучить детектор твердотельных накопителей обнаруживать несколько классов объектов.trainedDetector = trainSSDObjectDetector(trainingData,lgraph,options)
Эта функция требует, чтобы у вас были Deep Learning Toolbox™. Рекомендуется также иметь Parallel Computing Toolbox™ для использования с CUDA®-активный NVIDIA® ГРАФИЧЕСКИЙ ПРОЦЕССОР. Для получения информации о поддерживаемых вычислительных возможностях смотрите Поддержку GPU by Release (Parallel Computing Toolbox).
[ также возвращает информацию о процессе обучения, таком как потеря обучения и точность, для каждой итерации.trainedDetector,info] = trainSSDObjectDetector(___)
возобновляет обучение с контрольной точки детектора.trainedDetector = trainSSDObjectDetector(trainingData,checkpoint,options)
продолжает обучение детектора объектов SSD multibox с дополнительными опциями подстройки. Используйте этот синтаксис с дополнительными обучающими данными или чтобы выполнить больше итераций обучения, чтобы улучшить точность детектора.trainedDetector = trainSSDObjectDetector(trainingData,detector,options)
использует дополнительные опции, заданные одним или несколькими trainedDetector = trainSSDObjectDetector(___,Name,Value)Name,Value аргументы в виде пар и любой из предыдущих входов.
Загрузите обучающие данные для обнаружения транспортного средства в рабочую область.
data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;Укажите директории, в которых хранятся обучающие выборки. Добавьте полный путь к именам файлов в обучающих данных.
dataDir = fullfile(toolboxdir('vision'),'visiondata'); trainingData.imageFilename = fullfile(dataDir,trainingData.imageFilename);
Создайте изображение datastore, используя файлы из таблицы.
imds = imageDatastore(trainingData.imageFilename);
Создайте box label datastore с помощью столбцов label из таблицы.
blds = boxLabelDatastore(trainingData(:,2:end));
Объедините хранилища данных.
ds = combine(imds,blds);
Загрузка предварительно инициализированной сети обнаружения объектов SSD.
net = load('ssdVehicleDetector.mat');
lgraph = net.lgraphlgraph =
LayerGraph with properties:
Layers: [132×1 nnet.cnn.layer.Layer]
Connections: [141×2 table]
InputNames: {'input_1'}
OutputNames: {'focal_loss' 'rcnnboxRegression'}
Осмотрите слои в сети твердотельных накопителей и их свойства. Можно также создать сеть твердотельных накопителей путем выполнения шагов, описанных в разделе «Создание сети обнаружения объектов твердотельных накопителей».
lgraph.Layers
ans =
132×1 Layer array with layers:
1 'input_1' Image Input 224×224×3 images with 'zscore' normalization
2 'Conv1' Convolution 32 3×3×3 convolutions with stride [2 2] and padding 'same'
3 'bn_Conv1' Batch Normalization Batch normalization with 32 channels
4 'Conv1_relu' Clipped ReLU Clipped ReLU with ceiling 6
5 'expanded_conv_depthwise' Grouped Convolution 32 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
6 'expanded_conv_depthwise_BN' Batch Normalization Batch normalization with 32 channels
7 'expanded_conv_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
8 'expanded_conv_project' Convolution 16 1×1×32 convolutions with stride [1 1] and padding 'same'
9 'expanded_conv_project_BN' Batch Normalization Batch normalization with 16 channels
10 'block_1_expand' Convolution 96 1×1×16 convolutions with stride [1 1] and padding 'same'
11 'block_1_expand_BN' Batch Normalization Batch normalization with 96 channels
12 'block_1_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
13 'block_1_depthwise' Grouped Convolution 96 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same'
14 'block_1_depthwise_BN' Batch Normalization Batch normalization with 96 channels
15 'block_1_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
16 'block_1_project' Convolution 24 1×1×96 convolutions with stride [1 1] and padding 'same'
17 'block_1_project_BN' Batch Normalization Batch normalization with 24 channels
18 'block_2_expand' Convolution 144 1×1×24 convolutions with stride [1 1] and padding 'same'
19 'block_2_expand_BN' Batch Normalization Batch normalization with 144 channels
20 'block_2_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
21 'block_2_depthwise' Grouped Convolution 144 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
22 'block_2_depthwise_BN' Batch Normalization Batch normalization with 144 channels
23 'block_2_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
24 'block_2_project' Convolution 24 1×1×144 convolutions with stride [1 1] and padding 'same'
25 'block_2_project_BN' Batch Normalization Batch normalization with 24 channels
26 'block_2_add' Addition Element-wise addition of 2 inputs
27 'block_3_expand' Convolution 144 1×1×24 convolutions with stride [1 1] and padding 'same'
28 'block_3_expand_BN' Batch Normalization Batch normalization with 144 channels
29 'block_3_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
30 'block_3_depthwise' Grouped Convolution 144 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same'
31 'block_3_depthwise_BN' Batch Normalization Batch normalization with 144 channels
32 'block_3_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
33 'block_3_project' Convolution 32 1×1×144 convolutions with stride [1 1] and padding 'same'
34 'block_3_project_BN' Batch Normalization Batch normalization with 32 channels
35 'block_4_expand' Convolution 192 1×1×32 convolutions with stride [1 1] and padding 'same'
36 'block_4_expand_BN' Batch Normalization Batch normalization with 192 channels
37 'block_4_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
38 'block_4_depthwise' Grouped Convolution 192 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
39 'block_4_depthwise_BN' Batch Normalization Batch normalization with 192 channels
40 'block_4_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
41 'block_4_project' Convolution 32 1×1×192 convolutions with stride [1 1] and padding 'same'
42 'block_4_project_BN' Batch Normalization Batch normalization with 32 channels
43 'block_4_add' Addition Element-wise addition of 2 inputs
44 'block_5_expand' Convolution 192 1×1×32 convolutions with stride [1 1] and padding 'same'
45 'block_5_expand_BN' Batch Normalization Batch normalization with 192 channels
46 'block_5_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
47 'block_5_depthwise' Grouped Convolution 192 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
48 'block_5_depthwise_BN' Batch Normalization Batch normalization with 192 channels
49 'block_5_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
50 'block_5_project' Convolution 32 1×1×192 convolutions with stride [1 1] and padding 'same'
51 'block_5_project_BN' Batch Normalization Batch normalization with 32 channels
52 'block_5_add' Addition Element-wise addition of 2 inputs
53 'block_6_expand' Convolution 192 1×1×32 convolutions with stride [1 1] and padding 'same'
54 'block_6_expand_BN' Batch Normalization Batch normalization with 192 channels
55 'block_6_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
56 'block_6_depthwise' Grouped Convolution 192 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same'
57 'block_6_depthwise_BN' Batch Normalization Batch normalization with 192 channels
58 'block_6_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
59 'block_6_project' Convolution 64 1×1×192 convolutions with stride [1 1] and padding 'same'
60 'block_6_project_BN' Batch Normalization Batch normalization with 64 channels
61 'block_7_expand' Convolution 384 1×1×64 convolutions with stride [1 1] and padding 'same'
62 'block_7_expand_BN' Batch Normalization Batch normalization with 384 channels
63 'block_7_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
64 'block_7_depthwise' Grouped Convolution 384 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
65 'block_7_depthwise_BN' Batch Normalization Batch normalization with 384 channels
66 'block_7_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
67 'block_7_project' Convolution 64 1×1×384 convolutions with stride [1 1] and padding 'same'
68 'block_7_project_BN' Batch Normalization Batch normalization with 64 channels
69 'block_7_add' Addition Element-wise addition of 2 inputs
70 'block_8_expand' Convolution 384 1×1×64 convolutions with stride [1 1] and padding 'same'
71 'block_8_expand_BN' Batch Normalization Batch normalization with 384 channels
72 'block_8_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
73 'block_8_depthwise' Grouped Convolution 384 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
74 'block_8_depthwise_BN' Batch Normalization Batch normalization with 384 channels
75 'block_8_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
76 'block_8_project' Convolution 64 1×1×384 convolutions with stride [1 1] and padding 'same'
77 'block_8_project_BN' Batch Normalization Batch normalization with 64 channels
78 'block_8_add' Addition Element-wise addition of 2 inputs
79 'block_9_expand' Convolution 384 1×1×64 convolutions with stride [1 1] and padding 'same'
80 'block_9_expand_BN' Batch Normalization Batch normalization with 384 channels
81 'block_9_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
82 'block_9_depthwise' Grouped Convolution 384 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
83 'block_9_depthwise_BN' Batch Normalization Batch normalization with 384 channels
84 'block_9_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
85 'block_9_project' Convolution 64 1×1×384 convolutions with stride [1 1] and padding 'same'
86 'block_9_project_BN' Batch Normalization Batch normalization with 64 channels
87 'block_9_add' Addition Element-wise addition of 2 inputs
88 'block_10_expand' Convolution 384 1×1×64 convolutions with stride [1 1] and padding 'same'
89 'block_10_expand_BN' Batch Normalization Batch normalization with 384 channels
90 'block_10_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
91 'block_10_depthwise' Grouped Convolution 384 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
92 'block_10_depthwise_BN' Batch Normalization Batch normalization with 384 channels
93 'block_10_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
94 'block_10_project' Convolution 96 1×1×384 convolutions with stride [1 1] and padding 'same'
95 'block_10_project_BN' Batch Normalization Batch normalization with 96 channels
96 'block_11_expand' Convolution 576 1×1×96 convolutions with stride [1 1] and padding 'same'
97 'block_11_expand_BN' Batch Normalization Batch normalization with 576 channels
98 'block_11_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
99 'block_11_depthwise' Grouped Convolution 576 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
100 'block_11_depthwise_BN' Batch Normalization Batch normalization with 576 channels
101 'block_11_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
102 'block_11_project' Convolution 96 1×1×576 convolutions with stride [1 1] and padding 'same'
103 'block_11_project_BN' Batch Normalization Batch normalization with 96 channels
104 'block_11_add' Addition Element-wise addition of 2 inputs
105 'block_12_expand' Convolution 576 1×1×96 convolutions with stride [1 1] and padding 'same'
106 'block_12_expand_BN' Batch Normalization Batch normalization with 576 channels
107 'block_12_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
108 'block_12_depthwise' Grouped Convolution 576 groups of 1 3×3×1 convolutions with stride [1 1] and padding 'same'
109 'block_12_depthwise_BN' Batch Normalization Batch normalization with 576 channels
110 'block_12_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
111 'block_12_project' Convolution 96 1×1×576 convolutions with stride [1 1] and padding 'same'
112 'block_12_project_BN' Batch Normalization Batch normalization with 96 channels
113 'block_12_add' Addition Element-wise addition of 2 inputs
114 'block_13_expand' Convolution 576 1×1×96 convolutions with stride [1 1] and padding 'same'
115 'block_13_expand_BN' Batch Normalization Batch normalization with 576 channels
116 'block_13_expand_relu' Clipped ReLU Clipped ReLU with ceiling 6
117 'block_13_depthwise' Grouped Convolution 576 groups of 1 3×3×1 convolutions with stride [2 2] and padding 'same'
118 'block_13_depthwise_BN' Batch Normalization Batch normalization with 576 channels
119 'block_13_depthwise_relu' Clipped ReLU Clipped ReLU with ceiling 6
120 'block_13_project' Convolution 160 1×1×576 convolutions with stride [1 1] and padding 'same'
121 'block_13_project_BN' Batch Normalization Batch normalization with 160 channels
122 'block_13_project_BN_anchorbox1' Anchor Box Layer. Anchor Box Layer.
123 'block_13_project_BN_mbox_conf_1' Convolution 10 3×3 convolutions with stride [1 1] and padding [1 1 1 1]
124 'block_13_project_BN_mbox_loc_1' Convolution 20 3×3 convolutions with stride [1 1] and padding [1 1 1 1]
125 'block_10_project_BN_anchorbox2' Anchor Box Layer. Anchor Box Layer.
126 'block_10_project_BN_mbox_conf_1' Convolution 10 3×3 convolutions with stride [1 1] and padding [1 1 1 1]
127 'block_10_project_BN_mbox_loc_1' Convolution 20 3×3 convolutions with stride [1 1] and padding [1 1 1 1]
128 'confmerge' SSD Merge Layer. SSD Merge Layer.
129 'locmerge' SSD Merge Layer. SSD Merge Layer.
130 'anchorBoxSoft' Softmax softmax
131 'focal_loss' Focal Loss Layer. Focal Loss Layer.
132 'rcnnboxRegression' Box Regression Output smooth-l1 loss
Сконфигурируйте сетевые опции обучения.
options = trainingOptions('sgdm',... 'InitialLearnRate',5e-5,... 'MiniBatchSize',16,... 'Verbose',true,... 'MaxEpochs',50,... 'Shuffle','every-epoch',... 'VerboseFrequency',10,... 'CheckpointPath',tempdir);
Обучите сеть SSD.
[detector,info] = trainSSDObjectDetector(ds,lgraph,options);
************************************************************************* Training an SSD Object Detector for the following object classes: * vehicle Training on single CPU. Initializing input data normalization. |=======================================================================================================| | Epoch | Iteration | Time Elapsed | Mini-batch | Mini-batch | Mini-batch | Base Learning | | | | (hh:mm:ss) | Loss | Accuracy | RMSE | Rate | |=======================================================================================================| | 1 | 1 | 00:00:18 | 0.8757 | 48.51% | 1.47 | 5.0000e-05 | | 1 | 10 | 00:01:43 | 0.8386 | 48.35% | 1.43 | 5.0000e-05 | | 2 | 20 | 00:03:15 | 0.7860 | 48.87% | 1.37 | 5.0000e-05 | | 2 | 30 | 00:04:42 | 0.6771 | 48.65% | 1.23 | 5.0000e-05 | | 3 | 40 | 00:06:46 | 0.7129 | 48.43% | 1.28 | 5.0000e-05 | | 3 | 50 | 00:08:37 | 0.5723 | 49.04% | 1.09 | 5.0000e-05 | | 4 | 60 | 00:10:12 | 0.5632 | 48.72% | 1.08 | 5.0000e-05 | | 4 | 70 | 00:11:25 | 0.5438 | 49.11% | 1.06 | 5.0000e-05 | | 5 | 80 | 00:12:35 | 0.5277 | 48.48% | 1.03 | 5.0000e-05 | | 5 | 90 | 00:13:39 | 0.4711 | 48.95% | 0.96 | 5.0000e-05 | | 6 | 100 | 00:14:50 | 0.5063 | 48.72% | 1.00 | 5.0000e-05 | | 7 | 110 | 00:16:11 | 0.4812 | 48.99% | 0.97 | 5.0000e-05 | | 7 | 120 | 00:17:27 | 0.5248 | 48.53% | 1.04 | 5.0000e-05 | | 8 | 130 | 00:18:33 | 0.4245 | 49.32% | 0.90 | 5.0000e-05 | | 8 | 140 | 00:19:37 | 0.4889 | 48.87% | 0.98 | 5.0000e-05 | | 9 | 150 | 00:20:47 | 0.4213 | 49.18% | 0.89 | 5.0000e-05 | | 9 | 160 | 00:22:02 | 0.4753 | 49.45% | 0.97 | 5.0000e-05 | | 10 | 170 | 00:23:13 | 0.4454 | 49.31% | 0.92 | 5.0000e-05 | | 10 | 180 | 00:24:22 | 0.4378 | 49.26% | 0.92 | 5.0000e-05 | | 11 | 190 | 00:25:29 | 0.4278 | 49.13% | 0.90 | 5.0000e-05 | | 12 | 200 | 00:26:39 | 0.4494 | 49.77% | 0.93 | 5.0000e-05 | | 12 | 210 | 00:27:45 | 0.4298 | 49.03% | 0.90 | 5.0000e-05 | | 13 | 220 | 00:28:47 | 0.4296 | 49.86% | 0.90 | 5.0000e-05 | | 13 | 230 | 00:30:05 | 0.3987 | 49.65% | 0.86 | 5.0000e-05 | | 14 | 240 | 00:31:13 | 0.4042 | 49.46% | 0.87 | 5.0000e-05 | | 14 | 250 | 00:32:20 | 0.4244 | 50.16% | 0.90 | 5.0000e-05 | | 15 | 260 | 00:33:31 | 0.4374 | 49.72% | 0.93 | 5.0000e-05 | | 15 | 270 | 00:34:38 | 0.4016 | 48.95% | 0.86 | 5.0000e-05 | | 16 | 280 | 00:35:47 | 0.4289 | 49.44% | 0.91 | 5.0000e-05 | | 17 | 290 | 00:36:58 | 0.3866 | 49.10% | 0.84 | 5.0000e-05 | | 17 | 300 | 00:38:10 | 0.4077 | 49.59% | 0.87 | 5.0000e-05 | | 18 | 310 | 00:39:24 | 0.3943 | 49.74% | 0.86 | 5.0000e-05 | | 18 | 320 | 00:40:48 | 0.4206 | 49.99% | 0.89 | 5.0000e-05 | | 19 | 330 | 00:41:53 | 0.4504 | 49.72% | 0.94 | 5.0000e-05 | | 19 | 340 | 00:42:55 | 0.3449 | 50.38% | 0.78 | 5.0000e-05 | | 20 | 350 | 00:44:01 | 0.3450 | 49.57% | 0.77 | 5.0000e-05 | | 20 | 360 | 00:44:59 | 0.3769 | 50.24% | 0.83 | 5.0000e-05 | | 21 | 370 | 00:46:05 | 0.3336 | 50.40% | 0.76 | 5.0000e-05 | | 22 | 380 | 00:47:01 | 0.3453 | 49.27% | 0.78 | 5.0000e-05 | | 22 | 390 | 00:48:04 | 0.4011 | 49.72% | 0.87 | 5.0000e-05 | | 23 | 400 | 00:49:06 | 0.3307 | 50.32% | 0.75 | 5.0000e-05 | | 23 | 410 | 00:50:03 | 0.3186 | 50.01% | 0.73 | 5.0000e-05 | | 24 | 420 | 00:51:10 | 0.3491 | 50.43% | 0.78 | 5.0000e-05 | | 24 | 430 | 00:52:17 | 0.3299 | 50.31% | 0.76 | 5.0000e-05 | | 25 | 440 | 00:53:35 | 0.3326 | 50.78% | 0.76 | 5.0000e-05 | | 25 | 450 | 00:54:42 | 0.3219 | 50.61% | 0.75 | 5.0000e-05 | | 26 | 460 | 00:55:55 | 0.3090 | 50.59% | 0.71 | 5.0000e-05 | | 27 | 470 | 00:57:08 | 0.3036 | 51.48% | 0.71 | 5.0000e-05 | | 27 | 480 | 00:58:16 | 0.3359 | 50.43% | 0.76 | 5.0000e-05 | | 28 | 490 | 00:59:24 | 0.3182 | 50.35% | 0.73 | 5.0000e-05 | | 28 | 500 | 01:00:36 | 0.3265 | 50.71% | 0.76 | 5.0000e-05 | | 29 | 510 | 01:01:44 | 0.3415 | 50.53% | 0.78 | 5.0000e-05 | | 29 | 520 | 01:02:51 | 0.3126 | 51.15% | 0.73 | 5.0000e-05 | | 30 | 530 | 01:03:59 | 0.3179 | 50.74% | 0.75 | 5.0000e-05 | | 30 | 540 | 01:05:15 | 0.3032 | 50.83% | 0.72 | 5.0000e-05 | | 31 | 550 | 01:06:25 | 0.2868 | 50.69% | 0.68 | 5.0000e-05 | | 32 | 560 | 01:07:42 | 0.2716 | 50.85% | 0.66 | 5.0000e-05 | | 32 | 570 | 01:08:53 | 0.3016 | 51.32% | 0.71 | 5.0000e-05 | | 33 | 580 | 01:10:05 | 0.2624 | 51.35% | 0.63 | 5.0000e-05 | | 33 | 590 | 01:11:12 | 0.3145 | 51.38% | 0.73 | 5.0000e-05 | | 34 | 600 | 01:12:31 | 0.2949 | 51.28% | 0.70 | 5.0000e-05 | | 34 | 610 | 01:13:46 | 0.3070 | 51.22% | 0.73 | 5.0000e-05 | | 35 | 620 | 01:15:01 | 0.3119 | 51.49% | 0.73 | 5.0000e-05 | | 35 | 630 | 01:16:14 | 0.2869 | 51.81% | 0.70 | 5.0000e-05 | | 36 | 640 | 01:17:28 | 0.3401 | 51.28% | 0.78 | 5.0000e-05 | | 37 | 650 | 01:18:40 | 0.3123 | 51.43% | 0.73 | 5.0000e-05 | | 37 | 660 | 01:19:58 | 0.2954 | 51.27% | 0.71 | 5.0000e-05 | | 38 | 670 | 01:21:12 | 0.2792 | 52.17% | 0.68 | 5.0000e-05 | | 38 | 680 | 01:22:29 | 0.3225 | 51.36% | 0.76 | 5.0000e-05 | | 39 | 690 | 01:23:41 | 0.2867 | 52.63% | 0.69 | 5.0000e-05 | | 39 | 700 | 01:24:56 | 0.3067 | 51.52% | 0.73 | 5.0000e-05 | | 40 | 710 | 01:26:13 | 0.2718 | 51.84% | 0.66 | 5.0000e-05 | | 40 | 720 | 01:27:25 | 0.2888 | 52.03% | 0.70 | 5.0000e-05 | | 41 | 730 | 01:28:42 | 0.2854 | 51.96% | 0.69 | 5.0000e-05 | | 42 | 740 | 01:29:57 | 0.2744 | 51.18% | 0.67 | 5.0000e-05 | | 42 | 750 | 01:31:10 | 0.2582 | 51.90% | 0.64 | 5.0000e-05 | | 43 | 760 | 01:32:25 | 0.2586 | 52.48% | 0.64 | 5.0000e-05 | | 43 | 770 | 01:33:35 | 0.2632 | 51.47% | 0.65 | 5.0000e-05 | | 44 | 780 | 01:34:46 | 0.2532 | 51.58% | 0.63 | 5.0000e-05 | | 44 | 790 | 01:36:07 | 0.2889 | 52.19% | 0.69 | 5.0000e-05 | | 45 | 800 | 01:37:20 | 0.2551 | 52.35% | 0.63 | 5.0000e-05 | | 45 | 810 | 01:38:27 | 0.2863 | 51.29% | 0.69 | 5.0000e-05 | | 46 | 820 | 01:39:43 | 0.2700 | 52.58% | 0.67 | 5.0000e-05 | | 47 | 830 | 01:40:54 | 0.3234 | 51.96% | 0.76 | 5.0000e-05 | | 47 | 840 | 01:42:08 | 0.2819 | 52.88% | 0.69 | 5.0000e-05 | | 48 | 850 | 01:43:23 | 0.2743 | 52.80% | 0.67 | 5.0000e-05 | | 48 | 860 | 01:44:38 | 0.2365 | 52.21% | 0.60 | 5.0000e-05 | | 49 | 870 | 01:45:58 | 0.2271 | 52.23% | 0.58 | 5.0000e-05 | | 49 | 880 | 01:47:21 | 0.3006 | 52.23% | 0.72 | 5.0000e-05 | | 50 | 890 | 01:48:35 | 0.2494 | 52.32% | 0.63 | 5.0000e-05 | | 50 | 900 | 01:49:55 | 0.2383 | 53.51% | 0.61 | 5.0000e-05 | |=======================================================================================================| Detector training complete. *************************************************************************
Проверьте свойства детектора.
detector
detector =
ssdObjectDetector with properties:
ModelName: 'vehicle'
Network: [1×1 DAGNetwork]
ClassNames: {'vehicle' 'Background'}
AnchorBoxes: {[5×2 double] [5×2 double]}
Можно проверить точность обучения путем проверки потерь обучения для каждой итерации.
figure plot(info.TrainingLoss) grid on xlabel('Number of Iterations') ylabel('Training Loss for Each Iteration')

Протестируйте детектор SSD на тестовом изображении.
img = imread('ssdTestDetect.png');Запустите детектор объектов SSD на изображении для обнаружения транспортного средства.
[bboxes,scores] = detect(detector,img);
Отображение результатов обнаружения.
if(~isempty(bboxes)) img = insertObjectAnnotation(img,'rectangle',bboxes,scores); end figure imshow(img)

trainingData - Маркированные наземные изображения истинностиМаркированные основные истины изображения, заданные как datastore или таблица.
Если вы используете datastore, ваши данные должны быть настроены так, чтобы вызывать datastore с read и readall функции возвращают массив ячеек или таблицу с двумя или тремя столбцами. Когда выход содержит два столбца, первый столбец должен содержать ограничительные рамки, а второй столбец должен содержать метки {boxes, labels}. Если выход содержит три столбца, второй столбец должен содержать ограничительные рамки, а третий столбец должен содержать метки. В этом случае первый столбец может содержать данные любого типа. Например, первый столбец может содержать изображения или данные облака точек.
| data | boxes | labels |
|---|---|---|
| Первый столбец может содержать данные, такие как данные облака точек или изображения. | Второй столбец должен быть массивом ячеек, который содержит M на 5 матриц ограничивающих рамок формы [x center, y center, width, height, yaw]. Векторы представляют расположение и размер ограничивающих рамок для объектов на каждом изображении. | Третий столбец должен быть массивом ячеек, который содержит M категориальных векторов -by-1, содержащих имена классов объектов. Все категориальные данные, возвращенные datastore, должны содержать одни и те же категории. |
Для получения дополнительной информации смотрите Datastores for Глубокое Обучение (Deep Learning Toolbox).
lgraph - График слоевLayerGraph объектГрафик слоев, заданный как LayerGraph объект. График слоев содержит архитектуру сети SSD multibox. Вы можете создать эту сеть, используя ssdLayers функция или создание пользовательской сети. Для получения дополнительной информации смотрите Начало работы с SSD Multibox Detection.
detector - Ранее обученный детектор объектов SSDssdObjectDetector объект Ранее обученный детектор объектов SSD, заданный как ssdObjectDetector объект. Используйте этот синтаксис, чтобы продолжить обучение детектора с дополнительными обучающими данными или выполнить больше итераций обучения, чтобы улучшить точность детектора.
options - Опции обученияTrainingOptionsSGDM | объекта TrainingOptionsRMSProp | объекта TrainingOptionsADAM объектОпции обучения, заданные как TrainingOptionsSGDM, TrainingOptionsRMSProp, или TrainingOptionsADAM объект, возвращенный trainingOptions (Deep Learning Toolbox) функция. Чтобы задать имя решателя и другие опции для сетевого обучения, используйте trainingOptions (Deep Learning Toolbox) функция.
Примечание
Функция trainSSDObjectDetector не поддерживает следующие опции обучения:
Входы Datastore не поддерживаются при установке DispatchInBackground опция обучения для true.
checkpoint - Сохраненная контрольная точка детектораssdObjectDetector объектСохраненная контрольная точка детектора, заданная как ssdObjectDetector объект. Чтобы сохранить детектор после каждой эпохи, установите 'CheckpointPath' аргумент имя-значение при использовании trainingOptions функция. Сохранение контрольной точки после каждой эпохи рекомендуется, потому что сетевое обучение может занять несколько часов.
Чтобы загрузить контрольную точку для ранее обученного детектора, загрузите MAT-файл из пути контрольной точки. Для примера, если CheckpointPath свойство объекта, заданное как options является '/checkpath'можно загрузить MAT-файл контрольной точки с помощью этого кода.
data = load('/checkpath/ssd_checkpoint__216__2018_11_16__13_34_30.mat');
checkpoint = data.detector;Имя MAT-файла включает номер итерации и временную метку момента сохранения контрольной точки детектора. Детектор сохранен в detector переменная файла. Передайте этот файл обратно в функцию trainSSDObjectDetector:
ssdDetector = trainSSDObjectDetector(trainingData,checkpoint,options);
trainedDetector - Обученный детектор многоядерных объектов SSDssdObjectDetector объектОбученный детектор объектов SSD, возвращенный как ssdObjectDetector объект. Можно обучить детектор объектов SSD обнаруживать несколько классов объектов.
info - Информация о процессе обученияИнформация о процессе обучения, возвращенная как массив структур с восемью полями. Каждое поле соответствует этапу обучения.
TrainingLoss - Потеря обучения при каждой итерации является средней квадратичной невязкой (MSE), рассчитанной как сумма ошибки локализации, доверительной потери и потерь классификации. Для получения дополнительной информации о функции потерь обучения см. Раздел «Потеря обучения».
TrainingAccuracy - Точность обучающего набора при каждой итерации.
TrainingRMSE - Обучающая средняя квадратичная невязка (RMSE) является RMSE, вычисленным из потерь обучения при каждой итерации.
BaseLearnRate - Скорость обучения на каждой итерации.
ValidationLoss - Потеря валидации при каждой итерации.
ValidationAccuracy - Точность валидации при каждой итерации.
ValidationRMSE - Валидация RMSE при каждой итерации.
FinalValidationLoss - Окончательная потеря валидации в конце обучения.
FinalValidationRMSE - Окончательная валидация RMSE в конце обучения.
Каждое поле является числовым вектором с одним элементом на итерацию обучения. Значения, которые не были вычислены при определенной итерации, назначаются как NaN. Этот struct содержит ValidationLoss, ValidationAccuracy, ValidationRMSE, FinalValidationLoss, и FinalValidationRMSE поля только при options задает данные валидации.
[1] W. Liu, E. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.Fu и A.C. Berg. SSD: Single Shot MultiBox Detector (неопр.) (недоступная ссылка). Европейская конференция по компьютерному зрению (ECCV), Springer Verlag, 2016
objectDetectorTrainingData | ssdLayers | trainingOptions (Deep Learning Toolbox)У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.