Что делать, если при распознавании изображений обнаруживается неизвестный объект?

глубокое обучение

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

Автор: Пит Уорден
Компиляция: McGL

Несколько дней назад я получил вопрос от Plant Village, команды, с которой я работаю над приложением. Он может обнаруживать болезни растений и получать отличные результаты, когда наводит его на лист, но если вы наведете его на клавиатуру компьютера, он подумает, что это поврежденный урожай.

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

Мы, люди, настолько привыкли классифицировать все в окружающем нас мире, что, естественно, ожидаем таких же способностей от машин. Большинство моделей могут распознавать только очень ограниченные объекты, такие как 1000 категорий оригинального конкурса ImageNet. Важно отметить, что процесс обучения предполагает, что каждый пример, который видит модель, является одной из этих целей, и что прогнозы должны быть в этом наборе. У модели нет возможности сказать «я не знаю», и нет обучающих данных, которые помогут ей научиться этому ответу. Это упрощение имеет смысл в условиях исследования, но вызывает проблемы, когда мы пытаемся использовать модель в реальном мире.

Когда я работал в Jetpac, нам было трудно убедить людей в том, что эта новаторская модель AlexNet стала огромным прорывом, потому что каждый раз, когда мы вручали им демо-телефон с работающей сетью, они наводили телефон себе на лицо, что-то вроде «кислородной маски». " или "ремень безопасности" был бы предсказан. Это связано с тем, что категория конкурса ImageNet не включала ничьих этикеток, но на большинстве фотографий с масками и этикетками ремней безопасности были лица. Еще одна неловкая ошибка заключается в том, что он предсказывает «сиденье для унитаза», когда им указывают на тарелку! Это потому, что в исходном ассортименте не было тарелок, а самым близким белым круглым предметом по внешнему виду был унитаз.

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

Итак, каково решение?

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

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

Этот последний пункт на самом деле затрагивает большую проблему. Прогнозы, которые вы получаете от сети классификации изображений, не являются вероятностями. Они предполагают, что шансы увидеть определенный класс равны частоте появления этого класса в обучающих данных. Если вы попытаетесь использовать классификатор животных, который включает пингвинов в джунглях Амазонки, вы столкнетесь с этой проблемой, поскольку (предположительно) все обычные пингвины дают ложные срабатывания. Даже в городах США редкие породы появляются гораздо чаще в обучающих данных ImageNet, чем в собачьих парках, поэтому они чрезмерно характеризуются как ложные срабатывания. Обычное решение — узнать априорные вероятности ситуаций, с которыми вы столкнетесь в продакшене, а затем использовать эти данные для применения калиброванных значений к выходу сети, чтобы получить результаты, более близкие к истинным вероятностям.

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

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

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

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

источник: Пит warden.com/2018/07/06/…