Scraper Обновлено: 3 October, 2019

Классификация изображений с низким разрешением

  Перевод   Ссылка на автора

Основная идея этой статьи - изучить возможность классификации изображений с низким разрешением.

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

Если вас интересует немного рассказывания историй, вы можете продолжить отсюда, в противном случае перейдите к части «Решение».

Введение

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

И вы можете подумать, что, возможно, есть способ сделать это проще, используя простую (или нет) сеть свертки для выполнения этой работы. Через минуту вы можете подумать: «Я знаю, что сверточные нейронные сети могут очень точно распознавать людей, но все же мы говорим о случаях, когда статистически можно четко определить, что на изображении в первую очередь».

Таким образом, вы начинаете задумываться о добавлении дополнительных данных (функций) к картине: в этом хакатоне это дано подробно - оценка физической позы человека на изображениях, которая является точной.

Теперь, что бы вы попробовали? Я подумал о некотором сочетании RNN и архитектуры на основе свертки: используя CNN для распознавания изображения и предоставления рекомендаций RNN, который, в свою очередь, обучен прогнозировать следующие позы (движения) на основе данной метки (потому что это видео последовательности. Вдохновение для этого метода RNN взято из Вот).

Например: если у нас есть видеопоследовательность Чака Норриса в фильме, и у нас есть оценка его позы в каждом кадре, мы могли бы заставить нашу модель RNN узнать, какими будут его следующие шаги. Таким образом, CNN передает метку Чака для первого кадра в RNN, теперь он производит оценку для его следующего движения в следующем кадре. Если эти движения достаточно хорошо коррелируют со следующим (видимым) апперкотом Чака Норриса - тогда мы хороши (или нет). Или что-то типа того.

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

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

Решение

Вся прелесть ГАН в том, чтобы сделать две модели -Генератора такжедискриминаторпусть они соревнуются и получают лучшие результаты, полученные Generator, Эта идея зарекомендовала себя как хороший фальшивомонетчик для различных творений, особенно визуальных.

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

После короткого исследования мы нашли надежный источник для архитектуры GAN (SRGAN) с супер-разрешением, который изменит разрешение изображения, добавив к нему прогнозируемые функции. Вы можете прочитать об этой арке в этом Arxiv,

После того, как изображение приобретет новую форму, процесс классификации придет в форме CNN.

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

Визуализация нейронной сети свертки.
Исходное изображение.
Улучшенное изображение от SRGAN.

Поэтому интуиция:

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

Могут ли GAN генерировать этот набор функций? Мы решили выяснить.

Гипотеза:

SRGAN + CNN = лучшая классификация изображений с низким разрешением (теперь с высоким).

Данные и предварительная обработка

Общий набор данных составляет ~ 500 000 изображений формы (64, 64, 3), которые неравномерно распределены между 100 видео и эпизодами знаменитостей.

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

Из общего числа знаменитостей узнайте:

min (max (num_samples в последовательностях)) => 24.

min (max (num_sequence в видео)) => 2.

min (max (num_videos)) => 2.

96 проб на человека, всего 9600 на поезд.

Мы сделали это, чтобы быть уверенными в том, что, несмотря ни на что, мы всегда сможем сгенерировать случайный равномерно распределенный набор данных и предотвратить переоснащение.

Тестовый набор состоит из:

12 кадров на последовательность, 2 последовательности на видео, 2 видео,

48 образцов на человека, всего 4800.

модели

Входное изображение для SRGAN представляет собой (64, 64, 3) изображение, а выходное (256, 256, 3) изображение, как показано на «Решение"раздел

Вновь созданные и отсортированные наборы изображений поступают в Deep CNN для обучения, проверки и тестирования.

Результаты и код

Весь код и детали доступны Вот

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


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

Мы все еще работаем над этим проектом, и мы будем рады получить ценные сведения о нашей работе.