Приятно осознавать, что нам удалось наделить роботов нашими врожденными способностями учиться на собственном примере и воспринимать их окружение. Основная проблема заключается в том, что для обучения компьютеров «видеть» так же, как люди, потребуется гораздо больше времени и усилий.
Однако, если принять во внимание практическую ценность, которую этот навык в настоящее время представляет для организаций и предприятий, усилия того стоят. В этой статье вы узнаете о классификации изображений, о том, как она работает, и о ее практической реализации. Давай начнем.
Что такое классификация изображений?
Работа по передаче изображения в нейронной сети и то, что он выводит некоторую форму метки для этого изображения, называется распознаванием изображений. Выходная метка сети будет соответствовать предварительно определенному классу.
Картинке может быть назначено несколько классов или только один. Когда имеется только один класс, часто используется термин «признание», тогда как при наличии нескольких классов часто используется термин «классификация».
Обнаружение объекта — это подмножество классификации изображений, в котором определенные экземпляры объектов определяются как принадлежащие к данному классу, такому как животные, транспортные средства или люди.
Как работает классификация изображений?
Изображение в виде пикселей анализируется компьютером. Это достигается путем обработки изображения как набора матриц, размер которых определяется разрешением изображения. Проще говоря, классификация изображений — это изучение статистических данных с использованием алгоритмов с точки зрения компьютера.
Классификация изображений осуществляется при цифровой обработке изображений путем группировки пикселей в заранее определенные группы или «классы». Алгоритмы делят изображение на последовательность заслуживающих внимания характеристик, что снижает нагрузку на окончательный классификатор.
Эти качества информируют классификатор о значении изображения и потенциальной классификации. Поскольку остальные процессы классификации изображения зависят от него, метод выделения характеристик является наиболее важным этапом.
Ассоциация предоставленные данные алгоритму также имеет решающее значение в классификации изображений, особенно контролируемой классификации. По сравнению с ужасным набором данных с дисбалансом данных, основанным на классе и низком качестве изображений и аннотаций, хорошо оптимизированный набор данных классификации работает превосходно.
Классификация изображений с использованием Tensorflow и Keras в python
Мы будем использовать СИФАР-10 набор данных (в который входят самолеты, самолеты, птицы и другие 7 вещей).
1. Требования к установке
Приведенный ниже код установит все необходимые компоненты.
2. Импорт зависимостей
Создайте файл train.py на Python. Код ниже будет импортировать зависимости Tensorflow и Keras.
3. Инициализация параметров
CIFAR-10 включает всего 10 категорий изображений, поэтому классы num просто относятся к количеству категорий для классификации.
4. Загрузка набора данных
Функция использует модуль Tensorflow Datasets для загрузки набора данных, и мы устанавливаем для информации значение True, чтобы получить некоторую информацию о нем. Вы можете распечатать его, чтобы увидеть, какие поля и их значения, и мы будем использовать информацию, чтобы получить количество образцов в наборах для обучения и тестирования.
5. Создание модели
Теперь мы создадим три слоя, каждый из которых состоит из двух ConvNet с функцией максимального объединения и активации ReLU, а затем полностью подключенной системы из 1024 устройств. По сравнению с ResNet50 или Xception, которые являются самыми современными моделями, это может быть сравнительно крошечная модель.
6. Обучение модели
Я использовал Tensorboard для измерения точности и потерь в каждую эпоху и предоставил нам прекрасный дисплей после импорта данных и создания модели. Запустите следующий код; в зависимости от вашего CPU/GPU обучение займет несколько минут.
Чтобы использовать tensorboard, просто введите следующую команду в терминале или командной строке в текущем каталоге:
Вы увидите, что потери при проверке уменьшаются, а точность повышается примерно до 81%. Это фантастично!
Тестирование модели
Когда обучение завершено, окончательная модель и веса сохраняются в папке результатов, что позволяет нам тренироваться один раз и делать прогнозы, когда мы захотим. Следуйте коду в новом файле Python с именем test.py.
7. Импорт утилит для тестирования
8. Создание каталога Python
Создайте словарь Python, который переводит каждое целочисленное значение в соответствующую метку набора данных:
9. Загрузка тестовых данных и модели
Следующий код загрузит тестовые данные и модель.
10. Оценка и прогноз
Следующий код будет оценивать и делать прогнозы на изображениях лягушек.
11. Результаты
Модель предсказала лягушку с точностью 80.62%.
Заключение
Хорошо, мы закончили этот урок. Хотя 80.62% не подходит для небольшого CNN, я настоятельно рекомендую вам изменить модель или посмотреть на ResNet50, Xception или другие передовые модели для получения лучших результатов.
Теперь, когда вы создали свою первую сеть распознавания изображений в Keras, вам следует поэкспериментировать с моделью, чтобы узнать, как различные параметры влияют на ее производительность.
Оставьте комментарий