Компьютер распознает все — уже завтра
Наш подписчик Евгений Гордеев пишет в своем блоге о мечте: сфоткать, например, понравившийся колесный диск чужого автомобиля на светофоре, загнать в поиск — и тут же получить результат: материал, марку, цену. По нашей просьбе член клуба «Сноб» Степан Пачиков рассказывает, что отделяет нас от таких чудес, какой будет эволюция распознавания образов. Степан знает, о чем говорит: он был пионером в разработке софта для распознавания рукописных почеркушек на наладонниках. А его революционная программа Evernote берет фото вашей книжной полки, находит надписи на корешках и позволяет искать по ним нужную книгу!
Возьмем, к примеру, распознавание текста. Одно дело, когда программе известно, что данное изображение содержит только печатный текст на русском языке и ничего больше, а совсем другая задача — определить, есть ли на данной фотографии текст на любом языке.
Аналогично с распознаванием лиц на фотографиях. Скажем, перед нами фотография пляжа, а нем несколько человек в разных позах. Можно поставить разные задачи:
1. определить, есть ли на фотографии лица;
2. найти на фотографии лица (с этими первыми двумя задачами довольно прилично справляется Apple iPhoto 9.0);
3. определить типы лиц (мужское, женское, детское, антисоветское);
4. узнать лицо (идентифицировать фамилию, имя).
Давайте остановимся на проблеме «узнать лицо», когда оно найдено на фотографии и локализовано.
Самый простой вариант этой задачи — это определить, похоже ли лицо на какое-то лицо из заданного списка. Эту задачу тоже пытается решить iPhoto 9.0 и делает это на «три с плюсом», если список шаблонов небольшой. При этом программа требует вашего участия, чтобы отсеять ошибки.
Совсем другая и весьма неподъемная задача — это распознавание лиц, когда количество лиц и количество шаблонов измеряется миллионами (а в случае поиска по Интернету, когда вам нужно узнать, кто изображен на данной фотографии — это десятки миллионов).
Распознавание отдельно написанного рукописного слова, написанного данным (заранее известным) человеком — в сотни раз более простая задача, чем распознавание того же слова в длинном тексте, при этом неизвестно кем написанным и при этом — вне контекста. Совсем трудно, когда это все перемешано с рисунками. Яркий тому пример — анекдот про то, как Брежнев читал текст на открытии Олимпиады: «О! О! О! О! О! Дорогие дамы и господа! Дорогие товарищи!»
Задачу анализа, распознавания, идентификации изображений пытаются решить тысячи компаний, институтов и групп исследователей. И на этом месте достигнут некоторый, иногда весьма впечатляющий, прогресс. Я, к примеру, знаю одну российскую фирму, которая за доли секунды анализирует изображение человека, прошедшего сквозь металоконтрольную рамку (его снимают в трехмерном измерении в инфракрасном свете) и проверяют по базе в 10 тысяч лиц разыскиваемых преступников). Можно с уверенностью сказать, что лет через 25 машина будет решать эту задачу лучше и быстрее, чем человек.
Хочется хоть примерно понять: как формализуются визуальные объекты? Интуитивно кажется, что буквы формализуются принципиально легче, чем лица или диски автомобилей. Как это делается? Сличение с базой — не по пикселям же, а по каким-то выделенным паттернам; какие есть подходы к тому, чтобы объяснить машине, что нос — это нос?
Вы затронули один из самых важных аспектов распознавания — язык описания объекта. Скажем, в распознавании рукописных текстов мы были весьма успешны, так как взяли за основу язык описания рукописных (русских и европейских языков), который был разработан Шелей Губерманом (одним из активных участников семинара Гельфанда). Этот язык мы называли Xr-elements (по-русски мы их звали хренятинами). В основе письменности всего семь основных элементов (петель, закорючек) и их положение по отношению к базовой линии — строчке, на которой они написаны.
Какой конкретно язык описания лиц используют те или иные программы, я не знаю, но думаю, что он есть, и думаю, что его примерно можно описать: большой овал, два маленьких овала внутри большого и выше экватора, ну и так далее :)
Решение любой задачи в науке (и жизни!) — это, в первую очередь, создание адекватного языка описания проблемы. Это 99% решения задачи. В этом смысле самый великий человек, на мой взгляд, был Карл Линней — первый систематик в биологии, автор понятия «вид».
Линней — приятно слышать :) Так значит, я правильно мыслю: эволюция этих усилий будет идти по пути создания языков для разных классов объектов (лиц, машин, зданий), и, может быть, общего языка для сортировки — чтобы решить, каким языком проверять данное изображение?
Я так думаю. Так меня учил Шеля Губерман. А высший уровень искусственного интеллекта — это способность машины самой создавать язык описания объектов, то есть сначала выявлять закономерность, классифицировать и создавать эффективный язык описания. На первом этапе мы (люди) создаем язык и учим ему машину. Но вскоре она будет это делать сама, без нашей помощи и без нашего участия.