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