Узнайте, как автоматизировать аннотацию данных в DataTorch с помощью агентов и конвейеров.

Одна из самых мощных функций DataTorch (не считая удобного аннотатора) — это конвейеры. Конвейеры DataTorch — отличный способ указать последовательность заданий, которые выполняются агентом и могут применяться к интерфейсу. Если вам кажется, что это слишком сложно переварить, у нас есть пример, который прояснит ситуацию!

В этом уроке мы будем импортировать набор данных в DataTorch из внешнего источника, настраивать конвейер для автоматической сегментации изображений и отображать аннотации модели. И все это за рабочий день!

Настраивать

Все, что нам нужно для этого руководства, — это клиент Python DataTorch (и компьютер, на котором его можно запустить). Клиент доступен в виде пакета pip:

$ pip install datatorch

И вы готовы идти!

Скачать данные

Далее давайте получим некоторые данные для запуска нашего конвейера. Мы будем использовать набор данных CCMT Обнаружение вредителей и болезней, разработанный Kwabena et al. из данных Мендели. Это отличный набор данных для проверки способности ваших моделей компьютерного зрения выявлять некоторые распространенные болезни и вредителей, которые влияют на урожай сельскохозяйственных культур. Набор данных сначала будет установлен локально (вы можете установить его в выбранное вами хранилище), а затем импортирован в набор данных DataTorch. Я уже пошел дальше и создал общедоступный проект для импорта всех файлов изображений. Ознакомиться с публичным проектом можно на DataTorch.

# Download the dataset
$ wget https://prod-dcd-datasets-cache-zipfiles.s3.eu-west-1.amazonaws.com/bwh3zbpkpv-1.zip
bwh3zbpkpv-1.zip     89%[================>   ]   7.07G  67.4MB/s    eta 14s 
# Unzip  
$ unzip bwh3zbpkpv-1.zip
# And rename
$ mv Dataset\ for\ Crop\ Pest\ and\ Disease\ Detection CCMT

Импорт в DataTorch

Давайте теперь импортируем все эти данные в наш проект, чтобы мы могли аннотировать или запустить наш конвейер на основе этих данных. Сначала давайте войдем в систему, используя datatorch с ключом API, который можно сгенерировать по адресу https://datatorch.io/settings/access-tokens. Обязательно сохраните этот ключ в тайне 🔑!

from getpass import getpass
API_KEY = getpass()

Теперь мы можем подключить клиент к хранилищу и импортировать данные в наш проект DataTorch.

import os
import datatorch
from datatorch.api.entity.dataset import Dataset

api = datatorch.api.ApiClient(api_key=API_KEY)
proj = api.project("datatorchofficial/ccmt-crop-pest")
dset = proj.dataset('Raw Data')
# upload only a few images from one crop for this example
dataset_dir = 'CCMT/Raw Data/CCMT Dataset/Maize/grasshoper'
prefix = 'grasshoper'

# upload only the first 20 images
count = 0
imnum = 0
while count < 20:
  fname = f"{prefix}{imnum}_.jpg"
  full_path = os.path.join(dataset_dir, fname)
  if os.path.exists(full_path):
    with open(full_path, 'rb') as f:
      api.upload_to_default_filesource(proj,f,dataset=dset)
      count += 1
  imnum += 1

Изображения теперь загружены в набор данных!

Агенты 🤖 🤝 🐍 Трубопроводы

Теперь, когда наша настройка завершена, давайте перейдем к хорошей части! Мы настроим агентов и конвейеры для автоматического аннотирования наших данных. Конвейер — это набор спецификаций среды и шагов действий, которые выполняются последовательно. Агент заботится о настройке, выполнении и очистке конвейера. Мы настраиваем агентов на машине, которой разрешен доступ к нашему набору данных (мы скоро займемся этим). Агент также образует канал между интерфейсом и сервером, что позволяет нам связать вывод модели с аннотатором. Если вам кажется, что это слишком много, пример ниже прояснит ситуацию.

Чтобы начать работу с агентами, нам нужно установить datatorch на машину — обычно это виртуальная машина, но в этом случае ваш личный ноутбук должен работать! Подойдите к терминалу и следуйте инструкциям ниже. (Мы используем conda для управления средой Python)

$ pip install datatorch
$ datatorch login
[Enter your API key]
$ datatorch agent create
[Enter an agent name]
$ datatorch agent start

Посмотрите это в действии ниже:

Управление агентами и конвейерами

DataTorch предоставляет простой в использовании интерфейс для управления агентами и конвейерами через веб-интерфейс. Сначала мы заходим в «Агенты» на боковой панели, а затем нажимаем «Управление агентами». Выберите только что созданного агента, чтобы назначить его проекту. Все конвейеры этого проекта будут работать на этом агенте, если они не будут переключены.

Давайте также загрузим конвейер шаблонов, доступный через действия DataTorch. Это действие мы определили заранее, чтобы упростить создание новых конвейеров с помощью всего лишь нескольких изменений. Мы будем использовать конвейер обнаружения объектов (на основе YOLOS-tiny), который обрабатывает весь файл и выдает ограничивающие рамки для обнаруженных объектов. Для этого мы сначала переходим в «Конвейеры» > «Новый конвейер» и выбираем действие шаблона «objdet_action» из раскрывающегося списка.

Выполнение конвейера

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

Мы уже указали в yaml конвейера, что значок мозга 🧠 должен обозначать конвейер в аннотаторе. Итак, мы нажимаем эту кнопку в аннотаторе и запускаем аннотатор на изображении. Это мгновенно запускает конвейер, и агент начинает работать. Он начинает работать в фоновом режиме, получая изображение, загружая модель детектора объектов, запуская логический вывод и отображая аннотации в аннотаторе всего одним щелчком мыши! 😎

Полученные результаты

А теперь время результатов 🥁

Выглядит довольно хорошо! Мы также можем дополнительно уточнить аннотацию в соответствии с поставленной задачей, выбрав аннотацию из стопки и перетащив края ограничивающей рамки. Более подробное использование аннотатора можно найти в нашем уроке здесь.