smooth-app
전 세계 식품의 성분·영양·정보를 자유롭게 협업하고 공개하는 데이터베이스
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Telefon kamerasıyla temassız nabız ölçümü: tarayıcıda çalışan ince ayarlı derin öğrenme modeli.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Sıradan bir kamera, yüze hiçbir şey takmadan, nabzı 1 BPM civarında hatayla ölçebilir mi?
Bu proje, yüz derisindeki gözle görülmeyen renk değişimlerinden nabzı ölçen uçtan uca bir sistem. Klasik görüntü ve sinyal işlemeyle başlayıp derin öğrenmeye uzanıyor; sonunda telefonun tarayıcısında, internetsiz, gerçek zamanlı çalışıyor.
📱 Telefonda dene: https://nisagwn.github.io/rppg/ (kurulum yok, görüntü telefondan çıkmaz)
| Klasik POS | Hazır derin model (PURE) | Bu proje (en iyi tur) | |
|---|---|---|---|
| Ana test (28 video, önden webcam) | 3.54 BPM | 2.57 BPM | 1.10 BPM (5. tur) |
| Telefon / yan USB kamera (28 video) | 15.63 BPM | 7.47 BPM | 1.64 BPM (5. tur) |
| VIPL-HR (283 video, webcam + telefon) | 4.81 BPM | 4.53 BPM | 3.49 BPM (7. tur B) |
| DLCN, gece ışığı (152 video) | – | – | 1.31 BPM (7. tur D) |
Ortalama pencere hatası (10 s pencere, parmak PPG referansı, Viterbi takibiyle). Test kişileri hiçbir eğitimde
kullanılmadı. Her satırın en iyisi farklı bir eğitim turundan; tek bir modelin bütün testlerdeki sonucu ve
anlamlılık testleri için: docs/07_arastirma_gunlugu.md.
| Veri seti | Kişi | Özellik |
|---|---|---|
| MCD-rPPG | 600 | 3 kamera (önden, telefon, yan USB), dinlenme + egzersiz |
| VIPL-HR | 107 | webcam + Huawei P9 telefon, 9 senaryo (RealSense kaynağı etiket uyumsuz olduğu için çıkarıldı) |
| DLCN | 98 | gece, 10–100 lux değişen ışık |
| COHFACE | 40 | yoğun sıkıştırılmış video |
| UBFC-rPPG, PURE | 42 + 10 | laboratuvar, hareket senaryoları |
Her yeni veri setinde etiket kalitesi (SNR), işaret ve zaman kayması eğitimden önce ölçülüyor; etiketi videoyla örtüşmeyen videolar eğitime girmiyor.
https://nisagwn.github.io/rppg/ adresini telefonun tarayıcısında açın. Android ve iPhone'da çalışır; "Ana ekrana ekle" ile uygulama gibi kullanılır ve sonra internetsiz açılır.
.rppgrec, ~25 MB); scripts/import_own.py eğitim/test verisine çevirir. Görüntünün kendisi değil, yalnızca 72×72 yüz kırpıntısı saklanır.mobile/test/webgpu_check.mjs).Sinyal işleme kodu (mobile/dsp.js) Python paketinin birebir karşılığı; testler aynı girdide
1e-9 düzeyinde aynı sonucu doğrular.
Gerçek veride doğrulama (results/mobil_dogrulama_yuz/): MCD test
kişilerinin 60 kesiti Chrome'a sahte kamera olarak verildi, uygulama gerçek zamanlı ölçtü. Uygulama yüz bulamazsa
sonuç göstermez; hata, sonuç verdiği saniyelerde ölçülür.
| Kamera | Uygulama MAE | Sonuç verdiği süre (yalnız pico → pico + YuNet) | Klasik Python hattı |
|---|---|---|---|
| Önden webcam | 3.6 BPM | %81 → %93 | 6.4 BPM |
| Telefon | 3.7 BPM | %48 → %95 | 10.3 BPM |
| Yan açı USB | 2.9 BPM | %23 → %94 | 17.5 BPM |
results/mobil_dogrulama_modeller/). Uygulamaya çevrimdışı
telefon/USB testinde en iyi olan 5. tur kondu.| Ne | Nerede |
|---|---|
| Araştırma günlüğü: bütün deneyler, bulgular, anlamlılık testleri, olumsuz sonuçlar | docs/07_arastirma_gunlugu.md |
| Eğitim turlarının ayrıntılı sonuçları | results/derin_ogrenme/ (kaggle_tur*/SONUCLAR.md) |
| Etiket kalitesi ve zaman kayması analizi | results/derin_ogrenme/VERI_KALITESI.md, senkron_model.csv |
| Klasik yöntemler: sentetik, UBFC, MCD, maske deneyi | results/synthetic/, results/ubfc/, results/mcd/, results/maske_deneyi/ |
| Dönem raporu | docs/05_rapor.md |
| İş planı | docs/04_is_plani.md |
| Proje önerisi, veri toplama protokolü, sunum taslağı | , , |
| # | Katkı | Kod | Sonuç |
|---|---|---|---|
| 1 | Hareket farkında, güvenle ölçeklenen Viterbi nabız takibi | rppg/hr.py, fusion.py | Gerçek veride %12–29, derin modelde ~%50 hata azalması |
| 2 | SNR ağırlıklı çoklu-bölge spektral füzyon | rppg/fusion.py | Sentetikte güçlü; gerçek veride genellikle zararlı (dürüstçe raporlandı) |
| 3 | Zamanda yumuşatılmış ağırlıklı cilt maskesi | rppg/signals.py | İkili maskenin ışık titremesine kilitlenmesini önler (%100 → ≤0.24 BPM hata) |
| 4 | Kontrollü zorluk senaryolu sentetik benchmark | rppg/synthetic.py | 9 zorluk tipi tek tek ayrılarak ölçülür |
Sentetik veride önerilen hat POS ile 0.70 BPM; "hepsi birden" senaryosunda klasik 11.6 → 1.2 BPM. UBFC-rPPG'de klasik yöntemler 1.5–2.0 BPM.
Windows: KURULUM_WINDOWS.bat (sanal ortam, kütüphaneler, testler), ardından CALISTIR.bat menüsü: canlı demo,
video analizi, EVM, kayıt, benchmark, veri seti indirme. Linux/macOS: bash kurulum.sh.
python scripts/live_demo.py # canlı demo (webcam)
python scripts/run_video.py --video yuz.mp4 # bir videoyu analiz et
python scripts/make_evm_video.py --video yuz.mp4 # nabzı görünür kılan EVM videosu
python -m pytest -q # testler
python scripts/dl_prepare.py --mcd 60 --ubfc 10 # veri hazırlama (72x72 kırpıntı + etiket)
python scripts/dl_quality.py --data data/dl # etiket kalitesi (SNR, işaret, kayma)
python scripts/dl_sync_check.py --write --data data/dl --subs vipl # model tabanlı etiket hizalama
python scripts/dl_train.py --arch mmrphys --epochs 150 --lr 1e-3 # MMRPhys sıfırdan
python scripts/dl_evaluate.py --model results/.../best.pth --name "MMRPhys"
python scripts/dl_compare.py results/.../test_sonuclari.csv "A+Viterbi" "B+Viterbi" # anlamlılık
python scripts/dl_export_onnx.py --model results/.../best.pth # telefon için ONNX
Büyük eğitimler Kaggle GPU'sunda yapıldı: kaggle/rppg_hazirla.ipynb veriyi hazırlayıp
Hugging Face'e koyar; kaggle/rppg_egitim_7.ipynb eğitir, saatte iki kez yedekler ve
oturum kesilirse kaldığı yerden devam eder (Colab'da da çalışır).
rppg/ klasik çekirdek: yüz/ROI, cilt maskesi, POS/CHROM/ICA/LGI, filtreler, Viterbi, füzyon, EVM, sentetik
scripts/ çalıştırılabilir betikler; dl_*.py derin öğrenme hattı
mobile/ telefon uygulaması (PWA): dsp.js, dl_worker.js (ONNX), model/
kaggle/ Kaggle/Colab defterleri (veri hazırlama, eğitim turları)
results/ deney çıktıları; derin_ogrenme/ altında her eğitim turu
docs/ öneri, plan, rapor, araştırma günlüğü, sunum
tests/ pytest testleri (mobil node testleri: mobile/test/)
docs/05_rapor.md.| Sorun | Çözüm |
|---|---|
| "Kamera açılamadı" | Kamerayı kullanan başka uygulamayı (Teams, Zoom) kapatın ya da --camera 1 deneyin. |
| "YÜZ BULUNAMADI" | Yüz önden ve iyi aydınlatılmış olmalı; Haar kaskadı profil yüz bulmaz. |
| Nabız saçma değerlerde | 10 s ısınmayı bekleyin, hareketsiz durun, arkadan gelen ışıktan kaçının. |
cv2 ... CascadeClassifier hatası | OpenCV 5 kurulmuş: pip install "opencv-python>=4.8,<5". |
pip install hatası | Python 3.11 ya da 3.12 önerilir. |
docs/01