trainSSDObjectDetector

Обучите детектор объектов глубокого обучения SSD

Описание

Обучите детектор

пример

trainedDetector = trainSSDObjectDetector(trainingData,lgraph,options) обучает один детектор мультиполя выстрела (SSD) с помощью глубокого обучения. Можно обучить детектор SSD обнаруживать несколько классов объектов.

Эта функция требует, чтобы у вас был Deep Learning Toolbox™. Рекомендуется, чтобы у вас также был Parallel Computing Toolbox™, чтобы использовать с CUDA®- активированный NVIDIA® Графический процессор. Для получения информации о поддерживаемом вычислите возможности, смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox).

[trainedDetector,info] = trainSSDObjectDetector(___) также возвращает информацию о процессе обучения, таком как учебная потеря и точность, для каждой итерации.

Возобновите обучение детектор

trainedDetector = trainSSDObjectDetector(trainingData,checkpoint,options) обучение резюме с контрольной точки детектора.

Подстройте детектор

trainedDetector = trainSSDObjectDetector(trainingData,detector,options) продолжает обучение детектор мультиобъекта поля SSD с дополнительными опциями подстройки. Используйте этот синтаксис с дополнительными обучающими данными или выполнять больше учебных итераций, чтобы улучшить точность детектора.

Дополнительные свойства

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);

Создайте datastore метки поля с помощью столбцов меток из таблицы.

blds = boxLabelDatastore(trainingData(:,2:end));

Объедините хранилища данных.

ds = combine(imds,blds);

Загрузите предварительно инициализированную сеть обнаружения объектов SSD.

net = load('ssdVehicleDetector.mat');
lgraph = net.lgraph
lgraph = 
  LayerGraph with properties:

         Layers: [132×1 nnet.cnn.layer.Layer]
    Connections: [141×2 table]
     InputNames: {'input_1'}
    OutputNames: {'focal_loss'  'rcnnboxRegression'}

Смотрите слои в сети SSD и их свойствах. Можно также создать сеть SSD путем выполнения поданных шагов, Создают Сеть Обнаружения объектов SSD.

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)

Входные параметры

свернуть все

Помеченная основная истина отображает в виде datastore или таблицы.

  • Если вы используете datastore, ваши данные должны быть настроены так, чтобы, вызвав datastore с read и readall функции возвращают массив ячеек или таблицу с двумя или тремя столбцами. Когда выход содержит два столбца, первый столбец должен содержать ограничительные рамки, и второй столбец должен содержать метки, {boxes, labels}. Когда выход содержит три столбца, второй столбец должен содержать ограничительные рамки, и третий столбец должен содержать метки. В этом случае первый столбец может содержать любой тип данных. Например, первый столбец может содержать данные об облаке точек или изображения.

    databoxeslabels

    Первый столбец может содержать данные, такие как данные об облаке точек или изображения.

    Второй столбец должен быть массивом ячеек, который содержит M-by-5 матрицы ограничительных рамок формы [центр x, центр y, width, height, yaw]. Векторы представляют местоположение и размер ограничительных рамок для объектов в каждом изображении.

    Если ограничительная рамка выравнивается осью, то вы не должны задавать рыскание. Поэтому ограничительная рамка была бы описана как M-by-4 матрицы ограничительных рамок формы [центр x, центр y, width, height].

    Третий столбец должен быть массивом ячеек, который содержит M-by-1 категориальные векторы, содержащие имена класса объекта. Все категориальные данные, возвращенные datastore, должны содержать те же категории.

    Для получения дополнительной информации смотрите Хранилища данных для Глубокого обучения (Deep Learning Toolbox).

График слоев в виде LayerGraph объект. График слоев содержит архитектуру сети мультиполя SSD. Можно создать эту сеть при помощи ssdLayers функционируйте или создайте пользовательскую сеть. Для получения дополнительной информации смотрите Начало работы с Обнаружением Мультиполя SSD.

Ранее обученный детектор объектов SSD в виде ssdObjectDetector объект. Используйте этот синтаксис, чтобы продолжить обучение детектор с дополнительными обучающими данными или выполнить больше учебных итераций, чтобы улучшить точность детектора.

Опции обучения в виде TrainingOptionsSGDM, TrainingOptionsRMSProp, или TrainingOptionsADAM объект, возвращенный trainingOptions (Deep Learning Toolbox) функция. Чтобы задать имя решателя и другие опции для сетевого обучения, используйте trainingOptions (Deep Learning Toolbox) функция.

Примечание

Функция trainSSDObjectDetector не поддерживает эти опции обучения:

  • Входные параметры datastore не поддерживаются, когда вы устанавливаете DispatchInBackground опция обучения к true.

Сохраненная контрольная точка детектора в виде 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);

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'PositiveOverlapRange',[0.5 1] устанавливает вертикальное направление оси на.

Отношения диапазона перекрытия ограничивающего прямоугольника между 0 и 1В виде двухэлементного вектора. Поля привязки, которые перекрываются с ограничительными рамками основной истины в заданной области, используются в качестве положительных обучающих выборок. Функция вычисляет отношение перекрытия с помощью пересечения по объединению между двумя ограничительными рамками.

Отношения диапазона перекрытия ограничивающего прямоугольника между 0 и 1В виде двухэлементного вектора. Поля привязки, которые перекрываются с ограничительными рамками основной истины в заданной области, используются в качестве отрицательных обучающих выборок. Функция вычисляет отношение перекрытия с помощью пересечения по объединению между двумя ограничительными рамками.

Эксперимент обучения детектора, контролирующий в виде experiments.Monitor Объект (Deep Learning Toolbox) для использования с приложением Experiment Manager (Deep Learning Toolbox). Можно использовать этот объект отследить прогресс обучения, полей информации об обновлении в учебной таблице результатов, значениях записи метрик, используемых обучением, и произвести учебные графики.

Информация проверена во время обучения:

  • Учебная потеря в каждой итерации.

  • Учебная точность в каждой итерации.

  • Учебная среднеквадратичная ошибка (RMSE) для слоя регрессии поля.

  • Скорость обучения в каждой итерации.

Информация о валидации, когда учебный options введите содержит данные о валидации:

  • Потеря валидации в каждой итерации.

  • Точность валидации в каждой итерации.

  • Валидация RMSE в каждой итерации.

Вычисленные метрики, когда обучение заканчивается:

  • Итоговая потеря валидации в конце обучения.

  • Итоговая валидация RMSE в конце обучения.

Выходные аргументы

свернуть все

Обученный детектор объектов SSD, возвращенный как ssdObjectDetector объект. Можно обучить детектор объектов SSD обнаруживать несколько классов объектов.

Информация о процессе обучения, возвращенная как массив структур с восемью полями. Каждое поле соответствует этапу обучения.

  • TrainingLoss — Учебная потеря в каждой итерации является среднеквадратической ошибкой (MSE), вычисленной как сумма ошибки локализации, потеря доверия и потеря классификации. Для получения дополнительной информации об учебной функции потерь, смотрите Учебную Потерю.

  • TrainingAccuracy — Точность набора обучающих данных в каждой итерации.

  • TrainingRMSE — Учебная среднеквадратическая ошибка (RMSE) является RMSE, вычисленным от учебной потери в каждой итерации.

  • BaseLearnRate — Скорость обучения в каждой итерации.

  • ValidationLoss — Потеря валидации в каждой итерации.

  • ValidationAccuracy — Точность валидации в каждой итерации.

  • ValidationRMSE — Валидация RMSE в каждой итерации.

  • FinalValidationLoss — Итоговая потеря валидации в конце обучения.

  • FinalValidationRMSE — Итоговая валидация RMSE в конце обучения.

Каждое поле является числовым вектором с одним элементом на учебную итерацию. Значения, которые не были вычислены в определенной итерации, присвоены как NaN. Struct содержит ValidationLoss, ValidationAccuracy, ValidationRMSE, FinalValidationLoss, и FinalValidationRMSE поля только, когда options задает данные о валидации.

Ссылки

[1] В. Лю, Е. Ангуелов, Д. Эрхэн, К. Сзеджеди, С. Рид, C.Fu и А.К. Берг. "SSD: один выстрел детектор MultiBox". Европейская конференция по компьютерному зрению (ECCV), Springer Verlag, 2016

Введенный в R2020a