वेब के लिए फ़ेस लैंडमार्क की पहचान करने वाली गाइड

MediaPipe फ़ेस लैंडमार्कर टास्क की मदद से, चेहरे के लैंडमार्क और चेहरे के हाव-भाव इमेज और वीडियो. इस टास्क की मदद से आप इंसानों के चेहरे के हाव-भाव, चेहरे के फ़िल्टर और इफ़ेक्ट लागू करने के साथ-साथ वर्चुअल अवतार बनाए. यह टास्क, मशीन लर्निंग (एमएल) के मॉडल, जो किसी एक इमेज या लगातार चलने वाली इमेज के साथ काम कर सकते हैं में से उसी को चुनने के लिए कहें. टास्क से चेहरे के 3-डाइमेंशन वाले लैंडमार्क, ब्लेंडशेप मिलते हैं चेहरे की बारीकियों का पता लगाने के लिए स्कोर (चेहरे के हाव-भाव दिखाने वाले गुणांक) रीयल टाइम में सर्फ़ेसेस और रूपांतरण आव्यूहों का इस्तेमाल करके इफ़ेक्ट रेंडर करने के लिए ज़रूरी ट्रांसफ़ॉर्मेशन.

इन निर्देशों में आपको वेब और JavaScript के लिए फ़ेस लैंडमार्कर इस्तेमाल करने का तरीका बताया गया है दिखाई देता है. सुविधाओं, मॉडल, और कॉन्फ़िगरेशन के बारे में ज़्यादा जानकारी के लिए खास जानकारी देखें.

कोड का उदाहरण

फ़ेस लैंडमार्कर के लिए दिए गए उदाहरण में, इसे पूरी तरह लागू करने की सुविधा है आपके संदर्भ के लिए JavaScript में टास्क. यह कोड, इस टास्क की जांच करने और यह पाने में आपकी मदद करता है ने अपना फ़ेस लैंडमार्कर ऐप्लिकेशन बनाना शुरू किया है. आपके पास रिपोर्ट को देखने, चलाने, और फ़ेस लैंडमार्कर के उदाहरण कोड में बदलाव करें बस अपने वेब ब्राउज़र का इस्तेमाल करके.

सेटअप

इस सेक्शन में, डेवलपमेंट एनवायरमेंट को सेट अप करने के मुख्य चरणों के बारे में बताया गया है खास तौर पर, फ़ेस लैंडमार्कर का इस्तेमाल किया जा सकता है. इस पर सामान्य जानकारी के लिए वेब और JavaScript डेवलपमेंट एनवायरमेंट को सेट अप करना. इसमें ये भी शामिल हैं प्लैटफ़ॉर्म वर्शन की ज़रूरी शर्तें पूरी करते हैं. इसके बारे में ज़्यादा जानने के लिए, वेब के लिए सेटअप गाइड.

JavaScript पैकेज

फ़ेस लैंडमार्कर कोड MediaPipe @mediapipe/tasks-vision के ज़रिए उपलब्ध है NPM पैकेज. आप इस प्लैटफ़ॉर्म में दिए गए निर्देशों का पालन करके, इन लाइब्रेरी को खोजा और डाउनलोड किया जा सकता है सेटअप गाइड.

एनपीएम की मदद से, ज़रूरी पैकेज इंस्टॉल किए जा सकते हैं ऐसा करने के लिए:

npm install @mediapipe/tasks-vision

अगर आपको कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) के ज़रिए टास्क कोड को इंपोर्ट करना हो तो <head> में यह कोड जोड़ें अपनी एचटीएमएल फ़ाइल में टैग जोड़ें:

<!-- 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>

मॉडल

MediaPipe Face लैंडमार्कर टास्क के लिए, एक प्रशिक्षित मॉडल की ज़रूरत होती है, जो इस सुविधा के साथ काम कर सके टास्क. फ़ेस लैंडमार्कर के लिए ट्रेन किए गए मॉडल के बारे में ज़्यादा जानकारी के लिए, देखें टास्क की खास जानकारी मॉडल सेक्शन.

कोई मॉडल चुनें और डाउनलोड करें, और फिर उसे अपनी प्रोजेक्ट डायरेक्ट्री में सेव करें:

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

टास्क बनाएं

फ़ेस लैंडमार्कर createFrom...() फ़ंक्शन में से किसी एक का इस्तेमाल करें अनुमान लगाने के लिए टास्क तैयार करें. createFromModelPath() का इस्तेमाल करना फ़ंक्शन के लिए तैयार मॉडल फ़ाइल के रिलेटिव या ऐब्सलूट पाथ का इस्तेमाल करें. अगर आपका मॉडल पहले से ही मेमोरी में लोड हो, तो createFromModelBuffer() तरीका.

नीचे दिए गए कोड उदाहरण में, createFromOptions() फ़ंक्शन का इस्तेमाल करने के बारे में बताया गया है टास्क सेट अप करना. createFromOptions फ़ंक्शन की मदद से, फ़ेस लैंडमार्कर, जिसमें कॉन्फ़िगरेशन के विकल्प मौजूद हैं. ज़्यादा जानकारी के लिए, यह देखें कॉन्फ़िगरेशन के विकल्प.

नीचे दिया गया कोड, कस्टम टेंप्लेट की मदद से टास्क बनाने और कॉन्फ़िगर करने का तरीका बताता है विकल्प:

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

कॉन्फ़िगरेशन विकल्प

इस टास्क में वेब और JavaScript के लिए ये कॉन्फ़िगरेशन विकल्प मौजूद हैं ऐप्लिकेशन:

विकल्प का नाम ब्यौरा मान की सीमा डिफ़ॉल्ट मान
running_mode टास्क के लिए रनिंग मोड सेट करता है. दो मोड:

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इमेज: सिंगल इमेज इनपुट का मोड.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है वीडियो: किसी वीडियो के डिकोड किए गए फ़्रेम के लिए मोड या इनपुट डेटा की लाइव स्ट्रीम, जैसे कि कैमरे से ली गई हो.
{IMAGE, VIDEO} IMAGE
numFaces चेहरों की अधिकतम संख्या जिनका पता FaceLandmarker. स्मूदिंग सिर्फ़ तब लागू होती है, जब num_faces को 1 पर सेट किया गया है. Integer > 0 1
minFaceDetectionConfidence चेहरे की पहचान के लिए कम से कम कॉन्फ़िडेंस स्कोर इतना होना चाहिए सफल माना जाता है. Float [0.0,1.0] 0.5
minFacePresenceConfidence चेहरे की मौजूदगी का कम से कम कॉन्फ़िडेंस स्कोर स्कोर करने के लिए कहें. Float [0.0,1.0] 0.5
minTrackingConfidence चेहरा ट्रैक करने के लिए कम से कम कॉन्फ़िडेंस स्कोर इन्हें सफल माना जाता है. Float [0.0,1.0] 0.5
outputFaceBlendshapes क्या फ़ेस लैंडमार्कर, चेहरे के अलग-अलग शेप दिखाता है. चेहरे के अलग-अलग आकार के आकारों का इस्तेमाल, चेहरे के 3D मॉडल को रेंडर करने के लिए किया जाता है. Boolean False
outputFacialTransformationMatrixes क्या FaceLandmarker, चेहरे के ट्रांसफ़ॉर्मेशन मैट्रिक्स. FaceLandmarker मैट्रिक्स में चेहरे के लैंडमार्क को कैननिकल चेहरे के मॉडल से बदलकर चेहरे की पहचान की गई थी, ताकि उपयोगकर्ता पहचाने गए लैंडमार्क पर इफ़ेक्ट लागू कर सकें. Boolean False

डेटा तैयार करें

फ़ेस लैंडमार्कर, इमेज में मौजूद चेहरों की पहचान उन किसी भी फ़ॉर्मैट में कर सकता है जिनका इस्तेमाल करने के लिए, होस्ट ब्राउज़र. यह टास्क, डेटा इनपुट की प्री-प्रोसेसिंग को भी मैनेज करता है. इसमें ये शामिल हैं साइज़ बदलना, रोटेशन, और वैल्यू नॉर्मलाइज़ेशन. वीडियो में लैंडमार्क चेहरों पर, तो आप टाइमस्टैंप का उपयोग करके एक समय में एक फ़्रेम को तेज़ी से संसाधित करने के लिए API का उपयोग कर सकते हैं फ़्रेम की सेटिंग का इस्तेमाल करें.

टास्क को पूरा करें

फ़ेस लैंडमार्कर, detect() (रनिंग मोड IMAGE के साथ) का इस्तेमाल करता है और ट्रिगर करने के लिए detectForVideo() (रनिंग मोड VIDEO के साथ) तरीके अनुमान. टास्क डेटा को प्रोसेस करता है, चेहरों को लैंडमार्क करता है, और फिर नतीजों की रिपोर्ट करता है.

फ़ेस लैंडमार्कर detect() और detectForVideo() तरीकों से कॉल किए जा सकते हैं साथ ही, यूज़र इंटरफ़ेस थ्रेड को ब्लॉक भी कर सकता है. अगर आपको चेहरे मिलते हैं में, किसी डिवाइस के कैमरे से वीडियो फ़्रेम की जांच की जाती है, तो हर डिटेक्शन की वजह से थ्रेड. detect() को चलाने के लिए वेब वर्कर लागू करके, इसे रोका जा सकता है और किसी दूसरी थ्रेड पर detectForVideo() तरीके हैं.

नीचे दिया गया कोड बताता है कि टास्क मॉडल की मदद से प्रोसेसिंग कैसे लागू की जाती है:

इमेज

const image = document.getElementById("image") as HTMLImageElement;
const faceLandmarkerResult = faceLandmarker.detect(image);

वीडियो

await faceLandmarker.setOptions({ runningMode: "VIDEO" });

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

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

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

फ़ेस लैंडमार्कर टास्क को पूरी तरह से लागू करने के लिए, यह देखें: कोड का उदाहरण.

नतीजों को हैंडल करना और दिखाना

फ़ेस लैंडमार्कर, हर बार पहचान करने की सुविधा के लिए नतीजा ऑब्जेक्ट दिखाता है दौड़ना. नतीजे के ऑब्जेक्ट में, पहचाने गए हर चेहरे के लिए एक फ़ेस मेश होता है हर लैंडमार्क के लिए निर्देशांक तय करता है. विकल्प के तौर पर, रिज़ल्ट ऑब्जेक्ट भी ये काम कर सकता है इसमें ब्लेंड साइज़ होते हैं, जो चेहरे के हाव-भाव दिखाते हैं. साथ ही, इसमें चेहरे के ट्रांसफ़ॉर्मेशन मैट्रिक्स. इसका इस्तेमाल, उन लैंडमार्क पर चेहरे के इफ़ेक्ट लागू करने के लिए किया जाता है जिनका पता लगाया गया है.

इस टास्क के आउटपुट डेटा का एक उदाहरण नीचे दिया गया है:

FaceLandmarkerResult:
  face_landmarks:
    NormalizedLandmark #0:
      x: 0.5971359014511108
      y: 0.485361784696579
      z: -0.038440968841314316
    NormalizedLandmark #1:
      x: 0.3302789330482483
      y: 0.29289937019348145
      z: -0.09489090740680695
    ... (478 landmarks for each face)
  face_blendshapes:
    browDownLeft: 0.8296722769737244
    browDownRight: 0.8096957206726074
    browInnerUp: 0.00035583582939580083
    browOuterUpLeft: 0.00035752105759456754
    ... (52 blendshapes for each face)
  facial_transformation_matrixes:
    [9.99158978e-01, -1.23036895e-02, 3.91213447e-02, -3.70770246e-01]
    [1.66496094e-02,  9.93480563e-01, -1.12779640e-01, 2.27719707e+01]
    ...

नीचे दी गई इमेज, टास्क के आउटपुट का विज़ुअलाइज़ेशन दिखाती है:

फ़ेस लैंडमार्कर के उदाहरण कोड से, होम स्क्रीन पर टास्क के नतीजे वापस मिले हैं, तो कोड का उदाहरण