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

Введение

Сегодня поиск по термину «трансформер» с большей вероятностью даст результаты, связанные с моделью машинного обучения, которая значительно улучшила производительность обработки естественного языка (NLP) и компьютерного зрения (CV), а не с гигантскими роботами из мультфильмов. При построении модели классификации изображений рекомендуется использовать современную модель преобразования в сочетании с популярными обучающими платформами, такими как Keras, FastAI или Lightning.

Однако всегда ли оптимальным решением являются трансформеры и не пора ли отказаться от всех прежних подходов?

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

подходы

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

Для своего теста я начал с подхода, который использовался с 1990-х годов и актуален и сегодня. Этот подход, известный как извлечение признаков, включает в себя уменьшение размерности изображения (количество значений пикселей) при сохранении наиболее важной информации. Для этой цели можно использовать многочисленные алгоритмы, в том числе каскады Хаара, SIRF, SURF и HOG.

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

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

Модели и пайплайны

Для простоты я использовал алгоритм HOG в качестве экстрактора признаков. Поскольку этот алгоритм не классифицирует изображения независимо, я использовал алгоритм машины опорных векторов (SVM), чтобы преобразовать извлеченные функции в фактические прогнозы. Кроме того, я вставил алгоритм анализа основных компонентов (PCA) посередине, что помогло уменьшить количество функций без ущерба для точности.

pca = PCA(n_components=75) 
svc = SVC() 
model = Pipeline(steps=[('pca', pca), ('svm', svc)]) 
 
X_train = hog(image) 
model.fit(X_train, y_train) 
 
y_pred = model.predict(X_test)

Для подхода CNN я выбрал модель EfficientNet (EFN), которая по-прежнему остается одной из лучших в своем классе.

Что касается моделей-трансформеров, то я выбирал одну модель, так как лучший вариант требовал больше работы. Однако, рассмотрев соотношение производительности и точности, я остановил свой выбор на модели SWIN.

Я использовал структуру FastAI для моделей CNN и Transformer, так как она проста в использовании и эффективна для обучения. Кроме того, модели были инициализированы с помощью библиотеки Timm.

dls = ImageDataLoaders.from_df(df_train, …) 
model = create_model(model_name, …) 
learn = Learner(dls, model, loss_func=CrossEntropyLossFlat(), …) 
 
learn.fit_one_cycle(epochs_count)

predictions = learner.get_preds(dl=test_dl) predictions = learner.get_preds(dl=test_dl)

Набор данных

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

Настройка эксперимента

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

  • Ограниченный размер выборки: я использовал наборы данных с ограниченным количеством выборок (250, 500, 1000 и 2000 выборок).
  • Предварительно обученные и необученные модели: я экспериментировал с обеими моделями (не применимо для HOG+SVM).
  • Меньшие варианты моделей: я выбрал варианты моделей с меньшим количеством параметров (EfficientNet-b0, SWIN-tiny)

Вышеупомянутые ограничения ограниченности данных, вычислительных ресурсов и производственной среды отражают реальные ограничения, с которыми инженеры и специалисты по данным часто сталкиваются ежедневно. Эти ограничения могут быть вызваны различными причинами, такими как бюджетные ограничения, аппаратные ограничения и нехватка времени. Работая с имеющимися данными, доступными графическими процессорами и доступными платформами и наборами инструментов, инженеры могут научиться разрабатывать эффективные, надежные и оптимизированные модели для реальных сценариев. Гиперпараметры для обучения определяются с помощью отдельных тестов оптимизации. Из-за ограничений предварительно обученного SWIN я решил использовать только образцы изображений 224×224. Хотя я не считаю свой эксперимент эталонным, он дает ценную информацию, и, следовательно, полученные таблицы содержат округленные значения без какой-либо дробной части.

Данные, используемые в этом проекте, были получены из среды Kaggle.

Полученные результаты

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

  1. Несмотря на высочайшую точность, предварительно обученная модель трансформатора имеет самый большой размер модели и уступает ЦП. Кроме того, он имеет фиксированное разрешение входного изображения, в отличие от двух других моделей, что может быть ограничением в определенных контекстах.
  2. Что касается точности, то необученные модели CNN и Transformer постоянно работают хуже, чем метод HOG+PCA+SVM.
  3. Необученная модель CNN превосходит необученную модель Transformer, что указывает на то, что последней может потребоваться больше обучающих данных для хорошего обобщения.
  4. Метод HOG+PCA+SVM работает сравнимо с предварительно обученной CNN для самого большого набора данных из 2000 выборок.
  5. Метод HOG+PCA+SVM имеет наименьший размер модели и самое короткое время обучения как на CPU, так и на GPU, что может сделать его предпочтительным вариантом в сценариях с ограниченными вычислительными ресурсами.

Последние мысли

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

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

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