Шрифт:
Начиная с 2010 года стали поступать сообщения об успехах в области распознавания лиц, среди первых была компания Facebook. Когда эта технология в 2011 помогла идентифицировать в убитом американским спецназом в операции «Копье Нептуна» Усаму бен Ладена, она казалась благом. Но когда стало ясно, насколько эти технологии усиливают возможности «Большого брата», отношения к ним заметно изменилось. В странах с развитой демократией распознавание лиц ограничено и широко обсуждается, а в таких как Китай, и подобных по уровню авторитаризма внедряется по максимуму.
Спустя год мировую общественность совершенно потряс эксперимент, проведенный в лаборатории Google X, он показал способность обученной нейронной сети самостоятельно, или, точнее, почти самостоятельно распознавать изображения, в данном случае фотографии кошек. Выбор такого объекта для распознавания оказался удачен с маркетинговой точки зрения, учитывая популярность фотографий «котиков» в Сети. Эксперимент освещала вся мировая пресса, первой в этом ряду оказалась «Нью-Йорк Таймс», где была опубликована статья самого именитого компьютерного журналиста Джона Маркова. За этой сенсацией стоял совершенно строгий академический доклад, сделанный Эндрю Ыном и его коллегами на 29-й конференции по машинному обучению в Эдинбурге. В эксперименте использовалась 1000 сероверов, собранных в кластер, что позволило моделировать сеть, состоящую из 3 миллионов нейронов и 1,15 миллиарда синапсов. При этом точность распознавания не превысила 16 %. Для сравнения, человеческий мозг состоит из 100 миллиардов нейронов и 1000 триллионов синаптических соединений, это для справки тем, кто намеревается создавать сильный AI. Эксперимент детально описан в статье Building High-level Features Using Large Scale Unsupervised Learning, ее перевод названия нуждается в комментарии. В задачах CV распознаваемые характеристики можно разделить на простые (low-level features) и сложные (high-level features). Поэтому оно должно выглядеть так «Создание сложных характеристик с использованием крупномасштабного обучения без учителя». Использование термина «без учителя» может создать впечатление, что система, снабженная AI, может обучиться чему-то сама, разумеется это неверно, без руководства человека никакой AI не способен к самостоятельному получению знаний. Unsupervised в этом контексте означает, скорее, неконтролируемый, то есть процесс обучения осуществляется автоматически, но по заданию человека.
Средствами CV удается автоматически преобразовать фото- и видеоданные в информацию, что с успехом удалось сделать Ыну с коллегам в вышеописанном эксперименте с кошками с использованием технологий самообучения ANN. Еще в 2007 году группа авторов под руководством того же Эндрю Ына опубликовала статью «Обучение с самообучением: Трансферное обучение на неразмеченных данных» (Self-taught Learning: Transfer Learning from Unlabeled Data). В ней они рассматривают четыре типа обучения
• Supervised Classification – Обучение с учителем
• Semi-supervised Learning – Обучение с частичным участием учителя
• Transfer Learning – Трансфертное обучение
• Self-taught Learning – Обучение без учителя
Эти виды обучения отличаются по степени использования заранее помеченных данных. В случае обучения с учителем она максимальна и, напротив, в случае обучения без учителя минимальна. Идея последнего проста, можно на некотором тестовом наборе научить саму сеть самостоятельно учиться, а после этого она получит возможность накапливать внутри себя необходимый ей комплекс метаданных, чтобы решать поставленную перед ней задачу распознавания. Но в отличие от человека, использующего при обучении творческие способности, ассоциации и т. п., машина по определению тупа, поэтому процесс ее обучения требует затрат большой вычислительной мощности, к тому же эта мощность при использовании фон-неймановских CPU на задачах машинного обучения используется нерационально.
Основным инструментом для разработчиков CV служат библиотеки функций, позволяющие решать стоящие перед ними задачи с использование нейронных сетей и методы машинного обучения. Библиотеки позволяют аккумулировать опыт и небольшими силами создавать серьезные работающие системы из готовых блоков. Почти все библиотеки относятся к открытому ПО, в числе наиболее популярных: OpenCV, TensorFlow, CUDA, YOLO, MATLAB, Keras, SimpleCV, BoofCV, CAFFE, OpenVINO и DeepFace, но ими список не ограничивается, поскольку по своим возможностям они заметно различаются, выбор зависит от решаемой задачи.
В подавляющим большинстве рейтингов лидирует библиотека OpenCV, что заслуживает особого внимания. Хотя она относится к открытым продуктам и она развивается силами большого числа добровольцев, но у нее, что случается нечасто, российские корни. История OpenCV с создания сотрудниками Саровским ВНИИЭФ, работавшими по контракту с Intel, Нижегородской программной технологической лаборатории (NSTL, Nizhny Software Technology Lab). Одним из ее основателей стал Валерий Федорович Курякин, первыми разработчиками были Вадим Писаревский и Виктор Ерухимов, а американский участник проекта Гари Брадски инициировал развите в виде свободно распространяемой продукта с открытым исходным кодом. В 2000 году библиотека получила название OpenCV. Дальнейший путь развития OpenCV был непрост, однако он привел к успеху, библиотека скачана более 20 млн раз и ее элементы использовались при разработке Android и iOS.
Проблема умного железа
Используя метафору «души и тела» в приложении к AI, можно сказать, что в CV – это проблема «души», она решается давно и успешно, но проблема «тела» остается далека от решения, несмотря на кажущееся благополучие, обеспечиваемое графическими процессорами GPU и собранными из них кластерами с рекордными показателями производительности, измеренной в петафлопах, то есть в единицах, не имеющих непосредственного отношения к нагрузке, создаваемой AI-приложениями. История специализированных аппаратных технологий для CV и вообще задач машинного обучения только начинается.
Приходится признать, что для такого класса задач используемые ныне GPU и намного реже специализированные микросхемы (ASCI) и матричные массивы (FPGA) служат тем, что по-английски называют stopgap measures, то есть средствами, обеспечивающими временное решение, не более того. О степени несовершенства можно судить по тому, что мозг потребляет порядка 40 ватт, а если бы удалось создать компьютер, моделирующий равное число нейронов современными технологиями, его мощность оценивалась бы тысячами мегаватт, но есть на 7–9 порядков больше. Поэтому нынешнее положение можно сравнить с тем, что было в первые годы существования компьютеров, когда в ход шли любые доступные радиодетали – лампы, транзисторы, конденсаторы, сопротивления, магнитные сердечники. Это происходило до семидесятых, до тех пор пока не появились интегральные микросхемы, а позже и микропроцессоры.