Тематическое исследование

Пример обнаружения объектов: глубокое обучение для подсчета объектов

Узнайте, как мы использовали глубокое обучение как специализированную область машинного обучения для создания решения для подсчета для нашего клиента.

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

Бизнес вызов

Наш клиент — компания-разработчик программного обеспечения, специализирующаяся на технологиях компьютерного зрения с 2003 года. Компания связалась с нами по поводу своего последнего проекта по автоматизации подсчета. Ежедневные задачи подсчета утомительны и монотонны, но неизбежны во многих отраслях, таких как производство, аптека или розничная торговля. В производственной сфере сотрудники ежедневно пересчитывают множество однотипных предметов, например жемчужин или пуговиц, чтобы узнать точное количество произведенных, перевезенных или прибывших вещей.

Убедившись в нашей экспертизе в области машинного обучения, наш Клиент обратился к нам с просьбой найти надежное техническое решение, которое могло бы облегчить жизнь его клиентов за счет:

  • Сокращение времени, затрачиваемого на подсчет предметов
  • Устранение человеческой ошибки
  • Предотвращение двойного счета

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

Решение доставлено

Стадия расследования

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

Чтобы перевести будущее решение на более широкие возможности для бизнеса, мы также предложили Клиенту сделать это решение мобильным. С нашей стороны, команда была готова пройти долгий путь и выбрать облегченную модель машинного обучения с быстрым логическим выводом, чтобы ее можно было развернуть для мобильных устройств.

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

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

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

Стадия реализации

1. Обучение классификации

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

В нашем случае мы решили использовать предварительно обученную сеть MobileNet_v2 (ниже) с высокой точностью, легкостью и быстротой. Предварительно обученная сеть была для нас разумным выбором, поскольку нам не нужно было разрабатывать ее с нуля, собирать дополнительные данные или использовать ресурсы компьютера для обучения модели. Модель изначально была обучена извлекать ценные функции из изображений — нам просто нужно было приспособить ее к нашим потребностям.

Двигаясь по конвейеру машинного обучения нашего проекта, мы начали обучать алгоритм примерно на 100 изображениях и десяти наиболее часто используемых шаблонах подсчета, которые нам предоставил Клиент. В результате мы настроили нашу сеть за несколько итераций и добились хороших результатов с точностью 91% на тестовых изображениях.

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

Хотя наши первичные результаты были удовлетворительными, эта матрица показывает нам, что было несколько ошибок для классов 1, 2, 3 и 6, которые мы неправильно предсказали как класс 7 или 9. Мы решили эту проблему, собрав больше данных и используя их для оптимизации. наш конвейер компьютерного зрения. Таким образом, мы научили нашу модель понимать разницу между этими классами и минимизировать ошибки в матрице путаницы.

Кроме того, мы придумали способ повысить точность: мы планировали, чтобы система возвращала три шаблона с высокой вероятностью вместо одного и предлагала пользователю выбрать его. Короткий момент «ага» и достигнутая точность 100%.

2. Обучение обнаружению объектов

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

Здесь мы проконсультировались с Клиентом и решили протестировать решение только на одном шаблоне (монеты). Мы планировали проверить, насколько сложно обучить алгоритм и насколько точными будут результаты, прежде чем тестировать его на других шаблонах.

Когда мы перешли к выбору моделей обнаружения объектов, мы договорились сравнить предварительно обученную сеть FasterRCNN с сетью YOLOv5. Хотя эти два наиболее часто используются в отрасли, они также демонстрируют высокую скорость и надежность. Хотя YOLOv5 является еще более популярным подходом, он не подходит всем, и мы решили попробовать наш путь и экспериментально выбрать наиболее подходящий вариант.

Обучение YOLOv5 примерно на 2000 изображениях монет и тонкая настройка FasterRCNN на 200 изображениях показали, что первое плохо подходит для нашего проекта. Модель не давала точных результатов при работе с небольшими объектами, расположенными близко друг к другу. В итоге мы остановились на предварительно обученном FasterRCNN.

Чтобы улучшить результаты, мы также добавили несколько фильтров бизнес-логики после того, как предсказание нейронной сети было достигнуто. Вот фильтры, которые мы использовали:

  • Надежность — для объектов с достоверностью более 80%.
  • Размер — чтобы удалить объекты, которые слишком большие или маленькие, чем другие.
  • Перекрытие — удаление объектов, перекрывающих более 30%

Результаты бизнеса

Как специализированная форма машинного обучения и ИИ, глубокое обучение — относительно новая технология, но она значительно усилила возможности обнаружения объектов. От обнаружения дефектов до автоматического подсчета объектов, обнаружение объектов может пригодиться вашей компании так же, как это было полезно нашему Клиенту.

На данный момент наш проект привел к:

  • Прорывное решение для нашего клиента. В итоге наше решение объединило две нейронные сети. Если изображение попадает в классификационную сеть, и объект оказывается в тройке наиболее вероятных шаблонов (1), то изображение попадает в сеть обнаружения объектов и возвращает правильное изображение с прямоугольниками, нарисованными вокруг каждого обнаруженного объекта (2).
  • Высокая точность. Применяя лучшие отраслевые практики машинного обучения, а также принимая во внимание идеи, которые мы получили на протяжении всего нашего опыта, мы помогли нашему клиенту улучшить свои услуги, а также значительно повысить точность его приложения для подсчета.
  • Мобильное приложение. Чтобы обеспечить дополнительную ценность для нашего клиента, мы объединили наше решение с API с помощью Flask. Таким образом, пользователь просто отправляет фото, а когда оно возвращается, у него есть шаблон подсчета, изображение с обнаруженными объектами и номера объектов.

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

Если вы заинтересованы в успешной реализации проекта на основе машинного обучения, не стесняйтесь обращаться к нам. Эксперты по машинному обучению из Команды Intelliarts AI готовы помочь вам.