Классификация изображений — это фундаментальная задача, которая пытается понять все изображение как единое целое. Цель состоит в том, чтобы классифицировать изображение, назначив ему определенную метку. Как правило, классификация изображений относится к изображениям, на которых появляется и анализируется только один объект. Напротив, обнаружение объектов включает в себя задачи как классификации, так и локализации и используется для анализа более реалистичных случаев, когда на изображении может существовать несколько объектов. (Взято с: 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
Использованная литература:
- https://www.kaggle.com/puneet6060/intel-image-classification
- Дикодирование Индонезии. Модуль Belajar Pengembangan Machine Learning: Deployment (https://www.dicoding.com/academies/185).