Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей
223
предметными областями — прекрасный пример гибкости и переиспользуемости
глубокого обучения, главных причин широкого успеха этой сферы исследований.
Для иллюстрации воспользуемся новой задачей
обнаружения объектов
(object
detection) — первым в книге типом задач машинного зрения, не связанных с клас
сификацией. Обнаружение объектов связано с выявлением в изображении опре
деленных классов объектов. В чем отличия от классификации? При обнаружении
объектов результат представляет собой не только класс обнаруженного объекта
(к какому типу он относится), но и дополнительную информацию относительно его
расположения в изображении (где этот объект находится). Эту вторую половину
информации простой классификатор не предоставляет. Например, в стандарт
ной системе обнаружения объектов, используемой в беспилотных автомобилях,
результаты анализа входного изображения системой включают не только типы
присутствующих там объектов, которые нас интересуют (например, автомобилей
и пешеходов), но и местоположение, видимый размер и пространственное располо
жение объектов в системе координат изображения.
Пример кода вы можете найти в каталоге
simple-object-detection
репозитория tfjs
examples. Учтите, что пример отличается от виденных вами ранее, поскольку обучение
модели в Node.js в нем сочетается с выполнением вывода в браузере. Если точнее, об
учение модели производится с помощью tfjsnode (или tfjsnodegpu), после чего обу
ченная модель сохраняется на диск. Далее для выдачи сохраненных файлов модели,
наряду со статическими файлами
index.html
и
index.js
, используется сервер parcel —
так мы продемонстрируем выполнение вывода на основе этой модели в браузере.
Для запуска примера используется такая последовательность команд (она вклю
чает несколько строк комментариев, которые при вводе можно опустить):
git clone https://github.com/tensorflow/tfjs-examples.git
cd tfjs-examples/simple-object-detection
yarn
# Необязательный шаг для обучения собственной модели с помощью Node.js:
yarn train \
--numExamples 20000 \
--initialTransferEpochs 100 \
--fineTuningEpochs 200
yarn watch # Выполняем в браузере вывод для обнаружения объектов
Команда
yarn
train
запускает обучение модели на локальной машине, по завер
шении которого сохраняет модель в каталоге
./dist
. Учтите, что эта операция за
нимает много времени и лучше выполнять ее с помощью GPU с поддержкой CUDA,
ускоряющего обучение в 3–4 раза. Для этого необходимо лишь добавить в команду
yarn
train
флаг
--gpu
:
yarn train
--gpu
\
--numExamples 20000 \
--initialTransferEpochs 100 \
--fineTuningEpochs 200
Впрочем, если у вас нет времени или ресурсов, чтобы обучить модель на своей
машине, не волнуйтесь: просто пропустите команду
yarn
train
и перейдите непо
средственно к
yarn
watch
. На странице вывода, работающей в браузере, вы сможете
загрузить уже обученную модель из централизованного хранилища по HTTP.
224
Do'stlaringiz bilan baham: |