Компьютерное зрение: Компьютерное зрение — Википедия
Компьютерное зрение — Википедия
Компьютерное зрение (иначе техническое зрение) — теория и технология создания машин, которые могут производить обнаружение, отслеживание и классификацию объектов.
Как научная дисциплина, компьютерное зрение относится к теории и технологии создания искусственных систем, которые получают информацию из изображений. Видеоданные могут быть представлены множеством форм, таких как видеопоследовательность, изображения с различных камер или трехмерными данными, например с устройства Kinect или медицинского сканера.
Как технологическая дисциплина, компьютерное зрение стремится применить теории и модели компьютерного зрения к созданию систем компьютерного зрения. Примерами применения таких систем могут быть:
- Системы управления процессами (промышленные роботы, автономные транспортные средства).
- Системы видеонаблюдения.
- Системы организации информации (например, для индексации баз данных изображений).
- Системы моделирования объектов или окружающей среды (анализ медицинских изображений, топографическое моделирование).
- Системы взаимодействия (например, устройства ввода для системы человеко-машинного взаимодействия).
- Системы дополненной реальности.
- Вычислительная фотография, например для мобильных устройств с камерами.
Компьютерное зрение также может быть описано как дополнение (но не обязательно противоположность) биологическому зрению. В биологии изучается зрительное восприятие человека и различных животных, в результате чего создаются модели работы таких систем в терминах физиологических процессов. Компьютерное зрение, с другой стороны, изучает и описывает системы компьютерного зрения, которые выполнены аппаратно или программно. Междисциплинарный обмен между биологическим и компьютерным зрением оказался весьма продуктивным для обеих научных областей.
Подразделы компьютерного зрения включают воспроизведение действий, обнаружение событий, слежение, распознавание образов, восстановление изображений и некоторые другие.
Современное положение
Область компьютерного зрения может быть охарактеризована как молодая, разнообразная и динамично развивающаяся. И хотя существуют более ранние работы, можно сказать, что только с конца 1970-х началось интенсивное изучение этой проблемы, когда компьютеры смогли управлять обработкой больших наборов данных, таких как изображения. Однако эти исследования обычно начинались с других областей, и, следовательно, нет стандартной формулировки проблемы компьютерного зрения. Также, и это даже более важно, нет стандартной формулировки того, как должна решаться проблема компьютерного зрения. Вместо этого, существует масса методов для решения различных строго определённых задач компьютерного зрения, где методы часто зависят от задач и редко могут быть обобщены для широкого круга применения. Многие из методов и приложений все ещё находятся в стадии фундаментальных исследований, но всё большее число методов находит применение в коммерческих продуктах, где они часто составляют часть большей системы, которая может решать сложные задачи (например, в области медицинских изображений или измерения и контроля качества в процессах изготовления). В большинстве практических применений компьютерного зрения компьютеры предварительно запрограммированы для решения отдельных задач, но методы, основанные на знаниях, становятся всё более общими.
Важную часть в области искусственного интеллекта занимает автоматическое планирование или принятие решений в системах, которые могут выполнять механические действия, такие как перемещение робота через некоторую среду. Этот тип обработки обычно нуждается во входных данных, предоставляемых системами компьютерного зрения, действующими как видеосенсор и предоставляющими высокоуровневую информацию о среде и роботе.
Другие области, которые иногда описываются как принадлежащие к искусственному интеллекту и которые используются относительно компьютерного зрения, это распознавание образов и обучающие методы. В результате, компьютерное зрение иногда рассматривается как часть области искусственного интеллекта или области компьютерных наук вообще.
Ещё одной областью, связанной с компьютерным зрением, является обработка сигналов. Многие методы обработки одномерных сигналов, обычно временных сигналов, могут быть естественным путём расширены для обработки двумерных или многомерных сигналов в компьютерном зрении. Однако из-за своеобразной природы изображений существует много методов, разработанных в области компьютерного зрения и не имеющих аналогов в области обработки одномерных сигналов. Особым свойством этих методов является их нелинейность, что, вместе с многомерностью сигнала, делает соответствующую подобласть в обработке сигналов частью области компьютерного зрения.
Помимо упомянутых подходов к проблеме компьютерного зрения, многие из исследуемых вопросов могут быть изучены с чисто математической точки зрения. Например, многие методы основываются на статистике, методах оптимизации или геометрии. Наконец, большие работы ведутся в области практического применения компьютерного зрения — того, как существующие методы могут быть реализованы программно и аппаратно или как они могут быть изменены с тем, чтобы достичь высокой скорости работы без существенного увеличения потребляемых ресурсов.
Связанные области
Компьютерное зрение, Обработка изображений, и Машинное зрение — тесно связанные области. Но до сих пор точно не определено, являются ли они разделами одной, более широкой. При детальном анализе может показаться, что это лишь разные названия одной и той же области. Чтобы не возникало путаницы, принято различать их как направления, сфокусированные на определённом предмете изучения. Ниже представлено описание некоторых из них, наиболее важных:
Обработка изображений или анализ изображений, в основном сосредоточены на работе с двухмерными изображениями, то есть как преобразовать одно изображение в другое. Например, попиксельные операции увеличения контрастности, операции по выделению краёв, устранению шумов или геометрические преобразования, такие как Аффинные преобразования. Данные операции предполагают, что обработка/анализ изображения действуют независимо от содержания самих изображений.
Компьютерное зрение сосредотачивается на обработке трехмерных сцен, спроектированных на одно или несколько изображений. Например, восстановлением структуры или другой информации о трехмерной сцене по одному или нескольким изображениям. Компьютерное зрение часто зависит от более или менее сложных допущений относительно того, что представлено на изображениях.
Машинное зрение сосредотачивается на применении, в основном промышленном, например, автономные роботы и системы визуальной проверки и измерений. Это значит, что технологии датчиков изображения и теории управления связаны с обработкой видеоданных для управления роботом и обработка данных в реальном времени осуществляется аппаратно или программно.
Также существует область, названная Визуализация, которая первоначально была связана с процессом создания изображений, но иногда имела дело с обработкой и анализом. Например, рентгенография работает с анализом видеоданных медицинского применения.
Наконец, распознавание образов является областью, которая использует различные методы для получения информации из видеоданных, в основном, основанные на статистическом подходе. Значительная часть этой области посвящена практическому применению этих методов.
Примеры применения компьютерного зрения
Одним из наиболее важных применений является обработка изображений в медицине. Эта область характеризуется получением информации из видеоданных для постановки медицинского диагноза пациентам. В большинстве случаев, видеоданные получают с помощью микроскопии, рентгенографии, ангиографии, ультразвуковых исследований и томографии. Примером информации, которая может быть получена из таких видеоданных является обнаружение опухолей, атеросклероза или других злокачественных изменений. Также примером может быть измерение размеров органов, кровотока и т. д. Эта прикладная область также способствует медицинским исследованиям, предоставляя новую информацию, например, о строении мозга или качеству медицинского лечения.
Другой прикладной областью компьютерного зрения является промышленность. Здесь информацию получают для целей поддержки производственного процесса. Примером может служить контроль качества, когда детали или конечный продукт автоматически проверяются на наличие дефектов. Другим примером является измерение положения и ориентации деталей, поднимаемых рукой робота.
Военное применение является, пожалуй самой большой областью компьютерного зрения. Очевидными примерами являются обнаружение вражеских солдат и транспортных средств и управление ракетами. Наиболее совершенные системы управления ракетами посылают ракету в заданную область, вместо конкретной цели, а селекция целей производится, когда ракета достигает заданной области, основываясь на получаемых видеоданных. Современное военное понятие, такое как «боевая осведомленность», подразумевает, что различные датчики, включая датчики изображения, предоставляют большой набор информации о поле боя, которая может быть использована для принятия стратегических решений. В этом случае, автоматическая обработка данных используется, чтобы уменьшить сложность или увеличить надежность получаемой информации.
Одними из новых областей применения являются автономные транспортные средства, включая подводные, наземные (роботы, машины), воздушные. Уровень автономности изменяется от полностью автономных (беспилотных) до транспортных средств, где системы, основанные на компьютерном зрении, поддерживают водителя или пилота в различных ситуациях. Полностью автономные транспортные средства используют компьютерное зрение для навигации, то есть для получения информации о месте своего нахождения, для создания карты окружающей обстановки, для обнаружения препятствий. Они также могут быть использованы для определённых задач, например, для обнаружения лесных пожаров. Примерами таких систем могут быть система предупредительной сигнализации о препятствиях на машинах и системы автономной посадки самолетов. Некоторые производители машин демонстрировали системы автономного управления автомобилем, но эта технология все ещё не достигла того уровня, когда её можно запустить в массовое производство.
Другие области применения включают:
- Поддержку создания видеоэффектов для кино и телевидения
- Наблюдение
Типичные задачи компьютерного зрения
Каждая из областей применения компьютерного зрения, описанных выше, связана с рядом задач; более или менее хорошо определённые проблемы измерения или обработки могут быть решены с использованием множества методов. Некоторые примеры типичных задач компьютерного зрения представлены ниже.
Распознавание
Классическая задача в компьютерном зрении, обработке изображений и машинном зрении это определение содержат ли видеоданные некоторый характерный объект, особенность или активность. Эта задача может быть достоверно и легко решена человеком, но до сих пор не решена удовлетворительно в компьютерном зрении в общем случае: случайные объекты в случайных ситуациях.
Существующие методы решения этой задачи эффективны только для отдельных объектов, таких как простые геометрические объекты (например, многогранники), человеческие лица, печатные или рукописные символы, автомобили и только в определённых условиях, обычно это определённое освещение, фон и положение объекта относительно камеры.
В литературе описано различное множество проблем распознавания:
- Распознавание: один или несколько предварительно заданных или изученных объектов или классов объектов могут быть распознаны, обычно вместе с их двухмерным положением на изображении или трехмерным положением в сцене.
- Идентификация: распознается индивидуальный экземпляр объекта. Примеры: идентификация определённого человеческого лица или отпечатка пальцев или автомобиля.
- Обнаружение: видеоданные проверяются на наличие определённого условия. Например, обнаружение возможных неправильных клеток или тканей в медицинских изображениях. Обнаружение, основанное на относительно простых и быстрых вычислениях иногда используется для нахождения небольших участков в анализируемом изображении, которые затем анализируются с помощью приемов, более требовательных к ресурсам, для получения правильной интерпретации.
Существует несколько специализированных задач, основанных на распознавании, например:
- Поиск изображений по содержанию: нахождение всех изображений в большом наборе изображений, которые имеют определённое содержание. Содержание может быть определено различными путями, например в терминах схожести с конкретным изображением (найдите мне все изображения похожие на данное изображение), или в терминах высокоуровневых критериев поиска, вводимых как текстовые данные (найдите мне все изображения, на которых изображено много домов, которые сделаны зимой и на которых нет машин).
- Оценка положения: определение положения или ориентации определённого объекта относительно камеры. Примером применения этой техники может быть содействие руке робота в извлечении объектов с ленты конвейера на линии сборки.
- Оптическое распознавание знаков: распознавание символов на изображениях печатного или рукописного текста, обычно для перевода в текстовый формат, наиболее удобный для редактирования или индексации (например, ASCII).
Движение
Несколько задач, связанных с оценкой движения, в которых последовательность изображений (видеоданные) обрабатываются для нахождения оценки скорости каждой точки изображения или 3D сцены. Примерами таких задач являются:
- Определение трехмерного движения камеры
- Слежение, то есть следование за перемещениями объекта (например, машин или людей)
Восстановление сцены
Даны два или больше изображения сцены, или видеоданные. Восстановление сцены имеет задачей воссоздать трехмерную модель сцены. В простейшем случае, моделью может быть набор точек трехмерного пространства. Более сложные методы воспроизводят полную трехмерную модель.
Восстановление изображений
Задача восстановления изображений это удаление шума (шум датчика, размытость движущегося объекта и т. д.). Наиболее простым подходом к решению этой задачи являются различные типы фильтров, таких как фильтры нижних или средних частот. Более сложные методы используют представления того, как должны выглядеть те или иные участки изображения, и на основе этого их изменение.
Более высокий уровень удаления шумов достигается в ходе первоначального анализа видеоданных на наличие различных структур, таких как линии или границы, а затем управления процессом фильтрации на основе этих данных.
Системы компьютерного зрения
Реализация систем компьютерного зрения сильно зависит от области их применения, аппаратной платформы и требований по производительности. Некоторые системы являются автономными и решают специфические проблемы детектирования и измерения, тогда как другие системы составляют подсистемы более крупных систем, которые уже могут содержать подсистемы контроля механических манипуляторов (роботы), информационные базы данных (поиск похожих изображений), интерфейсы человек-машина (компьютерные игры) и т. д. Однако, существуют функции, типичные для многих систем компьютерного зрения.
- Получение изображений: цифровые изображения получаются от одного или нескольких датчиков изображения, которые помимо различных типов светочувствительных камер включают датчики расстояния, радары, ультразвуковые камеры и т. д. В зависимости от типа датчика, получающиеся данные могут быть обычным 2D изображением, 3D изображением или последовательностью изображений. Значения пикселей обычно соответствуют интенсивности света в одной или нескольких спектральных полосах (цветные или изображения в оттенках серого), но могут быть связаны с различными физическими измерениями, такими как глубина, поглощение или отражение звуковых или электромагнитных волн, или ядерным магнитным резонансом.
- Предварительная обработка: перед тем, как методы компьютерного зрения могут быть применены к видеоданным с тем, чтобы извлечь определённую долю информации, необходимо обработать видеоданные, с тем чтобы они удовлетворяли некоторым условиям, в зависимости от используемого метода. Примерами являются:
- Повторная выборка с тем, чтобы убедиться, что координатная система изображения верна
- Удаление шума с тем, чтобы удалить искажения, вносимые датчиком
- Улучшение контрастности, для того, чтобы нужная информация могла быть обнаружена
- Масштабирование для лучшего различения структур на изображении
- Выделение деталей: детали изображения различного уровня сложности выделяются из видеоданных. Типичными примерами таких деталей являются:
- Линии, границы и кромки
- Локализованные точки интереса, такие как углы, капли или точки: более сложные детали могут относиться к структуре, форме или движению.
- Детектирование/Сегментация: на определённом этапе обработки принимается решение о том, какие точки или участки изображения являются важными для дальнейшей обработки. Примерами являются:
- Выделение определённого набора интересующих точек
- Сегментация одного или нескольких участков изображения, которые содержат характерный объект
- Высокоуровневая обработка: на этом шаге входные данные обычно представляют небольшой набор данных, например набор точек или участок изображения, в котором предположительно находится определённый объект. Примерами являются:
- Проверка того, что данные удовлетворяют условиям, зависящим от метода и применения
- Оценка характерных параметров, таких как положение или размер объекта
- Классификация обнаруженного объекта по различным категориям
Программное обеспечение
- OpenCV Библиотека алгоритмов компьютерного зрения с открытым исходным кодом.
- PCL Открытая библиотека для работы с трехмерными облаками точек.
См. также
Литература
- Л. Шапиро, Дж. Стокман. Компьютерное зрение = Computer Vision. — М.: Бином. Лаборатория знаний, 2006. — 752 с. — ISBN 5-94774-384-1.
- Дэвид Форсайт, Жан Понс. Компьютерное зрение. Современный подход = Computer Vision: A Modern Approach. — М.: «Вильямс», 2004. — 928 с. — ISBN 5-8459-0542-7.
- А.А. Лукьяница ,А.Г. Шишкин. Цифровая обработка видеоизображений. — М.: «Ай-Эс-Эс Пресс», 2009. — 518 с. — ISBN 978-5-9901899-1-1.
- Желтов С.Ю. и др. Обработка и анализ изображений в задачах машинного зрения. — М.: Физматкнига, 2010. — 672 с. — ISBN 978-5-89155-201-2.
Итоги развития компьютерного зрения за один год / Хабр
Часть первая. Классификация/локализация, обнаружение объектов и слежение за объектом
Этот фрагмент взят из недавней публикации, которую составила наша научно-исследовательская группа в области компьютерного зрения. В ближайшие месяцы мы опубликуем работы на разные темы исследований в области Искусственного Интеллекта — о его экономических, технологических и социальных приложениях — с целью предоставить образовательные ресурсы для тех, кто желает больше узнать об этой удивительной технологии и её текущем состоянии. Наш проект надеется внести свой вклад в растущую массу работ, которые обеспечивают всех исследователей информацией о самых современных разработках ИИ.
Компьютерным зрением обычно называют научную дисциплину, которая даёт машинам способность видеть, или более красочно, позволяя машинам визуально анализировать своё окружение и стимулы в нём. Этот процесс обычно включает в себя оценку одного или нескольких изображений или видео. Британская ассоциация машинного зрения (BMVA) определяет компьютерное зрение как «автоматическое извлечение, анализ и понимание полезной информации из изображения или их последовательности».
Термин понимание интересно выделяется на фоне механического определения зрения — и демонстрирует одновременно и значимость, и сложность области компьютерного зрения. Истинное понимание нашего окружения достигается не только через визуальное представление. На самом деле визуальные сигналы проходят через оптический нерв в первичную зрительную кору и осмысливаются мозгом в сильно стилизованном смысле. Интерпретация этой сенсорной информации охватывает почти всю совокупность наших естественных встроенных программ и субъективного опыта, то есть как эволюция запрограммировала нас на выживание и что мы узнали о мире в течение жизни.
В этом отношении зрение относится только к передаче изображений для интерпретации; а компьютинг указывает на то, что изображения больше походят на мысли или сознание, опираясь на множество способностей мозга. Поэтому многие верят, что компьютерное зрение, истинное понимание визуального окружения и его контекста, прокладывает путь к будущим вариациям Сильного Искусственного Интеллекта благодаря совершенному освоению работы в междоменных областях.
Но не хватайтесь за оружие, потому что мы ещё практически не вышли из зачаточной стадии развития этой потрясающей области. Эта статья должна просто пролить немного света на самые значительные достижения компьютерного зрения в 2016 году. И возможно попытаться вписать некоторые из этих достижений в здравую смесь ожидаемых краткосрочных общественных взаимодействий и, где это применимо, гипотетических прогнозов завершения нашей жизни в том виде, какой мы её знаем.
Хотя наши работы всегда написаны максимально доступным образом, разделы в этой конкретной статье могут показаться немного неясными из-за предмета обсуждения. Мы везде предлагаем определения на примитивном уровне, но они дают только поверхностное понимание ключевых концепций. Концентрируясь на работах 2016 года, мы часто делаем пропуски ради краткости изложения.
Одно из таких очевидных упущений относится к функциональности свёрточных нейронных сетей (CNN), которые повсеместно применяются в области компьютерного зрения. Успех AlexNet в 2012 году, архитектуры CNN, которая ошеломила конкурентов в конкурсе ImageNet, стала свидетельством революции, которая де-факто произошла в этой области. Впоследствии многочисленные исследователи начали использовать системы на основе CNN, а свёрточные нейросети стали традиционной технологией в компьютерном зрении.
Прошло более четырёх лет, а варианты CNN по-прежнему составляют основную массу новых нейросетевых архитектур для задач компьютерного зрения. Исследователи переделывают их как кубики конструктора. Это реальное доказательство мощи как open source научных публикаций, так и глубинного обучения. Однако объяснение свёрточных нейросетей легко растянется на несколько статей, так что лучше оставить его для тех, кто более глубоко разбирается в предмете и имеет желание объяснить сложные вещи понятным языком.
Для обычных читателей, которые желают быстро вникнуть в тему перед продолжением этой статьи, рекомендуем первые два источника из перечисленных ниже. Если вы желаете ещё более погрузиться в предмет, то для этого мы приводим ещё и другие источники:
Для более полного понимания нейросетей и глубокого обучения в целом мы рекомендуем:
- «Нейросети и глубокое обучение» (Nielsen, 2017) — бесплатный онлайновый учебник, который обеспечивает действительно интуитивное понимание всех сложностей нейросетей и глубокого обучения. Даже чтение первой части должно во многом осветить для новичков тему предмета этой статьи.
В целом эта статья разрозненна и скачкообразна, отражая восхищение авторов и дух того, каким образом её предполагается использовать, раздел за разделом. Информация поделена на части в соответствии с нашими собственными эвристиками и суждениями, необходимый компромисс из-за междоменного влияния такого большого количества научных работ.
Надеемся, что читатели извлекут пользу из нашего обобщения информации, и она позволит им усовершенствовать свои знания, независимо от предыдущего багажа.
От лица всех участников,
The M Tank
Задача классификации по отношению к изображениям обычно заключается в присвоении метки целому изображению, например, «кот». С учётом этого локализация может означать определение, где находится объект на этом изображении. Обычно тот обозначается неким ограничивающим прямоугольником вокруг объекта. Нынешние методы классификации на ImageNet уже превосходят группы специально обученных людей по точности классификации объектов.
Рис. 1: Задачи компьютерного зрения
Источник: Fei-Fei Li, Andrej Karpathy & Justin Johnson (2016) cs231n, лекция 8 — слайд 8, пространственная локализация и обнаружение (01/02/2016), pdf
Однако увеличение количества классов, вероятно, обеспечит новые метрики для измерения прогресса в ближайшем будущем. В частности, Франсуа Шолле, создатель Keras, применил новые методы, в том числе популярную архитектуру Xception, к внутреннему набору данных Google с более чем 350 млн изображений с множественными метками, содержащими 17 000 классов.
Рис. 2: Результаты классификации/локализации с конкурса ILSVRC (2010–2016)
Примечание: Конкурс ImageNet Large Scale Visual Recognition Challenge (ILSVRC). Улучшение результатов после 2011–2012 гг связано с появлением AlexNet. См. обзор требований конкурса в отношении классификации и локализации
Источник: Jia Deng (2016). Локализация объектов ILSVRC2016: введение, результаты. Слайд 2, pdf
Интересные выдержки с ImageNet LSVRC (2016):
- Классификация сцены обозначает задачу присвоения меток изображению с определённым классом сцены, таким как «оранжерея», «стадион», «собор» и т.д. В рамках ImageNet в прошлом году прошёл конкурс по классификации сцен на выборке из набора данных Places2: 8 млн изображений для обучения с 365 категориями сцен.
Победил Hikvision с результатом 9% ошибок топ-5. Система сконструирована из набора глубоких нейросетей в стиле Inception и не-таких-глубоких остаточных сетей.
- Trimps-Soushen выиграл в задаче классификации ImageNet с ошибкой классификации 2,99% топ-5 и ошибкой локализации 7,71%. Разработчики составили систему из нескольких моделей (усреднив результаты моделей Inception, Inception-Resnet, ResNet и Wide Residual Networks), а в локализации по меткам победил Faster R-CNN. Набор данных был распределён между 1000 классов изображений с 1,2 млн изображений для обучения. Набор данных для тестирования содержал ещё 100 тыс. изображений, которые нейросети раньше не видели.
- Нейросеть ResNeXt от Facebook финишировала с небольшим отрывом на втором месте с ошибкой классификации 3,03% топ-5. Здесь использовалась новая архитектура, расширяющая оригинальную архитектуру ResNet.
Как можно догадаться, процесс обнаружения объектов делает именно то, что должен делать — обнаруживает объекты на изображениях. Определение обнаружения объектов от ILSVRC 2016 включает в себя выдачу ограничивающих рамок и меток для отдельных объектов. Это отличается от задачи классификации/локализации, поскольку здесь классификация и локализация применяются ко многим объектам, а не к одному доминирующему объекту.
Рис. 3: Обнаружение объектов, где лицо является единственным классом
Примечание: Картинка представляет собой пример обнаружения лиц как обнаружения объектов одного класса. Авторы называют одной из неизменных проблем в этой области обнаружение маленьких объектов. Используя маленькие лица как тестовый класс, они исследовали роль инвариантности размеров, разрешений изображения и контекстуальных обоснований.
Источник: Hu, Ramanan (2016, p. 1)
Одной из главных тенденций 2016 года в области обнаружения объектов стал переход к более быстрым и эффективным системам обнаружения. Это видно по таким подходам как YOLO, SSD и R-FCN в качестве шага к совместным вычислениям на всём изображении целиком. Этим они отличаются от ресурсоёмких подсетей, связанных с техниками Fast/Faster R-CNN. Такую методику обычно называют «тренировкой/обучением от начала до конца» (end-to-end training/learning).
По сути идея состоит в том, чтобы избежать применения отдельных алгоритмов для каждой из подпроблем в изоляции друг от друга, поскольку обычно это повышает время обучения и снижает точность нейросети. Говорится, что такая адаптация нейросетей для работы от начала до конца обычно происходит после работы первоначальных подсетей и, таким образом, представляет собой ретроспективную оптимизацию. Однако техники Fast/Faster R-CNN остаются высокоэффективными и по-прежнему широко используются для обнаружения объектов.
- SSD: Single Shot MultiBox Detector использует единую нейронную сеть, которая выполняет все необходимые вычисления и устраняет необходимость в ресурсоёмких методах предыдущего поколения. Он демонстрирует «75,1% mAP, превосходя сравнимую самую современную модель Faster R-CNN».
- Одной из самых впечатляющих разработок 2016 года можно назвать систему, метко названную YOLO9000: Better, Faster, Stronger, в которой используются системы обнаружения YOLOv2 и YOLO9000 (YOLO означает You Only Look Once). YOLOv2 — это сильно улучшенная модель YOLO от середины 2015 года, и она способна показать лучшие результаты на видео с очень высокой частотой кадров (до 90 FPS на изображениях низкого разрешения при использовании обычного GTX Titan X). Вдобавок к повышению скорости, система превосходит Faster RCNN с ResNet и SSD на определённых наборах данных для определения объектов.
YOLO9000 реализует совмещённый метод обучения для обнаружения и классификации объектов, расширяющий его возможности предсказания за пределы доступных размеченных данных обнаружения. Другими словами, он способен обнаруживать объекты, которые никогда не встречались в размеченных данных. Модель YOLO9000 обеспечивает обнаружение объектов в реальном времени среди более 9000 категорий, что нивелирует разницу в размере наборов данных для классификации и обнаружения. Дополнительные подробности, предобученные модели и видеодемонстрацию см. здесь.
Обнаружение объектов YOLOv2 работает на кадрах фильма с Джеймсом Бондом
- Система Feature Pyramid Networks for Object Detection разработана в научно-исследовательском подразделении FAIR (Facebook Artificial Intelligence Research). В ней применяется «врождённая многомасштабная пирамидальная иерархия глубоких свёрточных нейросетей для конструирования пирамид признаков с минимальными дополнительными затратами». Это означает сохранение мощных репрезентаций без потери скорости и дополнительных затрат памяти. Разработчики добились рекордных показателей на наборе данных COCO (Common Objects in Context). В сочетании с базовой системой Faster R-CNN она превосходит результаты победителей 2016 года.
- R-FCN: Object Detection via Region-based Fully Convolutional Networks. Ещё один метод, в котором разработчики отказались от применения ресурсоёмких подсетей для отдельных регионов изображения сотни раз на каждой картинке. Здесь детектор по регионам полностью свёрточный и производит совместные вычисления на всём изображении целиком. «При тестировании скорость работы составила 170 мс на одно изображение, что в 2,5–20 раз быстрее, чем у Faster R-CNN», — пишут авторы.
Рис. 4: Компромисс между точностью и размером объектов при обнаружении объектов на разных архитектурах
Примечание: По вертикальной оси отложен показатель mAP (mean Average Precision), а по горизонтальной оси — разнообразие мета-архитектур для каждого блока извлечения признаков (VGG, MobileNet… Inception ResNet V2). Вдобавок, малый, средний и большой mAP показывают среднюю точность для малых, средних и крупных объектов, соответственно. По существу, точность зависит от размера объекта, мета-архитектуры и блока извлечения признаков. При этом «размер изображения зафиксирован на 300 пикселях». Хотя модель Faster R-CNN относительно неплохо показала себя в данном примере, важно отметить, что эта мета-архитектура значительно медленнее, чем более современные подходы, такие как R-FCN.
Источник: Huang et al. (2016, p. 9)В вышеупомянутой научной статье представлено подробное сравнение производительности R-FCN, SSD и Faster R-CNN. Из-за сложностей точного сравнения техник машинного обучения мы хотели бы указать на достоинства создания стандартизированного подхода, описанного авторами. Они рассматривают эти архитектуры как «мета-архитектуры», потому что их можно сочетать с разными блоками извлечения признаков, такими как ResNet или Inception.
Авторы изучают компромиссы между точностью и скоростью работы в разных мета-архитектурах, блоках извлечения признаков и разрешениях. Например, выбор блока извлечения признаков сильно изменяет результаты работы на различных мета-архитектурах.
В научных статьях с описанием SqueezeDet и PVANet ещё раз подчёркивается необходимость компромисса между тенденцией повышения скорости работы приложением со снижением потребляемых вычислительных ресурсов — и сохранением точности, которая требуется для коммерческих приложений реального времени, особенно в приложениях беспилотного автотранспорта. Хотя китайская компания DeepGlint показывала хороший пример обнаружения объектов в реальном времени в потоке с камеры видеонаблюдения.
Определение объектов, отслеживание объектов и распознавание лиц в системе DeepGlint
Результаты ILSVRC и COCO Detection Challenge
COCO (Common Objects in Context) — ещё один популярный набор данных изображений. Однако он относительно меньше по размеру и тщательнее курируется, чем альтернативы вроде ImageNet. Он нацелен на распознавание объектов с более широким контекстом понимания сцены. Организаторы проводят ежегодный конкурс на обнаружение объектов, сегментацию и ключевые точки. Вот результаты с конкурсов ILSVRC и COCO на обнаружение объектов:- ImageNet LSVRC, обнаружение объектов на изображениях (DET): Система CUImage показала 66% meanAP. Выиграла в 109 из 200 категорий объектов.
- ImageNet LSVRC, обнаружение объектов на видео (VID): NUIST 80,8% meanAP
- ImageNet LSVRC, обнаружение объектов на видео с отслеживанием: CUvideo 55,8% meanAP
- COCO 2016, обнаружение объектов (ограничивающие рамки): G-RMI (Google) 41,5% AP (абсолютный прирост в 4,2 п.п. по сравнению с победителем 2015 года — MSRAVC)
В обзоре результатов, показанных системами обнаружения объектов 2016 года, ImageNet пишет, что MSRAVC 2015 установила очень высокую планку по производительности (первое появление сетей ResNet на этом соревновании). Производительность систем улучшилась во всех классах. В обоих конкурсах сильно улучшилась локализация. Достигнуто значительное улучшение на объектах маленького размера.Рис. 5: Результаты систем обнаружения на изображениях в конкурсе ILSVRC (2013–2016)
Примечание: Результаты систем обнаружения на изображениях в конкурсе ILSVRC (2013–2016). Источник: ImageNet 2016, онлайновая презентация, слайд 2, pdf
Относится к процессу отслеживания конкретного интересующего объекта или нескольких объектов, на заданной сцене. Традиционно этот процесс применяется в видеоприложениях и системах взаимодействия с реальным миром, где наблюдения производятся после обнаружения исходного объекта. Например, процесс критически важен для систем беспилотного транспорта.- «Полностью свёрточные сиамские сети для отслеживания объектов» сочетает базовый алгоритм отслеживания с сиамской сетью, обученной от начала до конца, которая достигает рекордных показателей в своей области и работает покадрово со скоростью, превышающей необходимую для работы приложений реального времени. Эта научная статья пытается преодолеть недостаток функциональной насыщенности, доступный моделям отслеживания из традиционных методов онлайнового обучения.
- «Обучение глубоких регрессионных сетей отслеживанию объектов на 100 FPS» — ещё одна статья, авторы которой пытается преодолеть существующие проблемы с помощью онлайновых методов обучения. Авторы разработали трекер, который применяет сеть с механизмом прогнозирования событий (feed-forward network) для усвоения общих взаимоотношений в связи с движением объекта, его внешним видом и ориентацией. Это позволяет эффективно отслеживать новые объекты без онлайнового обучения. Показывает рекордный результат в стандартном бенчмарке отслеживания, в то же время позволяя «отслеживать общие объекты на 100 FPS».
Видео работы GOTURN (Generic Object Tracking Using Regression Networks)
- Работа «Глубокие признаки движения для визуального отслеживания» сочетает вручную написанные признаки, глубокие признаки RGB/внешнего вида (из CNN), а также глубокие признаки движения (обученные на оптическом потоке изображений), чтобы достичь рекордных показателей. Хотя глубокие признаки движения являются обычным делом в системах распознавания действий и классификации видео, авторы заявляют, что они впервые используются для визуального отслеживания. Статья получила награду как лучшая статья на конференции ICPR 2016, в секции «Компьютерное зрение и зрение роботов».
«Эта статья представляет собой исследование влияния глубоких признаков движения во фреймворке отслеживания через обнаружение. Далее мы показываем, что дополнительную информацию содержат написанные вручную признаки, глубокие признаки RGB и глубокие признаки движения. Насколько нам известно, мы первые предлагаем совместить информацию о внешнем виде с глубокими признаками движения для визуального отслеживания. Всесторонние эксперименты явно полагают, что наш смешанный подход с глубокими признаками движения превосходит стандартные методы, которые полагаются только на информацию о внешнем виде».
- Статья «Виртуальные миры как промежуточное звено для анализа отслеживания множественных объектов» посвящена проблеме отсутствия присущей реальному миру изменчивости в существующих бенчмарках и наборах данных для отслеживания видео. Статья предлагает новый метод клонирования реального мира с помощью генерации с нуля насыщенных, виртуальных, синтетических, фотореалистичных сред с полным покрытием метками. Этот подход решает некоторые проблемы стерильности, которые присутствуют в существующих наборах данных. Сгенерированные изображения автоматически размечаются точными метками, что позволяет использовать их для разнообразных приложений, помимо обнаружения и отслеживания объектов.
- «Глобальное оптимальное отслеживание объектов с полностью свёрточными сетями». Здесь обсуждаются разнообразие объектов и помехи как две корневые причины ограничений в системах отслеживания объектов. «Предлагаемый нами метод решает проблему разнообразия внешнего вида объектов при помощи полностью свёрточной сети, а также работает с проблемой помех путём динамического программирования».
Компания Яндекс — Технологии — Компьютерное зрение
Способность видеть, то есть воспринимать информацию об окружающем мире с помощью органов зрения, — одно из важных свойств человека. Посмотрев на картинку, мы, почти не задумываясь, можем сказать, что на ней изображено. Мы различаем отдельные предметы: дом, дерево или гору. Мы понимаем, какой из предметов находится ближе к нам, а какой — дальше. Мы осознаём, что крыша домика — красная, а листья на дереве — зелёные. Наконец, мы можем с уверенностью заявить, что наша картинка — это пейзаж, а не портрет или натюрморт. Все эти выводы мы делаем за считанные секунды.
Компьютеры справляются со многими задачами гораздо лучше, чем человек. Например, они гораздо быстрей считают. Однако такое, казалось бы, несложное задание, как найти на картинке дом или гору, может поставить машину в тупик. Почему так происходит?
Человек учится распознавать — то есть находить и отличать от других — объекты всю жизнь. Он видел дома, деревья и горы бессчётное количество раз: как в действительности, так и на картинах, фотографиях и в кино. Он помнит, как выглядят те или иные предметы в разных ракурсах и при разном освещении.
Машины создавались для того, чтобы работать с числами. Необходимость наделить их зрением возникла относительно недавно. Распознавание номерных знаков автомобилей, чтение штрихкодов на товарах в супермаркете, анализ записей с камер наблюдения, поиск лиц на фото, создание роботов, умеющих находить (и обходить) препятствия, — всё это задачи, которые требуют от компьютера способности «видеть» и интерпретировать увиденное. Набор методов, позволяющих обучить машину извлекать информацию из изображения — будь то картинка или видеозапись, — называется компьютерным зрением.
Как учится компьютер
Чтобы компьютер находил на изображениях, скажем, домики, нужно его этому научить. Для этого необходимо составить обучающую выборку. В нашем случае это будет коллекция картинок. Она, во-первых, должна быть достаточно большой (невозможно научить чему-то на двух-трёх примерах), во-вторых — репрезентативной (необходимо, чтобы она отражала природу данных, с которыми мы работаем), а в-третьих, должна содержать как положительные («на этой картинке есть домик»), так и отрицательные («на этой картинке нет домика») примеры.
После того как мы составили выборку, в дело вступает машинное обучение. В ходе обучения компьютер анализирует изображения из выборки, определяет, какие признаки и комбинации признаков указывают на то, что на картинке — домик, и просчитывает их значимость. Если обучение прошло успешно (чтобы удостовериться в этом, проводятся проверки), то машина может применять полученные знания «на практике» — то есть находить домики на любых картинках.
Анализ изображения
Человеку ничего не стоит выделить на картинке важное и неважное. Компьютеру это сделать гораздо сложнее. В отличие от человека, он оперирует не образами, а числами. Для компьютера изображение — это набор пикселей, у каждого из которых есть своё значение яркости или цвета. Чтобы машина смогла получить представление о содержимом картинки, изображение обрабатывают с помощью специальных алгоритмов.
Сначала на картинке выявляют потенциально значимые места — то есть предполагаемые объекты или их границы. Это можно сделать несколькими способами. Рассмотрим, к примеру, алгоритм Difference of Gaussians (DoG, разность гауссиан). Он подразумевает, что исходную картинку несколько раз подвергают размытию по Гауссу, каждый раз используя разный радиус размытия. Затем результаты сравнивают друг с другом. Этот способ позволяет выявить на изображении наиболее контрастные фрагменты — к примеру, яркие пятна или изломы линий.После того как значимые места найдены, их описывают в числах. Запись фрагмента картинки в числовом виде называется дескриптором. С помощью дескрипторов можно быстро, полно и точно сравнить фрагменты изображения, не используя сами фрагменты. Существуют разные алгоритмы получения дескрипторов — например, SIFT, SURF, HOG и многие другие.
Поскольку дескриптор — это числовое описание данных, то сравнение изображений — одна из важнейших задач в компьютерном зрении — сводится к сравнению чисел. Дескрипторы выражены довольно большими числами, поэтому их сравнение может требовать заметных вычислительных ресурсов. Чтобы ускорить вычисления, дескрипторы распределяют по группам, или кластерам. В один и тот же кластер попадают похожие дескрипторы с разных изображений. Операция распределения дескрипторов по кластерам называется кластеризацией.
После кластеризации данный дескриптор изображения сам по себе можно не рассматривать; важным становится лишь номер кластера с дескрипторами, наиболее похожими на данный. Переход от дескриптора к номеру кластера называется квантованием, а сам номер кластера — квантованным дескриптором. Квантование существенно сокращает объём данных, которые нужно обработать компьютеру.
Опираясь на квантованные дескрипторы, компьютер выполняет такие задачи, как распознавание объектов и сравнение изображений. В случае с распознаванием квантованные дескрипторы используются для обучения классификатора — алгоритма, который отделяет изображения «с домиком» от изображений «без домика». В случае со сравнением картинок компьютер сопоставляет наборы квантованных дескрипторов с разных изображений и делает вывод о том, насколько похожи эти изображения или их отдельные фрагменты. Такое сравнение лежит в основе поиска дубликатов и поиска по загруженной картинке.Это лишь один подход к анализу изображения, поясняющий, как компьютер «видит» предметы. Существуют и другие подходы. Так, для распознавания изображений всё чаще применяются нейронные сети. Они позволяют выводить важные для классификации признаки изображения непосредственно в процессе обучения. Свои методы работы с изображением используются и в узких, специфических областях — например, при чтении штрихкодов.
Где используется компьютерное зрение
В умении распознавать человек, однако, пока оставляет компьютер далеко позади. Машина преуспела лишь в определённых задачах — например, в распознавании номеров или машинописного текста. Успешно распознавать разнородные объекты и произвольные сцены (разумеется, в условиях реальной жизни, а не лаборатории) компьютеру всё ещё очень трудно. Поэтому когда мы вводим в поисковую строку в Яндекс.Картинках слова «карбюратор» или «танцующие дети», система анализирует не сами изображения, а преимущественно текст, который их сопровождает.
Тем не менее, в ряде случаев компьютерное зрение может выступать серьёзным подспорьем. Один из таких случаев — это работа с лицами. Рассмотрим две связанные друг с другом, но разные по смыслу задачи: детектирование и распознавание.
Часто бывает достаточно просто найти (то есть детектировать) лицо на фотографии, не определяя, кому оно принадлежит. Так работает фильтр «Лица» в Яндекс.Картинках. Например, по запросу [формула-1] будут найдены главным образом фотографии гоночных болидов. Если же уточнить, что нас интересуют лица, Яндекс.Картинки покажут фотографии гонщиков.
В иных ситуациях нужно не только отыскать лицо, но и узнать по нему человека («Это — Вася»). Такая функция есть в Яндекс.Фотках. При распознавании система берёт за образец уже размеченные фотографии с человеком, поэтому область поиска сильно сужается. Имея десять фотографий, на которых уже отмечен Вася, узнать его на одиннадцатом снимке будет несложно. Если Вася не хочет, чтобы его знали в лицо, он может запретить отмечать себя на фото.
Одна из самых перспективных сфер применения компьютерного зрения — дополненная реальность. Так называют технологию, которая предусматривает наложение виртуальных элементов (например, текстовых подсказок) на картину реального мира. Примером могут быть, например, мобильные приложения, которые позволяют получить информацию о доме, направив на него камеру телефона или планшета. Дополненная реальность уже применяется в программах, сервисах и устройствах, но пока находится только в начале пути.
Что такое компьютерное зрение и почему оно совершит революцию в экономике :: РБК Тренды
Фото: Scott Warman / Unsplash
Компьютерное зрение в ретейле: умные весы и оплата улыбкой
Поставщики товаров в крупные торговые сети начали снабжать мерчендайзеров планшетами со специальным ПО для распознавания фотографий. Вместо того чтобы проверять наличие товаров, его расстановку и актуальность ценников вручную, торговый представитель просто фотографирует полку. Система сравнивает ее с планограммой и выдает рекомендации: какого товара не хватает, что стоит не на своем месте, где перепутаны ценники или не указана текущая акция. Анализируя полки конкурентов, система мониторит долю полки в динамике.
Например, корпорация Mars реализовала пилотный проект внедрения такой системы в своем подразделении в Казахстане. По итогам пилота принято решение о масштабировании проекта еще в десяти странах присутствия компании.
Запущены пилотные проекты в России, когда системы распознавания и видеоаналитики используются для анализа посещаемости торговых точек, перемещения покупателей, среднего времени пребывания в очереди. Это позволяет оптимизировать рабочий график персонала и сделать пребывание в магазине более комфортным, а обслуживание — быстрым.
В апреле этого года X5 Retail Group объявила о разработке «умных весов», которые с помощью технологии компьютерного зрения идентифицируют товар при взвешивании на кассе. Ритейлер планирует установить 500 таких весов в 100 магазинах сети «Пятерочка». Инновация должна ускорить обслуживание покупателей на кассах.
Платить за покупку улыбкой, выявлять недовольных обслуживанием клиентов, таргетировать рекламу в торговом зале исходя из возраста и пола человека, примерять вещи в виртуальной примерочной — такие проекты уже есть. Пока единичные, но в перспективе пяти-десяти лет они станут повсеместными.
Например, платежная система Alipay начала тестировать систему оплаты на основе компьютерного зрения в 2017 году, реализовав пилотный проект в одном из китайских ресторанов KFC. И теперь в Китае оплата «улыбкой» не является чем-то сверхъестественным, а в борьбу за этот рынок вступила платежная система WeChat Pay. Оплатить покупки, просто улыбнувшись в камеру у кассы, можно в супермаркетах CP Lotus в Пекине и сотнях других магазинов по всей стране.
Международная сеть WalMart тестировала систему, которая при обнаружении покупателя с несчастным лицом оповещала об этом сотрудников магазина. Два года назад эксперимент с распознаванием эмоций покупателей провели в «ДоДо-Пицца». Это позволило компании оценить качество работы сотрудников, мотивировать их «собирать улыбки».
Учебный план освоения компьютерного зрения за 8 недель
Преобразования лиц в FaceApp? Для компьютерного зрения есть задачи и поинтереснее. С чего начать и как продолжить – поможет наш учебный план.
Без компьютерного зрения (англ. computer vision) нынче никуда. Посредством технического зрения могут быть автоматизированы рутинные задачи везде, где есть зрительная информация. Средства computer vision во многих областях уже позволяют добиться лучших результатов, чем человек. Не только по продуктивности, но и, например, относительно качества распознавания объектов.
Профессионалы области востребованы на рынке труда, и сами формируют его, организуя свои компании. Повышается разрешение фото- и видеокамер, растет количество визуальных данных, растут и вычислительные возможности. Компьютеры справляются со всё более трудными задачами распознавания, фильтрации, преобразования и генерации изображений.
Представленный учебный план направлен на то, чтобы вы начали использовать известные решения в области компьютерного зрения для претворения в жизнь собственных идей.
Computer vision – это набор технологий, позволяющих распознавать и интерпретировать визуальную картину мира. Данные – это не только изображения и видео (последовательности кадров), но и трёхмерные объекты. Работа с 3D-сценами особенно актуальна для виртуальной и дополненной реальностей, автопилотов.
Чтобы лучше представлять решаемые с помощью компьютерного зрения проблемы, приведём несколько примеров:
Данный список, конечно, не исчерпывающий. С другими примерами вы встретитесь, занимаясь с перечисленными ниже материалами.
Стоит понимать, что эволюция технологий компьютерного зрения не всегда была связана с искусственным интеллектом и глубоким обучением. Методы компьютерного зрения развиваются более полувека. Но сейчас computer vision часто воспринимается как одна из составляющих искусственного интеллекта.
Действительно, развитие нейросетей повысило интерес к области компьютерного зрения. Однако традиционные методы позволяют результативно реорганизовать данные до того, как они передаются на входной слой нейронной сети. А многие кейсы эффективно решаются и без применения глубокого обучения. Поэтому не пренебрегайте освоением классических идей компьютерного зрения.
Предварительно необходимый багаж знаний следующий:
Относительно математики достаточно такого объёма знаний, чтобы вы понимали шпаргалки по матанализу и алгебре.
Инструменты, которые нужно освоить в первую очередь:
И у OpenCV, и у TensorFlow есть интерфейсы Python.
Можно выделить 4 уровня видения графических данных:
- Низкоуровневое видение. Предварительная обработка изображений, то есть преобразование одного изображения в другое. Например, изменение яркости или чёрно-белое представление.
- Среднеуровневое видение. Вычленение особенных свойств, признаков. Например, выделение окружностей или других линий. Базовая сегментация.
- Совмещение различных видов одного предмета. Например, множество представлений одного объекта или его выделение из трёхмерной сцены.
- Высокоуровневое видение. Анализ обнаруженных атрибутов. Детектирование и классификация объектов. Современное глубокое обучение.
Очевидно, что там, где одному достаточно и недели, другой справится лишь за месяц. Всё предопределяется свободным временем и опытом. Для удобства образовательные блоки мы будем далее называть неделями. Каждому из перечисленных уровней преобразования данных в учебном плане отвечают две недели обучения.
Первая неделя посвящена техническим основам, что вы наверняка использовали, если работали с графическими редакторами вроде Adobe Photoshop:
- Изменение освещённости: яркость, контраст, гамма, выравнивание гистограммы.
- Модификация цветовой палитры: ч/б-преобразование, оттенки серого, насыщенность, баланс белого.
- Линейная фильтрация: размытие и зернистость, детектирование краёв, конволюция.
- Нелинейная фильтрация: медианный и билатеральный фильтры.
- Дизеринг: квантизация изображений, алгоритм Флойда–Стейнберга.
Достаточные сведения о подобных процедурах можно получить из YouTube-плейлиста «Древние секреты компьютерного зрения». В особенности с первой по пятую лекции. В качестве учебника советуем книгу Ричарда Шелиски «Компьютерное зрение: Алгоритмы и приложения». Пока будет достаточно третьей главы.
Чтобы закрепить полученные знания, попробуйте себя в преобразовании изображений с помощью OpenCV. На сайте есть уйма пошаговых электронных пособий, руководствуясь которыми можно во всём разобраться.
Под оптическим потоком подразумевается последовательность изображений объектов, получаемая в результате перемещения наблюдателя или предметов относительно сцены. Для процессов обработки движения объектов подойдёт курс по компьютерному зрению на Udacity, в особенности урок 6. В дополнение к нему полезно посмотреть восьмое видео из упомянутого YouTube-списка и лекцию об оптическом потоке и трекинге. Пригодится и учебник Шелиски, разделы 10.5 и 8.4.
В качестве учебного проекта разберитесь с тем, как с помощью OpenCV отслеживать объект в видеофрейме.
Сегментация предполагает разбиение сцены на совокупность составляющих сегментов (суперпикселей). Алгоритмы сегментации обычно направлены на выделение значимых элементов. Так, преобразование Хафа позволяет найти круги и линии. Настоящим вопросам посвящены две видеолекции. В той же книге о сегментации повествуют разделы 5.2-5.4.
Проект этой недели – вычленение из снимков дороги линий, разделяющих полосы движения. Бесспорно, подобные задачи чрезвычайно важны для компьютерного зрения самоуправляемых электромобилей.
Нередко необходимо найти такие параметры, что в компактной форме опишут имеющиеся зрительные данные. Это позволяет выделять из оптического потока ограниченное количество информации, с которой можно оперативно работать. Для различных данных требуется специфичный подход к фитингу и свои алгоритмы. Посмотрите видео 6 и 7 из этого YouTube-плейлиста. В книге понадобятся пункты 4.3.2 и 5.1.1.
В качестве задания для самостоятельной работы проанализируйте проблему определения координаты места схождения линий на горизонте перспективы.
Что можно сделать при наличии нескольких изображений одного и того же предмета, снятого с разных позиций? К примеру, собрать панораму или трёхмерное представление объекта. Потребуется научиться находить локальный инвариант, преобразовывать и выравнивать изображения, разбираться в гомографии, эпиполярной геометрии и стереометрии.
Если такой набор слов пугает, есть и YouTube-плейлист, и сопроводительное чтение. Для проекта можно взять собственные данные. Например, сфотографировать с разных сторон что-то из кухонной утвари и сделать в OpenCV из альбома плоских изображений 3D-объект.
Итак, умея создавать 3D-объекты из плоских изображений, можно попробовать создать и трёхмерную реальность. Или дополнить имеющуюся. Для этого полезно целиком пройти курс по стереозрению и трекингу на Coursera, а также девятое видео из данного списка.
В качестве проекта попытайтесь реконструировать сцену или сделать трекинг объекта в трехмерном пространстве.
Как говорилось выше, в качестве фреймворка для глубокого обучения удобно использовать TensorFlow. Это один из наиболее популярных фреймворков, поэтому вы без труда отыщете достаточно примеров. Для начала работы с изображениями в TensorFlow пройдите этот туториал. Далее, пользуясь ссылками, рассмотрите следующие темы:
В качестве проекта создайте в TensorFlow нейросеть, определяющую по изображению марку автомобиля или породу собаки.
Хотя нейросетевые технологии и компьютерное зрение эволюционировали независимыми путями, сейчас глубокое обучение представляется одним из стандартов обработки зрительной информации. Современное состояние вопроса раскрывают лекции Стенфордского курса, а также видео 19-20 этого плейлиста. Если захотите большего, по теме Deep Learning у нас тоже есть учебный план.
Проектом заключительной недели можно взять построение генеративно-состязательной нейросети для детектирования лиц. Или любую другую идею, которая наверняка появится к этому времени. У вас будет уже достаточно знаний, чтобы подступиться к её воплощению.
Мы что-то упустили? Напишите об этом в комментариях 😉
Компьютерное зрение всем, даром / Блог компании Издательский дом «Питер» / Хабр
20 лет назад, в 1999 году, компания Kyocera выпустила первый мобильный телефон с цифровой камерой – Visual Phone VP-210. С тех пор, благодаря невероятно большому и растущему рынку мобильных устройств связи, ПЗС-матрицы цифровых камер совершили невероятный скачок по всем параметрам. Чувствительность, диапазон, размер, энергопотребление, но что ещё важнее – цена.
В наших реалиях модуль камеры, вообще-то весьма технологически сложное устройство, может стоить всего несколько долларов. Это кардинально меняет взгляд на многие процессы и задачи. Ранее сложной задачей было заполучить камеру, технически удовлетворяющую минимальным требованиям. Пройдя такое испытание, решение вопросов обработки изображений казалось лишь приятными хлопотами. Теперь же вопрос софта, который будет обрабатывать информацию с камеры, стоит более остро. Планка физического и экономического доступа к технологии упала так низко, что коснулась границы компетентности пользователя.
Давайте на реальных примерах рассмотрим, насколько сложно (или просто) сейчас работать с изображениями и какие задачи под силу айтишнику иной специализации.
Безусловно, главным инструментом для работы с изображениями является Open Source библиотека OpenCV. Написанная на C++ – также имеет интерфейсы для работы с Python, Java, PHP, JavaScript и другими, менее популярными языками. На примере нескольких проектов с использованием OpenCV, опубликованных на хабре в 2018-2019, рассмотрим, какие задачи решались и какие технологии использовались.
1) Умная кормушка: Machine Learning, Raspberry Pi, Telegram, немножко магии обучения + инструкция по сборке
Пост о хоббийном проекте ZlodeiBaal: 27.6k просмотров, 289 закладок. Raspberry Pi B+, камера, OpenCV, Caffe, Python.
2) DIY тепловизор на Raspberry PI или «Кажется теперь я знаю, чем займусь этим летом»
Пост о хоббийном проекте Walker2000: 73.8k просмотров, 425 закладок. Raspberry Pi B+/Raspberry Pi Zero W, тепловизионная матрица, OpenCV, Python.
3) Печать гобелена «Игры престолов» на фискальном принтере с использованием Python
Пост о хоббийном проекте viking_unet: 7,9k просмотров, 50 закладок. Фискальный принтер, OpenCV, Python.
4) StereoPi — наша железка для изучения компьютерного зрения, дронов и роботов
Пост об отечественном железячном проекте Realizator: 14,1k просмотров, 117 закладок. Raspberry Pi, OpenCV.
5) Восстановление смазанных и расфокусированных изображений с помощью фильтра Винера. Реализация на C++ OpenCV
Пост об опыте VladislavBK: 16,7k просмотров, 154 закладки. Nikon, OpenCV, C++.
6) OpenCV на STM32F7-Discovery
Пост о хоббийном проекте 0xdde: 6,4k просмотров, 71 закладка. STM32, OpenCV, Qt, C++.
7) Запускаем свой нейросетевой детектор на Raspberry Pi с помощью Neural Compute Stick и OpenVINO
Пост о хоббийном проекте BeloborodovDS: 14.7k просмотров, 126 закладок. Raspberry Pi. Neural Compute Stick, OpenCV, OpenVINO, C++.
8) Компьютерное зрение и машинное обучение в PHP используя библиотеку opencv
Пост о хоббийном проекте morozovsk: 21.6 тыс просмотров, 236 закладок. OpenCV, PHP, php-opencv.
9) opencv4arts: Нарисуй мой город, Винсент
Пост о компьютерном зрении и нейросетях в браузере dkurt: 5.4k просмотров, 63 закладки. OpenCV, JavaScript, OpenCV.js
10) *Место вакантно*
Последний пункт предназначался для проекта на Java, так как этот язык вполне официально поддерживается OpenCV, однако мне не удалось найти на Хабре подходящий пост. Пишите свои предположения, почему? А ещё лучше пишите пост по теме. Java весьма распространённый язык, и я крайне удивлён столь скудному представлению на хоббийном ландшафте айтишников.
Не трудно подметить – в большинстве случаев авторы впервые работали с OpenCV и компьютерным зрением в частности. Это не помешало им сравнительно небольшими усилиями создать функционирующий проект и даже решать реальные задачи удобным способом.
Постановка задачи компьютерного зрения / Хабр
Последние лет восемь я активно занимаюсь задачами, связанными с распознаванием образов, компьютерным зрением, машинным обучением. Получилось накопить достаточно большой багаж опыта и проектов (что-то своё, что-то в ранге штатного программиста, что-то под заказ). К тому же, с тех пор, как я написал пару статей на Хабре, со мной часто связываются читатели, просят помочь с их задачей, посоветовать что-то. Так что достаточно часто натыкаюсь на совершенно непредсказуемые применения CV алгоритмов.
Но, чёрт подери, в 90% случаев я вижу одну и ту же системную ошибку. Раз за разом. За последние лет 5 я её объяснял уже десяткам людей. Да что там, периодически и сам её совершаю…
В 99% задач компьютерного зрения то представление о задаче, которое вы сформулировали у себя в голове, а тем более тот путь решения, который вы наметили, не имеет с реальностью ничего общего. Всегда будут возникать ситуации, про которые вы даже не могли подумать. Единственный способ сформулировать задачу — набрать базу примеров и работать с ней, учитывая как идеальные, так и самые плохие ситуации. Чем шире база-тем точнее поставлена задача. Без базы говорить о задаче нельзя.
Тривиальная мысль. Но все ошибаются. Абсолютно все. В статье я приведу несколько примеров таких ситуаций. Когда задача поставлена плохо, когда хорошо. И какие подводные камни вас ждут в формировании ТЗ для систем компьютерного зрения.
Первые примеры
Плохие
Одна из самых частых идей, про которую меня спрашивают (даже предлагали взяться) — это распознавание этикеток в магазинах: «Добрый день! Я придумал классный стартап: человек приходит в магазин, снимает ценник, мы находим товар, цену и смотрим в каком магазине товар самый дешевый! Я всё уже сделал, но остался только модуль распознавания!«. За последние два года с аналогичными предложениями мне писали раз пять…
И действительно! В сознании человека, который редко сталкивается с задачами распознавания, есть чёткая картина: «Распознать строчку текста на этикетке — это расплюнуть!». Ведь есть ABBYY, которые распознают текст страницами, есть Smart Engines (1, 2), у которых и карточки с кучей цифр распознаются, и этикетки даже! Задача давно решена! Какая разница, Ikea или Ашан? Все этикетки похожи, единый модуль справится.
Обычно после такого хочется сказать человеку: «Сходите в три разных сети, сделайте десять кадров и посмотрите на них«. На что обычно можно получить ответ: «Что я там не видел! Вчера был в Перекрёстке и смотрел на них!«.
Посмотрим?
Это не самые плохие примеры (фотографии кликабельны). На всех примерах тут человек может прочитать/додумать информацию. А машина?
• Фотографии часто нерезкие, текст расплывается и сливается. Зачастую буквы написаны так близко друг к другу, что сегментация практически невозможна.
• По краям ценников очень много артефактов, часто буквы обрезаны, или по ним идёт полоса.
• Если съёмка со вспышкой — будут блики, часто полностью перекрывающие текст.
• На одном ценнике часто 2-3 цены, написанные разными шрифтами (а часто ценники могут стоять в упор друг к другу).
• Шрифт изменяется даже в пределах одной торговой сети.
• Формат ценников изменяется даже в пределах одной торговой сети.
Некоторые, особо упёртые продолжают настаивать: «Вы всё придумали! Вот есть пост у Smart Engines, где всё работает и ценники распознаются!»
И действительно! Замечательный пример корректно поставленной задачи: ищется прямоугольник заданного размера, на красном фоне, шрифт один и тот же. Определив границы прямоугольника можно примерно уже сегментировать код. Эвристика есть, но минимальная: связать три блока на картинке, расположенных в известном порядке.
Да: будут пересветы, будут блики, уголки могут быть загнуты, кто-то черканёт на ценнике свой автограф, а у кого-то камера всегда выдаёт нерезкие кадры. Но когда вы знаете положение каждой цифры, всё остальное уже не так важно. И в большинстве случаев всё будет работать замечательно.
N.B. Я не говорю, что задача распознавания ценников не решаема в общем случае. Решаема. И сегодняшний прогресс делает это решение всё ближе и ближе. Google уже распознаёт номера домов. А ABBYY настраивается под любой заранее заданный формат текста. Но решение такой задачи находится на границе современных технологий, решение будет неидеально, или будет требовать огромного времени и средств на разработку. Конечно, можно сделать распознавание цены на ценниках (без текста) и такая система будет неплохо работать на некоторых ценниках. А иногда можно прочитать штрих-код (из приведённых ценников открытым форматом штрих-код написан на одном). Часто есть способы срезать углы и упростить постановку задачи.
Отвлечёмся от этикеток
Вы скажете что это примеры из воздуха и что так не бывает?.. Приведу пример который даже публиковался на Хабре: habrahabr.ru/post/265209.
Прежде чем читать дальше, попробуйте понять, почему метод не будет работать.
— Для тех кому лень читать. Автор предлагает ставить клеймо на дерево из трёх точек. И считает, что пересечения прямых между точками с годичными кольцами позволят однозначно маркировать и классифицировать бревно с камеры.
Вот такую красивую картинку он приводит. Метод сразу ясен и понятен. Неправда ли?
— Сам автор статьи обращался ко мне где-то за неделю до публикации с вопросом, будет ли это всё работать. Я сказал, что скорее всего не будет, привел несколько примеров, а так же сказал, как нужно модифицировать алгоритм, чтобы всё заработало. Но статью он написал в ключе, что это рабочий метод. И никто в десятке комментариев не возразил. Всего два дислайка… (Чорт, каюсь, один из них — я).
Попробуем разобраться. Во-первых, как выглядит «годичное кольцо»? Попросим Яндекс выдать нам бревно:
Идеальное. Красивые кольца! Прямо как на рисунке выше. Постойте… А что же это?
Тоже кольца… А что если у нас фотоаппарат чуть-чуть промазал с резкостью?
Блин. Половина колец пропало. А если у нас вечереет и поднялось ISO?
Опять…
Ну ладно, может не всё так плохо? Придумаем критерий, чтобы выбирать только достаточно большие годовые полосы, будем генерировать несколько вариантов для каждого дерева. Ок?
Нет, ещё есть трещины, которые могут поменять геометрию и ситуации когда полос вообще почти нет. И это первые 20 идеальных картинок из выдачи Яндекса. Вывод напрашивается за пять минут. Но ведь есть же классная идея! Зачем смотреть картинки из поиска?..
Сама по себе задача, на мой взгляд, скорее решаема. Если брать отметки как опорные точки и сравнивать теми же методами, которыми сравнивают глаза. Но, опять же, пока не протестируешь базу хотя бы на пару сотен примеров — никогда не узнаешь, можно ли работу успешно выполнить. Но почему-то такое предложение не понравилось автору статьи… Жаль!
Это два наиболее осмысленных и репрезентативных, на мой взгляд, примера. По ним можно понять, почему нужно абстрагироваться от идеи и смотреть реальные кадры.
Ещё несколько примеров, с которыми я встречался, но уже в двух словах. Во всех этих примерах у людей не было ни единой фотографии на момент, когда они начали спрашивать о реализуемости задачи:
1) Распознавание номеров у марафонцев на футболках по видеопотоку (картинка из Яндыкса)
Хы. Пока готовил статью натолкнулся на это. Очень хороший пример, на котором видны все потенциальные проблемы. Это и разные шрифты, это и нестабильный фон с тенями, это нерезкость и замятые углы. И самое главное. Заказчик предлагает идеализированную базу. Снятую на хороший фотоаппарат солнечным днём. Попробуйте посмотреть номера спортсменов на майках поискав поиском яндыкса.
Хы.Хы За пару часов до публикации автор заказа внезапно вышел на меня сам с предложением взяться за работу, от которого я отказался:) Всё же это карма, добавить это в статью.
2) Распознавание текста на фотографиях экранов телефонов
3) И, мой любимый пример. Письмо на почту:
» нужна программа в коммерческий сектор для распознания избражений.
Алгоритм работы такой. оператор программы задает изображения предмета(-ов) в нескольких ракурсах и т.п.
потом при появленини этого или максимально похожего изображения предмета, програма совершает требуемое/заданное действие.
деталей естественно не могу пока рассказать.» (орфография, пунктуация сохранены)
Хорошие
Но не всё так плохо! Ситуация, когда задача ставится идеально, встречается часто. Моя любимая: «Нужно ПО для автоматического подсчета лосей на фото.
Пример фото с лосями высылаю.»
Оба фото кликабельны.
До сих пор жалею, что с этой задачей не срослось. Сначала кандидатскую защищал и был занят, а потом заказчик как-то энтузиазм потерял (или нашёл других исполнителей).
В постановке нет ни малейшей трактовки решения. Только две вещи: «что нужно сделать», «входные данные». Много входных данных. Всё.
Мысль — вывод
Единственный способ поставить задачу — набрать базу и определить методологию работы по этой базе. Что вы хотите получить? Какие границы применимости алгоритма? Без этого вы не только не сможете подойти к задаче, вы не сможете её сдать. Без базы данных заказчик всегда сможет сказать «У вас не работает такой-то случай. Но это же критичная ситуация! Без него я не приму работу».
Как сформировать базу
Наверное, всё это был приквел к статье. Настоящая статья начинается тут. Идея того, что в любой задаче CV и ML нужна база для тестирования — очевидна. Но как набрать такую базу? На моей памяти три-четыре раза первая набранная база спускалась в унитаз. Иногда и вторая. Потому что была нерепрезентативна. В чём сложность?
Нужно понимать, что «сбор базы» = «постановка задачи». Собранная база должна:
1. Отражать проблематику задачи;
2. Отражать условия, в которых будет решаться задача;
3. Формулировать задачу как таковую;
4. Приводить заказчика и исполнителя к консенсусу относительно того, что было сделано.
Время года
Пару лет назад мы с другом решили сделать систему, которая могла бы работать на мобильниках и распознавать автомобильные номера. Что-то даже получилось, и мы писали серию статей про это (http://habrahabr.ru/company/recognitor/ ). На тот момент мы были весьма умудрённые в CV системах. Знали, что нужно собирать такую базу, чтобы плохо было. Чтобы посмотрел на неё и сразу понял все проблемы. Мы собрали такую базу:
Сделали алгоритм, и он даже неплохо работал. Давал 80-85% распознавания выделенных номеров.
Ну да… Только летом, когда все номера стали чистые и хорошие точность системы просела процентов на 5…
Биометрия
Достаточно много в своей жизни мы работали с биометрией (1, 2, 3). И, кажется, наступили на все возможные грабли при сборе биометрических баз.
• База должна быть собрана в разных помещениях. Когда аппарат для сбора базы стоит только у разработчиков — рано или поздно выяснится, что он завязан на соседнюю лампу.
• В биометрических базах нужно иметь 5-10 снимков для каждого человека. И эти 5-10 снимков должны быть сделаны в разные дни, в разное время дня. Подходя к биометрическому сканеру несколько раз подряд, человек сканируется одним и тем же способом. Подходя в разные дни — по-разному. Некоторые биометрические характеристики могут немножко меняться в течении суток.
• База, собранная из разработчиков нерепрезентативна. Они подсознательно считываются так, чтобы всё сработало…
• У вас новая модель сканера? А вы уверены, что он работает со старой базой?
Вот глаза собранные с разных сканеров. Разные поля работы, разные блики, разные тени, разные пространственные разрешения, и.т.д.
База для нейронных сетей и алгоритмов обучения
Если у вас в коде используется какой-то алгоритм обучения — пиши пропало. Вам нужно формировать базу для обучения с его учётом. Предположим, в вашей задаче распознавания имеется два сильно отличающихся шрифта. Первый встречается в 90% случаев, второй в 10%. Если вы нарежете эти два шрифта в данной пропорции и обучитесь по ним единым классификатором, то с высокой вероятностью буквы первого шрифта будут распознаваться, а буквы второго нет. Ибо нейронная сеть/SVM найдёт локальный минимум не там, где распознаётся 97% первого шрифта и 97% второго, а там где распознаётся 99% первого шрифта и 0% второго. В вашей базе должно быть достаточно примеров каждого шрифта, чтобы обучение не ушло в другой минимум.
Как сформировать базу при работе с реальным заказчиком
Одна из нетривиальных проблем при сборе базы — кто это должен делать. Заказчик или исполнитель. Сначала приведу несколько печальных примеров из жизни.
Я нанимаю вас, чтобы вы решили мне задачу!
Именно такую фразу я услышал однажды. И блин, не поспоришь. Но вот только базу нужно было бы собирать на заводе, куда бы нас никто не пустил. А уж тем более, не дал бы нам монтировать оборудование. Те данные, которые давал заказчик были бесполезны: объект размером в несколько пикселей, сильно зашумлённая камера с импульсными помехами, которая периодически дергается, от силы двадцать тестовых картинок. На предложения поставить более хорошую камеру, выбрать более хороший ракурс для съёмки, сделать базу хотя бы на пару сотен примеров, заказчик ответил фразой из заголовка.
У нас нет времени этим заниматься!
Однажды директор весьма крупной компании (человек 100 штата + офисы во многих странах мира) предложил пообщаться. В продукте, который выпускала эта компания часть функционала была реализована очень старыми и очень простыми алгоритмами. Директор рассказал нам, что давно грезит о модификации данного функционала в современные алгоритмы. Даже нанимал две разных команды разработчиков. Но не срослось. Одна команда по его словам слишком теоретизировала, а вторая никакой теории не знала и тривиальщину делала. Мы решили попробовать.
На следующий день нам выдали доступ к огромному массиву сырой информации. Сильно больше, чем я бы сумел просмотреть за год. Потратив на анализ информации пару дней мы насторожились спросили: «А что собственно вам нужно от новых алгоритмов?». Нам назвали десятка два ситуаций, когда текущие алгоритмы не работают. Но за пару дней я видел лишь одну-две указных ситуации. Просмотрев ещё пачку данных смог найти ещё одну. На вопрос: «какие ситуации беспокоят ваших клиентов в первую очередь?», — ни директор ни его главные инженеры не смогли дать ответа. У них не было такой статистики.
Мы исследовали вопрос и предложили алгоритм решения, который мог автоматически собрать все возможные ситуации. Но нам нужно было помочь с двумя вещами. Во-первых, развернуть обработку информации на серверах самой фирмы (у нас не было ни достаточной вычислительной мощности, ни достаточного канала к тому месту, где хранились сырые данные). На это бы ушла неделя работы администратора фирмы. А во-вторых, представитель фирмы должен был классифицировать собранную информацию по важности и по тому как её нужно обрабатывать (это ещё дня три). К этому моменту мы уже потратили две-три недели своего времени на анализ данных, изучение статей по тематике и написание программ для сбора информации (никакого договора подписано на этот момент не было, всё делали на добровольных началах).
На что нам было заявлено: «Мы не можем отвлекать на эту задачу никого. Разбирайтесь сами». На чём мы откланялись и удалились.
Заказчик даёт базу
Был и другой случай. На этот раз заказчик поменьше. А система, которой занимается заказчик разбросана по всей территории страны. Зато заказчик понимает, что мы базу не соберём. И из всех сил старается собрать базу. Собирает. Очень большую и разнообразную. И даже уверяет, что база репрезентативна. Начинаем работать. Почти доделываем алгоритм. Перед сдачей выясняется, что на собранной базе-то алгоритм работает. И условиям договора мы удовлетворяем. Но вот база-то была нерепрезентативной. В ней нет 2/3 ситуаций. А те ситуации, что есть — представлены непропорционально. И на реальных данных система работает сильно хуже.
Вот и получается. Мы старались. Всё что обещали — сделали, хотя задача оказалась сильно сложнее, чем планировали. Заказчик старался. Потратил много времени на сбор базы.
Но итоговый результат — хреновый. Пришлось что-то придумывать на ходу, хоть как-то затыкать дырки…
Так кто должен сформировать базу?
Проблема в том, что очень часто задачи компьютерного зрения возникают в сложных системах. Системах, которые делались десятки лет многими людьми. И разобраться в такой системе часто сильно дольше, чем решить саму задачу. А заказчик хочет чтобы разработка началась уже завтра. И естественно, предложение заплатить за подготовку ТЗ и базы сумму в 2 раза больше стоимости задачи, увеличить сроки в 3 раза, дать допуск к своим системам и алгоритмам, выделить сотрудника, который всё покажет и расскажет, вызывает у него недоумение.
На мой взгляд решение любой задачи компьютерного зрения требует постоянного диалога между заказчиком и исполнителем, а так же желания заказчика сформулировать задачу. Исполнитель не видит всех нюансов бизнеса заказчика, не знает систему изнутри. Я ни разу не видел чтобы подход: «вот вам деньги, завтра сделайте мне решение» сработал. Решение-то было. Но работало ли оно как нужно?
Сам я как огня пытаюсь шарахаться от таких контрактов. Работаю ли я сам, или в какой-то фирме, которая взяла заказ на разработку.
В целом ситуацию можно представить так: предположим, вы хотите устроить свою свадьбу. Вы можете:
• Продумать и организовать всё самому от начала до конца. По сути данный вариант — «решать задачу самому».
• Продумать всё от начала до конца. Написать все сценарии. И нанять исполнителей для каждой роли. Тамаду для того чтобы гости не скучали, ресторан, чтобы все приготовили и провели. Написать основную канву для тамады, меню для ресторана. Этот вариант — это диалог. Обеспечить данными исполнителя, расписать всё, что требуется.
• Можно продумать большими блоками, не вникая в детали. Нанять тамаду, пусть делает, что делает. Не согласовывать меню ресторана. Заказать модельеру подбор платья, причёски, имиджа. Головной боли минимум, но когда начнутся конкурсы на раздевание, то можно понять что что-то было сделано не так. Далеко не факт, что сформулировав задачу в стиле «распознайте мне символ» исполнитель и заказчик поймут одно и то же.
• А можно всё заказать свадебному агентству. Дорого, думать совсем не надо. Но вот, что получится — уже не знает никто. Вариант — «сделайте мне хорошо». Скорее всего, качество будет зависеть от стоимости. Но не обязательно
Есть ли задачи, где база не нужна
Есть. Во-первых, в задачах, где база — это слишком сложно. Например, разработка робота, который анализирует видео, и по нему принимает решения. Нужен какой-то тестовый стенд. Можно сделать базы на какие-то отдельные функции. Но сделать базу по полному циклу действий зачастую нельзя. Во-вторых, когда идёт исследовательская работа. Например, идёт разработка не только алгоритмов, но и устройства, которым будет набираться база. Каждый день новое устройство, новые параметры. Когда алгоритм меняется по три раза в день. В таких условиях база бесполезна. Можно создавать какие-то локальные базы, изменяющиеся каждый день. Но что-то глобальное неосмысленно.
В-третьих, это задачи, где можно сделать модель. Моделирование это вообще очень большая и сложная тема. Если возможно сделать хорошую модель задёшево, то конечно нужно её делать. Хотите распознать текст, где есть только один шрифт — проще всего создать алгоритм моделирования ( пример такой задачи ).
Научный подход
А как же учёные? Неужели под каждую работу они собирают отдельную базу?
Обычно нет. В интернете можно найти очень много открытых баз данных. Обычно универсальных, для каких-то классических примеров. Например есть несколько сайтов с базами для биометрии (самый известный). Есть сайты с базами для тестирования различных алгоритмов обучения (1 2 3).
Проблема всех этих баз зачастую в том, что они малоприменимы и нерепрезентативны. Взять например легендарный MNIST — базу изображений цифр с ручным написанием:
Все алгоритмы машинного распознавания тестируются на ней. Всё бы хорошо, но… Топовые алгоритмы давным давно имеют точности вида 99.5%, 99.6%, 99.6351%, и.т.д. Не распознаётся 30-40 картинок, которые всем хорошо известны. Половину из них даже человеку нереально распознать. Хитрыми настройками можно чуть-чуть поправить точность и сделать +0.1%. Но ведь понятно, что ни к реальным данным, а уж там более к качественной оценке алгоритма ничего этого отношения не имеет.
Зачастую получается, что написанный по таким базам алгоритм будет работать только в тех условиях и при тех параметрах при которых собрана вся база.
Приводите свои примеры!
На хабре есть множество людей, которые занимаются обработкой изображений и наверняка имеют большой опыт в этом (статьи некоторых из них я читал ещё будучи студентом): SmartEngines sergeypid BelBES mephistopheies rocknrollnerd YUVladimir Nordavind BigObfuscator Vasyutka
(Простите, если кого отметил не по делу, но большинство из отмеченных писали классные статьи по CV и ML). Наверняка у вас есть собственные мысли о том, как сделать постановку задачи идеальной и собрать классную базу. Поделитесь? А может закритикуете написанное, как ересь от начала до конца?:)
Самые захватывающие применения компьютерного зрения в различных отраслях промышленности
19 августа 2020 года
Автор Ирина Перегуд и Анастасия Жаровских
Концепция компьютерного зрения была впервые представлена в 1970-х годах. Первоначальные идеи были захватывающими, но технологии для их воплощения просто не существовало. Только в последние годы мир стал свидетелем значительного технологического скачка, который поставил компьютерное зрение в список приоритетов многих отраслей.
С 2012 года, когда в Университете Торонто были сделаны первые значительные открытия в области компьютерного зрения, технология улучшалась в геометрической прогрессии.Сверточные нейронные сети (CNN), в частности, стали предпочтительной нейронной сетью для многих специалистов по данным, поскольку она требует очень небольшого предварительного программирования по сравнению с другими алгоритмами обработки изображений. В последние несколько лет CNN успешно применялись для идентификации лиц, объектов и дорожных знаков, а также для обеспечения зрения роботов и беспилотных автомобилей.
Расширенный доступ к изображениям также способствовал росту популярности приложений компьютерного зрения. Такие веб-сайты, как ImageNet, обеспечивают практически мгновенный доступ к изображениям, которые можно использовать для обучения алгоритмов.И это только начало. Всемирная библиотека изображений и видео растет с каждым днем. Согласно анализу Morgan Stanley, 3 миллиона изображений ежедневно публикуются в сети через Snapchat, Facebook, Facebook Messenger, Instagram и WhatsApp, и большинство из них принадлежит Facebook.
Выручка мирового рынка искусственного интеллекта (ИИ) компьютерного зрения с 2015 по 2019 год по приложениям
Источник: Statista
Будущее компьютерного зрения.Грядут новые приложения
Компьютерное зрение — быстро развивающаяся отрасль, которая применяется во многих наших повседневных продуктах. Компании электронной коммерции, такие как Asos, добавляют на свои веб-сайты функции визуального поиска, чтобы сделать процесс покупок более плавным и персонализированным.
Вот несколько примеров компьютерного зрения.
Apple представила Face ID в 2017 году. В 2018 году они анонсировали его лучшую версию, основанную на нейронных сетях. Третье поколение Face ID появилось на сцене в 2019 году.Благодаря мощному датчику распознавания лиц он стал на 30% быстрее. Сегодня Face ID используется миллионами людей для разблокировки телефонов, совершения платежей и доступа к личным данным. Более того, Apple позволила пользователям лучше распознавать свои лица в масках. Последнее обновление iPhone iOS 13.5 упростило весь процесс. Теперь у пользователей больше шансов разблокировать свои телефоны с помощью Face ID, или, если это не удается, их просят ввести свой PIN-код.
Источник: Unsplash
И с каждым годом все больше денег вкладывается в новые предприятия.AngelList, американская платформа, объединяющая стартапы и инвесторов, перечисляет 529 компаний под ярлыком этой технологии. Средняя оценка этих компаний — 5,2 миллиона долларов каждая. Многие из них находятся в процессе привлечения от 5 до 10 миллионов долларов на разных этапах финансирования. Можно с уверенностью сказать, что в развитие технологий вкладывается много денег.
Итак, почему приложения компьютерного зрения набирают такую популярность? Из-за потенциальных выгод, которые можно получить от замены человека компьютером в определенных сферах нашей жизни.
Как люди, мы используем наши глаза и мозг для анализа нашего визуального окружения. Нам это кажется естественным, и мы делаем это очень хорошо. С другой стороны, компьютер не может делать это автоматически. Ему нужны алгоритмы и приложения компьютерного зрения, чтобы узнавать, что он «видит». Это требует больших усилий, но как только компьютер научится это делать, он сможет делать это лучше, чем любой человек на Земле.
Это может сделать процессы быстрее и проще, заменив любую визуальную активность.В отличие от людей, которые могут быть ошеломлены или предвзяты, компьютер может видеть многие вещи одновременно с высокой детализацией и анализировать, не «уставая». Точность компьютерного анализа может принести огромную экономию времени и улучшить качество и тем самым высвободить ресурсы, требующие вмешательства человека. Пока это применимо только к простым процессам, но многие отрасли успешно расширяют границы возможностей технологии.
Приложения компьютерного зрения в различных отраслях промышленности
Применение технологий компьютерного зрения очень разнообразно и может быть адаптировано для многих отраслей по-разному.Некоторые варианты использования происходят за кулисами, а другие более заметны. Скорее всего, вы уже пользовались продуктами или услугами, усиленными нововведением.
Автомобильная промышленность
Некоторые из самых известных приложений компьютерного зрения были реализованы компанией Tesla с помощью функции автопилота. Автопроизводитель запустил свою систему помощи водителю еще в 2014 году с несколькими функциями, такими как центрирование полосы движения и самостоятельная парковка, но он собирается создать полностью автономные автомобили где-то в 2018 году.
Такие функции, как автопилот Tesla, стали возможны благодаря таким стартапам, как Mighty AI. Он предлагает платформу для создания точных и разнообразных аннотаций к наборам данных для обучения, проверки и тестирования алгоритмов, связанных с автономными транспортными средствами.
Источник: Unsplash
Производство
Компьютерное зрение в сочетании с датчиками может творить чудеса с критически важным оборудованием. Сегодня эта технология используется для проверки важных заводов или оборудования.Сбои и проблемы инфраструктуры можно предотвратить с помощью компьютерного зрения, которое достаточно разумно, чтобы оценить ее работоспособность и эффективность. Многие компании синхронизируют профилактическое обслуживание со своей инфраструктурой, чтобы поддерживать свои инструменты в хорошем состоянии. Например, программное обеспечение ZDT от FANUC — это программное обеспечение для профилактического обслуживания, предназначенное для сбора изображений с камер, прикрепленных к роботам. Затем эти данные обрабатываются для диагностики неисправностей и выявления любых потенциальных проблем.
Источник: Unsplash
Розничная торговля
Эта инновация произвела фурор и в розничной торговле.
Walmart использует компьютерное зрение для отслеживания краж на кассах и предотвращения убытков в 1000 магазинах по всей стране. Они развернули программу обнаружения пропущенных сканирований, которая использует камеры для мгновенного обнаружения ошибок и сбоев сканирования. Как только ошибка обнаруживается, технология информирует менеджеров по кассе, чтобы они могли ее устранить. Эта инициатива помогает уменьшить «сжатие», которое сочетает в себе кражу, ошибки сканирования и мошенничество. На данный момент программа доказала свою эффективность в оцифровке наблюдения за кассами и предотвращении потерь.
Источник: Unsplash
Стартап Mashgin работает над решением, аналогичным Amazon Go. Компания работает над киоском самообслуживания, который использует компьютерное зрение, 3D-реконструкцию и глубокое обучение для одновременного сканирования нескольких товаров без необходимости использования штрих-кодов. Продукт заявляет, что сокращает время выезда до 10 раз. Их основными клиентами являются кафетерии и столовые, принадлежащие Compass Group.
Финансовые услуги
Хотя технология еще не доказала, что она является революционной в мире страхования и банковского дела, несколько крупных игроков внедрили ее для привлечения новых клиентов.
Банк Америки знаком с ИИ. Они большие поклонники аналитики данных и используют ее для эффективного управления мошенничеством. Медленно, но верно они переходят на компьютерное зрение. Они применяют его для разрешения споров о выставлении счетов. Анализируя данные о спорах, технология быстро выносит вердикт и экономит время сотрудников. Caixabank также приветствует компьютерное зрение. В 2019 году они разрешили своим клиентам снимать деньги через банкоматы с помощью распознавания лиц. Банкомат может распознавать 16 000 точек на изображении, чтобы подтвердить личность человека.
Здравоохранение
В сфере здравоохранения компьютерное зрение может принести реальную пользу. Хотя компьютеры не заменят полностью медицинский персонал, существует хорошая возможность дополнить рутинную диагностику, которая требует много времени и опыта врачей-людей, но не вносит значительного вклада в окончательный диагноз. Таким образом, компьютеры служат помощником для медицинского персонала.
Например, Gauss Surgical производит монитор крови в реальном времени, который решает проблему неточного измерения кровопотери во время травм и операций.Монитор поставляется с простым приложением, которое использует алгоритм, который анализирует изображения хирургических губок, чтобы точно предсказать, сколько крови было потеряно во время операции. Эта технология позволяет ежегодно экономить около 10 миллиардов долларов на ненужных переливаниях крови.
Одна из основных проблем, с которой сталкивается система здравоохранения, — это объем данных, которые производят пациенты. По оценкам, данные, связанные со здравоохранением, ежегодно увеличиваются в три раза. Сегодня мы, пациенты, полагаемся на банк знаний медицинского персонала для анализа всех этих данных и постановки правильного диагноза.Иногда это может быть сложно.
Проект Microsoft InnerEye работает над частичным решением этой проблемы путем разработки инструмента, который использует ИИ для анализа трехмерных радиологических изображений. Эта технология потенциально может ускорить процесс в 40 раз и предложить наиболее эффективные методы лечения.
Источник: Microsoft
Сельское хозяйство
Сельское хозяйство всегда имело глубокие традиции. Компьютерное зрение призвано изменить это.Что именно может дать технология? Он может предложить руку помощи в картографировании, анализе почвы, подсчете поголовья, оценке урожайности и ее спелости и многом другом. RSIP Vision разработал множество решений для сельского хозяйства. Используя глубокое обучение, сенсорные и спутниковые изображения, они могут оценить сезонный урожай перед сбором урожая. Они позволили фермерам производить оценку урожайности с помощью своих смартфонов или планшетов. Однопочвенная платформа упрощает сельское хозяйство. Они разрабатывают решения, которые помогают собирать полевые данные и контролировать растения.Что еще более важно, технология может помочь выполнять рутинные и трудоемкие задачи, такие как посадка, сбор урожая и оценка здоровья и развития растений. Все вместе, это помогает фермерам упростить свою работу.
Источник: Unsplash
Наблюдение
Нововведение обеспечивает безопасность общественных мест, таких как автостоянки, метро, железные дороги и автобусные станции, дороги и шоссе и т. Д. Применение компьютерного зрения в целях безопасности разнообразно.Это распознавание лиц, обнаружение толпы, обнаружение ненормального поведения человека, обнаружение незаконных парковок, обнаружение превышающих скорость транспортных средств и многое другое. Технология помогает усилить безопасность и предотвратить разного рода аварии. Racetrack представила решения для видеонаблюдения, которые обнаруживают ненормальную деятельность и информируют менеджеров о необходимости вмешательства.
Источник: Unsplash
Проблемы прикладного компьютерного зрения
Как показано выше, технология прошла долгий путь с точки зрения того, что она может сделать для различных отраслей.Однако эта область все еще относительно молода и подвержена проблемам.
Недостаточно точен для реального мира
Одним из основных аспектов, который, кажется, является фоном для большинства проблем, является тот факт, что технология все еще несопоставима с человеческой зрительной системой, которую она, по сути, пытается имитировать.
Алгоритмы компьютерного зрения могут быть довольно хрупкими. Компьютер может выполнять только те задачи, которым он был обучен, и не справляется с новыми задачами, требующими другого набора данных.Например, научить компьютер тому, что такое понятие, сложно, но необходимо, чтобы он научился сам.
Хорошим примером является концепция книги. В детстве мы знаем, что такое книга, и через некоторое время можем различать книгу, журнал или комикс, понимая, что они принадлежат к одной и той же общей категории предметов.
Для компьютера это обучение намного труднее. Проблема усугубляется, когда мы добавляем в уравнение электронные и аудиокниги. Как люди, мы понимаем, что все эти элементы относятся к одной и той же концепции книги, в то время как для компьютера параметры книги и аудиокниги слишком разные, чтобы их можно было объединить в одни и те же группы элементов.
Чтобы преодолевать такие препятствия и оптимально функционировать, алгоритмы компьютерного зрения сегодня требуют участия человека. Специалистам по обработке данных необходимо выбрать правильную архитектуру для типа входных данных, чтобы сеть могла автоматически изучать функции. Неоптимальная архитектура может привести к результатам, не имеющим ценности для проекта. В некоторых случаях вывод алгоритма может быть улучшен с помощью других типов данных, таких как аудио и текст, для получения высокоточных результатов.
Другими словами, технологии все еще не хватает высокого уровня точности, который требуется для эффективного функционирования в реальном, разнообразном мире. Поскольку разработка этой технологии все еще продолжается, от работающих над ней групп специалистов по анализу данных требуется большая терпимость к ошибкам.
Отсутствие высококачественных данных
Нейронные сети, используемые для приложений компьютерного зрения, легче обучать, чем когда-либо прежде, но для этого требуется много высококачественных данных. Это означает, что алгоритмам требуется много данных, которые конкретно относятся к проекту, чтобы обеспечить хорошие результаты.Несмотря на то, что изображения доступны в Интернете в большем количестве, чем когда-либо, решение многих реальных проблем требует высококачественных маркированных обучающих данных. Это может обойтись довольно дорого, потому что маркировку должен делать человек.
Возьмем, к примеру, проект Microsoft InnerEye. Инструмент использует компьютерное зрение для анализа радиологических изображений. Алгоритм, лежащий в основе этого, скорее всего, требует хорошо аннотированных изображений, на которых четко обозначены различные физические аномалии человеческого тела.Такую работу должен выполнять рентгенолог с опытом работы и наведенным глазом.
По данным Glassdoor, средняя базовая зарплата радиолога составляет 290 000 долларов в год, или почти 200 долларов в час. Учитывая, что за час можно анализировать около 4-5 изображений, а адекватный набор данных может содержать тысячи из них, правильная маркировка изображений может оказаться очень дорогостоящей.
Для решения этой проблемы специалисты по обработке данных иногда используют предварительно обученные нейронные сети, которые изначально были обучены на миллионах изображений в качестве базовой модели.При отсутствии достоверных данных это адекватный способ добиться лучших результатов. Однако алгоритмы могут узнавать о новых объектах только «глядя» на реальные данные.
Ключевые выводы
Теперь, когда технология, наконец, догнала оригинальные идеи пионеров компьютерного зрения 70-х годов, мы видим, что эта технология применяется во многих различных отраслях. И крупные игроки, такие как Facebook, Tesla и Microsoft, а также небольшие стартапы находят новые способы, как программное обеспечение компьютерного зрения может улучшить банковское дело, вождение автомобиля и здравоохранение.
Основным преимуществом технологии является высокая точность, с которой она может заменить человеческое зрение при правильном обучении. Есть ряд процессов, которые сегодня выполняются людьми, которые могут быть заменены приложениями искусственного интеллекта и устранят ошибки из-за усталости, сэкономят время и значительно сократят расходы.
Какими бы хорошими ни были алгоритмы компьютерного зрения сегодня, они все еще страдают от некоторых серьезных проблем. Первый — это отсутствие хорошо аннотированных изображений для обучения алгоритмов оптимальной работе, а второй — отсутствие точности при применении к реальным изображениям, отличным от изображений из обучающего набора данных.
Работайте с InData Labs над вашим прорывным приложением для компьютерного зрения
У вас есть проект, но вам нужна помощь в его реализации? Запланируйте вводную консультацию с нашими инженерами по глубокому обучению, чтобы изучить вашу идею и узнать, можем ли мы помочь.
.
Компьютерное зрение | Microsoft Azure
Продажи:
:
Найдите местный номер- Мой аккаунт
- Портал
войти в систему
Бесплатный аккаунт
- Обзор
Решения
Продукты
Рекомендуемые
Рекомендуемые
Изучите некоторые из самых популярных продуктов Azure
AI + машинное обучение
AI + машинное обучение
Создавайте приложения следующего поколения с использованием возможностей искусственного интеллекта для любого разработчика и любого сценария
Аналитика
Аналитика
Сбор, хранение, обработка, анализ и визуализация данных любого разнообразия, объема и скорости
- Служба аналитики Azure Synapse Analytics с непревзойденным временем получения аналитических данных (ранее — хранилище данных SQL)
- Azure DatabricksБыстрая, простая и совместная аналитическая платформа на основе Apache Spark
- HDInsightProvision облачные кластеры Hadoop, Spark, R Server, HBase и Storm
- Фабрика данныхПростая гибридная интеграция данных в масштабе предприятия
- Машинное обучениеСоздание, обучение и развертывание моделей от облака до периферии
- Azure Stream Analytics Аналитика в реальном времени для быстро движущихся потоков данных из приложений и устройств
- Хранилище озера данных AzureМассивно масштабируемые и безопасные функции озера данных на основе хранилища BLOB-объектов Azure
- Службы аналитики AzureДвигатель аналитики корпоративного уровня как услуга
- Концентраторы событийПолучение телеметрии от миллионов устройств
- Узнать больше
- Узнать больше
Блокчейн
Блокчейн
Создавайте приложения на основе блокчейнов и управляйте ими с помощью набора интегрированных инструментов
Вычислить
Вычислить
Получите доступ к облачным вычислительным мощностям и масштабируйтесь по запросу — и платите только за те ресурсы, которые вы используете
Контейнеры
Контейнеры
Ускорение разработки и управления контейнерными приложениями с помощью интегрированных инструментов
Базы данных
Базы данных
Поддерживайте быстрый рост и ускоряйте внедрение инноваций с помощью безопасных, полностью управляемых служб баз данных корпоративного уровня
DevOps
.
Компьютерное зрение | Microsoft Azure
Продажи:
:
Найдите местный номер- Мой аккаунт
- Портал
войти в систему
Бесплатный аккаунт
- Обзор
Решения
Продукты
Рекомендуемые
Рекомендуемые
Изучите некоторые из самых популярных продуктов Azure
AI + машинное обучение
AI + машинное обучение
Создавайте приложения следующего поколения с использованием возможностей искусственного интеллекта для любого разработчика и любого сценария.
Аналитика
Аналитика
Собирайте, храните, обрабатывайте, анализируйте и визуализируйте данные любого разнообразия, объема и скорости.
Блокчейн
Блокчейн
Создавайте приложения на основе блокчейнов и управляйте ими с помощью набора интегрированных инструментов
Вычислить
Вычислить
Получите доступ к облачным вычислительным мощностям и масштабируйтесь по запросу — и платите только за используемые ресурсы.
Контейнеры
Контейнеры
Ускорьте разработку контейнерных приложений и управление ими с помощью интегрированных инструментов
.
Компьютерное зрение | Microsoft Azure
Продажи:
:
Найдите местный номер- Мой аккаунт
- Портал
Войти в систему
Бесплатный аккаунт
- Обзор
Решения
Продукты
Рекомендуемые
Рекомендуемые
Изучите некоторые из самых популярных продуктов Azure
AI + машинное обучение
AI + машинное обучение
Создавайте приложения следующего поколения с использованием возможностей искусственного интеллекта для любого разработчика и любого сценария
Аналитика
Аналитика
Сбор, хранение, обработка, анализ и визуализация данных любого разнообразия, объема и скорости
Блокчейн
Блокчейн
Создавайте приложения на основе блокчейнов и управляйте ими с помощью набора интегрированных инструментов
Вычислить
Вычислить
Получите доступ к облачным вычислительным мощностям и масштабируйтесь по запросу — и платите только за те ресурсы, которые вы используете
Контейнеры
Контейнеры
Ускорение разработки и управления контейнерными приложениями с помощью интегрированных инструментов
.