...

Основы компьютерного зрения и его применение в различных областях

Компьютерное зрение

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

Задачи компьютерного зрения

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

Идентификация

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

Распознавание объектов

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

Самым простым методом детекции объектов является метод скользящего окна методом R-CNN(англ. Regions with Convulational Neural Network — Выделение регионов с помощью свертоных сетей), при котором мы проходимся некоторым окном фиксированного размера по каждому кусочку картинки, и применяем к нему простой классификатор, обученный распознавать заранее определенный набор объектов. Модификации этого метода, такие как Faster R-CNN применяются до сих пор.

Сегментация изображений

Основная статья: Сегментация изображений

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

Типичные примеры изображений, обработанных алгоритмами сегментации

Оценка положения

Задача оценки положения объекта(англ. Pose Estimation), в некотором роде продолжающая задачу сегментации. Заключается в выделении некоторого каркаса объекта (например скелета, если речь идет о людях) и определении положения этого каркаса на изображении. Этот скелет может быть использован в последствии например для предсказания направления движения. В зависимости от количества рассматриваемых объектов различают одиночную оценку положения(англ. Single-person pose estimation) и множественную(англ. Multi-person pose estimation). Различие состоит в том, что во втором случае необходимо также учитывать, что объекты могут накладываться друг на друга. Для выполнения этой задачи сначала обрезается фон, оставляя только изображения непосредственно объектов, а затем для каждого из объектов с помощью сверточных нейронных сетей выделяются области суставов, которые затем соединяются.

Пример применения алгоритмов pose_estimation к изображению. Источник: [2]

Распознавание текста

Одна из ключевых задач компьютерного зрения. Сначала с помощью алгоритмов детекции выделяется область в которой текст написан, затем производится непосредственно распознавание текста например с помощью алгоритмов сегментации. При этом задачи распознавания текста написанного на листе бумаги, и распознавания текста написанного где-то на изображении (“in the wild”), например текст на дорожном знаке, номер машины и т. д., сильно различаются, в силу наличия в последнем случае помех, которые мешают выделить конкретные буквы. В этом случае может помочь, например обучение предсказания буквы по остальным буквам в слове.

Пример реальной задачи распознавания текста — Распознование номеров на дверях. Источник: [3]

Генерация объектов

Задача состоит в том, чтобы по известному набору объектов научится создавать похожие объекты, но при этом не совпадающие ни с одним из тестовых. Например создавать анимационных персонажей в стилистике мультфильма, нарисовав руками только пару из них. Для этого применяют такие архитектуры как генеративно состязательные сети(англ. Generative adversarial network), при которой сеть делится на две, одна из которых стремится создать объект, а вторая его отбраковать, или вариационный автокодировщик, обучающийся на плотностях вероятностей исходных данных с целью создать объект похожий на исходный, но не совпадающий с ним.

Пример генерации изображения методом GAN. Источник: [4]

Анализ видео

Так как видео представляет из себя набор изображений, одинакового размера, обычно сделанных через разные интервалы времени, то для него применимы все те задачи, которые были описаны ранее. Также появляются такие задачи как предсказание движения, заключающееся в том, чтобы по набору кадров предсказать положение объекта в следующих кадрах, или более общая задача ситуационный осведомленности(англ. Situation Awarness), заключающаяся в том, чтобы для каждого объекта в видео уметь определить его положение и статус на всех кадрах видео.

Компьютерное зрение. Задачи, области применения, перспективы

Мы продолжаем рассказывать о технологии компьютерного зрения. По этой ссылке можно почитать первый пост, где были описаны принципы его работы на конкретных технических задачах. А сегодня мы поговорим о том, в каких отраслях и для чего применяют компьютерное зрение.

8818 просмотров
Что уже произошло за последние пять лет и что изменится в следующую пятилетку

Начнем с того, что в сфере распознавания объектов случился внушительный прорыв: за последние пять лет улучшились (с точки зрения hardware) основы обучения нейросетей и архитектурные решения; произошел заметный сдвиг в точности распознавания объектов на открытых дата-сетах — от 70 до 98% точности.

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

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

Где применяют компьютерное зрение

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

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

Теперь пройдемся по задачам, которые ставятся в каждой из этих областей.

Ритейл — золотая жила для машинного обучения

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

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

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

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

Промышленность

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

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

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

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

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

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

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

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

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

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

Александра Царева, специалист Центра машинного обучения «Инфосистемы Джет»

Просто о сложном. Как работает компьютерное зрение

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

Что это может быть?

Для слайда «Что это может быть?» специально использовано изображение собаки, похожей на кота: на этой фотографии еще более-менее понятно, что это собака, но в целом, если бы я смотрела серию фотографий серых котов, я бы отнесла это животное к ним. Таким образом, мои способности к генерализации отличий изображений с серым котом и серым щенком с плюшевой шерстью имеют предел.

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

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

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

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

Основные задачи распознавания изображений:

1. Классификация изображения — мы смотрим на картинку целиком и присваиваем ей некий класс из заранее нам известных.

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

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

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

3. Восстановление изображений. Нейросеть убирает шум и улучшает качество картинки, но я неслучайно выбрала изображение, которое с точки зрения человека распознано неудачно:

Эта иллюстрация — результат работы одного открытого проекта.

Напомню: нейросеть очень чувствительна к тому, на каком наборе изображений она обучалась. У нас есть опыт, который мы получали на протяжении всей нашей жизни, а у нейросети есть набор изображений, которые ей показали для объяснения определенных общих принципов. Так как этот проект, использованный для восстановления фотографии бывшего президента США, сделан русскоязычными разработчиками, мы можем предположить, что в датасете, на котором обучалась нейросеть, не было достаточного количества примеров фотографий людей с темным цветом кожи (или они могли быть недостаточно разнообразны). Из-за этого происходит искажение, которое зрителю-человеку очевидно — ведь нам знаком оригинал. С точки зрения нейросети это должно быть изображение сильно загорелого белого человека.

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

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

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

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

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

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

4. Еще одна из задач касается исключительно видео — отслеживание движущегося объекта.

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

Если вам интересна тема развития методов обработки object detection с помощью нейросетей, рекомендую прочитать статью моего коллеги.

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

Александра Царева, ведущий специалист Центра машинного обучения ИТ-компании «Инфосистемы Джет»

При подготовке материала использовались источники:
https://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D0%B7%D1%80%D0%B5%D0%BD%D0%B8%D0%B5
https://vc.ru/ml/166105-kompyuternoe-zrenie-zadachi-oblasti-primeneniya-perspektivy
https://vc.ru/u/536956-infosistemy-dzhet/162112-prosto-o-slozhnom-kak-rabotaet-kompyuternoe-zrenie

Оцените статью