В этой статье предлагается простое и бесплатное решение для обучения модели 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 на другой вкладке браузера во время обучения модели.
- Выполните сегментацию экземпляров, чтобы выполнить пиксельную классификацию