О сериале:

Цель проекта — построить систему, способную идентифицировать фрукты и овощи. Наряду с идентификацией, он также должен иметь возможность получить признаки определенной категории/класса. Предположим, что у нас есть конвейерная лента с фруктами и овощами. Ввод может быть изображением или видео, но в этом случае мы будем использовать изображения. В сериале будут следующие части:

ЧАСТЬ I — Выбор модели и набора данных
ЧАСТЬ II — Переобучение модели по набору данных

Описание задачи:

Чтобы расширить наш набор данных, добавив больше классов, относящихся к нашему проекту.

Набор данных MS COCO имеет 81 класс, из которых нам полезны только пять; к ним относятся морковь, брокколи, апельсин, яблоко и банан. Мы переобучили модель, добавив Ананас в нашу базу данных.

Примечание:
Для реализации задачи вам потребуется воспроизвести модель Mask R CNN. Вы должны иметь возможность обнаруживать объекты из набора данных ms coco, используя файл веса mask_rcnn_coco.h5.

Есть несколько постов, за которыми вы можете следить, я дал ссылку на все из них в справочном разделе.

Этапы переобучения:

  1. Создание набора данных.
    Я попытался найти уже доступный набор данных с маской и аннотацией ограничительной рамки. Его было трудно найти, и даже когда я мог его достать, он был не очень хорошего качества. Поэтому я решил создать новый набор данных.
    Для этого я использовал Flickr и картинки google для поиска и загрузки с помощью инструмента (Расширение Chrome)
  2. Аннотация:
    Изображения должны быть аннотированы (или помечены), для этого мы можем использовать VGG image Annotator (VIA). Для каждого изображения мы должны создать маски в соответствии с количеством объектов на нем. Как только маски созданы, вы можете перейти к следующему изображению, маски сохраняются сами по себе в браузере, после выполнения задачи вы можете экспортировать данные в формате json. JSON будет содержать точки многоугольника и другую информацию, необходимую для обучающего сценария. Вы также можете импортировать файл json, если хотите увеличить размер набора данных.
    Я использовал 175 тренировочных изображений, 50 тестовых изображений, 850 шагов за эпоху.
    Примечание. Попробуйте использовать один тип многоугольника, использование полилинии и инструмента круга создало для меня проблему.

3. Создание конфиг-файла и загрузка набора данных
Конфиг-файл содержит все установленные переменные для обучения, я старался не менять конфиг, поэтому унаследовал тот же конфиг-файл. Файл выглядит так:

Import mrcnn.config as Config
NAME = “fruits”
IMAGES_PER_GPU = 2
NUM_CLASSES = 1+1 
# background + pineapple
# it can be 1 + x (no. of classes you wish to add)
STEPS_PER_EPOCH = 1000 #the number can be according to required accuracy
DETECTION_MIN_CONFIDENCE = 0.8
BACKBONE = “resnet101”
VALIDATION_STEPS = 5

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

Учебный файл выглядит так:

load_images()
load_mask()
load_references()
#load the above-mentioned data
dataset.prepare()
model = modellib.MaskRCNN(“ … ”)
model.train(“ … ”)
#save the model (.h5 file)

5. Результаты
Получив файл весов, мы можем запустить наш скрипт обнаружения, используя файл весов.

load_weights()
detect(model, “path/to/img/or/video/”)

Ссылка