Rumah  >  Artikel  >  hujung hadapan web  >  Pelajari pengecaman wajah dan analisis sentimen dalam JavaScript

Pelajari pengecaman wajah dan analisis sentimen dalam JavaScript

PHPz
PHPzasal
2023-11-04 13:26:061290semak imbas

Pelajari pengecaman wajah dan analisis sentimen dalam JavaScript

Pelajari pengecaman muka dan analisis emosi dalam JavaScript

Pengenalan:
Dengan perkembangan pesat teknologi komputer, teknologi kecerdasan buatan menjadi semakin matang. Antaranya, teknologi pengecaman muka dan analisis emosi digunakan secara meluas dalam pelbagai bidang. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk pengecaman muka dan analisis emosi, serta memberikan contoh kod khusus.

1. Pengecaman muka
Pengecaman muka ialah teknologi yang mengesan dan mengecam wajah daripada imej atau video. Dalam JavaScript, anda boleh menggunakan pustaka pihak ketiga Face-api.js untuk melaksanakan fungsi pengecaman muka. Berikut ialah kod sampel yang melaksanakan pengesanan muka dan pengecaman daripada strim video kamera:

const video = document.getElementById('video');

Promise.all([
  faceapi.nets.tinyFaceDetector.loadFromUri('/models'),
  faceapi.nets.faceLandmark68Net.loadFromUri('/models'),
  faceapi.nets.faceRecognitionNet.loadFromUri('/models'),
  faceapi.nets.faceExpressionNet.loadFromUri('/models')
]).then(startVideo);

function startVideo() {
  navigator.getUserMedia(
    { video: {} },
    stream => video.srcObject = stream,
    err => console.error(err)
  )
}

video.addEventListener('play', () => {
  const canvas = faceapi.createCanvasFromMedia(video);
  document.body.append(canvas);
  const displaySize = { width: video.width, height: video.height };
  faceapi.matchDimensions(canvas, displaySize);
  setInterval(async () => {
    const detections = await faceapi.detectAllFaces(video, new faceapi.TinyFaceDetectorOptions())
      .withFaceLandmarks()
      .withFaceExpressions();
    const resizedDetections = faceapi.resizeResults(detections, displaySize);
    canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);
    faceapi.draw.drawDetections(canvas, resizedDetections);
    faceapi.draw.drawFaceLandmarks(canvas, resizedDetections);
    faceapi.draw.drawFaceExpressions(canvas, resizedDetections);
  }, 100)
});

Dalam kod di atas, model Face-api.js mula-mula dimuatkan, dan kemudian strim video diperoleh dengan memanggil getUserMedia() kaedah dan Nilainya diberikan kepada elemen video. Dalam pendengar acara main balik video, gunakan kaedah detectAllFaces() untuk mengesan semua muka dalam strim video dan lukis bingkai pengesanan muka dan mata utama muka melalui kaedah drawDetections() dan drawFaceLandmarks(). Akhir sekali, lukis ekspresi muka melalui kaedah drawFaceExpressions().

2. Analisis Emosi
Analisis emosi adalah untuk menentukan keadaan emosi seseorang dengan menganalisis dan mengenal pasti ekspresi muka. Dalam JavaScript, anda juga boleh menggunakan perpustakaan Face-api.js untuk melaksanakan fungsi analisis sentimen. Berikut ialah kod sampel yang mengecam ekspresi muka daripada gambar dan mengeluarkan hasil emosi:

const img = document.getElementById('img');

Promise.all([
  faceapi.nets.tinyFaceDetector.loadFromUri('/models'),
  faceapi.nets.faceLandmark68Net.loadFromUri('/models'),
  faceapi.nets.faceRecognitionNet.loadFromUri('/models'),
  faceapi.nets.faceExpressionNet.loadFromUri('/models')
]).then(startAnalysis);

function startAnalysis() {
  faceapi.detectAllFaces(img)
    .withFaceLandmarks()
    .withFaceExpressions()
    .then(result => {
      if (result.length > 0) {
        const expressions = result[0].expressions;
        const emotion = Object.keys(expressions).reduce((a, b) => expressions[a] > expressions[b] ? a : b);
        console.log(`Detected emotion: ${emotion}`);
      } else {
        console.log("No faces detected");
      }
    })
    .catch(err => console.error(err));
}

Dalam kod di atas, model Face-api.js mula-mula dimuatkan, dan kemudian orang dalam gambar dikesan melalui detectAllFaces() Kaedah wajah dikesan, dan kemudian kedudukan titik utama wajah diperolehi melalui kaedah withFaceLandmarks(), dan akhirnya hasil ekspresi diperolehi melalui kaedah withFaceExpressions(). Gunakan kaedah reduce() untuk mencari emosi dengan kebarangkalian tertinggi dalam hasil ungkapan dan mengeluarkannya.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan JavaScript untuk melaksanakan pengecaman muka dan fungsi analisis emosi, dan menyediakan contoh kod khusus. Dengan mempelajari dan menguasai teknologi ini, teknologi kecerdasan buatan boleh diaplikasikan dalam pelbagai bidang untuk membawa pengalaman dan perkhidmatan yang lebih baik kepada pengguna. Kami berharap melalui pengenalan dan contoh kod artikel ini, pembaca dapat lebih memahami dan menggunakan teknologi ini dan menggalakkan pembangunan lebih banyak aplikasi kecerdasan buatan.

Atas ialah kandungan terperinci Pelajari pengecaman wajah dan analisis sentimen dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn