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

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

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

Решите, нужно ли вам отслеживать объекты или просто обнаруживать их

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

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

Если возможно, заранее определите, сколько объектов вам нужно отслеживать

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

Рассмотрим модель, созданную для отслеживания людей во время футбольного матча. Модель попытается определить, что всего 23 человека, не более: по 11 игроков от каждой команды и один судья. Ограничивая систему, модель позволяет избежать ложных срабатываний (поскольку неуправляемый болельщик на поле может быть идентифицирован как двенадцатый игрок в команде) и смягчает ложноотрицательные результаты. При этом повышается точность идентификации: даже если ваша модель случайно приписывает высокие вероятности быть рефери двум разным людям, только один из них может им быть, а это значит, что вторым не рефералом должен быть кто-то другой.

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

Определите, должно ли ваше приложение работать в режиме реального времени или в автономном режиме.

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

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

Но даже если работа в автономном режиме идеальна, это не выбор «все или ничего». Часть вашего приложения может быть обязана отслеживать объекты по мере их появления, а затем запускать менее критическую ко времени аналитику отслеживания для более точных и/или сложных измерений — независимо от того, ехал ли автомобиль со скоростью 100 миль в час или 115 миль в час во время гонки, и все Мгновенные изменения скорости намного легче ответить в автономном режиме, и они, вероятно, менее интересны непрофессионалам, чем владельцу автомобиля.

Минимизируйте усилия, затрачиваемые на аннотирование, где это возможно

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

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

А для некоторых отслеживаемых объектов в одном наборе данных может потребоваться менее подробная аннотация, чем для других. При обучении беспилотного автомобиля автомобиль, вероятно, должен уметь распознавать такие объекты, как пешеходы, с высокой точностью, что может включать аннотирование этих объектов не только ограничивающими рамками, но и более (часто более трудоемкими) сегментациями изображения. Но неодушевленные объекты, такие как вывески и деревья, могут не вызывать таких опасений по поводу точности. Определение того, когда максимальная точность действительно важна, а когда нет, может значительно сэкономить время на аннотации.

Добавление дополнительных датчиков может помочь, но это дорого обходится

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

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

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

Связаться с сильным

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

*Эта статья была впервые опубликована в блоге Strong Analytics здесь.

Strong Analytics создает науку о данных, машинное обучение и искусственный интеллект корпоративного уровня для поддержки продуктов и решений следующего поколения. Наша команда ученых и инженеров, занимающихся полным стеком данных, ускоряет внедрение инноваций благодаря своему опыту в области разработки, научной строгости и глубокому знанию самых современных технологий. Мы работаем с инновационными организациями всех размеров, от стартапов до компаний из списка Fortune 500. Представьтесь в Twitter или LinkedIn или расскажите нам о своих потребностях в науке о данных.