Обучение с нуля или обучение с контрольной точки, model_main.py
- основная программа, кроме этой программы все, что вам нужно, это правильный файл конфигурации конвейера.
Так что для тонкой настройки его можно разделитьв два этапа, восстановление весов и обновление весов.Оба шага могут быть настроены в соответствии с поездом файл прото , этот протокол соответствует train_config
в файле конфигурации конвейера.
train_config: {
batch_size: 24
optimizer { }
fine_tune_checkpoint: "PATH_TO_BE_CONFIGURED/model.ckpt"
fine_tune_checkpoint_type: "detection"
# Note: The below line limits the training process to 200K steps, which we
# empirically found to be sufficient enough to train the pets dataset. This
# effectively bypasses the learning rate schedule (the learning rate will
# never decay). Remove the below line to train indefinitely.
num_steps: 200000
data_augmentation_options {}
}
Шаг 1, восстановление весов.
На этом шаге вы можете настроить восстанавливаемые переменные, установив fine_tune_checkpoint_type
, варианты detection
и classification
.Установив detection
, вы можете восстановить практически все переменные из контрольной точки, а установив classification
, будут восстановлены только переменные из области feature_extractor
(все уровни в магистральных сетях, такие как VGG, Resnet).MobileNet, они называются экстракторами функций).
Ранее это контролировалось from_detection_checkpoint
и load_all_detection_checkpoint_vars
, но эти два поля устарели.
Также обратите внимание, что после того, как вы настроили fine_tune_checkpoint_type
, фактическая операция восстановления будет проверять, еслипеременная в графе существует в контрольной точке, и если нет, переменная будет инициализирована с помощью обычной операции инициализации.
Приведите пример, предположим, что вы хотите точно настроить модель ssd_mobilenet_v1_custom_data
, и вы загрузили контрольную точку ssd_mobilenet_v1_coco
, когда вы установили fine_tune_checkpoint_type: detection
, тогда все переменные на графике, которые также доступны вфайл контрольных точек будет восстановлен, и весовые коэффициенты блока предсказания (последний слой) также будут восстановлены .Но если вы установите fine_tune_checkpoint_type: classification
, то будут восстановлены только веса для mobilenet
слоев.Но если вы используете другую контрольную точку модели, скажем, faster_rcnn_resnet_xxx
, то из-за того, что переменные на графике недоступны в контрольной точке, вы увидите выходной журнал с предупреждением Variable XXX is not available in checkpoint
, и они не будут восстановлены.
Шаг 2, обновление весов
Теперь у вас восстановлены все веса, и вы хотите продолжить тренировку (точную настройку) в своем собственном наборе данных, обычно этого должно быть достаточно.
Но если вы хотите поэкспериментировать с чем-то и хотите заморозить некоторые слои во время тренировки, вы можете настроить тренировку, установив freeze_variables
.Допустим, вы хотите заморозить все веса мобильной сети и обновлять только веса для предиктора коробки, вы можете установить freeze_variables: [feature_extractor]
, чтобы все переменные с feature_extractor
в именах не обновлялись.Для получения подробной информации см. другой ответ , который я написал.
Итак, для точной настройки модели в вашем пользовательском наборе данных вы должны подготовить пользовательский файл конфигурации.Вы можете начать с файлов sample config , а затем изменить некоторые поля в соответствии со своими потребностями.