Введение

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

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

В следующей серии постов я помогу вам решить эту проблему с помощью новейших технологий для автоматической настройки качества фотографий. Мы научимся создавать и применять инструменты из области глубокого обучения и машинного зрения. Изучите основные строительные блоки продукта на основе обученной модели нейронной сети. Поэкспериментируйте с методами, основанными на анализе предопределенных функций, и сравните их с решением на основе машинного обучения. Мы внедряем и интегрируем полнофункциональный инструмент для автоматической настройки качества фотографий для Adobe Lightroom. Наконец, мы исследуем проблемы внедрения рабочего прототипа из лабораторной среды в производство.

Темы для обсуждения:
1. Сверточная нейронная сеть, обученная предсказывать оценку качества фотографий
2. Фильтрация изображений, не связанных с фотографиями
3. Кластеризация похожих изображений и выбор лучшего < br /> 4. Распознавание лиц, извлечение функций
5. Простая версия обнаружения моргания и улыбки
6. Обнаружение моргания и улыбки на основе нейронной сети
7. Интеграция с Adobe Lightroom
8 . От прототипа до производства

Предпосылки

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

Нам понадобится:

  1. Опыт разработки программного обеспечения на Python, общее любопытство и терпение.
  2. Коллекция фотографий (100+), которые будут использоваться для тестирования системы на каждом из этапов. Чтобы автоматизировать процесс, мы сначала вручную помечаем их и оценим. Это набор для тестирования, который мы отложили и используем только для проверки результатов. Мы никогда не используем его ни в одной из обучающих программ.
  3. Для каждой функции системы, которая будет реализована с использованием модели нейронной сети, нам понадобится представительный набор помеченных образцов для обучения и автоматической проверки. Чтобы получить приемлемые результаты, вам обычно требуется более 10000 образцов, однако мы будем использовать умную технику трансферного обучения, которая помогает как уменьшить количество требуемых образцов, так и время, необходимое для обучения модели.
  4. Процесс обучения нейронной сети требует больших вычислительных ресурсов, однако можно использовать параллельную обработку для его значительного ускорения. Графические процессоры отлично подходят для параллельных вычислений математики с плавающей запятой. В частности, графические процессоры с поддержкой Nvidia CUDA позволяют сократить время обучения на несколько порядков.
  5. Наконец, нам понадобится среда программирования и тестирования, способная справиться с задачами обучения нейронной сети и идеально интегрированная с инструментами визуализации и анализа.

Настройка лаборатории

Раньше для экспериментов с глубокими нейронными сетями требовался высокопроизводительный настольный компьютер или дорогостоящий сервер с общедоступным облачным графическим процессором. Сегодня можно получить бесплатный облачный экземпляр среды разработки с серверной частью на GPU благодаря щедрому предложению Googles платформы Colaboratory.

Это позволило бы нам установить необходимые инструменты, настроить эксперименты и визуализировать результаты. Если вы не знакомы с Google Colaboratory и не использовали ноутбуки Jupyter, есть отличное руководство с подробным обзором основных функций и распространенных сценариев использования: Учебное пособие по бесплатному графическому процессору Google Colab

В следующем посте я расскажу о сквозном процессе обучения глубокой сверточной нейронной сети для прогнозирования оценки качества фотографии.