Раскройте потенциал настраиваемых подключаемых модулей машинного зрения

В современном мире технологии машинного зрения стали неотъемлемой частью многих отраслей. Это произвело революцию в том, как работают предприятия, и сыграло важную роль в повышении производительности и эффективности. Системы машинного зрения полагаются на широкий спектр программных инструментов и подключаемых модулей для выполнения различных задач, от обнаружения объектов до сегментации изображений. Несмотря на то, что доступно множество готовых решений, разработчики могут извлечь большую пользу из создания собственных подключаемых модулей машинного зрения.

Что такое ЙОЛО?

You Only Look Once (YOLO) — это современный алгоритм обнаружения объектов в области компьютерного зрения. Это алгоритм, основанный на глубоком обучении, который может обнаруживать объекты на изображении или видео и назначать их определенному классу. Алгоритм YOLO работает с одной нейронной сетью, которая одновременно предсказывает несколько ограничивающих рамок и вероятности классов для каждой рамки. Это позволяет обнаруживать объекты в режиме реального времени с высокой точностью.

Чему вы научитесь в этом уроке?

В этом уроке я не буду вдаваться в тонкости обучения модели обнаружения объектов. Вместо этого я покажу вам, как на практике использовать уже обученную модель ONNX в пользовательском плагине AyBorg.

Если вы хотите обучить свою собственную модель обнаружения объектов YOLO, я предлагаю вам взглянуть на Ultralytics.

1. Настройка среды разработки

Требования: .NET 7 SDK

Если вы еще этого не сделали, вам следует прочитать мою предыдущую статью Как настроить АйБорг.

Убедитесь, что вы клонировали репозиторий AyBorg.

git clone https://github.com/Source-Alchemists/AyBorg.git --recursive

2. Создайте проект, содержащий ваш новый плагин.

Для этого урока я предлагаю вам поместить проект рядом с проектами плагинов, уже предоставленными AyBorg, и назвать его «Yolo».

cd AyBorg/src/Plugins
dotnet new classlib -n Yolo

Добавьте AyBorg.SDK в свой проект:

dotnet add reference ../../SDK/src/Common/AyBorg.SDK.Common.csproj

Для упрощения использования модели YOLO воспользуемся ImageTorque.AI:

dotnet add package ImageTorque.AI

Нам нужно предоставить плагину файл модели ONNX. Не волнуйтесь, если у вас его нет, AyBorg уже предоставляет его, который мы можем позаимствовать для этого руководства (codeDetector.onnx):

cp -r ../ImageTorque.AI/resources .

Файл ONNX также следует скопировать в каталог сборки, поэтому нам нужно добавить следующее в Yolo.csproj:

<ItemGroup>
  <Content Include=”resources\*.*”>
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

(Необязательно) Добавьте свой проект в Dockerfile AyBorg Agent (AyBorg/src/Agent/Dockerfile):

3. Реализовать интерфейс IStepBody

Добавьте следующий класс:

Хорошо, что мы сделали?

  • Мы создали новый плагин, который реализует интерфейс IStepBody (в AyBord плагины называются Steps).
  • Мы определили входной порт для изображения и выходной порт для областей, которые мы хотим обнаружить.
  • Мы даем нашему плагину имя и категорию (чтобы пользователи могли его найти).

4. Создайте определение модели YOLO

ImageTorque.AI должен знать некоторые основы нашей модели (такие как размерность, привязки, достоверность и т. д.), поэтому нам нужно реализовать определение модели.

В нашем примере мы будем использовать модель YoloV5 со следующими параметрами:

5. Реализовать выполнение предсказания YOLO

Все, что нам нужно сделать сейчас, это реализовать метод TryRunAsync, чтобы начать прогнозирование с помощью нашей модели YoloV5:

Что мы сделали, так это создали YoloDetector и использовали его в методе TryRunAsync.

6. Запустите свой собственный плагин

Если у вас уже есть сборка Docker Compose, вам потребуется пересобрать ее, чтобы применить изменения, внесенные на шаге 2.

docker compose down
docker compose up -d — build

В противном случае просто запустите docker compose up -d .

Откройте обзор агента AyBorg по адресу https://localhost:6011/agents/overview и выберите агента, с которым хотите работать.

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

Заключение

Разработка собственного плагина для AyBorg, позволяющего делать прогнозы YOLO, была простым процессом. Наличие готовых моделей и библиотек позволяет легко интегрировать обнаружение объектов YOLO в AyBorg. Следуя шагам, описанным в этом руководстве, разработчики могут создавать свои собственные плагины и расширять функциональность AyBorg в соответствии со своими конкретными потребностями. С помощью AyBorg теперь проще, чем когда-либо, интегрировать расширенные возможности компьютерного зрения в ваши собственные приложения. Я надеюсь, что это руководство было полезным и вдохновило вас на дальнейшее изучение возможностей AyBorg.