Ucuz bir kamerayı terapiye yetecek kadar iyi hale getirmek
Kullanıcılarımız evdeki yaşlı bireyler. Ellerinde 1080p kamera yok — loş bir salonda, iki metre uzakta, beş yıllık bir dizüstü var. ViMove AI, MediaPipe'ın üzerine kendi görüntü katmanını, LRD hattını ekler.
Kötü kamerada aslında ne bozulur
480p kamerada iki metre uzakta oturan biri birkaç yüz piksel boyundadır; modelin çalışacağı piksel neredeyse kalmaz.
Eklem noktaları kareden kareye titrer; sayaç yapılmayan tekrarları sayar.
Loş ışıkta model üst üste birkaç kare hiçbir şey döndürmez ve sayaç mantığı bozulur.
LRD hattı, adım adım
1 · Uyarlanır ROI — daha büyük model değil, daha iyi piksel
Tüm kareyi modele vermek yerine vücudun yerini takip edip etrafını kırpıyor ve büyütüyoruz; model kullanıcıyı yaklaşık iki kat büyük görüyor.
2 · Medyan + One Euro — iki farklı gürültü
Medyan büyük hataları, One Euro filtresi titremeyi temizler; kare kaybında son hız ile boşluk doldurulur.
3 · Kendi kamerasının ne kadar gürültülü olduğunu bilen sayaç
Hat kalan titreşimi ölçer ve eşikleri buna göre uyarlar; eşik asla sinyalin ulaşamayacağı yere itilmez.
4 · İki ray: biri saymak, biri ölçmek için
Sayım hızlı raydan, ölçüm pürüzsüz raydan yapılır; hareket açıklığı tek maksimum yerine en iyi birkaç örneğin medyanıdır.
Gerçekten işe yarıyor mu? Ölçtük.
Kaynak kodla birlikte tekrar üretilebilir bir kıyaslama geliyor: 20 temiz tekrar üretilip gerçek kamera bozulmaları uygulanıyor ve aynı akışı iki sayaç okuyor.
| Senaryo | Sayım doğruluğu — eski | Sayım doğruluğu — LRD | Hareket açıklığı hatası — eski | Hareket açıklığı hatası — LRD |
|---|---|---|---|---|
| 1280x720 · yakin | %100 | % | %0.9 | % |
| 640x480 · yakin | %100 | % | %1.4 | % |
| 640x480 · uzak | %100 | % | %3.3 | % |
| 320x240 · yakin | %100 | % | %3.3 | % |
| 320x240 · uzak | %99 | % | %8.8 | % |
| 160x120 · uzak | %95.8 | % | %28.1 | % |
Senaryo başına 60 rastgele tohum.
Kodu oku
app/static/game/lowres.js— hattın kendisiapp/static/game/game.js— 16 hareket dedektörübench/lowres_bench.mjs— kıyaslama betiği