Проект A UTMIST: Гурсимар Сингх, Фэнъюань Лю, Юэ Фунг Ли, Цзинмин Ван, Дев Шах, Крис О, Мухаммад Ахсан Калим.

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

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

Исходная информация

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

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

1. Убедитесь, что все объекты, видимые в кадре, имеют открытые глаза и фокусируются на камере.

2. Обеспечение отсутствия смазывания изображения из-за движения объектов в кадре во время съемки.

3. Не выбирать более 2-3 изображений одной и той же сцены, так как иногда одновременно делается 10 или 20 изображений одной и той же сцены.

4. Следить за тем, чтобы предметы в кадре проявляли ту или иную эмоцию. Это может быть эмоция счастья или печали, в зависимости от сцены и фотографа.

5. Выбор изображений с адекватным освещением и хорошей цветовой композицией.

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

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

Почему ручной выбор функций и отдельные подмодели?

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

  1. Разница между отобранными и выбранными изображениями незначительна, поскольку все, что требуется, это закрыть глаза одного субъекта, или одно размытие, или одно небольшое изменение угла камеры. По этой причине простое использование CNN для классификации было бы неэффективным, поскольку такие мелкие детали не будут извлекаться как признаки.
  2. Большинство фотографов обычно согласны с тем, какие изображения хороши, а это означает, что индивидуальный художественный стиль составляет лишь небольшой процент выбранных изображений. Кроме того, функции, на которые обращают внимание фотографы, конечны и четко определены, поэтому для каждой из них можно создать подмодель извлечения функций.
  3. Благодаря этому модульному подходу со временем легко добавлять дополнительные подмодели.

Наш подход

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

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

Обнаружение дубликатов

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

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

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

Подход к обнаружению дубликатов относительно прост и включает следующие шаги:

  1. Предварительно обученная модель MobileNetV3 [2] используется для извлечения признаков из изображений. Каждая извлеченная функция может быть сведена к вектору в многомерном скрытом пространстве.
  2. Кластеризация извлеченных признаков с использованием подхода, допускающего произвольное количество кластеров.

Это относительно простой подход по сравнению с современными методами, такими как SIFT или ORB, но он использует значительно меньшую вычислительную мощность.

Обнаружение закрытых глаз

Подмодель обнаружения закрытых глаз позволяет нам определить, сколько объектов в кадре имеют закрытые глаза. Как правило, изображения с закрытыми глазами нежелательны, но на свадебной съемке у людей могут быть закрыты глаза по нескольким причинам (например, они могут плакать), и изображения все равно могут быть желательны. Ожидается, что эти нюансы будут изучены моделью ансамбля.

Для этого подхода мы начали с обнаружения ориентиров лица с помощью dlib [3], библиотеки Python, которая может обнаруживать 68 ориентиров на лицах людей. Каждый глаз помечен 6 ориентирами при использовании dlib. Соотношение расстояний между этими ориентирами можно использовать, чтобы определить, закрыт глаз или нет.

Интуитивно мы можем видеть, что при больших расстояниях между p2 и p6 и между p3 и p5 глаз был бы открыт. Мы просто складываем эти расстояния и нормализуем, разделив на 2 расстояния между p1 и p4, что позволит этому отношению оставаться неизменным в зависимости от расстояния от глаза до камеры. Эта оценка EAR затем выводится этой моделью и объединяется с другими активациями.

Обнаружение эмоций

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

Для этого мы использовали библиотеку facenet-pytorch [5], которая использует модель многозадачной каскадной сверточной нейронной сети (MTCNN) [6] для обнаружения ограничивающих рамок вокруг лиц. Затем мы создали собственную сверточную нейронную сеть и обучили ее на наборе данных лиц, аннотированных эмоциями. С помощью этих двух моделей мы смогли сначала идентифицировать и обрезать лица на изображении, а затем передать обрезанные лица через нейронную сеть распознавания эмоций, которая классифицировала их эмоции как гнев, отвращение, страх, счастье, грусть, удивление или нейтральный. Извлеченные вероятности затем сохраняются и объединяются с активациями из других моделей.

Извлечение нейронного стиля

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

Это модель, которая отличается от остальных тем, что в ней нет изученных параметров. Вместо этого мы используем тот же подход к получению стилистического представления изображения, что и в исходной статье о переводе нейронного стиля, написанной Gatys et al [7].

Мы используем матрицу Грамиана изображения как представление стиля изображения. Эта матрица по существу удаляет всю информацию о структуре изображения и учитывает только то, как цветовые каналы изображения соотносятся друг с другом. Шаги для вычисления матрицы Грамиана следующие:

  1. Возьмите исходное изображение формы (цветовые каналы © x высота (H) x ширина (W)) и сгладьте размеры высоты и ширины, чтобы получить тензор формы (C x (H*W)).
  2. Выполните матричное умножение матрицы, полученной на предыдущем шаге, на транспонированную версию самой себя. Результатом умножения матриц будет матрица C x C, которая является матрицей Грамиана.

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

Это легко проверить на примере;

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

Матрицы Грамиана, полученные на этом этапе, также объединяются с активациями из других подмоделей. Пример с изображениями, демонстрирующий, что матрицы Грамиана являются представлением стиля.

Семантическая сегментация

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

Для этой подмодели мы использовали библиотеку mmsegmentation [8], используя магистраль MobileNetV3, обученную на наборе данных ADE20k [9]. Мы обнаружили, что эта модель является идеальным компромиссом между эффективностью и производительностью. Этот конкретный набор данных был выбран, поскольку он имеет классы изображений, аналогичные объектам, которые обычно можно увидеть на свадебных фотографиях, включая человека, окно, здание, стену и т. д.

Выходные данные карты сегментации этой модели также объединяются с активациями ранее упомянутых подмоделей.

Обучение

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

Мы обучили ансамблевую модель в два этапа;

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

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

Заключение

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

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

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

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

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

Цитаты

[1] https://www.adobe.com/ca/creativecloud/photography/discover/rule-of-therts.html

[2] https://arxiv.org/abs/1905.02244

[3] http://dlib.net/

[4] https://medium.com/analytics-vidhya/eye-aspect-ratio-ear-and-drowsiness-detector-using-dlib-a0b2c292d706

[5] https://github.com/timesler/facenet-pytorch

[6] https://arxiv.org/abs/1604.02878

[7] https://arxiv.org/abs/1508.06576

[8] https://github.com/open-mmlab/mmsegmentation

[9] https://groups.csail.mit.edu/vision/datasets/ADE20K/