В этой статье предлагается простое и бесплатное решение для обучения модели Tensorflow обнаружению объектов в Google Colab на основе пользовательских наборов данных. Чтобы продемонстрировать, как это работает, я обучил модель обнаруживать мою собаку на фотографиях.

Весь код и набор данных, использованные в этой статье, доступны в моем репозитории на Github.

Особенности этого предложения:

  • Требуется только набор данных, созданный с помощью LabelImg
  • Один блокнот Google Colab содержит все этапы: он начинается с набора данных, выполняет обучение модели и показывает вывод
  • Он работает на графическом процессоре Google Colab и в хранилище Google Диска, поэтому основан исключительно на бесплатных облачных ресурсах

Кроме того, недавно были внесены важные изменения в API обнаружения объектов Tensorflow, из-за которых другие доступные руководства устарели.

Создание набора данных

Единственный шаг, не включенный в записную книжку Google Colab, - это процесс создания набора данных.

С соответствующим количеством фотографий (в моем примере 50 фотографий собаки) я создал аннотации. Я использовал инструмент LabelImg. Для простоты я выделил единственный объектный класс - мою собаку. Его можно расширить для получения моделей, которые выполняют обнаружение объектов для нескольких классов объектов.

Я переименовал файлы изображений в формате objectclass_id.jpg (т.е. dog_001.jpg, dog_002.jpg). Затем в LabelImg я определил ограничивающую рамку, в которой расположен объект, и сохранил аннотации в формате Pascal Voc.

Наконец, я загрузил файлы аннотаций в свою учетную запись на Google Диске, используя один zip-файл со следующей структурой:

.zip file
|-images directory
  |-image files (filename format: objectclass_id.jpg)
|-annotations directory
  |-xmls directory
    |-annotations files (filename format: objectclass_id.xml)

Проверьте мой файл набора данных в Github, чтобы увидеть пример.

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

Все последующие шаги включены в записную книжку Google Colab. Я последовательно выполняю ячейки, чтобы обучить модель и выполнить вывод:

Установите необходимые пакеты: установите пакеты, репозитории и переменные среды для обнаружения объектов в Tensorflow, затем запустите тест.

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

Пустые файлы png: это ячейка, чтобы избежать ошибки в create_pet_tf_record.py, она не влияет на процесс обучения.

Создать TFRecord: из набора данных создается TFRecord. В этой упрощенной версии алгоритм будет обучать модель только для одного класса.

Загрузить предварительно обученную модель. Загрузите предварительно обученную модель из ModelZoo в качестве начальной контрольной точки для переноса обучения. В этом примере мы загружаем модель быстрее_rcnn_inception_v2_coco, чтобы использовать другую модель из ModelZoo, измените MODEL var.

MODEL = 'faster_rcnn_inception_v2_coco_2018_01_28'
MODEL_FILE = MODEL + '.tar.gz'
DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/'
DEST_DIR = 'pretrained_model'

Редактировать файл конфигурации модели. Задайте поля файла конфигурации, обозначенные PATH_TO_BE_CONFIGURED. Если вы выберете другую модель начальной контрольной точки, обновите соответственно имя файла var и re.sub функции в ячейке.

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

Ниже приведены графики Tensorboard, полученные в результате тренировочного процесса:

Вывод

Экспорт обученной модели: экспорт модели для выполнения вывода. Ячейка преобразует последнюю обученную модель в формат для выполнения вывода.

Загрузить изображение для вывода: браузер загружает файл тестового изображения для выполнения вывода на следующем шаге.

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

Следующие голы

Спасибо, что прочитали мою статью. В этой статье мы легко обучили модель обнаружения объектов в Google Colab с пользовательским набором данных, используя фреймворк Tensorflow. Если понравилось, оставьте аплодисменты, я с удовольствием напишу больше о машинном обучении.

В следующих статьях мы расширим блокнот Google Colab до:

  • Включите несколько классов обнаружения объектов
  • Просмотрите Tensorboard на другой вкладке браузера во время обучения модели.
  • Выполните сегментацию экземпляров, чтобы выполнить пиксельную классификацию