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

В этом блоге мы делимся хитростью, как повысить точность алгоритма обнаружения объектов AWS SageMaker, предоставляя отрицательные образцы, используя встроенную поддержку нескольких классов

Бизнес-кейс

Розничный портал carsales помогает покупать и продавать автомобили. На нашей платформе около 250 000 автомобилей и ежедневно подается 5 000 новых объявлений. Чтобы поддерживать высокое качество рекламы, команда поддержки клиентов (CST) вручную просматривает и утверждает каждое объявление. Недавно отделы продаж автомобилей внедрили технологию искусственного интеллекта под названием Tessa, которая помогает автоматизировать процесс утверждения, который раньше занимал от 3,5 часов CST до 7 секунд. Это также значительно улучшает потребительский опыт.

Tessa использует множество правил для одобрения рекламы, и одно из них — убедиться, что есть хотя бы одна фотография с видимой табличкой rego. Использование существующих сервисов распознавания рего мало поможет в сложных условиях фотосъемки, например, когда угол пластины рего слишком крутой или когда плохое освещение приводит к большому количеству промахов. Чтобы решить эту проблему, мы создали ИИ для обнаружения пластины рего с помощью AWS SageMaker.

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

Подготовка данных

Данные, необходимые для этого проекта, состоят из изображений автомобиля (с видимой пластиной rego) и файла CSV, описывающего метаданные, такие как расположение ограничивающей рамки пластины rego на каждом изображении. Мы загрузили из нашей базы данных около 11 000 изображений автомобилей. Тем не менее, это смешанные фотографии автомобилей с разных ракурсов, на некоторых из которых не видны таблички rego, такие как информационно-развлекательная система GPS, двигатели, багажник и т. д.

Очевидно, наш первый шаг — избавиться от изображений автомобилей, на которых нет номерного знака rego. Для этого мы используем нашу технологию искусственного интеллекта Cyclops.

Cyclops может классифицировать изображения автомобилей по 27 категориям, таким как багажник, пассажирское сиденье, боковое зеркало, приборная панель, полностью заднее и полностью переднее с 97,2. % точности.

Мы использовали Cyclops для категоризации и удаления 9500 изображений автомобилей без номерного знака rego, оставив нам только 1500 изображений. Далее следует неизбежная работа по маркировке 1500 изображений вручную, хотя рабочая нагрузка уже значительно снижена.

Затем мы разделили 1500 изображений на 1300 обучающих и 200 проверочных и загрузили эти изображения в нашу корзину S3 вместе с файлом JSON, который представляет собой отформатированную версию нашего файла CSV, чтобы удовлетворить входные требования AWS SageMaker.

Построение модели

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

Менее чем через 5 минут мы уже приступили к нашей тренировочной работе. Мы постоянно следили за ходом обучения из журнала CloudWatch. Обучение было завершено через час с использованием экземпляра ml.p2.16xlarge, и мы получили точность проверки 93,5 %.

Мы создали конечную точку модели, которая так же проста, как выполнение одной строки кода, и все, у нас была конечная точка API для вызова, готовая для обслуживания логического вывода. Нам потребовалось около 1,5 недель, чтобы добраться до этого момента, когда большая часть времени была потрачена на подготовку данных. Это действительно меняет правила игры, зная, что, по нашему опыту, создание комплексной технологии искусственного интеллекта, подобной этой, заняло у нас не менее 2 месяцев.

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

В качестве дополнительной проверки мы протестировали нашу модель на 1500 изображениях автомобилей под разными углами. К нашему удивлению, мы получили точность только 20%, что намного ниже, чем точность проверки 93,5%, которую мы получили в результате обучения. Более подробный анализ метрик путаницы показал, что частота ложноположительных ошибок (модель говорит, что пластина рего есть, хотя на самом деле ее нет) довольно высока и составляет 80%, что было основным фактором снижения точности. Даже при увеличении порога достоверности до 0,5, жертвуя отзывом, мы все еще получали довольно высокий уровень ложных срабатываний — 4%. Это неприемлемо, так как ложное срабатывание приводит к одобрению объявления без видимой таблички rego, что ставит под угрозу наш процесс утверждения. Напротив, ложный отрицательный результат на самом деле не является препятствием для сделки, поскольку все, что он означает, это просто то, что объявление будет отправлено в нашу службу поддержки клиентов для проверки.

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

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

Решение

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

Так что делать? Пока мы бились головой от отчаяния, мы увидели мандарин 🍊, сидящий в углу нашего стола и запустивший момент лампочки. Нам просто нужен способ включить изображения без пластины rego в наш тренировочный набор, верно?

Алгоритм обнаружения объектов SageMaker позволяет тренироваться с несколькими классами, поэтому мы решили тренироваться с двумя классами: Rego Plate и Mandarin. На изображении, когда нет рего, цифровым образом ставим мандарин. Теперь у каждого изображения есть ограничивающая рамка, и SageMaker доволен.

С очень большой надеждой мы возобновили обучение и тестирование новой модели. Мы снова запустили тест, и оценка показателей путаницы показала гораздо более высокий уровень ложноположительных ошибок на уровне 20% по сравнению с 80% ранее. Кроме того, частота ошибок при пороге достоверности 0,5 составляет всего 0,8% по сравнению с предыдущим значением 4% (измеряется при пороге достоверности 0,5).

Вы также можете видеть из приведенной выше кривой точности и полноты, пересечение между точностью и полнотой для нашей новой модели находится на уровне 0,87, что намного лучше, чем у старой модели с показателем 0,8.

Сводка

AWS SageMaker ускоряет процесс создания ИИ, и мы не слишком беспокоимся о создании инфраструктуры. Это значительно снизило стоимость разработки, которая обычно занимает от 2 месяцев до 2 недель и не требует глубоких технических знаний. Мы также доказали, что можно подавать отрицательные образцы в алгоритм обнаружения объектов, используя поддержку нескольких классов, расширяя возможности и без того потрясающих инструментов. Тем не менее, мы надеемся, что эта возможность будет изначально поддерживаться в будущем обновлении.

Кредиты

Наконец, мы хотели бы поблагодарить Aparna Elangovan и Julian Bright из AWS, которые помогли нам ознакомиться с AWS SageMaker, особенно при построении конвейера CI/CD.

Я также хотел бы отдать должное Eric Yuxuan Lin, инженеру-программисту AI в нашей команде, который работал над этим проектом.