Обучение детектору объектов глубокого обучения твердотельных накопителей
обучает однокадровый мультибоксовый детектор (SSD) с помощью глубокого обучения. Можно обучить детектор SSD обнаруживать несколько классов объектов.trainedDetector = trainSSDObjectDetector(trainingData,lgraph,options)
Эта функция требует наличия Toolbox™ глубокого обучения. Рекомендуется также иметь Toolbox™ параллельных вычислений для использования с графическим процессором NVIDIA ® с поддержкой CUDA ®. Сведения о поддерживаемых вычислительных возможностях см. в разделе Поддержка графического процессора по выпуску (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);
Создайте хранилище данных изображения, используя файлы из таблицы.
imds = imageDatastore(trainingData.imageFilename);
Создайте хранилище данных меток поля, используя столбцы меток из таблицы.
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);
Обучение сети твердотельных накопителей.
[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 - Маркированные изображения истинности землиПомеченные изображения истинности грунта, указанные как хранилище данных или таблица.
При использовании хранилища данных данные должны быть настроены таким образом, чтобы вызывать хранилище данных с помощью read и readall функция возвращает массив ячеек или таблицу с двумя или тремя столбцами. Если выходные данные содержат два столбца, первый столбец должен содержать ограничивающие рамки, а второй столбец должен содержать метки {поля, метки}. Если выходные данные содержат три столбца, второй столбец должен содержать ограничивающие рамки, а третий столбец должен содержать метки. В этом случае первый столбец может содержать данные любого типа. Например, первый столбец может содержать изображения или данные облака точек.
| данные | коробки | этикетки |
|---|---|---|
| Первый столбец может содержать данные, например данные облака точек или изображения. | Второй столбец должен быть массивом ячеек, содержащим M-by-5 матрицы ограничивающих прямоугольников вида [xcenter, ycenter, width, height, yaw]. Векторы представляют расположение и размер ограничивающих рамок для объектов на каждом изображении. | Третий столбец должен быть массивом ячеек, содержащим M-by-1 категориальных векторов, содержащих имена классов объектов. Все категориальные данные, возвращаемые хранилищем данных, должны содержать одинаковые категории. |
Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения (панель инструментов глубокого обучения).
lgraph - График слоевLayerGraph объектГрафик слоев, заданный как LayerGraph объект. График уровня содержит архитектуру многопользовательской сети SSD. Вы можете создать эту сеть с помощью ssdLayers или создайте пользовательскую сеть. Дополнительные сведения см. в разделе Начало работы с решением SSD Multibox Detection.
detector - Ранее обученный детектор объектов SSDssdObjectDetector объект Ранее обученный детектор объектов SSD, указанный как ssdObjectDetector объект. Используйте этот синтаксис для продолжения обучения детектора с дополнительными данными обучения или для выполнения дополнительных итераций обучения для повышения точности детектора.
options - Варианты обученияTrainingOptionsSGDM объект | TrainingOptionsRMSProp объект | TrainingOptionsADAM объектВарианты обучения, указанные как TrainingOptionsSGDM, TrainingOptionsRMSProp, или TrainingOptionsADAM объект, возвращенный trainingOptions (Deep Learning Toolbox). Чтобы указать имя решателя и другие параметры сетевого обучения, используйте trainingOptions (Deep Learning Toolbox).
Примечание
Функция trainSSDObâDetector не поддерживает следующие варианты обучения:
Входные данные хранилища данных не поддерживаются при установке 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 переменной файла. Передайте этот файл обратно в функцию trainSSDObâDetector:
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. Структура содержит ValidationLoss, ValidationAccuracy, ValidationRMSE, FinalValidationLoss, и FinalValidationRMSE поля только тогда, когда options указывает данные проверки.
[1] В. Лю, Э. Ангуэлов, Д. Эрхан, К. Сегеди, С. Рид, К. Фу и А. К. Берг. «SSD: однокадровый мультибоксовый детектор». Европейская конференция по компьютерному зрению (ECCV), Springer Verlag, 2016
objectDetectorTrainingData | ssdLayers | trainingOptions (инструментарий для глубокого обучения)Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.