Как мы уже видели — для решения задач распознавания объектов (будь то сортировка огурцов, подсчёт пчёл, отслеживание собаки или обнаружение белок) используются алгоритмы машинного обучения, которым для работы требуется предварительно размеченные изображения.
Рассмотрим — какие инструменты можно использовать для разметки изображений.
VGG Image Annotator (VIA)
Онлайн-утилита для разметки. Реализована в виде одной страницы весом менее 400 Кб (только на HTML, Javascript и CSS). Бесплатная и простая программа для ручной разметки изображений (есть ещё аудио и видео). Удобна тем, что работает в браузере, умеет сохранять результаты разметки в форматах CSV или JSON.
Для аннотирования объектов — доступны: ограничивающие рамки (bounding boxes), ломаные линии, многоугольники, круги, овалы и точки.
Ссылки
https://www.robots.ox.ac.uk/~vgg/software/via/
Make Sense
Ещё одна онлайн-утилита для разметки данных. Исходный код утилиты открыт (TypeScript). Умеет сохранять результаты в форматах: YOLO, VOC XML, VGG JSON, CSV.
Для аннотирования доступны: прямоугольники, линии, точки и многоугольники.
Доступны две предобученных модели, которые можно использовать для предварительной разметки: модель SSD предварительно обученная на наборе данных COCO (для выделения объектов) и модель PoseNet, которую можно использовать для оценки позы человека на изображении (выделение точек скелета). Данные никуда не отправляются — модели работают прямо в браузере на TensorFlow.js (JS-версия фреймворка TensorFlow, предназначенного для обучения нейронных сетей).
Ссылки
https://www.makesense.ai
https://github.com/SkalskiP/make-sense
A simple way of creating a custom object detection model
ImgLab
Веб-утилита для аннотирования изображений с открытым исходным кодом (HTML, JavaScript, CSS).
Для аннотирования доступны: точка, круг, прямоугольник, полигон.
Форматы сохранения: dlib XML, COCO JSON, Pascal VOC XML.
Ссылки
https://imglab.in
https://github.com/NaturalIntelligence/imglab
Другие онлайн-сервисы
Сейчас существует просто масса различных онлайн-сервисов для разметки: Supervise.ly, Labelbox.com (данные сервисы имеют бесплатную Community версию) и множество других. В основном — направлены на коммерческое применение.
CVAT
CVAT (Computer Vision Annotation Tool) — веб-утилита для аннотирования изображений и видео с открытым исходным кодом от Intel.
CVAT поддерживает: обнаружение объектов, классификацию и сегментацию изображений.
Для аннотирования доступны: прямоугольники, многоугольники, полилинии и точки.
Ключевой особенностью CVAT являются инструменты автоматизации: поддержка полуавтоматической аннотации (TensorFlow Object Detection API ) и интерполяции фигур между ключевыми кадрами видео.
Ссылки
https://github.com/openvinotoolkit/cvat
https://cvat.org
LabeIimg
Программа на Python с графическим интерфейсом на Qt, предназначенная для маркировки объектов на изображениях с помощью ограничительных рамок.
Аннотации сохраняются в виде файлов XML в формате PASCAL VOC (формат используемый ImageNet). Также поддерживается формат YOLO.
Установить можно через pip3:
pip3 install labelImg labelImg labelImg [IMAGE_PATH] [PRE-DEFINED CLASS FILE]
Ссылки
https://github.com/tzutalin/labelImg
labelme
Графическая утилита для аннотирования изображений, вдохновленная LabelMe от MIT: http://labelme.csail.mit.edu.
Программа написана на Python и для своего графического интерфейса использует Qt.
Установку можно выполнить через через менеджер пакетов (но может установиться не самая свежая версия):
sudo apt-get install labelme
или через pip:
# Python3 sudo apt-get install python3-pyqt5 # PyQt5 sudo pip3 install labelme
Запуск:
labelme # just open gui # single image example: labelme image.jpg # specify image file labelme data_annotated/ # Open directory to annotate all images in it labelme data_annotated/ --labels labels.txt # specify label list with a file
Для аннотирования доступны: многоугольник, прямоугольник, круг, линия и точки. (руководство).
Для аннотации видео — его первоначально необходимо разбить на отдельные кадры (пример).
Данные сохраняются в формате JSON. Доступен экспорт данных в формате VOC или COCO (пример) для семантической сегментации или сегментации экземпляра (instance segmentation).
Ссылки
https://github.com/wkentaro/labelme
Заключение
Как видим, сейчас для разметки изображений доступно огромное число самых разных инструментов — от простых веб-утилит и множества коммерческих сервисов, до продвинутых программ, поддерживающих различную автоматизацию.
По простоте освоения и использования можно выделить VGG Image Annotator и labelme.
Остаётся выбрать инструмент наиболее подходящий вам и приступить к работе.
По теме
Сортировщик огурцов на Arduino, Raspberry Pi 3 и TensorFlow
Программа с нейросетью для закрывания окон на компьютере при приближении начальника
Использование свёрточной сети на Raspberry Pi для подсчёта пчёл
Система компьютерного зрения отслеживает собачьи фекалии
Squirrel Soaker 9000 — автоматическая система отпугивания белок от кормушки для птиц
Проблемы применения машинного обучения для решения реальных задач