exponenta event banner

trainSSDObjectDetector

Обучение детектору объектов глубокого обучения твердотельных накопителей

Описание

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

пример

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

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

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

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

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

Тонкая настройка детектора

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

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

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.lgraph
lgraph = 
  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)

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

свернуть все

Помеченные изображения истинности грунта, указанные как хранилище данных или таблица.

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

    данныекоробкиэтикетки
    Первый столбец может содержать данные, например данные облака точек или изображения.Второй столбец должен быть массивом ячеек, содержащим M-by-5 матрицы ограничивающих прямоугольников вида [xcenter, ycenter, width, height, yaw]. Векторы представляют расположение и размер ограничивающих рамок для объектов на каждом изображении.Третий столбец должен быть массивом ячеек, содержащим M-by-1 категориальных векторов, содержащих имена классов объектов. Все категориальные данные, возвращаемые хранилищем данных, должны содержать одинаковые категории.

    Дополнительные сведения см. в разделе Хранилища данных для глубокого обучения (панель инструментов глубокого обучения).

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

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

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

Примечание

Функция trainSSDObâDetector не поддерживает следующие варианты обучения:

  • Входные данные хранилища данных не поддерживаются при установке 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 переменной файла. Передайте этот файл обратно в функцию trainSSDObâDetector:

ssdDetector = trainSSDObjectDetector(trainingData,checkpoint,options);

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

свернуть все

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

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

  • 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

Представлен в R2020a