Если вы интересуетесь искусственным интеллектом и прочим распознаванием, то наверняка уже видели эту картинку:


А если не видели, то это результаты Хинтона и Крижевского по классификации ImageNet-2010 глубокой сверточной сетью

Давайте взглянем на ее правый угол, где алгоритм опознал леопарда с достаточной уверенностью, разместив с большим отрывом на втором и третьем месте ягуара и гепарда.

Это вообще довольно любопытный результат, если задуматься. Потому что… скажем, вы знаете, как отличить одного большого пятнистого котика от другого большого пятнистого котика? Я, например, нет. Наверняка есть какие-то зоологические, достаточно тонкие различия, типа общей стройности/массивности и пропорций тела, но мы же все-таки говорим о компьютерном алгоритме, которые до сих пор допускают какие-то вот такие достаточно глупые с человеческой точки зрения ошибки. Как он это делает, черт возьми? Может, тут что-то связанное с контекстом и фоном (леопарда вероятнее обнаружить на дереве или в кустах, а гепарда в саванне)? В общем, когда я впервые задумался над конкретно этим результатом, мне показалось, что это очень круто и мощно, разумные машины где-то за углом и поджидают нас, да здравствует deep learning и все такое.

Так вот, на самом деле все совершенно не так.

Один маленький зоологический факт


Итак, давайте посмотрим на наших котиков чуть ближе. Вот это — ягуар:



Самая большая кошка на континентах обоих Америк, при этом единственная, которая периодически убивает жертву путем протыкания клыками черепа и укусания в мозг. Это не тот зоологический факт, который важен для нашей темы, но тем не менее. Среди характерных признаков — цвет глаз, большая челюсть и вообще они наиболее массивные из всей тройки. Как видите, достаточно тонкие детали.

Вот это — леопард:



Живет в Африке, уступает на этом континенте размерами только льву. У них светлые (желтые) глаза, и существенно более маленькие лапы, чем у ягуара.

Ну и, наконец, гепард:



Ощутимо меньше по размерам, чем два его собрата. У него длинное, стройное тело, и наконец-то хоть что-то, что может служить визуально заметным признаком — отличительный узор на морде, похожий на темную дорожку слез от глаз к носу.

И вот он тот самый зоологический факт: оказывается, пятна на шкуре этих кошек расположены совсем не случайным образом. Они собраны по несколько штук в маленькие группы, которые называются «розетки». Причем у леопарда розетки условно-маленькие, у ягуара — намного больше (и с маленькими черными точками внутри), а у гепарда их вообще нет — просто россыпь одиноко стоящих пятен.


Вот здесь это видно лучше. Спонсор спонтанного образования — Imgur, и прошу прощения на случай, если я переврал что-то из матчасти.

Пчелы начинают подозревать


Где-то в этот момент в мозг начинает прокрадываться ужасная догадка — а что если вот это различие в текстуре пятен и есть главный критерий, по которому алгоритм отличает три возможных класса распознавания друг от друга? То есть на самом деле сверточная сеть не обращает внимания на форму изображенного объекта, количество лап, толщину челюсти, особенности позы и все вот эти тонкие различия, которые, как мы было предположили, она умеет понимать — и просто сравнивает картинки как два куска текстуры?

Это предположение необходимо проверить. Давайте возьмем для проверки простую, бесхитростную картинку, без каких-либо шумов, искажений и прочих факторов, осложняющих жизнь распознаванию. Уверен, эту картинку с первого взгляда легко опознает любой человек.



Для проверки воспользуемся Caffe и туториалом по распознаванию на предобученных моделях, который лежит прямо у них на сайте. Здесь мы используем не ту же самую модель, которая упомянута в начале поста, но похожую (CaffeNet), и вообще для наших целей все сверточные сети покажут примерно одинаковый результат.

import numpy as np
import matplotlib.pyplot as plt

caffe_root = '../'
import sys
sys.path.insert(0, caffe_root + 'python')

import caffe

MODEL_FILE = '../models/bvlc_reference_caffenet/deploy.prototxt'
PRETRAINED = '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'
IMAGE_FILE = '../sofa.jpg'

caffe.set_mode_cpu()
net = caffe.Classifier(MODEL_FILE, PRETRAINED,
                       mean=np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1),
                       channel_swap=(2, 1, 0),
                       raw_scale=255,
                       image_dims=(500, 500))
input_image = caffe.io.load_image(IMAGE_FILE)
prediction = net.predict([input_image])
plt.plot(prediction[0])
print 'predicted class:', prediction[0].argmax()
plt.show()

Что получилось:



>> predicted class: 290


Упс.

Но погодите, может, это проблема отдельно взятой модели? Давайте сделаем больше проверок:

Clarifai



Недавний мега-сервис Стивена Вольфрама



Тут картинка повернута набок — это значит, что сервис справился с правильно ориентированным диваном, но сломался при повороте на 90 градусов. В каком-то смысле это даже хуже, чем если бы он не справился вообще — такое простое преобразование не должно радикальным образом менять результат. Похоже, что наша догадка насчет текстуры близка к истине.

Открытых веб-сервисов распознавания на удивление не так уж и много. Я сделал еще пару проверок (Microsoft, Google) — некоторые из них ведут себя лучше, не подсовывая ягуара, но победить повернутый набок диван не смог никто. Неплохой результат в мире, где уже мелькают заголовки в духе "{Somebody}'s Deep Learning Project Outperforms Humans In Image Recognition".

Почему так происходит?


Вот одна из догадок. Давайте представим себя на месте обычного supervised-классификатора, не вдаваясь в детали архитектуры. Мы получаем на входе много-много картинок, каждая из которых промаркирована соответствующим классом, и дальше настраиваем свои параметры таким образом, чтобы для каждой картинки выходные данные соответствовали этому самому классу. Таким образом мы надеемся извлечь из изображения какую-то внутреннюю структуру, отличительные признаки, сформулировать аналитически невыразимое правило распознавания — так, чтобы потом новые, незнакомые изображения, обладающие этими признаками, попадали в нужный класс. В процессе обучения мы руководствуемся величиной ошибки нашего предсказания, и тут важное значение имеет размер и пропорции выборки — если у нас 99 изображений класса A и одно изображение класса B, то при самом глупом поведении классификатора («всегда говори А») ошибка окажется равной 1%, несмотря на то, что мы особенно ничему и не научились.

Так вот, с этой точки зрения никакой проблемы здесь нет. Алгоритм ведет себя так, как ему положено себя вести. Внезапный диван леопардовой расцветки — это аномалия, большая редкость в выборке ImageNet, да и в нашем повседневном опыте тоже. С другой стороны, отличительный паттерн темных пятен на светлом фоне — прекрасный отличительный признак больших пятнистых кошек. Где еще, в конце концов, вы увидите такой узор? Более того, учитывая то, что на классификатор взваливают чертовски непростые задачи в духе различения разных видов кошек — польза узора становится еще большей. Если бы мы подкинули ему в выборку достаточно количество леопардовых диванов, то ему пришлось бы выдумывать новые критерии различия (интересно, какой бы тогда был результат), но раз их нет — то ошибка в таком редком случае совершенно естественна.

Или нет?

What we humans do


Вспомните первые классы школы, когда вы учились писать цифры.

Каждому из учеников тогда приносили по увесистой книге с названием «MNIST database», где на сотнях страниц были выписаны шестьдесят тысяч цифр, все — различными почерками и стилями, жирным шрифтом и едва заметным курсивом. Особенно упрямые добирались до еще более огромного приложения «Permutation MNIST», где эти же цифры были повернуты на различные углы, растянуты вверх-вниз и в стороны, и сдвинуты то вправо, то влево — без этого нельзя было научиться определять цифру, посмотрев на нее под углом. Потом, когда долгое и утомительное обучение заканчивалось, каждому выдавали небольшой (сравнительно) список в 10000 цифр, которые нужно было правильно опознать на общеклассовом тестировании. А ведь после математики наступал следующий урок, где приходилось учить значительно более объемный алфавит…

Хм. Говорите, все было совсем не так?

Любопытно, но похоже, нам с вами не так уж и нужна выборка в процессе обучения. По крайней мере, если и нужна, то не для того, зачем ее используют сейчас при обучении классификаторов — для выработки устойчивости к пространственным пермутациям и искажениям. Те же рукописные цифры мы воспринимаем как абстрактные платоновские концепции — вертикальная палка, два кружочка один над другим. Если, например, нам попадется изображение, где нет ни одного из этих концептов, мы отвергнем его как «не цифру», но supervised-классификатор никогда так не сделает. Наши компютерные алгоритмы не ищут концепты — они разгребают груду данных, распихивая их по кучкам, и каждая картинка в конце концов должна оказаться в какой-то кучке, с которой у нее чуть больше общего, чем с остальными.

Много ли вы в своей жизни видели леопардов? Может и порядочно, но наверняка меньше, чем «стаканов», «компьютеров» и «лиц» (другие классы из ImageNet). Встречались ли вам когда-нибудь диваны такой расцветки? Мне, например — почти никогда, кажется. И тем не менее, никто из прочитавших этот текст ни на мгновение не задумался перед тем, как корректно расклассифицировать вышеприведенную картинку.

Сверточные сети усугубляют ситуацию




Сверточные сети постоянно показывают стабильно высокие результаты в соревнованиях на базе ImageNet, и по состоянию на 2014 год они, кажется, уступают только ансамблям из сверточных сетей. Почитать про них подробнее можно много где — пока ограничимся только тем, что это такие сети, которые в процессе обучения формируют маленькие «фильтры» (или kernels), которыми пробегаются по изображению, активируясь в тех местах, где есть соответствующий конкретному фильтру элемент. Их очень любят использовать именно при распознавании изображений — во-первых, потому что там часто есть локальные признаки, способные оказываться в разных местах картинки, а во-вторых, потому что это ощутимо вычислительно дешевле, чем запихивать огромную (1024x768=~800000 параметров) картинку в обычную сеть.

Давайте снова представим себе наших леопардов. Это достаточно сложные физические тела, которые могут принимать кучу разных положений в пространстве, и к тому же еще и сфотографированными с разных углов. Каждая картинка леопарда, скорее всего, будет содержать уникальный, почти не повторяющийся контур — где-то видны усы, лапы и хвост, где-то — только невнятная спина. В таких ситуациях сверточная сеть — это просто наш спаситель, потому что вместо того, чтобы пытаться придумать одно правило для всего этого множества форм, мы просто говорим «возьми вот этот набор маленьких отличительных признаков, пробегись им по картинке и суммируй количество совпадений». Естественно, текстура леопардовых пятен становится хорошим признаком — она есть много где, и практически не меняется при изменении позы объекта. Именно поэтому модели вроде CaffeNet прекрасно реагируют на пространственные вариации объектов на картинках — и именно поэтому, кхм, с ними происходит диван.

Это на самом деле очень неприятное свойство. Отказываясь от полноценного анализа формы объекта на картинке, мы начинаем воспринимать его просто как набор признаков, каждый из которых может находиться где угодно без связи с остальными. Используя сверточные сети, мы сразу отказываемся от возможности отличить кошку, сидящую на полу, от перевернутой кошки, сидящей на потолке. Это хорошо и здорово при распознавании отдельных картинок где-то в интернете, но если такое компьютерное зрение будет координировать ваше поведение в реаллайфе, это будет совсем не здорово.

Если этот аргумент звучит для вас не очень убедительно — загляните в статью Хинтона, которой уже несколько лет, и где отчетливо звучит фраза «convolutional networks are doomed» — именно по этой самой причине. Основная часть статьи посвящена завязке альтернативного концепта — «теории капсул» (над которой он работает как раз сейчас), и тоже очень стоит того, чтобы ее прочитать.

Итого


Подумайте об этом ненадолго (и не очень всерьез) — мы ведь все делаем неправильно.

Набивка огромных датасетов картинками, ежегодные соревнования, еще более глубокие сети, еще больше GPU. Мы улучшили распознавание цифр MNIST с ошибки в 0.87 до 0.23 (пруф) — за три года (никто при этом до сих пор не знает точно, какую ошибку может допустить человек). В челленджах ImageNet счет конкурентов идет на десятые доли процента — кажется, вот еще чуть-чуть, и мы точно победим, и получим настоящее компьютерное зрение. И все-таки при этом — нет. Все, что мы делаем — это пытаемся как можно точнее разбросать по категориям кучу картинок, при этом не понимая (я осознаю, что слово «понимать» тут опасно использовать, но), что на них изображено. Что-то должно быть по-другому. Наши алгоритмы должны уметь определять пространственное положение объекта, и повернутый набок диван все-таки опознавать как диван, но с легким предупреждением на тему «хозяин, у тебя мебель вывозят». Они должны уметь обучаться быстро, всего на нескольких примерах — как мы с вами — и не требовать при этом мультиклассовой выборки, а извлекать нужные признаки из объектов самих по себе.

В общем, нам явно есть чем заняться.

Комментарии (133)


  1. R0ckwi11
    02.06.2015 10:54
    +7

    Лично я догадывался, что такими вот обученными моделями компьютерное зрение не получить. Но польза же есть от этих моделей. Это как с нейросетями — вряд ли можно воспроизвести человеческий мозг с их помощью, но это не мешает использовать концепт с пользой. Ну и отрицательный результат — тоже результат, все хорошо (:
    Спасибо за материал, интересно.


    1. rocknrollnerd Автор
      02.06.2015 11:49
      +6

      Определенно, я не предлагаю их все щас немедленно запретить и сжечь) Мне просто иногда кажется, что всю эту энергию, которые люди тратят на то, чтобы отхватить еще полпроцента в классифицирующем соревновании, да в правильных целях бы — и может, к человеческому мозгу бы подобрались на пару шагов поближе)


  1. TheShock
    02.06.2015 11:04
    +5

    Похоже — с пляжом. (верхнюю картинку я корежил в рамках эксперимента)
    _______________________________________________________________________________


    _______________________________________________________________________________


    _______________________________________________________________________________


    1. rocknrollnerd Автор
      02.06.2015 11:43
      +1

      Черт, ну это прекрасно же вообще) Нигде не писали подробнее о том, как оно работает? В анонсе я видел какие-то обтекаемые фразы про аттракторы и все.


    1. Mrrl
      02.06.2015 17:50
      +11

      Утконос, обнаруженный в Яузе:

      image


    1. g100m
      02.06.2015 20:34
      +3



      Ох, уж эти позвоночные


      1. eugenius_nsk
        02.06.2015 23:41
        +6

        Ну, вообще говоря, здесь ответ правильный — ведь действительно же позвоночное.


  1. ganqqwerty
    02.06.2015 11:43
    +2

    потрясающая статья! А есть ли алгоритмы, не основанные на разфигачивании картинки на набор признаков?


    1. rocknrollnerd Автор
      02.06.2015 12:01
      +6

      Номинально — в общем, скорее нет. Vision as feature detection — это такой очень общий подход, связанный с тем, что в наши глаза попадает много всякого ненужного с точки зрения информационной энтропии (куча однородного фона, не менее однородные всякие пятна и т.д.), и при этом мы, как животные в не самой безопасной среде, должны уметь быстро на все это реагировать и замечать важное (еду, хищников). Отсюда естественным образом вытекает идея фич — в поле зрения должны быть какие-то небольшие, но важные куски, и именно их наше зрение будет скорее всего замечать. И, как предполагается, строить распознавание оно потом тоже будет на них.

      Другое дело, что сверточные сети пользуются не просто набором признаков — а набором локальных и инвариантных (то есть им все равно, где они находятся) признаков. Вообще традиционно считается, что это очень хорошо — так мы можем успешно бороться со всякими сдвигами картинки по горизонтали и вертикали, которые вообще ее толком не изменяют. Но, к сожалению, последствия бывают и вот такие.

      Насчет других алгоритмов:

      — та самая статья Хинтона про transforming autoencoders, и было еще его выступление на ютубе на эту тему.
      — штука под названием one-shot learning, которую я все хотел включить в пост, но которая не поместилась.

      P.S. Вы правда работаете в Blue Brain Project? Потрясающе, напишите пост про то, как оно там?)


      1. tridemax
        02.06.2015 12:38
        +2

        Ну собственно из последнего по transforming autoencoding: arxiv.org/abs/1505.01596
        Хоть и построено на нелюбимых Хинтоном disastrous CNN, но результат все равно впечатляет.

        Смею предположить, что сеть натренированная таким способом на приличном количестве материала сумела бы отличить диван. Хоть это и чистая спекуляция с моей стороны. =)


        1. rocknrollnerd Автор
          02.06.2015 13:01

          Ух ты, здорово. Спасибо, обязательно почитаю.


        1. leshabirukov
          02.06.2015 20:23
          +2

          Кстати да, движение может быть ключом к освоению афинных преобразований (параллельный перенос, повороты, масштабирование). Мозгу без шансов понять, что нейрон А и нейрон Б реагируют на одну и ту же кошку в разных частях поля зрения, если не пронаблюдает плавное перемещение. В этом случае нейроны вдоль пути следования кошки свяжутся по хеббовскому правилу, и дадут начало инвариантной кошке.
          А свёрточные сети кроме экономии нейронов дают ещё и чит, позволяющий освоить параллельный перенос на халяву. Не распознают повёрнутое изображение? А не их вина что мы делаем свёртку только по координатам, но не по поворотам картинки.


      1. ami
        10.06.2015 16:49
        +3

        Я поздно подтянулся. Но все-же вставлю свои 5 копеек.

        У вас вырисовывается 2 проблемы.

        1. CNN работают только с локальными фичами и они не могут отличить «кошку леопардовой расцветки» от «дивана леопардовой расцветки»
        Да. CNN работают только с локальными фичами. By design.
        Но. Эти локальные фичи можно очень легко превратить в глобальные используя вместе или по отдельности
        а) пирамиды
        (если на картинке 100x100 будет леопард крупным планом и мы будем идти маской 5x5 — мы не сможем отличить леопарда от дивана, т/к/ мы будем сосредоточены на локальных фичах.) но пирамидируюя эту картинку — вуаля — сможем
        б) так называемые superpixels когда мы можем детектить сразу несколько обьектов на сцене(в них я пока еще не разбирался)

        Собственно вот как это решает тот же LeCun и компания

        2. Для обучения CNN нужно большое количество реальных примеров.
        Я бы сказал, это не обязательно так. Как следует из того же one shot learning. Но если классы будут слишком близки, то, к сожалению без реальных примеров их не разделить(допустим вы хотите классифицировать цифру 5 написанную одним человеком в один класс, а другим человеком — в другой класс. И, скормив системе одну единственную цифру 5 и приказав «фантазируй», она не сможет правильно классифицировать цифры. Но это же верно и для людей.


  1. ximaera
    02.06.2015 11:47
    +16

    > Вспомните первые классы школы, когда вы учились писать цифры.
    > Каждому из учеников тогда приносили по увесистой книге…
    > Хм. Говорите, все было совсем не так?

    Не совсем так, но близко к этому. Только вместо увесистой книги был видеоряд продолжительностью 40*2*5*4*9/60=240 часов (за год, в 1 классе), в котором эти цифры постоянно мелькали. И это не считая предшествовавшего видеоряда продолжительностью лет в 5 или 7, в котором эти цифры постоянно мелькали в различной обстановке, под различными ракурсами, в различном написании, а рядом почти всегда был эксперт, управлявший распознаванием (бабушка, например).

    Конечно, при таком масштабном процессе обучения я буду распознавать леопарда лучше, чем новорождённая сеть, которую 20 минут кормили статическими картинками из Интернетов.

    Покажите ваш леопёрдовый диван мальчику из Ботсваны. Ставлю один доллар против одного рубля, что мальчик сбежит в ужасе.


    1. evocatus
      02.06.2015 11:49
      +4

      Напротив — мальчик из Ботсваны прекрасно знает как выглядят леопарды, поэтому не примет за леопарда то, что им не является.


      1. ximaera
        02.06.2015 12:14
        +14

        Мальчик из Ботсваны как-то прожил на земле свои семь лет, потому что научился не попадаться в лапы к леопарду. Чтобы не попадаться леопарду, нужно уметь быстро обнаруживать леопарда в подобном пейзаже:



        (леопард тут правда есть)

        А после обнаружения в поле зрения куска леопардовой шкуры нужно очень быстро бежать (быстрее другого мальчика, по крайней мере), поэтому я и не ставлю на ботсванийца.


        1. RicoX
          02.06.2015 12:31

          При таком размере, можно особо не торопиться, думаю у мальчика есть месяцев 8-10, до того момента как барсенок такого размера будет представлять опасность.


          1. ximaera
            02.06.2015 12:36
            +13

            Как вы можете видеть из фотографии, сделанной на том же месте спустя 10 минут, барсёнок представляет опасность уже лет 10 как:


            1. ozonar
              02.06.2015 13:16
              +6

              Зато при встрече с гиеной можно сделать вот так: =)


        1. JhaoDa
          02.06.2015 12:35
          +2

          М-да, до мальчика из Ботсваны мне далеко. Я, конечно, «котика» нашёл, но поздно, он бы меня уже ел…


          1. XimikS
            02.06.2015 14:09
            +3

            Где же он?!


            1. ximaera
              02.06.2015 15:00
              +16

              А вот!


              1. cjfynjy
                03.06.2015 07:03

                В круге зума я его вижу, а вот в том районе, откуда стрелка выходит — нет (да и таких камней-то я там не вижу). Это точно один и тот же район картинки?


                1. Mrrl
                  03.06.2015 08:01
                  +2

                  Надо смотреть на точку, куда стрелка указывает. Она целится котику прямо в щёку.


                  1. cjfynjy
                    03.06.2015 08:38

                    Блин, а я искал в начале стрелки, думая, что стрелка указывает на круг с зумом. Спасибо, увидел. :)


        1. evocatus
          02.06.2015 12:52
          +12

          Диван было бы заметно сразу!!!


          1. Stas911
            02.06.2015 16:48
            +9

            Диваны тоже не так безобидны, как кажутся на первый взгляд. Не стоит их недооценивать!


            1. Halt
              03.06.2015 09:48
              +6

              Еще бы. Более 90% всех смертей произошли в непосредственной близости от дивана или кровати. 100% людей, пользовавшихся диванами в 18-м веке умерли. Статистика и факты говорят сами за себя. Тут явно что-то не чисто.


              1. Halt
                03.06.2015 12:24

                Если кто не понял, то это был сарказм.


            1. ArXen42
              06.06.2015 00:34
              +2

              Дуглас Адамс подтвердит. Чувствую себя диваном.


        1. stAndrew
          02.06.2015 15:34
          +4

          > Чтобы не попадаться леопарду, нужно уметь быстро обнаруживать леопарда в подобном пейзаже
          У леопарда (в данном случае снежного барса) специальный маскировочный рисунок шкуры. Плюс кошачьи хорошо умеют подкрадываться: они плавно двигаются когда жертва отвернулась и застывают, когда на них смотрят. Этот эффект можно увидеть тут: www.youtube.com/watch?v=fzzjgBAaWZw
          Поэтому жертва засекает кошку только в последний момент по звуку и движению, когда она прыгает. Поэтому кошачьи по всему миру — превосходные охотники.

          > после обнаружения в поле зрения куска леопардовой шкуры нужно очень быстро бежать
          Если бежать от леопарда, это спровоцирует атаку. Вы способны убежать от леопарда? А если угрожающе пойти в сторону леопарда, это может его обескуражить. Для леопарда будет действовать правило: дают — бери, бьют — беги.


          1. ximaera
            02.06.2015 15:40
            +2

            Ну я почему и написал про «бежать быстрее другого мальчика» :-)


            1. stAndrew
              02.06.2015 15:52

              Просто мысль об обнаружении леопарда наивна. Он весь насквозь создан так, чтобы жертва его не обнаружила раньше времени. В противном случае он бы помер с голоду.


              1. ximaera
                02.06.2015 16:14

                Для козла эта задача, безусловно, нерешаема. А вот для человека — я не уверен.

                Так или иначе, для гипотетического утрированного примера это не очень существенно.


                1. stAndrew
                  02.06.2015 16:30

                  Задача решаема, если вдумчиво вглядываться в картинку, которая составляет только ограниченный сектор обзора. И то не все находят. А в реальном времени контролировать 360 градусов вокруг себя нереально. Или надо ходить стадом, смотреть в несколько глаз и надеяться, что под леопардом хрустнет ветка или камень упадёт.


    1. rocknrollnerd Автор
      02.06.2015 11:51
      +3

      Что-то логика наоборот же должна работать, нет? Мальчик из Ботсваны видел леопардов чаще, чем мы, и должен иметь более подробную модель в голове) Это мы с вами как раз, как жители суровой северной страны, должны в ужасе отпрыгивать от экрана.


      1. ximaera
        02.06.2015 11:59
        +10

        Зато мальчик из Ботсваны не видел диванов. Окей, диван не будет шевелиться, так что мальчик не будет убегать от мёртвого леопарда. Но как можно опознать диван, если ты его в жизни ни разу не видал?

        А так ли вы уверены в своей способности распознавать мебель? Вот вам дизайнерский диван:



        Давайте теперь покрасим его в леопарда, и я тогда посмотрю, как вы его будете идентифицировать.


        1. rocknrollnerd Автор
          02.06.2015 12:38
          +3

          Собственно, я не очень понял суть аргумента) Никто же не спорит, что не видев ни разу в жизни чего-то, его сложно опознать. Мой пойнт был вот в чем — такое субъективное ощущение, что нам с вами, похоже, достаточно увидеть это самое что-то всего несколько раз, чтобы включить его в мысленную распознавательную базу знаний. Все-таки не то чтобы вы учились писать рукописные цифры целый год, медленно увеличивая свой скилл с каждым днем и только к концу первого класса достигая более-менее уверенности. Мы, опять-таки, обладаем чертовски быстрыми способостями запомнить какую-то новую, совершенно незнакомую раньше вещь. Вот, например — буду надеяться, что вы не смотрели Вавилон-5 — корабль ворлонов.

          Скрытый текст
          image


          1. ximaera
            02.06.2015 13:11

            > нам с вами, похоже, достаточно увидеть
            > это самое что-то всего несколько раз

            Совершенно верно, но сколько именно раз?

            Если честно, я не вижу особого сходства между двумя кораблями ворлонов. Благодаря накопленному за время просмотра запасу обучения я худо-бедно признаю космический корабль на первом снимке (потому что за ним находится глобус в темноте, а я привык, что неопознанная хренотень на фоне глобуса в темноте — это обычно космический корабль), хотя даже при этом штуковина больше напоминает спутник. На втором снимке с тем же успехом может быть подводная лодка или там какая-нибудь доисторическая медуза.

            Как вам вот это? Напоминает космический корабль, не правда ли? Даже слегка похож на ворлонов:



            Вот только это не он :-)

            > Мы, опять-таки, обладаем чертовски быстрыми
            > способостями запомнить какую-то новую,
            > совершенно незнакомую раньше вещь.

            Так вот мой пойнт в том, что мы при этом зачастую ошибаемся. И система распознавания тоже может запоминать что-то достаточно быстро и при этом потом иногда ошибаться (как пресловутый автофокус на айфоне). Но чем больше обучения — тем меньше вероятность ошибки. Только вот 5-10 лет обучения свёрточной сети никто не даст.


          1. gleb_kudr
            02.06.2015 20:06
            +1

            Тем не менее, у нас имеется огромный запас базового материала в виде «кораблей в космосе» «фона из звезд и планет» и просто «фантастических кораблей» разных видов, чтобы сходу реконструировать вероятную форму предмета используя только одно изображение.


          1. unxed
            16.06.2015 02:49

            А ещё у нас есть контекст. Человек показывает космический корабль, и собирается показать что-то ещё для сравнения. С какой вероятностью это тоже будет космический корабль? С какой вероятностью это будет космический корабль схожего класса?

            Я, например, ждал, что на второй фотке тоже будет корабль ворлонов. А если б ждал медузу — её бы с большой вероятностью и увидел.

            Именно поэтому, кстати, с фото в принципе сложнее, чем с видео. Например, кусок леопардового паттерна должен с большей вероятностью классифицироваться как леопард, если перед этим показывали саванну, и как диван — если перед этим показывали стол и стул.


    1. Meklon
      02.06.2015 12:21
      +23

      Я вам больше скажу — новорожденный младенец начнет плакать и уплозать от человека в маске леопарда. Это генетически вшитая программа одного из наиболее страшых врагов приматов. Кушали они наших предков активно. Именно поэтому предупреждающие надписи делают черным шрифтом по желтому фону, так как инстинкт требует немедленно все бросить и рассмотреть подозрительный объект.


      1. fshp
        02.06.2015 15:26
        +9

        Вы, как врач, должны понимать, что новорожденный младенец не умеет ползать.


        1. flerant
          02.06.2015 15:40
          +26

          Так, уважаемый Meklon и написал, что младенец будет не уползать, а уплозать. Что это такое, я, правда, не знаю.


          1. Meklon
            02.06.2015 16:04
            +3

            Выручили) Хорошо, согласен. Смысл в негативной реакции на такую окраску. Максимальное внимание и желание убраться в безопасное место, где тебя не будут жрать.


          1. ChiefPilot
            02.06.2015 17:01
            +3

            Видимо, уплозание это такое зачаточное уползание, при котором попытки уползти предпринимаются (взмахи руками и ногами) и хорошо заметны, а результат (перемещение тела в пространстве) — не очень… :)


        1. Meklon
          02.06.2015 16:06
          +2

          Я как отец двоих детей это подтвердить могу) ну ошибся с формулировкой. Смысл в реакции, несмотря на отсутствие обучения такому образу. Младшему показывал. Начинал плакать и искать маму. Больше решил не повторять.


          1. zomby
            02.06.2015 21:00
            +3

            Так может он бы любой маски испугался. Контрольный эксперимент с маской Дарт Вейдера проводили? :)


            1. Meklon
              02.06.2015 22:26

              Решил не издеваться над ребёнком) свой же) на утробное рычание голодного гуля начинает активно радоваться и махать руками. Я за него переживаю)


              1. fshp
                03.06.2015 01:47
                +3

                Он у вас не седоволосый?)


                1. Meklon
                  03.06.2015 08:11
                  +1

                  Нет) но я начинаю что-то подозревать…


                  1. Milfgard
                    03.06.2015 11:11

                    Только не повторяй опыт с крысой и железной рельсой с кувалдой.


                    1. Meklon
                      03.06.2015 11:27

                      Ха. Ты еще не видел. как мой старший пересказывает игры. Представляю, как в детском саду воспримут. Угадаешь игру по описанию?
                      «Денёк — светло. Ночь — темно, зомби бить-убивать»


                      1. Milfgard
                        03.06.2015 11:51

                        This war of mine


                        1. Meklon
                          03.06.2015 14:28

                          Это называется выбрал мирную игру в кубики для развития ребенка. Он быстро освоил ведро с лавой и кремень и теперь знает, что «Зомби ночью — жечь. Они горят». За него в случае зомби-апокалипсиса я спокоен)


                          1. fshp
                            03.06.2015 18:12
                            +1

                            «Я легенда» родился. Теперь можно спокойно заниматься генной инженерией. Последствия есть кому разгребать)


                      1. darthslider
                        03.06.2015 13:55
                        +3

                        Майнкрафт же.
                        Я помню как лет в 10 дворовому другу, который компьютер то в глаза не видел рассказывал про Half Life.


                        1. Meklon
                          03.06.2015 14:26

                          Он самый)


                      1. ximaera
                        03.06.2015 14:14

                        Вообще таких игр много, но я ставлю на Alan Wake.


                        1. Meklon
                          03.06.2015 14:26

                          Minecraft))


      1. eugzol
        02.06.2015 16:12

        Что-то, при воспоминаниях об экспериментах Уотсона, ваше предположение не кажется правдоподобным.


        1. Meklon
          02.06.2015 16:26

          Ммм… Тут вопрос очень сложный. Но броскость чёрного на жёлтом хорошо известна. Отсюда знаки дорожные особо важные так маркируют, надписи… Могу посоветовать В. Р. Дольник — НЕПОСЛУШНОЕ ДИТЯ БИОСФЕРЫ..


          1. agarus
            05.06.2015 17:37

            Боюсь тот контраст дорожных знаков имеет противоположную цель и слабое отношения кошачьему камуфляжу, хоть мы и называем похоже, используемые в этих случаях цвета.


      1. dtestyk
        02.06.2015 22:07

        где-то читал, что новорожденные ничего не боятся, кроме неожиданных громких звуков и потери опоры(физической)


      1. nkie
        03.06.2015 15:51

        Можно пруф? Я понимаю, что есть некоторые простые зашитые рефлексы(например сосательный), но насчет маски леопарда первый раз слышу


        1. kraidiky
          03.06.2015 19:58

          Гугл за три секунды подсказал:
          nt2.shu.ru:9500/natscien/psihogen/lectures/lecture02/text.asp

          Дети любят качели — это наследие брахиации у приматов. Дети боятся темноты — наши предки были дневными животными, ночь для них была полна опасностей. Дети пугаются маски леопарда — два желтых горящих кружка с черными зрачками: это был один из самых опасных хищников.

          Страшные образы в мультфильмах, сказках, в играх — это игровое узнавание хищников и других опасностей, проверка врожденных реакций на них. Если эти образы мы им не даем, они их сами придумывают.

          Хотите более профильно — 1.5 миллиона ссылок вам в помощь.


        1. Meklon
          03.06.2015 20:20

          Я выше книгу привёл хорошую.


      1. agarus
        05.06.2015 17:33

        А как ведут себя новорожденные сильно веснушчатых родителей — кричат мама и уползают прочь? )


  1. ximaera
    02.06.2015 11:53
    +2

    Хотите, я подсуну диван вам?

    Какой формы эта машина?



    А вот это вообще что такое, если забыть про надпись сверху картинки?



    Конечо, посмотрев на них в движении, вы легко сможете опознать и машину, и корабль. А вот по набору статических картинок — не факт.


    1. mephistopheies
      02.06.2015 12:21
      +2

      именно поэтому и развивается мультимодальное обучение, такие модели как раз и моделируют все сенсоры человека, для них ваша фраза о том что, посмотрев на движение мы сразу поймем что это, тоже актуальна

      ИИ


  1. mukizu
    02.06.2015 12:12

    >Потому что… скажем, вы знаете, как отличить одного большого пятнистого котика от другого большого пятнистого котика?

    Я думал лет с 5-7 все знают, как их отличать по рисунку

    Гепард — сплошные пятка
    Леопард — О пятна
    Ягуар — О пятна с точкой внутри

    PS: не считая иных отличий конечно


    1. rocknrollnerd Автор
      02.06.2015 12:31
      +6

      Тут нужно было вставить опрос, конечно)


    1. flerant
      02.06.2015 15:41
      +7

      Вам, видимо, повезло с родителями или воспитателями в детском саду, если они вам это объяснил в 5-7 лет.


      1. mukizu
        02.06.2015 16:53
        +3

        Не без этого, да. Родители со мной занимались. До школы, так что первые класса 3 были безумной скукой.


    1. degs
      02.06.2015 20:17
      +11

      Мальчик из Ботсваны?


      1. mukizu
        02.06.2015 20:47
        -2

        Мальчик просто читать рано научился. Но есть начать строить логику от того, что я раньше жил чебоксарах, что неминуемое нас свяызвает с чебурашкой…


    1. stAndrew
      03.06.2015 22:49

      Я их отличаю по морде и пропорциям тела. И по окружающей картине. Если кто-то возлежит на ветке акации, то наверное это леопард. А если несколько кошек сидят на пригорке и всматриваются вдаль — это наверное гепарды.


  1. Direvius
    02.06.2015 12:13
    +7

    Disclaimer: я мало знаю про машинное обучение. Но хочу поделиться мыслями.

    Есть такая книжка В. Турчина «Кибернетический подход к эволюции», которая перевернула мое мировоззрение однажды. Там есть глава (это оригинальный сайт, кодировка CP1251) про зрение. В ней утверждается, что понятия типа «пятно», «линия», «край», «общий фон освещения» распознаются еще в сетчатке глаза. В мозг поступают уже вот такие понятия, а не точки по отдельности. На следующем уровне из пятен, линий и краев (и, возможно, сигналов в форме базовых понятий от других органов чувств) формируются новые понятия типа «угроза», «добыча», «движущийся объект», «направление» итд. Потом еще один уровень, еще и еще.

    Эти уровни и классификаторы формировались в процессе эволюции, а не в процессе обучения — поэтому у нас врожденные понятия прямых, точек, краев. И я думаю, что либо надо копировать природные классификаторы, либо использовать генетические алгоритмы для их построения. Пока компьютеры не научатся распознавать края и пятна и скармливать их на вход следующим уровням, людей они не опередят.


    1. lockywolf
      02.06.2015 12:46
      +3

      Но работа над краями-то довольно неплохая делалась.

      Алгоритмы Кенни и Собеля выдают сравнительно правдоподобную картинку.


    1. rocknrollnerd Автор
      02.06.2015 13:10
      +2

      Это, в общем, прямо-таки foundations of visual neuroscience, да) Проблема-то в том, куда дальше двигаться. Края и линии мы научились довольно неплохо определять — под рукой куча всяких методов, стоит одно OpenCV открыть. Но что делать дальше? Как из этих линий сложить тот самый диван или того самого котика?


      1. Direvius
        02.06.2015 17:26
        +1

        Я бы предложил из линий складывать кружочки и замкнутые контуры. А по вложенности замкнутых контуров уже можно определить котика. Ну и слегка по форме. Палка-палка-огуречик — все знают, что это )


        1. unxed
          16.06.2015 03:07

          С детства не понимал этот стих (и раздражался на него за это :). Если из двух точек и запятой ещё можно сделать рожицу, пусть и кривую, то палка-палка-огуречик — это, например, овальное зеркало на двух ножках или спортивный снаряд «козёл» в профиль (хотя это уже палка-огуречик-палка), но никак не человечек-по-умолчанию.


    1. kraidiky
      02.06.2015 18:26

      Ну только не в сетчатке, конечно, а в колонках зрительной коры мозга, то есть, в самых первых слоях. Собственно сама концепция свёрточных сетей именно так и работает. Каждая свёртка это составляет как бы один из типов нейронов расположеных в колонке. То есть если из каждой свёртки взять по нейрону и поместить их в один блок как раз колонка как в мозге и получится.

      Но у мозга начиная, если не ошибаюсь, сло я стретьего колонки заканчиваются, и начинается сложно организованная зрительная кора, к тому же наделённая обратной связью — двигающая глазное яблоко. А вот у подавляющего большинства свёрточных сетей Этой гораздо более хитрой системы нет.

      Именно поэтому свёрточные сети очень хорошо справляются с тем, чем занмаются колонки — распознованием текстур и выделением границ, но почти неспособны к тому, что делает дальнейшая более сложно работающая кора — не могут развернуть картинку на 90 градусов или сказать где именно искажения в текстуре выдают на картинке руку или там ногу, к примеру.


      1. dtestyk
        02.06.2015 22:28

        не могут развернуть картинку на 90 градусов
        человек тоже, например, плохо распознает перевернутые лица, так что скорее всего дело в обучающей выборке, хотя, конечно еще существует мысленное вращение


        1. kraidiky
          03.06.2015 00:51

          Дело, конечно, в обучающей выборке. Но не только в ней. Возьмите типичную сеть и накормите её Обычными диванами. Вделите ключевые синапсы, принимающие участие в решении, ну или нейроны хотя бы. Потом возьмите сеть и предложите её кроме предыдущей последовательности ещё и повёрнутые диваны. После чего повторите выделение ключевых синапсов. Ставлю бутылку коньяка, что большая часть синапсов будет другая. То есть ваша сеть научится распознавать не разворот, а отдельно распознавать обычные диваны и отдельно развёрнутые. Не всегда, конечно. Можно в архитектуру сети заложить разворачивающую подсеть, но делать это придётся руками.

          Это я к тому что у современных алгоритмов обучения крайне слабые возможности по формированию обобщений высокого уровня.

          Кроме того, даже если вы предложите своей сети на вход мульён картинок диванов развёрнутых на самые резные углы Сеть может не справиться, с поиском ключевого признака развёрнутого дивана, потому как на вход сети данные поступают в крайне неудобной для анализа форме. Сеть, например, не может сама без учителя, пользуясь только рекурентными связями отцентровать картинку по приметному признаку, по ножке дивана, например. Задачу распознавания это сильно упрощает, и человеком делается двиганием глаза, эволюционно научившегося делать эту операцию легко.

          Конечно, нейронная сеть, пользуясь только несколькими дополнительными слоями может научиться делать центровку самостоятельно используя только штатными возможностями, Но что-то мне подсказывает, что научить сеть этому будет посложнее, чем распознавать леопардов. И Желательно в отдельном учебном цикле с последующим трансфером.


  1. lockywolf
    02.06.2015 12:53

    Вполне возможно, что на уровне «распознающих кластеров в зрительном центре» машина и может уже распознавать лучше человека.

    Вопрос же в более высокоуровневых признаках.

    Скажем, «бога» мы никогда не видели, но узнаём его на картинах и в архитектуре. Причём очень разных богов — христианского, языческих, фэнтезийных. Скажем, «бог» (как концепт), кажется, вообще не зависит от внешнего вида, может быть антропоморфным, аниморфным, объектоморфным, или вообще аморфным.

    Думаю, у человека качество распознавания «бога» будет не очень большим, я бы (пальцем в небо) сказал, процентов 50, однако важно, что мы настоящего живого образца никогда не видели.


  1. father_gorry
    02.06.2015 12:55
    +15

    Картинки картинками, а знаете какое мракобесие царит сейчас в алгоритмах диагностики болезней по симптомам?
    Общался с парой десятков разработчиков — ни один не понимает важности понимания скрытого патологического процесса, более того, они его отрицают, все как один рассчитывая справиться тупо набором симптомов.


    1. rocknrollnerd Автор
      02.06.2015 13:05
      +15

      Нам нужен пост про это!) Кстати, а как вообще в современном мире это работает? Насколько я смутно представлял себе, там до сих пор царство экспертных систем и байесовских сетей?


      1. father_gorry
        02.06.2015 13:12
        +3

        Да, мы пока обдумываем это. Начать с истории, рассказать о имеющем (пока) место неуспехе…
        А что плохого в экспертных системах и байесовских сетях? Первое характеризует не свойство продукта, а скорее требование к нему. Второе — вы подразумевали мультиграфы доверия или методы их обработки?


    1. engine9
      09.06.2015 16:01

      Наверное, потому что нужно одновременно быть хорошим врачом и программером.


      1. father_gorry
        09.06.2015 16:53

        Я как раз проверяю эту гипотезу.


  1. mephistopheies
    02.06.2015 12:55
    +4

    Они должны уметь обучаться быстро, всего на нескольких примерах — как мы с вами — и не требовать при этом мультиклассовой выборки, а извлекать нужные признаки из объектов самих по себе.


    это в точности то, что проповедует Хинтон, и вероятно нужно стремиться к глубоким моделям не супервайзд, а ансупервайзд — что то типа такого

    но сегодня так получается, что практические задачи решают именно модели обученные по меткам, потому так много о них говорят; тут как то Видальди приезжал в яндекс и у него там спросили, а не предобучал ли он свои сети, тот даже переспросил типа «что что делал?», потом сказал, что нет, это типа к Хинтону, а мы занимаемся практикой компьютерного зрения; так же стоит отметить, что и сам Хинтон в гугле занимается (судя по публикациям гугла с его именем) именно обучением с учителем, просто потому, что это на сегодня лучше всего решает поставленные задачи

    имхо нужно сверточные сети рассматривать как очень крутой фича экстрактор, а эти признаки уже использовать можно где угодно

    меня кстати очень опечалило когда я в своей задаче (поиск похожих картинок) увидел ошибки, когда такая картинка распознавалась как бидон молока

    image

    но оказалось что все работает отлично, и скудность классов (1000 в старом имаджнете) не сильно влияет на производительность, ведь какая разница как модель будет называть «эти белые штуки»: бидоны с молоком или зубы, главное то что они действительно похожи, и в скрытом пространстве имеют похожие координаты

    так же не стоит забывать, что вероятность которую вам выдала сеть — это результат работы специфичных слоев (последние полносвязные с софтмаксом), а интерес представляет именно скрытое представление изображения, в которое входят различные фичи, где есть признаки и зубов и губ и кожи, и если бы в датасете были бы классы «женская улыбка» то все было бы ок

    transfer learning
    image


    1. rocknrollnerd Автор
      02.06.2015 13:04

      Читал ваш пост, он крут)

      Очень похоже, что все так и есть, да. Ансупервайзд выглядит каким-то более возвышенным и интересным, но что с ним делать для практических задач — непонятно. С другой стороны, CNN можно вставить в гуглопоиск по картинкам, и в этих задачах один лишний бидон молока — не такая уж и проблема.


    1. rocknrollnerd Автор
      02.06.2015 13:07

      По поводу скрытого представления — в конечном итоге-то проблема растет оттуда все равно. В вашем случае представление не увидело какой-нибудь «изящной дугообразной формы» улыбки (вместо этого представив его просто белой округлой фиговиной), а в моем — проигнорировало форму леопарда, оставив от него ковер)


      1. mephistopheies
        02.06.2015 13:21
        +2

        так а проблема в модели или в недостатке данных?

        вот рецепт Эндрю Нг для дип лернинга например

        универсальный алгоритм для всего


      1. mephistopheies
        02.06.2015 14:41

        забыл ссылку дать еще на один аргумент того что ансупервайзд — это круто, но пока рынок не такой


  1. imater
    02.06.2015 13:03
    -7

    Природа удивительна, самые умные, не могут сделать дебила.


    1. mwizard
      02.06.2015 15:58
      -1

      Как насчет рассказать о величии аллаха? Мол, несравнимы потуги жалких людишек с творением всевышнего?


    1. agarus
      05.06.2015 21:05
      +1

      Хм. А народная мудрость утверждает, что могут. Более того в некотором смысле даже обречены, так как «на детях гениев природа отдыхает» :)


  1. auine
    02.06.2015 14:01

    Меня впечатлил новый сервис от гугла — photos.google.com
    Залил я туда значит картинку порша по запросам — порш, sport car, 911, porsche нашел именно ее. Так же гугл уже не раз демонстрировал определение того, что же происходит на картинке. Допустим танцы или кот сидит на диване


    1. Halt
      02.06.2015 15:14

      кот сидит на диване
      Леопардовом? :D

      Кстати, что характерно: такой вот результат выдал гугл на многострадальный диван. И я в общем-то с ним согласен.
      goo.gl/WKq5Lc


      1. rocknrollnerd Автор
        02.06.2015 16:02

        Bed for dogs, да-да) А теперь поверните его.


        1. eugenius_nsk
          03.06.2015 00:02
          +3

          Перевернул. Гугл сказал, что на такое он не подписывался, но вот вам на всякий случай леопардовая юбка, леопардовое платье, леопардовая куртка, леопардовые сапоги, леопардовый галстук и леопардовый чехол для iPad-а.


  1. ServPonomarev
    02.06.2015 14:13

    Спасибо за статью Уникально и интересно.

    В защиту подхода к сетям, как к миксерам — запихаем туда разного и пусть сами разгребают, скажу, что получить высокоуровневые устойчивые признаки (а-ля структура расцветки) такими мизерными трудозатратами — дорогого стоит. просто не надо доверять нейронной сети принятие окончательного решения — нужно самим обрабатывать полученные поля признаков более высокоуровенывыми подходами — которые учитывают не только статистику, но и онтологическую картину мира.


  1. markhor
    02.06.2015 14:14
    -1

    Полностью согласен про ImageNet. Вы очень точно сформулировали, что творилось у меня в голове) соревнование превращается в вещь в себе, в проверку, у кого больше денег на кластер из GPU. Буду теперь давать на эту статью ссылку всем некомпетентным товарищам.


  1. equand
    02.06.2015 14:36
    +2

    Проблема похоже в том, что люди учаться воспринимать и симулировать 3хмерное пространство с детства, соответственно для правильного определения дивана как дивана ии должен преобразовать 2хмер в 3хмерные объекты и каждый из них определить. Пример с картинкой барсенка показывает именно подобный поиск людьми. Мы не можем найти камуфляж, но можем найти несоответствие пейзажа, в движении это еще проще, т.к.есть с чем сравнить.

    Не думаю что роботам под силу преобразовывать в 3д и определять модель также быстро как людям. Не сейчас. Для этого надо очень много памяти и операций.


    1. equand
      02.06.2015 14:40

      Тот же диван надо преобразовать в трехмер, понять что в БД нет 100% результата, определить его как параллелипипед, преобразовать его для выравнивания пока не переопределить его (сначала на 90 градусов, затем меньший процент и так далее и т.п.) со 100% значением. И при этом все равно он сможет сделать ошибку, как и человек. Потому что параллельно ии должен знать что текстура не соответствует другим объектам, соответственно только диван может иметь такую структуру


    1. unxed
      16.06.2015 03:30

      Мне кажется, что, разглядывая картинку с леопардом, я поступаю следующим образом: классифицирую морду, туловище, ноги, хвост и текстуру (ещё пластику, если это не картинка, а видеоряд). Собираю из этих признаков (не обязательно всех) класс «леопард». А если мне нужна «3д-модель» в голове, я вспоминаю, что леопарды, как правило, примерно симметричны, и воображаю, как он бы выглядел с другой стороны. Если леопард в той позе, в которой симметрия работает — всё ок. А если нет, то без знания леопардовой анатомии я уже 3д-модель не составлю.

      Т.е. для задачи «узнать леопарда» 3д-модель в голове не обязательна.


      1. unxed
        16.06.2015 03:36

        Это, кстати, довольно практичный подход, потому что лапы, хвост, туловище и морда — классы, которые я могу использовать для распознавания и других крупных кошек. А если класс «морда» разложить на составляющие, то выясниться, что 95% его «подклассов» можно использовать для распознавания кошек вообще. Допускаю также существование в своей голове классов «морда в профиль», «морда в анфас», «морда в 3/4».


        1. equand
          16.06.2015 09:53

          Это не изначальное распознавание, Вы классифицируете уже по каким-то признакам, а не по 2х мерным картинкам.

          По сути человек распознает 3д модели в определенной сложности и текстуры. Потом уже происходит классификация и поиск по базе.


  1. sphinks
    02.06.2015 14:50
    -11

    Вспомните первые классы школы, когда вы учились писать цифры.

    Каждому из учеников тогда приносили по увесистой книге с названием «MNIST database», где на сотнях страниц были выписаны шестьдесят тысяч цифр, все — различными почерками и стилями, жирным шрифтом и едва заметным курсивом.


    Статья не помечена как перевод, поэтому мне странно это предложение. Не было такого ни у меня, ни у кого из моих друзей. Где же вы учились?


    1. SelenIT2
      02.06.2015 15:10
      +7

      Хм. Говорите, все было совсем не так?

      В том и «пойнт» этого абзаца, что никто из нас не учился распознаванию цифр так, как это делают нейросети..:)


      1. ServPonomarev
        02.06.2015 16:38

        ой ли… Сначала ребёнок пару лет учится компенсирвоать повороты, изменения масштабов и освещённости, различать детали, и только потом его начинают учить символам, писанным на доске. За других не скажу, но я в детстве, видимо, редко смотрел в зеркало, и сейчас мне трудно определить время на цифровых часах, отражающихся в зеркале. Сотни раз путал 5 с 2, сотни раз осознавал это и корректировал себя, и всё равно путаю. Так что, не факт, не факт.


        1. cjfynjy
          03.06.2015 07:30

          А часто ли вообще вам (или любому другому человеку) встречается задача определения отраженных в зеркале 7-сегментных цифр?


          1. Mrrl
            03.06.2015 08:09

            Перевёрнутые встречаются часто. Проекционные часы светят на потолок, и когда лежишь на спине, они видны в одной ориентации, а когда лежишь на животе и поднимаешь голову, чтобы узнать время — то в другой. Если к этому добавить плохое зрение, то нейронная сеть справляется с очень большим трудом.
            Отражения в зеркале (или в окне, или в экране монитора...) встречаются реже, но попадались неоднократно. Особенно трудно их распознавать, когда это отражение от горизонтальной поверхности (блестящего стола).


        1. mkal
          09.06.2015 23:41

          С цифрами 2 и 5 на цифровом табло такая проблема: у нас не только есть отдельные нейроны для распознавания каждой из этих цифр, они ещё и тормозят друг-друга для повышения качества. То есть процесс распознавания динамический и по мере поступления информации понемногу активируется сразу несколько нейронов, для каждой из цифр, но тот, который даёт больший отклик начинает тормозить остальные, пока система не придёт в устойчивое состояние.

          Поэтому мы на подсознательном уровне не можем обучить зеркально отражённые 2 и 5, даже если сознательно понимаем, что цифры перевёрнуты. Просто на зеркально отражённую 5 сразу даёт огромный отклик нейрон, распознающий 2 и тормозит все попытки нейрона, распознающего 5, активироваться.

          Если бы мы смотрели на отражённые цифры чаще, то связи между нейронами 2 и 5, возможно, перенастроились бы так, чтобы они не тормозили друг друга, а сам процесс различения этих цифр тратил бы немного больше ресурсов.


  1. DrSmile
    02.06.2015 16:48
    +2

    Лично мне очевидно, что аналогичная сверточная сеть у меня в мозгу есть. И именно она отвечает за быстрое распознавание. Однако помимо этой сети есть еще уровень сознательного распознавания, который выступает учителем для сверточной сети и fallback-ом на случай ее фейла. Именно поэтому чтение перевернутого текста или какого-нибудь вычурного шрифта такое медленное: сверточная сеть не справляется и приходится задействовать сознательный уровень. Соответственно, обучение детей цифрам происходит следующим образом: правильному набору кружочков и палочек обучается сознательная часть, а потом, на куче реальных примеров, уже обучает сверточную сеть. Еще есть известный прикол с неважностью порядка букв внутри слова — сеть не использует конкретное положение символа для распознавания.

    А насчет леопардового дивана, далеко не факт, что человек не определит его леопардом, будучи поставленным в условия невозможности задействования сознательной части (показывать картинку на доли секунды и требовать быстро нажать соответствующую кнопку).


  1. samodum
    02.06.2015 16:54
    -2

    Нейронные сети однозначно тупиковая ветвь на пути к AI


    1. tridemax
      02.06.2015 18:43

      Есть варианты получше? Или может быть мы просто «не умеем их готовить»?


  1. gleb_kudr
    02.06.2015 20:03

    То что леопардовый диван ближе к диванам чем к леопардам — это достаточно субъективная человеческая точка зрения. Мы для этого используем метаинформацию, отсутствующую у сети при обучении (типа, леопарды живут в Африке, а диваны — в гостиной и не живут).


    1. unxed
      16.06.2015 03:43

      habrahabr.ru/post/259191/#comment_8462681

      Как раз писал про контекст. Эту метаинформацию, как мне кажется, нетрудно выделить, если использовать не картинку, а именно зрение (видео + «движение камеры»): осмотрели комнату — увидели диван, осмотрели саванну — увидели леопарда.


  1. celen
    03.06.2015 07:03
    +5

    По итогам написанного, вопрос. Есть одна девушка



    Можно ли с помощью сверточной сети или какой-либо другой современной технологии определить, где у девушки ноги?


    1. Ayahuaska
      06.06.2015 18:48

      Снизу?
      Использовал устройство появившееся ещё в 1987 году — себя. =\


      1. celen
        06.06.2015 20:44
        +1

        Разумно. Но всегда ли ноги — это «то, что снизу»?

        У нас с вами нет проблем с определением местоположения ног у кого-то из изображенных здесь. Тем не менее, можно ли с помощью современных технологий искусственного интеллекта разработать программу, определяющую, где у силуэта ноги?


        1. buriy
          07.06.2015 16:23
          +1

          можно, конечно. Набор обучающих записей из миллиона размеченных образцов предоставите?

          Из http://theinstitute.ieee.org/technology-focus/technology-topic/the-motion-tech-behind-kinect779:
          To do this, the researchers uploaded more than a million images of different people in different positions. To teach the system how to recognize body parts, the team used a computer graphics algorithm to render color-coded images representing the different body parts. They eventually created a machine learning algorithm that could analyze each pixel in an image and determine which limb it was.


          1. celen
            07.06.2015 19:04

            Разве Кинекту не требуются для работы показания трех камер, включая инфракрасную?



            Полагаю, вы не понимаете сути поставленной задачи. Требуется разметить части тела по изображению, не содержащему вообще никакое непосредственной информации о форме тела, кроме контура. Думаю, не требует объяснений, почему эта задача на порядок сложнее, чем то, что демонстрирует нам Kinect.

            Суть сверточной сети в распознавании картинки по множественным локальным признакам. Безошибочно распознать ступню ноги или другую часть тела, рассматривая её отдельно от остального невозможно, учитывая, что она может быть частично закрыта. Единственным способом разметить силуэт становится некий его анализ с учетом познаний о механическом устройстве объекта, породившего силуэт. Однако, прямой перебор возможных «поз» модели с порождением от каждой позы набора проекций и сравнения их с исходной очевидно неэффективен. Задача вычисления положения известного трехмерного объекта по его тени сложна даже для простых объектов, не отягощенных механикой, в данном случае эта сложность увеличивается многократно. Тем не менее, восприятие человека успешно справляется с этой задачей за доли секунды.

            Предположим, мы создали обучающую базу из миллионов силуэтов с нанесенной структурой скелета, а так же разработали механическую модель человеческого тела. При условии этого, сможем ли мы решить поставленную задачу? Какие подходы к решению будут эффективны?


            1. buriy
              08.06.2015 12:03

              Я не понимаю, что значит «решить» задачу. Можно «решить задачу с каким-то качеством».
              Например, Kinect использует данные 3d-сенсора для увеличения качества, но не использует зависимости между кадрами. Один кадр из 60 или даже 5 кадров из 60 могут показывать какую-нибудь чушь — и это задача приложения к этому адаптироваться.
              Человек, в свою очередь, использует зависимости между кадрами — чтобы увеличить качество (прогнозирование положения конечностей и центра масс, и усреднение результатов по времени).
              Тем не менее, я уверен, что CNN решит задачу с неплохим качеством — не менее 90%.
              Как минимум, вы могли бы просто искать ноги и руки на картинке.
              Против CNN — только низкая мощность компьютера в подобных задачах по сравнению с человеком, но в данной задаче не так уж много надо мощности.


            1. Maccimo
              08.06.2015 18:30

              Ищем голову, потом по скелету спускаемся до ног?


              1. Mrrl
                08.06.2015 19:22

                Глаз делает так. Можно ли формализовать, не очень понятно.


                1. unxed
                  16.06.2015 03:48
                  +1

                  Поизучав картинки пристально, понял, что быстрее распознаю позы, в которых чаще видел людей (фото и видео считаются).
                  +1 в пользу гипотезы о классах «морда леопарда в профиль», «морда леопарда в анфас», «морда леопарда в 3/4».

                  Покажите такую же картинку с силуэтами летучей мыши в разных позах. Думаю, определять, где у неё ноги, станет заметно труднее.

                  Ладно силуэты. Мы у персонажей xkcd позы без труда определяем :)


  1. MaxxxZ
    09.06.2015 14:48

    Хм… но вроде бы очевидно, что искусственный интеллект не получить количественно. Тут нужен качественный скачок. А обучение на картинках это количество. И просто так в качество оно не перейдёт.
    Это ж прям карго культ получается со стороны человечества — попытка имитировать интеллект без знаний о его работе. Ну или при недостаточном знании. Специалисты по мозгам пока очень далеки от полного описания их работы…


    1. kraidiky
      09.06.2015 15:52
      +1

      Рассчёт на то, что сеть сделает обобщения. Мало кто понимает как и какие обобщения сеть делает, но она их делает и это вселяет оптимизм. В тех кто не понимает как именно она их делает. Автор всего лишь показал это «как» людям, которые надеялись на магию.

      Безусловно обучение на количестве картинок безнадёжно, но большинство людей ещё этого не понимают. Хотя казалось бы очевидно, если вы хотите чтобы сеть разделала кошек по поведению и окружению — предложите ей картинки на которых кошки отличаются в основном поведением и окружением. И вас уверяю, она научится понимать, что гепарды не сидят на деревьях, а леопарды в саванне. Но это ж трудоёмко, а уже размеченые базы картинок есть, давайте на них тренероваться. Результат как бы предсказуем.

      И это не отменяет того факта, что у людей всё сильно сложнее, и ребёнок, даже если ему предъявляешь соответствующие примеры до определённого момента не делает из них выводов, пока не включается очередной шаг программы и он не начинает в этих примерах искать смысл. Можно предположить, что такая «программа развёртывания» нужна только для ускорение и упрощения, но и даже без неё результат предсказуем.


  1. tridemax
    19.06.2015 01:00

    Вот, кстати, из нового: arxiv.org/abs/1501.02876
    Там в разделе 5.5 трансформируют тестовые картинки.