Сравнение точности, кривых ROC и AUC трех моделей классификатора двоичных изображений с использованием TensorFlow / Keras. Как вы думаете, что будет лучше всего?

В мире машинного обучения есть три модели, которые вы можете использовать для выполнения классификации двоичных изображений: полностью подключенная сеть, сверточная нейронная сеть или предварительно обученная сеть, такая как MobileNet с применением трансферного обучения. Это". В своих предыдущих рассказах я показал, как реализовать эти модели для создания классификатора изображений, который может классифицировать одуванчики и траву и оценивать их производительность, вычисляя их точность, кривые ROC и показатель AUC. В этом рассказе я буду сравнивать эти модели бок о бок и сравнивать их характеристики. Если вы хотите пройти все обучение, оценку и сравнение этих моделей, «следуйте этой тетради. Вы можете запустить код, сохранив свою копию, выбрав Файл - ›Сохранить копию.

Как вы думаете, какая модель будет работать лучше всего?

Обзор модельных архитектур

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

FULLY-CONNECTED MODEL
Layer (type)                 Output Shape              Param #    ================================================================= flatten (Flatten)            (None, 120000)            0          _________________________________________________________________ dense (Dense)                (None, 128)               15360128   _________________________________________________________________ dense_1 (Dense)              (None, 1)                 129        ================================================================= Total params: 15,360,257 Trainable params: 15,360,257 Non-trainable params: 0
CONVOLUTIONAL NEURAL NETWORK MODEL
Layer (type)                 Output Shape              Param #    ================================================================= conv2d (Conv2D)              (None, 198, 198, 16)      448        _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 99, 99, 16)        0          _________________________________________________________________ conv2d_1 (Conv2D)            (None, 97, 97, 32)        4640       _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 48, 48, 32)        0          _________________________________________________________________ conv2d_2 (Conv2D)            (None, 46, 46, 64)        18496      _________________________________________________________________ max_pooling2d_2 (MaxPooling2 (None, 23, 23, 64)        0          _________________________________________________________________ conv2d_3 (Conv2D)            (None, 21, 21, 64)        36928      _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 10, 10, 64)        0          _________________________________________________________________ conv2d_4 (Conv2D)            (None, 8, 8, 64)          36928      _________________________________________________________________ max_pooling2d_4 (MaxPooling2 (None, 4, 4, 64)          0          _________________________________________________________________ flatten (Flatten)            (None, 1024)              0          _________________________________________________________________ dense (Dense)                (None, 512)               524800     _________________________________________________________________ dense_1 (Dense)              (None, 1)                 513        ================================================================= Total params: 622,753 Trainable params: 622,753 Non-trainable params: 0
MOBILENET w/ TRANSFER LEARNING
Layer (type)                 Output Shape              Param #    ================================================================= mobilenetv2_1.00_224 (Model) (None, 7, 7, 1280)        2257984    _________________________________________________________________ global_average_pooling2d (Gl (None, 1280)              0          _________________________________________________________________ dense (Dense)                (None, 1)                 1281       ================================================================= Total params: 2,259,265 Trainable params: 1,281 Non-trainable params: 2,257,984

Обратите внимание на то, что модель с полным подключением имеет наибольшее количество обучаемых параметров, за ней следует модель CNN, а затем модель MobileNet. В модели FC каждое соединение в слое Flatten связано с каждым соединением в слое Dense, что приводит к большему количеству параметров. В CNN требуется меньше параметров, поскольку каждый сверточный слой уменьшает размер входных данных за счет операции свертки. И в отличие от этих двух моделей, модель MobileNet использует так называемое трансферное обучение: она не тренируется на предварительно обученных слоях, а только тренирует последний плотный слой. Он использует возможности извлечения признаков предварительно обученных слоев для обучения последнего слоя, поэтому для обучения модели требуется лишь несколько параметров.

Сравнение точности

Для каждой модели я использовал один и тот же набор данных и обучил модель 15 эпохам. Давайте объединим результаты и сравним их бок о бок, начиная с точности:

FC accuracy: 0.5987
CNN accuracy: 0.7197
MobileNet accuracy: 0.8917

Модель MobileNet имеет наивысшую точность, за ней следует модель CNN, за которой следует модель с полным подключением.

Сравнение кривых ROC и AUC

Точность - не лучший способ сравнить характеристики модели. Лучшие метрики для задач классификации включают кривые ROC и AUC, которые измеряют, насколько наша модель способна различать наши два класса, одуванчики и траву. Чем выше AUC, тем лучше наша модель классифицируется. На графике выше MobileNet набирает самые высокие баллы по AUC, за ней идет CNN, а за ней - FC.

Вот выводы из этих сравнений:

  • Модель MobileNet является превосходной моделью с точки зрения точности и кривой ROC / AUC, даже несмотря на то, что у нее не так много параметров. Это показывает мощь трансферного обучения над мощной обученной моделью.
  • Модель CNN занимает второе место. Сверточные нейронные сети работают лучше, чем полностью связанные сети по классификации двоичных изображений, с гораздо меньшим количеством параметров из-за их архитектуры с разделяемыми весами и характеристик инвариантности трансляции.
  • Полносвязная модель работает лучше, чем случайная классификация двоичных изображений, но это не оптимальная модель для этого.