Ну, давайте честно, много вы знаете случаев успешного внедрения? Естественно, мы не говорим про верификацию, когда нужно просто подтвердить, что чел похож на того, кому дана карточка СКУД. Хотя… об этом тоже поговорим, потому что и она извращена на практике.

Когда заказчик хочет одного, а технология может только другое, то конечно же побеждает заказчик – ведь он платит. Если надо, чтобы солнце крутилось по квадратной орбите, не вопрос. Благо, сегодня можно делать такие высокотехнологичные фокусы, что заказчик только через пару лет поймет, что орбита не совсем квадратная, да и солнце совсем не солнце.


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

Мы устали объяснять заказчикам, как это может работать, чтобы действительно получить пользу. И вот новый заказ от крупной компании типа нашего Гугла. Уж, от этих ребят мы ждали научного подхода, но получили все тоже самое – только с повышенной степенью презрения: если не можете вы, сделают другие.

Думаю, здесь полно спецов по распознаванию лиц, я представляю компанию, которая 20 лет этим занимается и первой в Раше вывела такой продукт на рынок (никаких названий, чисто озвучил бэкграунд). Поговорим?

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

Сначала в качестве к прелюдии к размышлению буду говорить несусветные вещи:

  1. 1 человек = 5 разным лицам. Пока вы подходите к камере, она оцифровывает около ста кадров, в одном из которых будет блик на полфэйса, в другом смазанное движение на какой-то край, в третьем рука на лбу и глазах (чел почесался), в четвертом – опущенная голова, а в других 96 кадрах мы узнаем сотрудника Госдепа. Что делать с этой толпой? У нас много практических вариантов, но все они чаще противостоят задачам клиента.

  2. 5 человек = 1 лицу. Куча народу подходит к камере, но она видит только того, кто её полностью перегораживает. Наверх такую камеру не поставишь, т.к. она не будет брать лица с опущенными головами. Вернее, можно поставить, если пространства хватает, но даже в офисах российского Гугла особо не разойдешься. (Решение вопроса также в следующей части.)

  3. Во всем виноват процент схожести. Этот фундаментальный противоречивый параметр убивает практическое применение. Чтобы найти запретное лицо, нам нужно уменьшить процент схожести.  Но при низком проценте каждое лицо всегда на кого-нибудь из базы похоже, так нас создал Бог – похожими. Поэтому, если мы стремимся найти похожего человека на злоумышленника, то система никогда не будет выдавать незнакомцев, ведь она настроена только на поиск похожих. Если кто не понял, здесь главная проблема, что не будет незнакомцев.

    Или можно настроить всё наоборот - искать только тех, кто железно есть в базе (с высоким процентом схожести), тогда у нас часто будут появляться незнакомцы – даже если их реально нет.

    Это фундаментальная вещь, обойти её никак не удастся. Все же клиенты хотят совместить одно с другим. Так не бывает теоретически. Здесь нужен другой подход. Но, может, вы что-нибудь насоветуете, интересно будет ваше мнение под этой статьей.

  4. Процент схожести метрики – это не полная, к тому же противоречивая, характеристика схожести лиц. Компьютер ничего не знает про реальные лица, он анализирует только оцифрованные картинки.

Для кого-то картина Малевича «Черный квадрат» - просто квадрат, а для разработчиков нейронных сетей – это неповторимое божество. Потому что его невозможно сфотографировать так, чтобы повторить. Любая фотокопия будет отличаться от оригинала и от другой фотокопии.

Проделайте опыт! Попробуйте одной и той же камерой долго фотографировать одну и ту же черную стенку одним и тем же способом при одном и том же освещении. Сделайте сами, ибо не поверите: у вас не будет ни одной совпадающей фотографии! Все кадры отличаются оттенком пикселов в разных местах. Это при том, что опыт почти лабораторный, да еще и статический. А в жизни разброс изменений будет более ощутимый, учитывая сложную динамику, разное освещение, положение головы и проч. Т.е. вы сфоткали лицо, произвели кучу мало адекватных операций над ним от монтажа правильного положения и компенсации неправильного освещения до декодирования H.264, в описании которого четко прописано: алгоритм предсказания. И после этого требуете от машины оценить процент схожести?

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

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

Таким образом, в лоб на практике все вместе эти задачи не решаемы, а только возможна лишь какая-то одна: или находить нужного чела или находить незнакомца. Не согласны?

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


  1. MAXH0
    17.06.2022 13:21

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

    НО, к сожалению, технологии работают. И улучшаются...


    1. Tott Автор
      17.06.2022 13:47
      -1

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

      Спасибо за мысль!


    1. kAIST
      17.06.2022 14:12

      Эволюция не затачивала мозг под то, чтобы запоминать тысячи лиц - для выживания то особо много не требовалось. Это только за последние сотни лет человек стал видеть много разных лиц.


      1. PrinceKorwin
        17.06.2022 14:22

        Да и не было раньше тысячи разных лиц. Популяция была маленькая, а круг контактов и того меньше.


  1. haldagan
    17.06.2022 14:59
    +3

    Почему идентификация лиц невозможна — так, как этого хочет заказчик?

    Читаю между строк: заказчик хочет распознавание людей на произвольно установленных камерах, а вы умеете только в лица в (полу-) тепличных условиях.

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

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

    И вот тут вот могла отлично вписаться хоть какая-то полезная нагрузка статьи - реальное предполагаемое, пусть даже и не полное, решение проблемы, однако вы как-то самое главное решили не озвучивать.

    Если ваше предложение, например, "пусть в довесок ко всему все сотрудники носят радиомаячки" или "обязать всех сотрудников заглядывать в камеры и делать ку", то понятно, почему заказчика такое не устраивает.


  1. 0x3f00
    17.06.2022 15:01
    +2

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


  1. kahi4
    17.06.2022 18:16
    +1

    Наверх такую камеру не поставишь, т.к. она не будет брать лица с опущенными головами. 

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

    Неужто это можно было сделать 10 лет назад в матлабе парой строчек кода, а теперь, когда у вас браузер на js в реальном времени может определять людей (и их части тела) на видео с камеры, это более непосильная задача?


  1. Tott Автор
    17.06.2022 18:47
    -1

    Немного превратно понята тема. Никто не говорит, что идентификация лиц невозможна в принципе. Вопрос именно в практическом применении. Стандартное желание заказчика не совместимо не столько даже с практикой, сколько с теорией.

    И вот поэтому ни у кого нет опыта удачного применения.


    1. kahi4
      17.06.2022 19:37
      +1

      Основной негатив из-за «стандартного желания заказчика». Я вот не понимаю о чем речь от слова вообще. Распознавать лица и говорить кто есть кто? Меня телефон вон узнаёт как-то без проблем, слышал, в Москве вообще можно в метро так платить. В общем решенная задача. Трекать людей по видео - вон, овечек считают, людей не смогут? Не вижу технических ограничений почему это нельзя совместить.

      Если вопрос в том что это две задачи и одновременно не решаются - ну не решаются и не решаются, решайте по отдельности, совмещайте дату постфактумлм.

      В чем конкретная проблема то?


    1. kahi4
      17.06.2022 19:39

      И вот поэтому ни у кого нет опыта удачного применения.

      Скажите это Китаю, там удивляться.


    1. aamonster
      17.06.2022 22:08

      Немного превратно изложена тема.

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

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


      1. PrinceKorwin
        17.06.2022 23:00

        рост количества ошибок распознавания при увеличении количества лиц в базе.

        При достижении определенного порога в эту БД перестаем добавлять лица и создаём рядом новую. И так каждый раз. Шардинг типа.

        Ищем лица в параллель по всем шардингам.

        Чем не решение?


        1. aamonster
          17.06.2022 23:15

          Даже не близко. Проблема не в скорости (распараллеливается хорошо), а в проценте ошибок.

          Глядите. Пусть вероятность перепутать фотографии двух людей (A и B) – одна миллионная (вроде неплохо). Берём базу на тысячу человек. Вероятность, что A спутаем с кем-то из остальных 999 (нам ведь его надо сравнить со всеми – как ни разбивай на шарды) – уже почти одна тысячная. Вероятность, что перепутаются какие-то двое – уже вообще 63% (если непонятно, откуда получается такое число, могу привести выкладки. Ну или загуглите "парадокс дней рождения", основная идея та же)


          1. Kwent
            18.06.2022 01:24
            +1

            Все так, у вас только пара проблем:
            1. Вы почему-то исходите из "равности всех лиц", а это не так, женщины с мужчинами путаются примерно никогда, и ваша база из 1000 человек превращается в две непересекающихся базы по 500, то есть ошибка между базами в разы меньше чем внутри, это просто пример, такие "разбиения" неявные, но сильно влияют на качество распознавания - у сетки путаются похожие лица, как и у людей.
            2. Одна миллионная действительно хорошее и реальное приближение, однако дальнейшие выводы не совсем верные. Ну то есть они верные в вакууме, но в реальности ошибка значимо ниже. Вот, например, NIST FRVT занимаются как раз оценкой таких сравнений и ошибок, мы даже про это писали. Там ошибка (две фотки одного человека признаны разными людьми) сильно меньше процента при сравнении всех со всеми при допуске как раз той самой ошибки перепутать двух людей в одну миллионную.

            А статья, конечно, была актуальна лет 5 назад, когда сети работали в таких задачах еще хуже людей.


            1. aamonster
              18.06.2022 09:28

              1. Я, конечно, упростил до предела. Но суть проблемы понятна: ошибка при поиске человека в базе растёт с ростом базы. В случае московского метро – лично мне непонятно, как решили эту проблему, и я бы с удовольствием почитал. Кажется, что при такой выборке у каждого должен найтись двойник. Ну или хотя бы у некоторых: близнецы вот могут разблокировать айфоны друг друга.

              2. Спасибо. Почитаю, очень интересно. Но всё ещё "ошибка сильно меньше процента" (если я правильно понял, о чём речь) кажется неприемлемой для метрополитена: будет не здорово, если каждый сотый будет получать чужие счета.


              1. Kwent
                18.06.2022 12:59

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

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

                "Ошибка меньше процента" не узнать человека, а перепутать двух людей - одна миллионная (одно неправильное списание на миллион сравнений).

                В общем, все действительно не просто, но с некоторыми весьма незначительными допущениями это уже норм работает. У меня, например, тройка тоже не каждый раз срабатывает)


                1. aamonster
                  18.06.2022 14:17

                  Если больше кадров перебирает – то и шанс ошибочного обнаружения в базе возрастает, не только правильного.

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

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


    1. Kwent
      18.06.2022 01:29

      У меня все девайсы умеют в разблокировку по лицу, был в нескольких организациях где нормальный СКУД по лицу, даже преступников ловят, или это все не очень удачные? :)


      1. Tott Автор
        20.06.2022 09:46

        СКУД - это варификация, в самом начале сказано, что об этом речи пока нет. Будет в другой статье.


  1. TimID
    18.06.2022 22:55

    Конечно прошу прощения, если не прав, но разве распознаванием лиц занимаются нейросети? Причем тут яркостная информация? FRT строит сеточную модель лица на основании контуров (перепадов градиентов) и ошибается, в основном, при смазывании картинки. Точнее - снижается точность. Но трекинг на нескольких последовательных кадрах должен помочь, наверное.
    Может камеры нужно просто получше поставить? Профессиональные, а не какие-нибудь беварды для наружного наблюдения за 2к рублей.