Нижегородцы подарили компьютерам зрение
Газета "Нижегородские новости"
Подписка на газетуЗрением обладают не только живые существа. Компьютеры тоже умеют «видеть». И айтишники Нижнего Новгорода имеют к этому самое непосредственное отношение. О том, как нижегородцы подарили компьютерам зрение, в рамках проекта «Неймарк.Лекторий» рассказал представитель компании Huawei, архитектор библиотеки OpenCV Вадим Писаревский.
Распознать изображение
Компьютерное зрение – это технология извлечения информации из изображения. При этом источники изображений могут быть абсолютно разными: смартфон, камеры наблюдения, аэрофотосъемка, рентгеновские снимки. С каждым годом цифровой информации становится все больше и больше, люди уже не успевают ее анализировать в реальном времени. В этом помогает техника. По мере того, как люди создают все более совершенный искусственный интеллект, нужно учить компьютеры воспринимать картинки и понимать их смысл.
Сегодня компьютерное зрение умеет многое. Например, позволяет анализировать позы человека для выстраивания персональной программы тренировок, поведение посетителей для мониторинга социальной дистанции, фотографировать в темноте, а также распознавать текст.
Компьютерное зрение – это набор инструментов, обучающий компьютеры видеть, что перед ними. Нижегородцы создали огромную библиотеку для распознавания изображений, которая используется в большом количестве приложений. Например, с помощью компьютерного зрения анализируется ситуация на дорогах. Оно помогает мониторить ситуацию во время лесных пожаров.
Уникальное хранилище данных
OpenCV – это библиотека, в которой уже примерно миллион строчек кода. Нижегородская команда долгое время работала над ней и продолжает это делать в настоящее время. OpenCV сегодня – это одна из самых больших популярных библиотек компьютерного зрения. Ее используют ведущие
IT-компании, такие как Microsoft, Google, Intel, Nvidia.
Библиотека разрабатывается с 1998 года, публичной она стала в 2000 году, и тогда же она получила название OpenCV. Функциональность ее по современным меркам была весьма скромной: простейшая обработка изображений, калибрация камер, возможность отслеживать движение точек на компьютере… Но некоторые разработанные тогда программы используются и до сих пор. К примеру, когда человек делает фотографию смартфоном, вокруг лиц фотографируемых людей появляются прямоугольники, и на них наводится резкость. Эта функция присутствовала еще в первой версии библиотеки, и написанная тогда программа до сих пор используется практически без изменений. Главное же то, что разработка сразу стала применяться для решения практических задач. Компьютерное зрение стало использоваться, например, на конвейерах промышленных предприятий для определения координат передвигающихся деталей или для контроля правильности пайки электронных плат.
Вначале библиотеку распространяли через один из самых больших в мире веб-сайтов для разработчиков открытого программного обеспечения SourceForge, в общей сложности ее скачали 23 миллиона раз. Сейчас библиотеку распространяют через крупнейший веб-сервис github – это примерно 10 тысяч скачиваний в неделю. Это пятый по популярности проект на С++.
OpenCV популярен среди программистов также как известная всем криптовалюта биткойн. Библиотеку OpenCV как полностью, так и частично, можно использовать в личных целях, а также для образовательных, коммерческих проектов. Это бесплатно, но требуется ссылка на ее использование.
Программисты сумели добиться того, что приложения с использованием компьютерного зрения стали работать в режиме реального времени, и в том числе на совсем маленьких устройствах.
Для этого библиотека была реализована на языке программирования С++. Но в том числе ее можно использовать для написания программ и на других языках – Python, Java, JavaScript, C Sharp. Библиотека большая, но для большинства приложений используется ограниченное число функций – самая популярная – загрузить изображение.
Преимущество библиотеки OpenCV в том, что она не занимает много места, не «съедает» большое количество памяти, она состоит из моделей, что довольно удобно. OpenCV используют и для обучения, а также для создания новых продуктов. Библиотека постоянно пополняется, но каждый новый код проходит тщательную проверку – несколько уровней тестирования.
Кошка или собака
Есть картинка и там есть доминирующий объект. Что это за объект? Например, для поисковых систем сегодня не составляет труда найти изображение кошки. С этим компьютер справляется лучше, чем человек.
Однако 10 – 12 лет назад – эта задача считалась сложной. Решить ее долгое время не удавалось ни с помощью существовавших на тот момент возможностей OpenCV, ни с помощью других средств. В 2012 году Алекс Крижевский придумал AlexNet. Затем эта модель победила в конкурсе ImageNet Large Scale Visual Recognition Challenge. Задачей этого ежегодного соревнования, которое проводится с 1996 года, является классификация 1,3 миллиона фотографий высокого разрешения в обучающем наборе ImageNet на 1000 различных классов. Другими словами, там пытались найти лучшую технологию, которая умеет правильно отделять собак от кошек.
AlexNet представляла собой нейронную сеть глубокого обучения и стала первой моделью, которой удалось показать в соревновании точность более 75 процентов. Кроме того, она вдвое снизила существовавший на то время уровень ошибок при визуальном распознавании ImageNet – до 15,3 процента. Также именно тогда стало понятно, что глубокое обучение обладает значительным потенциалом для применения в реальном мире. Это среди прочего открыло путь к созданию систем визуального распознавания, используемых в различных отраслях промышленности: от сельского хозяйства до промышленного производства. Таким образом, глубокое обучение началось с попыток решения задачи отличить кошку от собаки.
(Глубокое обучение – это разновидность машинного обучения на основе искусственных нейронных сетей. Процесс обучения называется глубоким, так как структура искусственных нейронных сетей состоит из нескольких входных, выходных и скрытых слоев. –Прим. авт.)
Впоследствии были решены и другие задачи, помогающие вычленять нужное изображение. Сегодня компьютерные технологии уже на такой высоте, что человек может описать картинку на любом языке и это изображение будет найдено. Решена такая сложная задача, как автоматическое распознавание текста.
Совместный проект
Компьютерное зрение – это совместный проект IT-специалистов разных стран. Долгое время он был под крылом американской компании Интел. Также большой вклад внесла компания Google, которая инициирует проекты, связанные с компьютерным зрением, и в них участвуют студенты из самых разных стран. Кроме того, стоит отметить вклад китайских университетов и, конечно же, программистов нашей страны – в течение 25 лет именно в Нижнем Новгороде сконцентрировано наибольшее количество разработчиков OpenCV.
Сегодня первые разработчики OpenCV разбросаны по разным компаниям и странам, тем не менее дальнейшая работа над библиотекой продолжается, они развивают такое направление, как глубокое обучение и 3D-зрение.
В компьютерном зрении используется множество алгоритмов из различных областей – вычислительная геометрия, линейная алгебра, теория оптимизации – словом, вся математика, которую изучают в вузах, и ее все равно не хватает. Сейчас с использованием нейронных сетей работать над программами компьютерного зрения – особое удовольствие. «Даже, не умея серьезно программировать, можно делать фантастические вещи», – говорит Вадим Писаревский и призывает студентов участвовать в дельнейшем совершенствовании OpenCV.
Александра Махлина