PAS7 Studio
Абстрактна ілюстрація процесу створення AI та browser camera експерименту
Технології30 серп. 2026 р.·6 хв читання·Оновлено 30 серп. 2026 р.

Як зробити browser camera depth і liveness check: камера, Canvas та Face Landmarker

Практичний гайд зі створення browser-based camera sandbox: live-відео, псевдоглибина, preprocessing для AI, Face Landmarker та перевірка поворотів голови.

Frontend developersAI engineersProduct teamsSecurity prototypers

Browser camera sandbox будується як послідовність capture → pixels → landmarks → decision. getUserMedia дає відеопотік, Canvas дозволяє читати й перетворювати пікселі, а Face Landmarker знаходить ключові точки обличчя та допомагає оцінити поворот голови. Для справжнього anti-spoof потрібна додаткова модель liveness, бо landmarks самі по собі не доводять, що перед камерою фізична людина.

Відео можна обробляти локально, не відправляючи кадри на сервер.
Псевдоглибина з однієї RGB-камери — це візуальний сигнал, а не вимір відстані.
Challenge з випадковими командами сильніший за фіксовану послідовність, але не замінює anti-spoof модель.
Xin
Що ми зробили

Від live-камери до зрозумілого сигналу

Замість приховувати inference за кнопкою ми зробили маленьку лабораторію: кожен шар видно, його можна перемкнути, а логіку — повторити.

Camera mode показує оригінальний відеопотік, щоб мати чесну точку порівняння.
Depth mode фарбує пікселі за яскравістю та локальним контрастом. Так легше помітити, як у кадрі змінюється телефон, обличчя або фон.
Edges mode підсилює локальні перепади кольору — простий спосіб побачити ознаки, які часто цікаві vision-моделям.
Для AI mode робить умовну нормалізацію, квантування і підсилення features. Це preprocessing preview, а не готова нейромережа.
Liveness mode підключає Face Landmarker і просить виконати послідовність поворотів голови.
Архітектура

Чотири шари, які легко пояснити

Такий поділ корисний і для демо, і для production-прототипу.

01

Отримати відео

Запитуємо getUserMedia з video: true, показуємо permission state і зупиняємо всі tracks під час cleanup.

02

Намалювати кадр

Через drawImage переносимо поточний frame у Canvas. Після цього можна читати ImageData, рахувати luma, contrast, edges і будувати власні візуалізації.

03

Знайти структуру

Face Landmarker повертає landmarks обличчя. Положення носа відносно очей дає просту оцінку yaw, а зміна вертикальної пози — сигнал для pitch.

04

Перевірити challenge

Для кожної команди задаємо умову, коротке утримання пози і переходимо далі лише після підтвердження. У фіналі показуємо результат, а не просто зелений badge.

Код

Мінімальний capture loop на JavaScript

Перший крок — отримати permission і під’єднати MediaStream до video element. Важливо запускати камеру тільки після дії користувача, обробляти відмову і зупиняти tracks, коли сторінка більше не використовує камеру.

TYPESCRIPT
const stream = await navigator.mediaDevices.getUserMedia({
  video: { facingMode: "user" },
  audio: false,
});

video.srcObject = stream;
await video.play();

return () => {
  stream.getTracks().forEach((track) => track.stop());
};

У нашій демці наступним кроком є requestAnimationFrame. Він малює video у canvas, після чого той самий кадр можна показати в різних режимах без додаткового network request.

Пікселі

Як із RGB-кадру зробити depth-like карту

Звичайна вебкамера не має LiDAR, але навіть простий pixel analysis добре пояснює, що бачить модель.

TYPESCRIPT
const luma = (r * 0.299 + g * 0.587 + b * 0.114) / 255;
const edge = Math.abs(luma - rightLuma) + Math.abs(luma - downLuma);
const signal = clamp((luma * 0.72 + edge * 4.4) * sensitivity, 0, 1);

Luma

Зводимо RGB до perceived brightness: R × 0.299 + G × 0.587 + B × 0.114. Це дає стабільніший grayscale сигнал.

Local contrast

Порівнюємо піксель із сусідом справа та знизу. Великі перепади стають edge signal і підсвічують межі об’єктів.

Visualization

Перетворюємо intensity у палітру. Вона допомагає оком побачити структуру, але не створює справжню геометричну глибину.

Face Landmarker

Як перевірити ліво, право та вгору

Для gesture challenge не потрібно одразу будувати складну систему ідентифікації. Достатньо знайти обличчя, вибрати стабільні landmarks і порівнювати їхні координати. У нашому прототипі nose tip порівнюється із серединою між очима, нормалізовано на відстань між очима. Це зменшує залежність від того, наскільки близько людина сидить до камери.

TYPESCRIPT
const eyeDistance = Math.max(Math.abs(rightEye.x - leftEye.x), 0.01);
const eyeMidX = (leftEye.x + rightEye.x) / 2;
const yaw = (nose.x - eyeMidX) / eyeDistance;

const isLeft = yaw > 0.1;
const isRight = yaw < -0.1;

Для руху вгору абсолютний поріг часто дає false positive: нейтральне обличчя вже має певну вертикальну геометрію. Тому краще зберегти baseline на початку кроку і перевіряти delta. Саме це виправило проблему, коли остання команда одразу скіпалась.

TYPESCRIPT
const baselinePitch = baseline.pitch;
const pitchDelta = currentPitch - baselinePitch;
const isUp = pitchDelta < -0.08;
Liveness

Що означає результат і чого він не означає

Це важлива межа між хорошим навчальним прототипом і security product.

Що ми реально бачимо

Face Landmarker може сказати, що в кадрі є обличчя, де приблизно розташовані його landmarks і чи відповідає поза очікуваному напрямку.

Що ще не доведено

Landmarks не доводять, що це фізична людина. Відео на планшеті, replay або deepfake можуть містити такі самі рухи й потенційно пройти простий challenge.

Що додати в production

Randomized challenges, blink/eye closure, texture and screen reflection signals, temporal consistency, depth/stereo cues і спеціальну anti-spoof модель.

Застосування

Де такий camera liveness flow справді корисний

Це не тільки про логін. Перевірка команд і присутності камери може бути окремим UX- та risk-сигналом.

Онбординг і KYC

Перевірити позу перед selfie/document capture. Це допоміжний UX-шар, а не заміна regulated identity verification.

Remote proctoring

Попросити випадкову позу та перевірити, що сесія не стала статичним відеозаписом.

Sensitive actions

Додати короткий challenge перед зміною recovery-даних або іншою дією з підвищеним ризиком.

Computer vision research

Порівняти RGB, edge map, псевдоглибину та landmarks на одному кадрі без чорної скриньки.

Replay test

Як чесно перевірити відео з планшета

Цей тест показує межу між gesture detection і справжнім anti-spoofing.

01

Запишіть чесну сесію

Зніміть себе на іншому пристрої, виконуючи команди по черзі.

02

Відтворіть запис перед камерою

Поставте планшет перед webcam і подивіться, чи landmarks залишаються стабільними.

03

Змініть порядок

Якщо фіксована послідовність проходить після replay, challenge занадто передбачуваний.

04

Додайте випадковість

Генеруйте команди й nonce на сесію, а не використовуйте один сценарій для всіх.

05

Не називайте це доказом людини

Landmarks підтверджують позу, але не фізичність людини. Для цього потрібні screen/texture/depth сигнали та anti-spoof модель.

FAQ

Часті запитання

Чи можна отримати справжню глибину з однієї вебкамери?

Ні, не як точну фізичну відстань. У цій демці depth mode — візуальний proxy на основі яскравості та контрасту. Для metric depth потрібні stereo camera, LiDAR або спеціальна monocular depth model.

Чи можна зробити liveness check повністю у браузері?

Так, landmarks та частину preprocessing можна запускати локально. Але якість anti-spoof залежить від моделі, даних і тестування проти replay, screen recapture, масок та deepfake-сценаріїв.

Чому Face Landmarker не дорівнює face recognition?

Face Landmarker повертає геометричні точки обличчя та допомагає читати позу. Він не підтверджує особу, не порівнює людину з документом і сам по собі не доводить, що перед камерою жива людина.

Чому важливо мати випадковий порядок команд?

Фіксована послідовність легше відтворюється заздалегідь записаним відео. Randomized challenge підвищує складність replay-атаки, але все одно має доповнюватися anti-spoof сигналами.

Де подивитися готовий приклад?

У нашому [Camera / Depth Sandbox](/sandbox/camera-depth): зверху live demo, нижче pipeline, tutorial і starter code з кнопкою копіювання.

Джерела

Документація та додаткове читання

Перевірено: 30 серп. 2026 р.Актуально для: Next.js 16Актуально для: React 19Актуально для: modern browsersАктуально для: localhost or HTTPSПеревірено з: MediaPipe Tasks VisionПеревірено з: Canvas APIПеревірено з: navigator.mediaDevices.getUserMedia

Спробуйте експеримент самі

У Camera / Depth Sandbox можна увімкнути камеру, перемикати режими, побачити preprocessing, а потім запустити liveness challenge з поворотами голови. Відео та аналіз працюють локально у браузері; модель Face Landmarker завантажується для inference, але ми не зберігаємо кадри.

Пов'язані статті

Скільки коштує розробка AI асистента у 2026: RAG чатбот, база знань, CRM, Telegram та підтримка
ai-assistants

Скільки коштує розробка AI асистента у 2026: RAG чатбот, база знань, CRM, Telegram та підтримка

Практичний гід для бізнесу: від чого залежить ціна розробки AI асистента у 2026 році, що входить у RAG чатбот, інтеграції з CRM, Telegram, guardrails, оцінювання, моніторинг і супровід.

AI може зробити більше. Не краще: що насправді кажуть дослідження про розробку ігор
blogs

AI може зробити більше. Не краще: що насправді кажуть дослідження про розробку ігор

Generative AI входить у production ігор, але докази складніші за хайп. Розбираємо adoption, ставлення гравців, ризики якості та практичний workflow.

AI для розробки лендінгів: де він реально прискорює запуск, а де псує конверсію
blogs

AI для розробки лендінгів: де він реально прискорює запуск, а де псує конверсію

Дослідження про використання AI у розробці лендінгів: v0, Webflow AI, Builder.io, Framer-подібні AI builders, генерація UX, copy, SEO, персоналізація, A/B тести, ризики шаблонності, безпеки, доступності та технічного боргу.

AI SEO / GEO у 2026: ваші наступні клієнти — не люди, а агенти
growth

AI SEO / GEO у 2026: ваші наступні клієнти — не люди, а агенти

Пошук зміщується від кліків до відповідей. Боти та AI-агенти сканують, цитують, рекомендують і дедалі частіше купують. Дізнайтесь, що таке AI SEO / GEO, чому класичного SEO вже недостатньо, і як PAS7 Studio допомагає брендам перемагати у «агентному» вебі.

Професійна розробка для вашого бізнесу

Створюємо сучасні веб-рішення та боти для бізнесу. Дізнайтеся, як ми можемо допомогти вам досягти цілей.