Открытие…

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

НО…

Что такое классификация изображений?

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

Необходимые навыки/понятия перед чтением

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

  • Программирование на Python
  • Обработка изображений (основы OpenCV)
  • Знание жизненного цикла машинного обучения

Примечание. Этот код тестировался в среде Windows.

Шаги по созданию классификатора изображений

(В нашем случае)

Чтобы создать классификатор изображений, вам необходимо выполнить следующие шаги:

  • Сбор данных (изображения для каждого класса)
  • Обучение вашей модели (Обучаемая машина от Google)
  • Тестирование результатов в браузере
  • Экспорт обученной модели в среду Python
  • Классификация изображений с обученной моделью с помощью пакетов OpenCV и Teachable Machine.
  • Улучшение и повторение при необходимости

Что мы собираемся построить?

Мы создадим классификатор изображений, который сможет различать арабские и английские книги.

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

После обучения модели мы экспортируем ее с расширением .h5 и будем использовать с пакетами OpenCV и Teachable Machine Python.

Что такое обучаемая машина?

С официального сайта:

Teachable Machine – это веб-инструмент, который позволяет быстро, легко и доступно создавать модели машинного обучения.

С помощью Teachable Machine вы можете классифицировать изображения, звуки и позы. Наше внимание будет сосредоточено на использовании инструмента классификации изображений на платформе.

Используя Teachable Machine, мы выполним первые три шага: соберем данные, обучим модель и оценим результаты прямо в браузере.

Запуск классификации изображений на обучаемой машине

Открыв платформу Teachable Machine, выберите Проект изображения.

Teachable Machine предлагает два варианта для разных сред, в которых можно развертывать приложения классификации изображений. Эти среды включают встроенные системы с ограниченной вычислительной мощностью и компьютеры с высокой вычислительной мощностью.

По нашему выбору мы выберем вариант Стандартная модель изображения.

Сбор данных (изображений)

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

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

Арабские книги:

Первый:

Второй:

Английские книги:

Первый:

Второй:

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

Модель обучения

Обучение нашей модели выполняется без особых усилий, поскольку Teachable Machine автоматически позаботится об этом в фоновом режиме. Все что от нас требуется – это терпеливо ждать результатов.

Нажмите кнопку Обучить модель и терпеливо подождите несколько секунд, пока процесс обучения не завершится. Важно отметить, что вы должны держать в браузере вкладку «Обучаемая машина» открытой, так как переключение вкладок приведет к прекращению сеанса обучения и потребует перезапуска обучения с самого начала.

Тестирование результатов классификации в браузере (результаты предварительного просмотра)

После завершения обучения модели вы увидите, что камера активируется, что позволит вам напрямую оценить результаты в вашем веб-браузере.

Экспорт модели

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

В нашем сценарии мы экспортируем модель в формате Tensorflow (.h5), чтобы облегчить взаимодействие с ней с помощью пакетов и библиотек обработки изображений, таких как OpenCV или Pillow.

Чтобы продолжить, просто нажмите на опцию Экспортировать модель, показанную на изображении ниже.

Мы стремимся использовать формат TensorFlow (Keras) .h5 для экспорта нашей модели для использования Python.

Выберите TensorFlow, Keras и нажмите кнопку Загрузить мою модель.

После некоторого периода ожидания вы увидите наличие сжатого файла, содержащего два элемента:

  • keras_model.h5 (наша экспортированная модель)
  • labels.txt (текстовый файл названий классов с идентификаторами)

Открыв файл labels.txt, вы увидите, что его содержимое выглядит следующим образом:

0 Arabic
1 English

Классификация изображений с помощью Python

В том же каталоге создайте новый файл Python (например, с именем app.py).

Крайне важно убедиться, что keras_model.h5 и labels.txt находятся в том же каталоге (относительный путь), что и файл Python.

Обучаемый машинный пакет

Теперь нам нужно установить Teachable Machine для Python. Роль этого пакета — взаимодействовать с обученной моделью, беря захваченное изображение с камеры с помощью OpenCV и преобразуя его в тензоры, чтобы модель могла его классифицировать. Другими словами, он выполнит для нас часть глубокого обучения в нескольких строках кода.

В своем терминале используйте эту команду для загрузки пакета teachable-machine:

pip install teachable-machine

Доступ к камере с помощью OpenCV

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

Код открытия вида камеры с помощью OpenCV:

import cv2 as cv

cap = cv.VideoCapture(0)
while True:
    _, img = cap.read()
    cv.imshow("Video Stream", img)
    cv.waitKey(1)

Запустив этот код, вы сможете открыть вид с камеры вашего ноутбука. Важно знать, что кадр изображения хранится в img нашего кода, который будет работать как матрица чисел (представляет пиксели).

Захват и классификация изображений

Следующим шагом будет захват изображения с камеры с помощью метода imwrite в OpenCV. Затем классифицируем изображение с помощью пакета teachable-machine.

Окончательный код захвата и классификации изображений:

from teachable_machine import TeachableMachine
import cv2 as cv
cap = cv.VideoCapture(0)
model = TeachableMachine(model_path="keras_model.h5",
                         labels_file_path="labels.txt")
image_path = "screenshot.jpg"
while True:
    _, img = cap.read()
    cv.imwrite(image_path, img)
    result = model.classify_image(image_path)
    print("class_index", result["class_index"])
    print("class_name:::", result["class_name"])
    print("class_confidence:", result["class_confidence"])
    print("predictions:", result["predictions"])
    cv.imshow("Video Stream", img)
    cv.waitKey(1)

Код выведет различную информацию об ответе обученной модели, например:

  • Индекс класса
  • Метка/название класса
  • Точность (уверенность)
  • Все прогнозы для других классов

Последнее слово

Я надеюсь, что вам понравился весь процесс классификации изображений, если вы разработчик, пытающийся улучшить инструменты с открытым исходным кодом, и вы хотите помочь мне с разработкой и улучшением пакета Teachable Machine Python; ПР приветствуются в репозитории проектов.

Полезные ссылки:

Счастливая классификация