Augmented Faces API - Как создаются лицевые ориентиры? - PullRequest
0 голосов
/ 25 февраля 2019

Я студент IT, и хотел бы узнать (понять) больше об API Augmented Faces в ARCore.

Я только что увидел ARCore V1.7выпуск и новый API Augmented Faces .Я получаю огромный потенциал этого API.Но я не видел никаких вопросов или статей на эту тему.Поэтому я задаю себе вопрос, и вот некоторые предположения / вопросы, которые приходят мне в голову по поводу этого выпуска.

Предположение

  • Команда ARCore использует (как Instagram и Snapchat) машинуобучение, чтобы создавать ориентиры по всему лицу.Возможно HOG Face Detection ..

Вопросы

  • Как ARCore генерирует 468 точек по всему лицу пользователя на смартфоне?Невозможно найти какой-либо ответ на это, даже в исходном коде.
  • Как они могут иметь глубину от простой камеры смартфона?
  • Как отклонить обнаружение / отслеживание лица, чтобы пользовательскийобъект или другая часть тела, например, рука?

1 Ответ

0 голосов
/ 26 февраля 2019
  1. Новый расширенный API ARCore , работающий на фронтальной камере без датчика глубины, предлагает высококачественную сетку 468-point 3D, которая позволяет пользователям добавлять такие эффектына их лица в виде анимированных масок, очков, ретуширования кожи и т. д. Сетка обеспечивает координаты и привязки к региону , которые позволяют добавлять эти эффекты.

Iтвердо уверены, что обнаружение лицевых ориентиров производится с помощью алгоритмов компьютерного зрения под капотом ARCore 1.7 .Также важно сказать, что вы можете начать работу в Unity или в Sceneform, создав сеанс ARCore с включенным режимом «фронтальная камера» и «Расширенные грани».Обратите внимание, что другие функции AR, такие как определение плоскости, в настоящее время недоступны при использовании фронтальной камеры.AugmentedFace расширяет Trackable, поэтому лица обнаруживаются и обновляются точно так же, как плоскости, дополненные изображения и другие отслеживаемые элементы .

enter image description here

Как вы знаете, 2+ года назад Google выпустил Face API, который выполняет распознавание лиц, которое находит лица на снимках, а также их положение (где они на картинке) и ориентацию (каким образом ониЛицом к лицу, относительно камеры).API Face позволяет вам определять ориентиры (точки интереса на лице) и выполнять классификацию, чтобы определить, являются ли глаза открытыми или закрытыми, и является ли лицо улыбающимся.Face API также обнаруживает и отслеживает лица в движущихся изображениях, что называется отслеживанием лиц.

Итак, ARCore 1.7 просто позаимствовал некоторые архитектурные элементы из Face API, и теперь он не только обнаруживает лицевые ориентиры и генерирует для них 468 точек, но и отслеживает их в реальном времени.время при 60 кадрах в секунду и придерживается трехмерной геометрии лица .

См. Обзор концепций распознавания лиц от Google .

enter image description here

Рассчитать канал глубины в видео, снятом с помощью движущейся камеры RGB, не является ракетостроением.Вам просто нужно применить формулу параллакса к отслеживаемым функциям.Таким образом, если амплитуда трансляции объекта на статическом объекте достаточно высока - отслеживаемый объект находится ближе к камере, а если амплитуда объекта на статическом объекте достаточно низкая - отслеживаемый объект находится дальше от камеры.Подобные подходы для расчета канала глубины вполне обычны для таких приложений для композитинга, как Foundry NUKE и Blackmagic Fusion уже более 10 лет.Теперь те же самые принципы доступны в ARCore.

Вы не можете отклонить алгоритм обнаружения / отслеживания лиц для пользовательского объекта или другой части тела, например руки. API Augmented Faces , разработанный для простых лиц.

Вот как выглядит Java-код для активации функции Augmented Faces:

// Create ARCore session that supports Augmented Faces
public Session createAugmentedFacesSession(Activity activity) throws 
                                                      UnavailableException {

    // Use selfie camera
    Session session = new Session(activity, 
                                  EnumSet.of(Session.Feature.FRONT_CAMERA));

    // Enabling Augmented Faces
    Config config = session.getConfig();
    config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D);
    session.configure(config);
    return session;
}

Тогда получитесписок обнаруженных лиц:

Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

И наконец рендеринг эффекта:

for (AugmentedFace face : faceList) {

    // Create a face node and add it to the scene.
    AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
    faceNode.setParent(scene);

    // Overlay the 3D assets on the face
    faceNode.setFaceRegionsRenderable(faceRegionsRenderable);

    // Overlay a texture on the face
    faceNode.setFaceMeshTexture(faceMeshTexture);

    // .......
}

Надеюсь, это поможет.

...