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

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

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

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

Предварительно обученные модели можно использовать по-разному:

  • Использование предварительно обученных весов и прямое предсказание тестовых данных
  • Использование предварительно обученных весов для инициализации и обучения модели с использованием пользовательского набора данных
  • Использование только архитектуры предварительно обученной сети и её обучение с нуля на пользовательском наборе данных.

В этой статье рассматриваются 10 лучших современных предварительно обученных моделей для встраивания изображений. Их все можно загрузить как модели keras с помощью API keras.application .

Архитектура CNN, обсуждаемая в этой статье:

  • 1) VGG
  • 2) Xception
  • 3) ResNet
  • 4) InceptionV3
  • 5) InceptionResNet
  • 6) MobileNet
  • 7) DenseNet
  • 8) NasNet
  • 9) EfficientNet
  • 10) ConvNEXT

Лицензия: все изображения, использованные в этой статье, взяты с сайта paperwithcode.com , лицензированного в соответствии с CC BY-SA 4.0.

1) VGG

Сети VGG-16/19 были представлены на конференции ILSVRC 2014, поскольку это одна из самых популярных предварительно обученных моделей. Она был разработана Visual Graphics Group в Оксфордском университете.

Существует два варианта модели VGG: 16- и 19-уровневая сеть, причем VGG-19 (19-уровневая сеть) является усовершенствованием модели VGG-16 (16-уровневая сеть).

Архитектура:

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

Сеть VGG проста и последовательна по своей природе и использует множество фильтров. На каждом этапе используются небольшие (3*3) фильтры для уменьшения количества параметров.

Сеть VGG-16 имеет следующее:

  • Свёрточные слои = 13
  • Объединённые слои = 5
  • Полностью связанные плотные слои = 3

Ввод: изображение размеров (224, 224, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для VGG-16/19:

  • Ссылка на документацию: https://arxiv.org/pdf/1409.1556.pdf
  • GitHub: VGG
  • Опубликовано: апрель 2015 г.
  • Производительность в наборе данных ImageNet: 71 % (1 высшая точность), 90 % (5 высшая точность)
  • Количество параметров: ~140M
  • Количество слоев: 16/19
  • Размер на диске: ~530 МБ

Выполнение:

  • Вызовите tf.keras.applications.vgg16.preprocess_input свои входные данные, чтобы преобразовать входные изображения в BGR с нулевым центром для каждого цветового канала.
  • Создайте экземпляр модели VGG16, используя приведённый ниже код:
tf.keras.applications.VGG16(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

Вышеупомянутый код предназначен для реализации VGG-16, keras предлагает аналогичный API для реализации VGG-19, за более подробной информацией обратитесь к этой документации .

2) Xception

Xception — это глубокая архитектура CNN, которая включает в себя разделимые по глубине свёртки. Сепарабельная по глубине свёртка может пониматься как Начальная модель с максимально большим количеством башен.

Архитектура:

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

Ввод: изображение размеров (299, 299, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для Xception:

  • Ссылка на документацию: https://arxiv.org/pdf/1409.1556.pdf
  • GitHub: Xception
  • Опубликовано: апрель 2017 г.
  • Производительность на наборе данных ImageNet: 79 % (точность 1), 94,5 % (точность 5)
  • Количество параметров: ~30M
  • Глубина: 81
  • Размер на диске: 88 МБ

Выполнение:

  • Создайте экземпляр модели Xception, используя приведённый ниже код:
tf.keras.applications.Xception(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

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

3) ResNet

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

Архитектура ResNets предлагает пропускать соединения, чтобы решить проблему исчезающего градиента.

Архитектура:

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

Эта модель ResNet использует 34-уровневую сетевую архитектуру, вдохновлённую моделью VGG-19, к которой добавлены соединения быстрого доступа. Эти короткие соединения затем преобразуют архитектуру в остаточную сеть.

Существует несколько версий архитектуры ResNet:

  • ResNet50
  • ResNet50V2
  • ResNet101
  • ResNet101V2
  • ResNet152
  • ResNet152V2

Ввод изображение размеров (224, 224, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для моделей ResNet:

  • Ссылка на статью: https://arxiv.org/pdf/1512.03385.pdf
  • GitHub: ResNet
  • Опубликовано: декабрь 2015 г.
  • Производительность в наборе данных ImageNet: 75–78 % (точность 1-го наивысшего уровня), 92–93 % (точность 5-го наивысшего уровня)
  • Количество параметров: 25–60 млн.
  • Глубина: 107–307
  • Размер на диске: ~100–230 МБ

Выполнение:

  • Создайте экземпляр модели ResNet50, используя приведённый ниже код:
tf.keras.applications.ResNet50(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    **kwargs
)

Вышеупомянутый код предназначен для реализации ResNet50, keras предлагает аналогичный API для других реализаций архитектуры ResNet, за более подробной информацией обратитесь к этой документации .

4) InceptionV3

Несколько глубоких слоёв свёртки привели к переоснащению данных. Чтобы избежать переобучения, начальная модель использует параллельные слои или несколько фильтров разного размера на одном уровне, чтобы сделать модель шире, а не глубже. Модель Inception V1 состоит из 4 параллельных слоев с: (1*1), (3*3), (5*5) свёртками и (3*3) максимальным объединением.

Inception (V1/V2/V3) — это сеть CNN на основе модели глубокого обучения, разработанная командой Google. InceptionV3 — это усовершенствованная и оптимизированная версия моделей InceptionV1 и V2.

Архитектура:

Модель InceptionV3 состоит из 42 слоев. Архитектура InceptionV3 поэтапно строится следующим образом:

  • Факторизованные свёртки
  • Меньшие извилины
  • Асимметричные свёртки
  • Вспомогательные свёртки
  • Уменьшение размера сетки

Все эти концепции объединены в окончательную архитектуру, упомянутую ниже:

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

Ввод: изображение размеров (299, 299, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для моделей InceptionV3:

  • Ссылка на статью: https://arxiv.org/pdf/1512.00567.pdf
  • GitHub: InceptionV3
  • Опубликовано: декабрь 2015 г.
  • Производительность на наборе данных ImageNet: 78 % (точность 1), 94 % (точность 5).
  • Количество параметров: 24M
  • Глубина: 189
  • Размер на диске: 92 МБ

Выполнение:

  • Создайте экземпляр модели InceptionV3, используя приведённый ниже код:
tf.keras.applications.InceptionV3(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

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

5) InceptionResNet

InceptionResNet-v2 — это модель CNN, разработанная исследователями Google. Цель этой модели состояла в том, чтобы уменьшить сложность InceptionV3 и изучить возможность использования остаточных сетей в модели Inception.

Архитектура:

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

Ввод: изображение размеров (299, 299, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для моделей Inception-ResNet-V2:

  • Ссылка на статью: https://arxiv.org/pdf/1602.07261.pdf
  • GitHub: Inception-ResNet-V2
  • Опубликовано: август 2016 г.
  • Производительность на наборе данных ImageNet: 80 % (точность 1), 95 % (точность 5)
  • Количество параметров: 56M
  • Глубина: 189
  • Размер на диске: 215 МБ

Выполнение:

  • Создайте экземпляр модели Inception-ResNet-V2, используя приведённый ниже код:
tf.keras.applications.InceptionResNetV2(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
    **kwargs
)

Вышеупомянутый код предназначен для реализации Inception-ResNet-V2, за более подробной информацией обратитесь к этой документации .

6) MobileNet

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

Архитектура:

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

Ввод: изображение размеров (224, 224, 3)

Вывод: встраиваемое изображение 1000-мерного размера

Другие детали для моделей MobileNet:

  • Ссылка на статью: https://arxiv.org/pdf/1602.07261.pdf
  • GitHub: MobileNet-V3 , MobileNet-V2
  • Опубликовано: апрель 2017 г.
  • Производительность в наборе данных ImageNet: 71 % (1 высшая точность), 90 % (5 высшая точность)
  • Количество параметров: 3,5–4,3 млн.
  • Глубина: 55–105
  • Размер на диске: 14–16 МБ

Выполнение:

  • Создайте экземпляр модели MobileNet, используя приведённый ниже код:
tf.keras.applications.MobileNet(
    input_shape=None,
    alpha=1.0,
    depth_multiplier=1,
    dropout=0.001,
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
    **kwargs
)

Вышеупомянутый код предназначен для реализации MobileNet, keras предлагает аналогичный API для реализации другой архитектуры MobileNet (MobileNet-V2, MobileNet-V3), для получения более подробной информации см. эту документацию .

7) DenseNet

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

Архитектура:

Архитектура DenseNet имеет 3 плотных блока. Слои между двумя соседними блоками называются переходными слоями и изменяют размеры карты объектов посредством свёртки и объединения.

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

Ввод: изображение размеров (224, 224, 3)

Вывод: встраивание изображения 1000-мерного размера

Другие детали для моделей DenseNet:

  • Ссылка на статью: https://arxiv.org/pdf/1608.06993.pdf
  • GitHub: DenseNet-169 , DenseNet-201 , DenseNet-264
  • Опубликовано: январь 2018 г.
  • Производительность на наборе данных ImageNet: 75–77 % (точность 1-го наивысшего уровня), 92–94 % (точность 5-го высшего уровня)
  • Количество параметров: 8–20 млн.
  • Глубина: 240–400
  • Размер на диске: 33–80 МБ

Выполнение:

  • Создайте экземпляр модели DenseNet121, используя приведённый ниже код:
tf.keras.applications.DenseNet121(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

Вышеупомянутый код предназначен для реализации DenseNet, keras предлагает аналогичный API для реализации другой архитектуры DenseNet (DenseNet-169, DenseNet-201), для получения более подробной информации см. эту документацию .

8) NasNet

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

Ввод: изображение размеров (331, 331, 3)

Другие детали для моделей NasNet:

  • Ссылка на статью: https://arxiv.org/pdf/1608.06993.pdf
  • Опубликовано: апрель 2018 г.
  • Производительность на наборе данных ImageNet: 75–83 % (точность 1), 92–96 % (точность 5).
  • Количество параметров: 5–90 млн.
  • Глубина: 389–533
  • Размер на диске: 23–343 МБ

Выполнение:

  • Создайте экземпляр модели NesNetLarge, используя приведённый ниже код:
tf.keras.applications.NASNetLarge(
    input_shape=None,
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

Вышеупомянутый код предназначен для реализации NesNet, keras предлагает аналогичный API для реализации другой архитектуры NasNet (NasNetLarge, NasNetMobile), для получения более подробной информации обратитесь к этой документации .

9) EfficientNet

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

Архитектура:

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

Другие сведения о моделях EfficientNet:

  • Ссылка на статью: https://arxiv.org/pdf/1905.11946v5.pdf
  • GitHub: EfficientNet
  • Опубликовано: сентябрь 2020 г.
  • Производительность на наборе данных ImageNet: 77–84 % (точность 1 высшего уровня), 93–97 % (точность 5 топ-класса)
  • Количество параметров: 5–67M
  • Глубина: 132–438
  • Размер на диске: 29–256 МБ

Выполнение:

  • Создайте экземпляр модели EfficientNet-B0, используя приведённый ниже код:
tf.keras.applications.EfficientNetB0(
    include_top=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
    **kwargs
)

Вышеупомянутый код предназначен для реализации EfficientNet-B0, keras предлагает аналогичный API для реализации другой архитектуры EfficientNet (от EfficientNet-B0 до B7, от EfficientNet-V2-B0 до B3), для получения более подробной информации см. эту документацию и эту документацию .

10) ConvNEXT

Модель ConvNeXt CNN была предложена как чисто свёрточная модель (ConvNet), вдохновлённая конструкцией трансформеров Vision, которая утверждает, что превосходит их.

Архитектура:

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

Другие детали для моделей ConvNeXt:

  • Ссылка на статью: https://arxiv.org/pdf/1905.11946v5.pdf
  • GitHub: ConvNeXt
  • Опубликовано: март 2022 г.
  • Производительность в наборе данных ImageNet: 81–87 % (1-е место по точности)
  • Количество параметров: 29–350 млн.
  • Размер на диске: 110–1310 МБ

Выполнение:

  • Создайте экземпляр модели ConvNeXt-Tiny, используя приведённый ниже код:
tf.keras.applications.ConvNeXtTiny(
    model_name="convnext_tiny",
    include_top=True,
    include_preprocessing=True,
    weights="imagenet",
    input_tensor=None,
    input_shape=None,
    pooling=None,
    classes=1000,
    classifier_activation="softmax",
)

Вышеупомянутый код предназначен для реализации ConvNeXt-Tiny, keras предлагает аналогичный API другой реализации архитектуры EfficientNet (ConvNeXt-Small, ConvNeXt-Base, ConvNeXt-Large, ConvNeXt-XLarge), за более подробной информацией обратитесь к этой документации .

Краткое содержание

Я обсудил 10 популярных архитектур CNN, которые могут генерировать вложения с использованием трансферного обучения. Эти предварительно обученные модели CNN превзошли набор данных ImageNet и оказались лучшими. Библиотека Keras предлагает API для загрузки архитектуры и весов обсуждаемых предварительно обученных моделей. Вложения изображений, сгенерированные из этих моделей, можно использовать для различных вариантов использования.

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

Использованная литература:

[1] Документы с кодом: https://paperswithcode.com/sota/image-classification-on-imagenet

[2] Документация Keras: https://keras.io/api/applications/

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *