Как создать классификатор изображений глубокого обучения для драконов «Игра престолов».

1656533053 kak sozdat klassifikator izobrazhenij glubokogo obucheniya dlya drakonov igra prestolov

автор Харини Джанакираман

zv0fO5gcVle6ZeIqmZb1jF7FIpV4rqqpsSs6
Источник: Imgur

Производительность большинства алгоритмов обучения старых поколений будет плато. Глубокое обучение, которое тренирует большие нейронные сети, масштабируемо, а производительность становится лучше, поскольку вы предоставляете им больше данных. — Эндрю Нг

Глубокая учеба не занимает много времени или вычислительных ресурсов. Это тоже не требует очень сложного кода, а в некоторых случаях даже не большого количества обучающих данных. Подобранные лучшие методы теперь доступны в виде библиотек, позволяющих легко подключать и писать собственные архитектуры нейронных сетей с использованием минимального количества кода для достижения точности предсказания более 90%.

Две самые популярные библиотеки глубокого обучения: (1) pytorch, созданный Facebook (сегодня мы будем использовать fastai, построенный на основе pytorch) и (2) фреймворк keras-tensorflow, созданный Google.

Проект

Мы построим классификатор изображений, используя модель сверточной нейронной сети (CNN), чтобы предположить, есть ли данное изображение изображением Дрогона или Вицериона (любой фанат «Игры престолов» в доме? Хлопайте, чтобы сказать «Привет!»).

Вы можете адаптировать эту постановку проблемы к любому интересующему типу классификации изображений. Вот несколько идей: кот или собака (классическая глубокая учеба 101), если человек носит очки или нет, автобус или машина, хот-дог против не-хот-дога (поклонники Силиконовой долины также говорят yay! 😉 ).

Шаг 1: Установка

Вы можете использовать любую платформу облачных вычислений с ускоренным графическим процессором для запуска своей модели. Для целей этого блога мы будем использовать Paperspace (самый доступный). Доступны полные инструкции по запуску и запуску. здесь.

После настройки вы можете запустить ноутбук Jupyter на этой машине с помощью такой команды:

jupyter notebook

Это даст вам URL локального хоста, который вы можете открыть в своем браузере и заменить «localhost» на IP-адрес вашего компьютера, чтобы запустить свой ноутбук.

gtn9GKmqFmghPbs7fLu6SzJ1hSid9GNpKNvV

Теперь вы можете скопировать блокнот iPython и файлы наборов данных в структуру каталогов ниже мое гитхаб-репо.

3cvYJGymYABQJWr4bP6G29kZDkQSJUUFBGhp

Примечание: Не забудьте выключить аппарат из консоли бумажного пространства, когда закончите, чтобы избежать случайной зарядки.

Шаг 2: Обучение

Следуйте инструкциям в блокноте, чтобы инициализировать библиотеки, необходимые для этого упражнения, и укажите расположение PATH в вашем каталоге данных. Обратите внимание, что каждый блок кода можно запустить с помощью Shift+enter. Если вам нужна дополнительная информация о командах ноутбука Jupyter, вы можете прочитать больше здесь.

Теперь, переходя к части обучения классификатора изображений, следующие три строки кода образуют ядро ​​построения модели глубокого обучения:

  1. данные: представляет наборы данных проверки и обучения.
  2. учиться: содержит модель
  3. learn.fit(learning_rate,epoch): Установите модель, используя два параметра – скорость обучения и эпохи.
GSWXa64C56P8YNg4WPrlSvlAjdiTTq0abWP0

Здесь мы установили скорость обучения на уровне «0,01». Скорость обучения должна быть достаточно малым числом, чтобы вы перемещались по изображению с постепенными шагами этого фактора, чтобы изучать точность. Но он также не должен быть слишком мал, поскольку это приведет к слишком много шагов/слишком длинного для обучения. В библиотеке есть способ поиска скорости обучения «lr_find()», чтобы найти оптимальный.

Здесь в коде Epoch установлено значение 3, и это означает, сколько раз вы должны запускать пакет. Мы можем бегать сколь угодно раз, но после точки точность начнет ухудшаться из-за переоборудования.

sas5SvMYXGfSQyeiKB96YURdhkad6r7BrtH2

Шаг 3: Прогнозирование

Теперь мы выполним прогнозирование данных проверки, используя обученную модель.

oTZaAYbeABWT0tGnDEtEP7elcN5nb7lNB9Gp

Pytorch дает журнал предсказания, поэтому, чтобы получить вероятность, вы должны получить e в степени использования numpy. Следуйте пошаговым инструкциям в тетради в моем репозитория github. Вероятность, близкая к 0, означает, что это изображение Дрогона, а вероятность, близкая к 1, означает, что это изображение Визериона.

Шаг 4: Визуализация

Для наилучшей визуализации результатов прогноза можно употреблять функцию построения графика. На рисунке ниже показаны правильно классифицированные данные проверки: 0,2–0,3 указывает, что это Дрогон, и вероятность 0,7–0,8, что указывает, что это Визерион.

zf74Dk3FGDS3F3sd5WiGDpH-4vshGm3O-i1Z
3i82iaVHQHUPrEtOMufWCPPAuRu3iqeAhlE8
oQw5JxD8sAhzcnxAiwklzpUy2c4ph8UnbCSZ

Вы можете увидеть некоторые неопределенные прогнозы, если они задерживаются ближе к 0,5 вероятности.

USlRGvhRFoBP-JmY719kyZaKr-geDY4cldoS

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

В этих случаях можно применить методы улучшения для получения лучших результатов, таких как увеличение данных, оптимизация скорости обучения, использование дифференциальной скорости обучения для разных уровней и увеличение времени тестирования. Эти передовые концепции будут рассмотрены в следующих публикациях.

Этот блог был вдохновлен видео Fastai CNN. Чтобы получить глубокое понимание и продолжить свои поиски в Deep Learning, вы можете пройти знаменитый набор курсов Эндрю Нг на курсе coursera.

Если вам это понравилось, пожалуйста, хлопайте ? сo другие также могут это увидеть! Следите за мной на Twitter @HariniLabs или Мedium чтобы получать новые сообщения или просто поздороваться 🙂

PS: Подпишитесь на мою рассылку здесь быть первым, кто получит свежий новый контент, и он полон доз вдохновения из мира #WomenInTechи мужчины тоже могут зарегистрироваться:)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *