Зачем компьютеру зрение
Как компьютер учится распознавать чужие картинки и рисовать свои. В гостях у ведущего передачи «Вопрос науки» Алексея Семихатова кандидат физико-математических наук, руководитель группы компьютерного зрения Сколтеха Виктор Сергеевич Лимпицкий.
Мы постоянно, непрерывно занимаемся распознаванием образов. Начиная с того, через что нужно перешагнуть на тротуаре, и заканчивая оценками настроения других людей. Это неудивительно, потому что эволюция настроила нас на распознавание всего, что нужно нам для выживания. Но зачем зрение компьютеру? И что вообще значит «компьютер видит»?
Видеть — значит извлекать полезную информацию из изображения. Эта информация может быть нужна самому роботу. Например, чтобы перемещаться, чтобы манипулировать объектами — если это железный робот, который перемещается и манипулирует объектами. Это может быть виртуальный робот, который обходит интернет и смотрит, что изображено на разных картинках.
А может быть, компьютер хочет сообщить какую-то информацию человеку. Например, врачу — о том, какого размера новообразование у пациента и как оно изменилось с предыдущего визита. Это все примеры целей, для которых может быть нужно компьютерное зрение.
Что в голове у компьютера, когда он на что-то смотрит? Компьютерное зрение использует самые разнообразные алгоритмы. Почти весь университетский курс математики в том или ином виде применяется для систем компьютерного зрения. Но в последние годы определенный подход становится доминирующим — это подход, основанный на машинном обучении: когда мы учим компьютер, показывая ему много-много примеров и ту информацию, которая с ним связана, и ждем, когда компьютер, выучившись чему-то, сможет извлекать информацию из аналогичных изображений, которых он до этого не видел.
Один из алгоритмов машинного обучения — нейросеть. Но в зрении все еще применяются и, наверное, довольно долго будут применяться и другие алгоритмы. Например, «деревья решений» — это простые системы, которые приходят к сложным выводам, отвечая на последовательность довольно простых вопросов. Например, какой пиксель светлее: этот или этот?
Сейчас нейросети постепенно вытесняют этот алгоритм, так как они более универсальны. Обычно, когда мы применяем нейросети, мы берем умную нейросеть, которая уже обучена на каком-то большом корпусе изображений, и доучиваем ее под конкретную задачу.
Компьютер может видеть лучше человека? Перед искусственным интеллектом все время ставятся задачи: догони человека! Во многих областях компьютер уже перегнал. В том числе и в зрении. Компьютер гораздо лучше человека сейчас распознает лица людей на изображениях с хорошей освещенностью, хорошим разрешением, где много информации, на которой компьютер может основывать решение.
Есть другая человеческая способность — двойственное зрение. Это умение создавать изображения и делиться этими изображениями. Эта развивающаяся область выросла на стыке компьютерного зрения и компьютерной графики. Нейросеть распознает изображение и дорисовывает.
Допустим, задача нашей нейросети — распознавать стулья. Нам эта задача кажется очень простой. Мы с вами отлично распознаем где стул, а где не стул. Но стулья на самом деле очень разнообразные. Лет десять назад люди говорили, что вот когда мы научимся распознавать стулья — это будет чуть ли не создание искусственного интеллекта.
Но сегодня нейросеть может не просто построить стул, но и сделать гибрид двух изображений стульев. Это очень сложная задача даже для дизайнера. А можно скрещивать не стулья, а определенным образом стилизовать изображение, скрестив портрет и какой-то художественный стиль, что с успехом делают популярные мобильные приложения.
Как это работает? На самом деле очень просто. Мы берем и строим изображение, которое вызывает в нейросети ощущение, что она смотрит на два фото одновременно. Нейроны в нейросети имеют разную глубину залегания. Глубокие слои, те нейроны, которые получаются в конце нейросети, после того как изображение прошло несколько слоев обработки, отвечают за более абстрактную часть изображения. А когда мы обращаем внимание на портретную часть изображения, мы смотрим на более мелкие, более поверхностные нейроны, которые лежат на меньшей глубине.
В мозгу у человека тоже много слоев (хотя и меньше, чем у нейросети), и у нас тоже бывает такое, что поверхностно я вижу круги, а когда немножко подумаю, вижу, скажем, лицо! И действительно: чем глубже мы идем в человеческую нейросеть, тем более абстрактные образы распознают нейроны.
Но нейросети идут дальше. На фото ниже все люди придуманы нейросетью с использованием технологии, которая разрабатывалась последние несколько лет. Эта технология называется «противоборствующие нейронные сети».
Чтобы создать эти изображения, пришлось тренировать не одну нейросеть, а две. Одна нейросеть производит рисование. Она создает эту картинку. И поначалу она производит очень плохие картинки. А работа второй нейросети заключается в том, чтобы критиковать первую. Указывать ей на недостатки и помогать улучшать свои способности. В распоряжении второй нейросети, которая называется «критиком» или «дискриминатором», большое количество изображений. Настоящих. В данном случае это были изображения всяких разных звезд, знаменитостей. На каждом шаге алгоритма эта критикующая нейросеть учится распознавать подделку, которую производит первая нейросеть. Как учитель рисования, она говорит второй нейросети: «Все твои подделки отличаются от настоящих фотографий вот здесь, вот в этих местах. И эти места тебе надо изменить».
Чем проще работа, чем она рутиннее, тем проще задачи зрения, которые у нее возникают, тем быстрее компьютер туда доберется и, скорее всего, вытеснит людей. Например, компьютер может брать изображение и пролистывать огромную картотеку, глядя, не приходил ли этот человек уже за кредитом в какое-нибудь отделение банка по всей стране. Это работает уже сегодня.
Но не все задачи пока что компьютер может решить хорошо. Он, например, не может понять, что это изображение смешно, а это не смешно. Есть первые попытки, и они работают очень плохо.
Через 50 лет нас совершенно не будет удивлять тот факт, что компьютер видит стул. Или что компьютер рисует лица, которые неотличимы от настоящих.