В этой статье замаскированная R-CNN будет реализована для задачи сегментации. Сначала будет представлено введение в структуру R-CNN, затем будет представлен пример реализации с использованием PyTorch и, наконец, представление результатов.

Маска R-CNN

Такие структуры, как маска R-CNN, были разработаны для задач сегментации и обнаружения многоцелевых экземпляров объектов. Маска R-CNN была первоначально представлена ​​в 2017 году и является расширением структуры глубокого обучения Faster R-CNN. Маска R-CNN имеет два основных этапа; первый этап генерирует предложения о регионах, где может быть объект, на основе входного изображения, а второй этап прогнозирует класс определенных объектов, определяет координаты ограничивающего прямоугольника и генерирует пиксельную маску для объекта. Общий обзор фреймворка можно увидеть на изображении ниже.

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

Второй этап маски RCNN - это нейронная сеть, аналогичная первому этапу, однако здесь используются предложенные области интереса (ROI), а с помощью метода, называемого ROIAlign, области интереса располагаются в соответствующих областях. области карты объектов. Отсюда есть различные ветви нейронной сети, которые выполняют назначения независимо для каждого объекта на уровне пикселей и, следовательно, имеют свои собственные функции потерь. Есть классификатор, ограничивающая рамка и сеть генерации масок.

Реализация маски R-CNN в PyTorch

Реализация маски R-CNN будет следовать той же процедуре, которая использовалась в TORCHVISION OBJECT DETECTION FINETUNING TUTORIAL. Маска R-CNN изначально была обучена с использованием набора данных кокоса для задачи обнаружения и классификации повседневных объектов, но в этой статье она будет перенесена на изображения гистологии толстой кишки, которые изначально были представлены в конкурсе GlaS. Это был конкурс исследований, в котором команды исследователей со всего мира соревновались в задачах сегментации; см. ссылку для загрузки данных и более подробную информацию о конкурсе Ссылка. Чтобы начать работу с пользовательским загрузчиком данных, определено, как показано ниже.

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

Когда все данные установлены, мы можем перейти к загрузке модели. Библиотека Torchvision делает переносное обучение очень удобным, поскольку позволяет вам просто загружать предварительно обученную модель R-CNN маски с магистралью resnet 50 (или другими предварительно обученными магистралями, если хотите). Код для загрузки модели показан ниже.

Данные и модель готовы, поэтому следующий цикл обучения. Есть много способов определить цикл обучения с помощью PyTorch, ниже показан пример того, как это можно сделать для модели выше. В исходном руководстве по torchvision также есть хорошая реализация цикла обучения, называемая train_one_epoch, Link.

Результаты

Поскольку маска R-CNN относительно сложна, для ее обучения требуется время, однако после завершения были достигнуты результаты, показанные ниже. Используя тестовый набор, модель получила оценку IoU 0,419 и оценку F1 0,592.

Заключение

Полную записную книжку, использованную в этой статье, можно найти по ссылке ниже. Маска R-CNN - это крутая платформа, которую можно использовать для ряда задач компьютерного зрения. Если вам интересно увидеть полную реализацию PyTorch маски R-CNN с нуля, здесь есть репозиторий на Github, Ссылка. Для дальнейшего чтения по использованию маски R-CNN для медицинских изображений я рекомендую следующую исследовательскую статью Ссылка. Надеюсь, эта статья была полезной, если у вас есть какие-то мысли, не стесняйтесь делиться ими ниже.

Полная записная книжка: https://colab.research.google.com/drive/11FN5yQh1X7x-0olAOx7EJbwEey5jamKl?usp=sharing