Web için yüz algılama rehberi

MediaPipe Yüz Algılayıcı görevi, resimlerdeki veya videodaki yüzleri algılamanızı sağlar. Tekliflerinizi otomatikleştirmek ve optimize etmek için bu görev bir çerçevedeki yüzleri ve yüz özelliklerini bulmaktır. Bu görev, tek bir görüntüyle veya sürekli bir görüntüyle çalışan makine öğrenimi (ML) görsel akışı anlamına gelir. Görev, yüz konumlarını ve aşağıdaki bilgileri çıkarır gözle ilgili önemli noktaları vardır: sol göz, sağ göz, burun ucu, ağız, sol göz trajiği ve sağ göz trajikasyonu.

Bu talimatlarda, web ve JavaScript için Yüz Dedektörü'nün nasıl kullanılacağı gösterilmektedir Özellikler, modeller ve yapılandırma hakkında daha fazla bilgi için bu görevin seçenekleri için Genel Bakış'ı inceleyin.

Kod örneği

Yüz dedektörü örnek kodu, bu özelliğin tam olarak uygulanmasına görevi aşağıda bulabilirsiniz. Bu kod, görevi test etmenize ve adlı kullanıcı, kendi yüz algılama uygulamanızı geliştirmeye başladı. Bu dosyaları görüntüleyebilir, çalıştırabilir Yüz Dedektörü örnek kodunu düzenleyin yalnızca web tarayıcınızı kullanarak.

Kurulum

Bu bölümde, geliştirme ortamınızı kurmaya yönelik temel adımlar açıklanmaktadır. özel olarak Yüz Algılayıcı'yı kullanıyor. Şu konularda genel bilgi için: dahil olmak üzere web ve JavaScript geliştirme ortamınızı daha fazla bilgi için Web için kurulum kılavuzu.

JavaScript paketleri

Yüz Algılayıcı kodu MediaPipe @mediapipe/tasks-vision üzerinden kullanılabilir NPM paketi. Şunları yapabilirsiniz: platformdaki talimatları uygulayarak bu kitaplıkları bulup indirin Kurulum kılavuzu.

Gerekli paketleri NPM üzerinden yükleyebilirsiniz kullanabilirsiniz:

npm install @mediapipe/tasks-vision

Görev kodunu içerik yayınlama ağı (CDN) aracılığıyla içe aktarmak istiyorsanız aşağıdaki kodu <head> bölümüne ekleyin ve etiketini ekleyin:

<!-- You can replace JSDeliver with another CDN if you prefer to -->
<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision/vision_bundle.js"
    crossorigin="anonymous"></script>
</head>

Model

MediaPipe Yüz Dedektörü görevi bu cihazla uyumlu olan eğitilmiş bir model gerektiriyor görevi görebilir. Yüz Dedektörü için eğitilen modeller hakkında daha fazla bilgi için göreve genel bakış Modeller bölümü.

Bir model seçip indirin ve ardından bu modeli proje dizininizde depolayın:

<dev-project-root>/app/shared/models/

Görevi oluşturma

Yüz Dedektörü createFrom...() işlevlerinden birini kullanarak şu işlemleri yapabilirsiniz: çıkarımları yapmaya hazır hale getirebilirsiniz. createFromModelPath() kullanın işlevi, eğitilen model dosyasına giden göreli veya mutlak bir yolla Modeliniz belleğe zaten yüklenmişse aşağıdakileri kullanabilirsiniz: createFromModelBuffer() yöntemini çağırın.

Aşağıdaki kod örneğinde, createFromOptions() işlevinin görevi ayarlayın. createFromOptions işlevi, Yapılandırma seçeneklerine sahip Yüz Dedektörü. Yapılandırma hakkında daha fazla bilgi için Yapılandırma seçenekleri bölümüne bakın.

Aşağıdaki kod, görevin özel seçenekler:

const vision = await FilesetResolver.forVisionTasks(
  // path/to/wasm/root
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@latest/wasm"
);
const facedetector = await FaceDetector.createFromOptions(
    vision,
    {
      baseOptions: {
        modelAssetPath: "path/to/model"
      },
      runningMode: runningMode
    });

Yapılandırma seçenekleri

Bu görev, Web ve JavaScript için aşağıdaki yapılandırma seçeneklerine sahiptir uygulamalar:

Seçenek Adı Açıklama Değer Aralığı Varsayılan Değer
option_var_1_web_js Görev için çalışma modunu ayarlar. İki tür modlar:

. IMAGE: Tek resimli giriş modu.
.
. VIDEO: Bir karedeki kodu çözülmüş karelere ilişkin mod kameradan alınan video veya giriş verileri gibi bir yayın paylaşabilir.
{IMAGE, VIDEO} IMAGE
minDetectionConfidence Yüz algılamanın başarılı olarak kabul edilmesi için gereken minimum güven puanı. Float [0,1] 0.5
minSuppressionThreshold Yüz algılamanın çakışmış olarak kabul edilmesi için maksimum olmayan minimum engelleme eşiğidir. Float [0,1] 0.3

Verileri hazırlama

Yüz Dedektörü, Search Ads 360'ın desteklediği resimlerdeki yüzleri algılayabilir. ana tarayıcı tarayıcısı. Görev ayrıca aşağıdakiler de dahil olmak üzere veri girişi ön işlemesini: yeniden boyutlandırma, döndürme ve değer normalleştirmesi gibi. Videolardaki yüzleri algılamak için: zaman damgasını kullanarak her seferinde bir kareyi hızlı bir şekilde işlemek için API'yi karenin arka plan rengini arka arkaya alarak görüntülerin yerini belirler.

Görevi çalıştırma

Yüz Algılayıcı, detect() (koşu modu image ile) ve Tetiklenecek detectForVideo() (çalışma modu video ile) yöntemi çıkarımlar. Görev, verileri işler, yüzleri algılamaya çalışır ve ve sonuçları bildirir.

Yüz Algılayıcı detect() ve detectForVideo() yöntemlerine yapılan çağrılar çalıştırıldı senkronize edin ve kullanıcı arayüzü ileti dizisini engelleyin. Yüzler algılandığında cihaz kamerasından video karelerinde her algılama ileti dizisi. detect() öğesini çalıştırmak üzere web çalışanlarını uygulayarak bunu önleyebilirsiniz ve detectForVideo() yöntem başka bir ileti dizisinde.

Aşağıdaki kod, işlemin görev modeliyle nasıl yürütüldüğünü gösterir:

Resim

const image = document.getElementById("image") as HTMLImageElement;
const faceDetectorResult = faceDetector.detect(image);

Video

await faceDetector.setOptions({ runningMode: "video" });

let lastVideoTime = -1;
function renderLoop(): void {
  const video = document.getElementById("video");

  if (video.currentTime !== lastVideoTime) {
    const detections = faceDetector.detectForVideo(video);
    processResults(detections);
    lastVideoTime = video.currentTime;
  }

  requestAnimationFrame(() => {
    renderLoop();
  });
}

Yüz Algılayıcı görevi çalıştırmayla ilgili daha kapsamlı bilgi için bkz. kod örneği hakkında daha fazla bilgi edinin.

Sonuçları işleme ve görüntüleme

Yüz Algılayıcı, her algılama için bir yüz algılayıcı sonuç nesnesi oluşturur gerekir. Sonuç nesnesi, resim koordinatlarında yüzler ve dünyadaki yüzler içeriyor koordinatlar.

Aşağıda, bu görevdeki çıkış verilerinin bir örneği gösterilmektedir:

FaceDetectionResult:
  Detections:
    Detection #0:
      BoundingBox:
        origin_x: 126
        origin_y: 100
        width: 463
        height: 463
      Categories:
        Category #0:
          index: 0
          score: 0.9729152917861938
      NormalizedKeypoints:
        NormalizedKeypoint #0:
          x: 0.18298381567001343
          y: 0.2961040139198303
        NormalizedKeypoint #1:
          x: 0.3302789330482483
          y: 0.29289937019348145
        ... (6 keypoints for each face)
    Detection #1:
      BoundingBox:
        origin_x: 616
        origin_y: 193
        width: 430
        height: 430
      Categories:
        Category #0:
          index: 0
          score: 0.9251380562782288
      NormalizedKeypoints:
        NormalizedKeypoint #0:
          x: 0.6151331663131714
          y: 0.3713381886482239
        NormalizedKeypoint #1:
          x: 0.7460576295852661
          y: 0.38825345039367676
        ... (6 keypoints for each face)

Aşağıdaki resimde, görev çıkışının görselleştirmesi gösterilmektedir:

Sınırlayıcı kutuları olmayan görüntü için orijinal resme bakın.

Yüz Algılayıcısı örnek kodu, Search Ads 360'ta bulunan daha fazla bilgi edinmek için kod örneği