Классификация изображений — это фундаментальная задача, которая пытается понять все изображение как единое целое. Цель состоит в том, чтобы классифицировать изображение, назначив ему определенную метку. Как правило, классификация изображений относится к изображениям, на которых появляется и анализируется только один объект. Напротив, обнаружение объектов включает в себя задачи как классификации, так и локализации и используется для анализа более реалистичных случаев, когда на изображении может существовать несколько объектов. (Взято с: https://paperswithcode.com/task/image-classification)

В этой статье рассказывается о классификации изображений с использованием библиотеки TensorFlow.

Импортируйте библиотеку и убедитесь, что TensorFlow, используемый в Google Colab, обновлен (› версия 2.0).

Код ниже показывает библиотеку, которая будет использоваться для этого проекта.

Загрузите набор данных и извлеките файл, используя метод распаковки.

В этой статье мы будем использовать Intel Image Classification, доступную в наборах данных Kaggle. Данные, взятые для этого проекта, взяты только из папки seg_train, потому что будет симуляция распределения между набором поездов и набором проверки, что составляет 80% для набора поездов и 20% для набора проверки.

Данные содержат в общей сложности 14034 пейзажа, соответствующих 6 различным изображениям: Здания (2191), Лес (2271), Ледник (2404), Горы (2512), Море (2274), Улица (2382). Модель машинного обучения предназначена для разработки классификации изображений, которая сохраняется в формате TF-Lite и может быть встроена в Android и iOS.

Установите местоположение данных и детализацию данных

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

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

Использование увеличения изображения с ImageDataGenerator и разделение набора данных на набор данных для обучения и набор данных для проверки

Используя ImageDataGenerator, мы хотим разделить набор данных изображений на набор данных для обучения и набор данных для проверки. Данные разделены на соотношение 80:20, что составляет 80% обучающего набора данных и 20% проверочного набора. В приведенном ниже коде показан синтаксис.

Затем мы можем увидеть, что из генератора индексы классов для каждой категории изображений показаны как здания (0), лес (1), ледник (2), гора (3), море (4) и улица (5).

Постройте модель, используя слой Sequential, Conv2D и Maxpooling.

В приведенном ниже коде показана модель, построенная с использованием Sequential, Conv2D и Maxpooling Layer.

Компиляция и обучение модели

В приведенном ниже коде показан синтаксис для компиляции и обучения модели с использованием метода подгонки. Модель будет скомпилирована оптимизатором Adam.

Обратный вызов используется для завершения обучения модели в нужное время, чтобы избежать переоснащения или недообучения модели.

В приведенном ниже коде показан синтаксис для обучения модели с использованием метода подгонки.

Ниже представлен процесс обучения и проверки точности, а также результат обратного вызова.

Оценка модели, график точности и график потерь для набора поездов и набора проверки

Из процесса обучения и оценки мы можем увидеть процент потерь и точности, как показано ниже.

Чтобы понять процесс обучения и оценки, мы можем построить для него график точности и потерь.

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

Из вывода мы видим, что точность модели обучения составляет около 80%. Чтобы повысить точность, мы можем перестроить модель обучения, настроив Sequential, Conv2D, dan Maxpooling и повторно запустив процесс.

Предсказание модели

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

Преобразование модели

Мы можем сохранить модель как TF-lite, которую можно встроить в Android и iOS.

Исходный код:

https://github.com/Espreilla/Scenery-Classification-Model-Deployment

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