Вы слышали о Labelme? Если вы не слышали об этом, Labelme — это распространенный инструмент аннотации для создания полигонов для данных сегментации. Хотя основным форматом остается собственный формат Labelme, теперь они поддерживают преобразование в другой формат, например COCO и PascalVOC.

Вот основное хранилище Labelme

Монтаж

В зависимости от операционной системы вы можете увидеть варианты установки. Напрямую, я буду использовать самый питонический способ, используя pip. В этом случае мы создадим новую виртуальную среду, но на самом деле это очень необязательно. Часто бывает необходимо установить библиотеку pyqt5.

# python3
conda create --name=labelme python=3
source activate labelme
# conda install -c conda-forge pyside2
# conda install pyqt
# pip install pyqt5  # pyqt5 can be installed via pip on python3
pip install labelme

Аннотирование данных

Только представьте, этот проект направлен на определение наличия тромбоцитов в мазке крови при различных случаях свертывания крови. Мы будем использовать в качестве образца изображение, изображение эритроцитов и тромбоцитов. В этом случае я буду маркировать только тромбоциты.

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

Вам нужно аннотировать все тромбоциты (или, в вашем случае, нужные) объекты, чтобы обучение не спутало их с фоном.

После завершения сохраните аннотацию.

Преобразуйте аннотацию в PascalVOC и нарисуйте маску сегментации

Полные шаги объясняются здесь, но я кратко объясню это в этом случае.

Теперь у вас будет файл аннотаций JSON в формате Labelme. Вам нужно преобразовать его в маску сегментации.

Вам нужно поместить объекты в файл labels.txt. Я просто использую nano и добавляю в него следующие объекты.

После этого вы можете проверить метку.

labelme <FOLDER_NAME> --labels labels.txt --nodata --validatelabel exact --config '{shift_auto_shape_color: -2}'

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

Думаю, это будет непрактично. Создал бы графический интерфейс позже.

Как видите, теперь у меня есть папка train_voc из этой команды.

Маска сегментации будет находиться внутри папки SegmentationClassPNG.

Вот и все. Обычно желаемый формат будет таким (по крайней мере, поскольку я использую сервис тонкой настройки AWS Sagemaker).

train
    ├── class_names.txt
    ├── images
    │   └── Platelets2.jpg
    ├── masks
    │   └── Platelets2.png

Удачи в попытках со своими изображениями!

об авторе

Салман является директором по обработке данных в Allure AI, развивающемся стартапе в области технологий красоты в Индонезии. Он окончил астрономию и астрофизику в Технологическом институте Бандунга. Заядлый читатель, альпинист и развивающий интерес к астрономии и вычислительной нейронауке.

Ранее он проходил стажировку в качестве инженера по искусственному интеллекту в Konvergen AI, инженера-программиста в Chatbiz.id и был научным сотрудником в отделе астрономии, а также помогал на различных курсах в области астрономии, вычислительной науки и управления.