Руководство по различиям между методами поступательного, вращательного и масштабного отклонения

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

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

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

Трансляционная эквивалентность и трансляционная инвариантность

  1. Переводческая эквивалентность:

Сверточный слой работает путем скольжения ядра n x n вдоль входного изображения слева направо и сверху вниз для формирования скрытых представлений, которые в дальнейшем обрабатываются с использованием большего количества сверточных блоков в более глубоких слоях сети. Операция скользящего окна позволяет CNN распознавать пространственные корреляции и шаблоны и наделяет его важным свойством: трансляционной эквивариантностью. Трансляционная эквивалентность говорит, что когда мы сдвигаем ввод на соответствующую величину, их представления в скрытом пространстве должны смещаться соответствующим образом. Это достигается за счет совместного использования параметров, поскольку одно и то же ядро ​​​​скользит по входному изображению, и сдвиг во входных данных отражается в соответствующем сдвиге в представлении скрытого пространства. В то время как CNN на одном конце могут идентифицировать объекты независимо от их местоположения, совместное использование параметров также позволяет им идентифицировать несколько экземпляров объекта в одном и том же изображении, поскольку одно и то же ядро ​​​​применяется несколько раз. Схематическое представление трансляционной эквивариантности показано ниже:

2. Трансляционная инвариантность:

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

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

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

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

Случайный переворот по горизонтали/Случайный переворот по вертикали. Случайный переворот, как следует из названия, случайным образом переворачивает изображение на основе определенной вероятности (вероятность по умолчанию равна 0,5).

Дрожание цвета. Дрожание цвета случайным образом изменяет яркость и насыщенность изображения.

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

Случайное вращение. Случайное вращение поворачивает изображение с верхним и нижним пределом вращения (которые определяются параметрами).

Все эти методы можно комбинировать и реализовывать с помощью модуля Compose модуля torchvision. Весь блок преобразования можно записать так:

Код из этого раздела доступен в виде блокнота Colab здесь. Не стесняйтесь возиться с ним, чтобы получить лучшее представление о различных модулях преобразования и их использовании. Для получения дополнительной информации посетите https://pytorch.org/vision/stable/auto_examples/plot_transforms.html, откуда взята большая часть кода.

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

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

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.