Часть II • Введение в TensorFlow.js
что отнюдь не повысит безошибочность предсказания формы. Благодаря масшта
бированию индикатора 01 мы гарантируем равный вклад предсказаний формы
объекта и ограничивающего прямоугольника в итоговое значение функции потерь
(значение, возвращаемое функцией
customLossFunction()
), так что при обучении
модели оба вида предсказаний будут оптимизироваться одновременно. В упражне
нии 4 в конце главы у вас будет возможность самим поэкспериментировать с этим
масштабированием
1
.
Когда данные подготовлены, а модель и функция потерь описаны, можно при
ступить к обучению модели! Основные части кода приведены в листинге 5.11 (из
файла
simple-object-detection/train.js
). Как и показанная выше тонкая настройка
(см. подраздел 5.1.3), обучение разбито на два этапа: начальный этап, в ходе которого
слои новой верхушки обучаются вместе с несколькими верхними слоями усеченной
базовой модели MobileNet, и этапом тонкой настройки, во время которого слои но
вой верхушки обучаются вместе с несколькими верхними слоями усеченной базовой
модели MobileNet. Следует отметить, что непосредственно перед вызовом
fit()
для
тонкой настройки необходимо вызвать (снова) метод
compile()
, чтобы вступили
в силу изменения свойства
trainable
слоев. Если вы запустите обучение на своей
машине, то легко заметите существенное падение значений функции потерь в начале
этапа тонкой настройки. Оно отражает рост разрешающих возможностей модели
и адаптацию разблокированных слоев выделения признаков к уникальным призна
кам в данных, предназначенных для обнаружения объектов, в результате их разбло
кирования. Список разблокируемых во время тонкой настройки слоев определяется
массивом
fineTuningLayers
, заполняемым при усечении MobileNet (см. функцию
loadTruncatedBase()
в листинге 5.9), и содержит девять верхних слоев усеченной
MobileNet. В упражнении 3 в конце главы вы сможете поэкспериментировать, раз
блокируя большее или меньшее число слоев базовой модели, и понаблюдать, как
это влияет на безошибочность модели, получаемой в результате процесса обучения.
По завершении тонкой настройки модель сохраняется на диск, а затем загружа
ется на этапе вывода, выполняемого в браузере (запускается командой
yarn
watch
).
Если вы загрузите модель, размещенную нами в Интернете, или потратите время
и ресурсы на обучение достаточно хорошей модели на своей машине, то при вы
полнении вывода увидите неплохие предсказания (потери на проверочном наборе
данных < 100 после 100 эпох начального обучения и 200 эпох тонкой настройки).
1
Альтернатива масштабированию и основанному на meanSquaredError подходу — ис
пользовать первый столбец yPred в качестве показателя вероятности формы объекта
и вычислять его бинарную перекрестную энтропию с первым столбцом yTrue. А затем
суммировать это значение бинарной перекрестной энтропии с MSE, вычисленной по
оставшимся столбцам yPred и yTrue. Но при таком альтернативном подходе необходимо
масштабировать перекрестную энтропию должным образом, чтобы уравновесить ее с по
терями для ограничивающего прямоугольника, как и при нашем текущем подходе. Для
этого масштабирования необходим свободный параметр с тщательно выбранным значе
нием. На практике он становится дополнительным гиперпараметром модели, который
требует времени и вычислительных ресурсов для подбора — явный недостаток подхода.
Ради простоты мы выбрали текущий подход.
Do'stlaringiz bilan baham: |