В последние годы задачи автоматического анализа и распознавания изображений становятся все более востребованными и сложными. Используя подходы машинного обучения, исследователи постоянно усложняют методы и алгоритмы для решения этой задачи, по несколько раз в год обновляя предыдущие рекорды и достижения. Однако, насколько новое всегда означает лучшее? Чтобы прояснить этот вопрос, мы обратились к нашему эксперту по моделям машинного обучения в области компьютерного зрения. Он не только описал современные подходы к решению типовых задач анализа изображения, но и провел исследование, чтобы на основе экспериментов с реальными данными определить, всегда ли новейшие методологии однозначно эффективнее и лучше. Речь пойдёт как о старых классических подходах, так и о самой популярной сейчас архитектуре нейронных сетей – трансформерах, которые не так давно произвели настоящую революцию в задачах обработки текстов, звуковых сигналов и изображений.
Введение
Сегодня поиск по слову «трансформер» скорее приведет к результатам, связанным с моделями машинного обучения, которые значительно улучшили производительность обработки естественного языка (NLP) и компьютерного зрения (CV), чем к гигантским роботам из популярных мультфильмов детства. Новые руководства и учебники наперебой советуют решать и самую типичную задачу анализа изображений – классификацию – с помощью передовых трансформерных моделей совместно с популярными фреймворками машинного обучения, такими как Keras, FastAI или Lightning. Десять строчек кода на языке Python и близкая к 100% точность результата просто не оставляют сомнений!
Однако, всегда ли этот подход будет оптимальным решением? Пришло ли время окончательно забыть и отказаться от более ранних подходов? В рамках данной статьи я решил провести ряд экспериментов и на практике сравнить эффективность трансформеров с более старыми методами компьютерного зрения в различных категориях, чтобы выяснить, есть ли тут явный победитель. Забегая вперед: в ходе этого исследования, стало ясно, что результаты не так однозначны, как кажется на первый взгляд.
Существующие подходы
Понятие компьютерного зрения c набором его типичных задач по распознаванию изображений впервые появилось в 1950-х годах, когда вышли в свет первые теоретические исследования и прототипы. Конечно, на тот момент возможности вычислительных систем были ограничены, и о запуске алгоритмических моделей размером в один гигабайт на высокопроизводительных графических процессорах нельзя было и помыслить. С тех пор компьютерное зрение проделало долгий путь развития.
В моих экспериментах я начал с более практического подхода, который широко использовался в 1990-х годах, но до сих пор не исчез из поля зрения. Этот подход называется извлечением признаков (feature extraction) и предполагает снижение размерности изображения (количества пиксельных значений) при сохранении наиболее важной информации о визуальном контексте. Для этой цели используются различные алгоритмы, такие как каскады Хаара, SIRF, SURF, HOG и другие.
Далее я рассмотрел сверточные нейронные сети (Convolutional Neural Network, CNN), которые стали популярны в 2010-х годах и полностью изменили представление о компьютерном зрении. CNN способны выявлять паттерны на изображениях независимо от их положения и адаптироваться к разным разрешениям. Особенно важно, что связанные с CNN вычисления можно распараллеливать для запуска на графических процессорах (GPU). CNN-модели нашли свое применение в самых широких практических областях и впервые стали конкурировать, а иногда и превосходить по точности возможности человека.
В заключение я провел эксперименты с наиболее современным подходом, основанным на использовании трансформеров. Трансформеры используют механизм внимания (attention), который изначально использовался для улавливания взаимосвязей между различными частями текста, но впоследствии был применен и для изображений, которые подобно словам в предложении стали делить на небольшие области для обработки. На сегодняшний день производительность моделей на основе трансформеров еще не была превзойдена.
Модели и пайплайны
В первом классическом подходе я использовал алгоритм HOG в качестве метода для извлечения признаков изображений. Поскольку HOG не является классификатором сам по себе, я применил алгоритм Support Vector Machine (SVM) для преобразования извлеченных признаков в итоговые предсказания. Кроме того, я включил алгоритм Principal Component Analysis (PCA) посередине, что помогло сократить количество признаков и повысить скорость вычислений без ущерба для точности. Здесь и далее примеры кода приводятся для языка Python.
Для тестов подхода с использованием сверточных нейронных сетей (CNN) я выбрал модель EfficientNet (EFN), которая до сих пор остается одной из лучших в своем классе.
В подходе на основе трансформеров было непросто выбрать одну оптимальную модель. Однако, учитывая соотношение производительности и точности, я остановился на модели Swin Transformer.
Для обеих моделей – CNN и трансформера — я использовал фреймворк FastAI, как более простой в применении, но в то же время гибкий и производительный на этапе обучения. Инициализация моделей и загрузка предобученных весов осуществлялась с помощью библиотеки Timm.
Набор данных
Говоря о данных, стоит отметить, что все алгоритмы компьютерного зрения крайне чувствительны к тому набору примеров, на которых они обучаются. Как искусственно составленные наборы данных из учебников, такие как «коты/собаки», так и слишком специфические, такие как медицинские изображения, могут исказить общие тенденции. Для минимизации этого явления я выбрал более практический и универсальный набор данных – классификация транспортных средств на автомобили и автобусы.
Эксперимент
Большинство реальных продуктовых проектов по компьютерному зрению представляют собой сложные задачи с множеством специфических деталей, условий и ограничений. Чтобы сделать шаг от тривиального учебного сценария в сторону такой реалистичности, я акцентировал внимание на максимально практической постановке задачи. В результате, в мои исходные условия были включены следующие ограничения:
- Недостаточно данных для обучения: для моих экспериментов я использовал наборы данных с ограниченным количеством образцов (250, 500, 1000 и 2000 образцов).
- Нет предобученных моделей: в рамках исследования я провел эксперименты с обоими типами моделями – предобученными и необученными (неприменимо для HOG+PCA+SVM).
- Компактные и быстрые опции: я выбирал варианты моделей в своих классах с наименьшим числом обучаемых параметров и, таким образом, наибольшей производительностью (EfficientNet-b0, SWIN-tiny).
Подобные ограничения, связанные с недостаточностью данных, вычислительных ресурсов и альтернатив возможностей, представляют собой реальные условия, в которых работают инженеры по машинному обучению. Эти ограничения могут быть обусловлены различными причинами, такими как скудный бюджет проекта, жесткие требования к аппаратной платформе будущего продукта или сжатые сроки разработки. Не остается ничего другого, кроме как работать с имеющимися данными, доступными вычислителями, фреймворками и инструментами, и учиться создавать модели, которые по-прежнему будут эффективны, надежны и производительны в заданных сценариях.
Опуская ряд деталей по настройке моделей, необходимо дать важное уточнение, что все гиперпараметры для обучения были определены мною посредством отдельных оптимизационных тестов. Из-за ограничений предобученной модели SWIN, пришлось использовать только образцы изображений размером 224×224 пикселя. Поскольку мой эксперимент не является бенчмарком в чистом виде, а лишь выявляет интересные идеи и инсайты, я округляю значения в результирующих таблицах до целого.
Набор данных, использованный в исследовании, был найден на платформе Kaggle, все эксперименты проводились там же.
Результаты
Для лучшего понимания и интерпретации результатов, я свел полученные результаты в три таблицы: точность (Accuracies), время выполнения (Timings) и размеры моделей (Model Sizes).
Как и ожидалось, трансформеры демонстрируют наилучшую точность по сравнению с другими моделями. Но давайте посмотрим на результаты в целом! Привожу список наблюдений, которые мне показались наиболее интересными:
- Предварительно обученный трансформер имеет наивысшую точность, но при этом у этой модели самый большой размер и наихудшая производительность на центральном процессоре (CPU). Кроме того, предобученный трансформер имеет фиксированное разрешение входного изображения, что может стать ограничением для ряда сценариев.
- Необученные CNN и трансформер неизменно показывают худшие результаты по точности, чем HOG+PCA+SVM. Делаем вывод, что при невозможности применения предобученной модели и наличии лишь небольшой набора данных для обучения может быть не лишним протестировать подход с извлекателем признаков.
- Необученная модель CNN показывает более высокую точность по сравнению с необученным трансформером. Это может означать, что трансформеру требуется больше всего данных при обучении модели с нуля.
- Метод HOG+PCA+SVM демонстрирует сопоставимую точность с предобученной CNN на наибольшем наборе данных из 2000 образцов.
- Метод HOG+PCA+SVM имеет наименьший размер модели и минимальное время обучения как на центральном процессоре (CPU), так и на графическом процессоре (GPU), что делает его актуальным вариантом для рассмотрения в сценариях с ограниченными вычислительными ресурсами, недостаточными для работы с более новыми моделями.
Заключение
Результаты экспериментов демонстрируют, что старые подходы в области компьютерного зрения могут превосходить более новые в определенных категориях, таких как обучение с нуля на небольших наборах данных, а также быть хорошей опцией для сред исполнения с ограниченной оперативной и дисковой памятью или вычислительными ресурсами. А с точки зрения знаний и опыта можно ещё раз подтвердить известный инженерных принцип, что глубокое понимание различных подходов и методов всегда помогает создавать более эффективные решения.
Важно отметить, что мои эксперименты были проведены в первую очередь из научного интереса и я сильно ограничил число проверяемых гипотез. Это значит, что полученные результаты могут отличаться при использовании других наборов данных, моделей или фреймворков. В реальных сценариях также могут применяться дополнительные методы улучшения результата, такие как аугментация набора данных для повышения точности или квантизация моделей для уменьшения их размера. Предоставляю тут ссылку на мой блокнот, который вы можете использовать для проведения своих собственных экспериментов и получения интересных результатов.
Если у вас возникли вопросы к нашим экспертам или вы бы хотели обсудить свой проект в области компьютерного зрения, не колеблясь связывайтесь с нами через контактную форму на нашем сайте. Мы с удовольствием поможем вам в вашей работе и поиске оптимальных решений для ваших задач. Благодарим вас за интерес к нашим исследованиям, и надеемся на дальнейшее плодотворное сотрудничество!