Mask R-CNN для обнаружения и сегментации объектов
Это реализация Mask R-CNN на Python 3, Keras и TensorFlow. Модель генерирует ограничивающие рамки и маски сегментации для каждого экземпляра объекта на изображении. Она основана на Feature Pyramid Network (FPN) и магистрали ResNet101.
Репозиторий включает:
Код документирован и разработан так, чтобы его было легко расширять. Если вы используете его в своих исследованиях, пожалуйста, рассмотрите возможность цитирования этого репозитория (bibtex ниже). Если вы работаете с 3D-видением, вам также может быть полезен недавно выпущенный набор данных Matterport3D (https://matterport.com/blog/2017/09/20/announcing-matterport3d-research-dataset/), созданный из 3D-реконструированных пространств, снятых нашими клиентами, которые согласились сделать их общедоступными для академического использования. Вы можете увидеть больше примеров здесь (https://matterport.com/gallery/).
Начало работы
Пошаговое обнаружение Чтобы помочь с отладкой и пониманием модели, есть 3 ноутбука (inspect_data.ipynb, inspect_model.ipynb, inspect_weights.ipynb), которые предоставляют множество визуализаций и позволяют запускать модель шаг за шагом, чтобы проверить вывод в каждой точке. Вот несколько примеров:
Сортировка и фильтрация якорей Визуализирует каждый шаг первой стадии сети предложений регионов и отображает положительные и отрицательные якоря вместе с уточнением якоря.
Уточнение ограничивающих рамок Это пример окончательных коробок обнаружения (пунктирные линии) и уточнения, применённого к ним (сплошные линии) на втором этапе.
Генерация масок Примеры сгенерированных масок. Затем они масштабируются и размещаются на изображении в нужном месте.
Активации слоёв Часто бывает полезно проверить активации на разных слоях, чтобы найти признаки проблем (все нули или случайный шум).
Гистограммы весов Ещё один полезный инструмент отладки — проверка гистограмм весов. Они включены в ноутбук inspect_weights.ipynb.
Ведение журнала в TensorBoard TensorBoard — ещё один отличный инструмент для отладки и визуализации. Модель настроена на регистрацию потерь и сохранение весов в конце каждой эпохи.
Компоновка различных частей в окончательный результат
Обучение на MS COCO Мы предоставляем... Предварительно обученные веса для MS COCO упростят начало работы. Вы можете использовать эти веса в качестве отправной точки для обучения своей собственной вариации сети.
Код для обучения и оценки находится в samples/coco/coco.py
. Вы можете импортировать этот модуль в Jupyter notebook (см. предоставленные ноутбуки для примеров) или запустить его прямо из командной строки следующим образом:
# Обучить новую модель, начиная с предварительно обученных весов COCO
python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=coco
# Обучить новую модель, начиная с весов ImageNet
python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=imagenet
# Продолжить обучение модели, которую вы обучали ранее
python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=/path/to/weights.h5
# Продолжить обучение последней обученной модели. Это найдёт последние обученные веса в каталоге моделей.
python3 samples/coco/coco.py train --dataset=/path/to/coco/ --model=last
Вы также можете запустить код оценки COCO с помощью:
# Запустить оценку COCO на последней обученной модели
python3 samples/coco/coco.py evaluate --dataset=/path/to/coco/ --model=last
Расписание обучения, скорость обучения и другие параметры должны быть установлены в samples/coco/coco.py
.
Начните с прочтения этого блога о примере цветного всплеска воздушного шара. Он охватывает процесс от аннотирования изображений до обучения и использования результатов в образце приложения.
Вкратце, чтобы обучить модель на своём собственном наборе данных, вам нужно расширить два класса:
Config
: Этот класс содержит конфигурацию по умолчанию. Создайте подкласс и измените атрибуты, которые необходимо изменить.
Dataset
: Этот класс предоставляет согласованный способ работы с любым набором данных. Он позволяет использовать новые наборы данных для обучения без необходимости изменения кода модели. Он также поддерживает одновременную загрузку нескольких наборов данных, что полезно, если объекты, которые вы хотите обнаружить, не все доступны в одном наборе данных.
См. примеры в samples/shapes/train_shapes.ipynb
, samples/coco/coco.py
, samples/balloon/balloon.py
и samples/nucleus/nucleus.py
.
Эта реализация в основном следует статье Mask RCNN, но есть несколько случаев, когда мы отклонились в пользу простоты кода и обобщения. Вот некоторые из различий, о которых мы знаем. Если вы обнаружите другие различия, пожалуйста, сообщите нам.
Проект из Японии по автоматическому отслеживанию клеток на платформе микрогидродинамики. Статья находится в стадии подготовки, но исходный код выпущен.
Исследовательский проект, направленный на понимание сложных процессов между деградацией в Арктике и изменением климата. Авторы: Вейксинг Чжан, Чанди Витарана, Анна Лильедаль и Михаил Каневский.
Проект компьютерного зрения от Ху Шиюй для применения эффекта цветного выделения к людям с красивыми результатами.
Преобразование спутниковых изображений в карты для использования гуманитарными организациями.
Для создания векторных масок из геопространственных изображений. Основан на магистерской диссертации Онджея Пешека.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )