Kami membuat aplikasi Web untuk mendeteksi wajah dan topeng untuk Google Chrome

pengantar

Tujuan utamanya adalah untuk mendeteksi wajah dan topeng di browser tanpa menggunakan backend Python. Ini adalah WebApp / SPA sederhana yang hanya berisi kode JS dan dapat mengirim beberapa data ke back end untuk diproses selanjutnya. Tetapi deteksi wajah dan topeng awal dilakukan di sisi browser dan tidak ada implementasi Python yang diperlukan untuk itu.





Saat ini, aplikasi hanya berfungsi di browser Chrome.





Di artikel berikutnya, saya akan menjelaskan lebih banyak detail implementasi teknis berdasarkan penelitian kami.





Ada 2 pendekatan tentang bagaimana Anda dapat menerapkan ini di browser:





  • TensorFlowJS





  • ONNXJS





Keduanya mendukung backend WASM, WebGL dan CPU. Tetapi kami hanya akan membandingkan WASM dan WebGL, karena kinerja pada CPU sangat rendah dan tidak dapat digunakan dalam implementasi akhir.





Demo di sini





TensorFlow.js

Di situs resmi, TensorFlow.js menawarkan beberapa model terlatih dan siap digunakan dengan pasca-pemrosesan yang siap. Untuk mendeteksi wajah secara real time, kami menggunakan model BlazeFace, demo online tersedia di sini .





Informasi lebih lanjut tentang BlazeFace dapat ditemukan di sini .





, , . : 





WASM ( : 160x120px; : 64x64px)





  • Blaze Face + MobileNet V2 0.35





  • Blaze Face + MobileNet V2 0.5





  • Blaze Face + MobileNet V3 0.75





WebGL ( : 160x120px; : 64x64px)





  • Blaze Face + MobileNet V2 0.35





  • Blaze Face + MobileNet V2 0.5





  • Blaze Face + MobileNet V3 0.75





:

HTML API. . , . .





- , . requestAnimationFrame, 16,6 .





grabFrame() ImageCapture MediaStreamTrack Promise, ImageBitmap.





- . - , .





:

: < 6 fps , 7-12 fps , 13-18 fps , 19+ fps .





:





. , . "" , . - 5-10 , .





- 50.





BlazeFace TFLite Android IOS (~ 50-200 FPS).





.





( Google ).





BlazeFace 2 :





  • : 128 x 128px, , .





  • : 256 x 256px, , .





. , .





, BlazeFace , 128 x 128px. . , , 64 x 64px.





. . 64 x 64px , 32 x 32px .





?

TensorFlow.js , :





  • BlazeFace . (> 0,9), ( "" ).





  • BlazeFace , . 1, 1 ; 2 1- , / .





  • BlazeFace (, , , ). , , .





:





  1. X%.





  2. .









  3. / JS.





, , : . , , .





MobileNetV2 MobileNetV3 .





TensorFlow.js (<3Mb). , WASM . , .





  • WASM JS : ~60Kb





  • OpenCV.js: 1.6Mb





  • SPA (+TensorFlow.js): ~500Kb





  • BlazeFace : 466Kb





(TTI) ~3.5Mb JavaScript + JSON 1.5Mb to 6Mb >10 ; TTI - 4-5 .





Web Worker ( OpenCV.js ), 800-900Kb. TTI 7-8 ; <5 .





. . . , .





. , , . .





Web Workers

JS BlazeFace , Web Worker. . UX . - TensorFlow.js OpenCV.js, JS - TensorFlow.js. , , TTI . , FPS . , FPS . ~ 20%. , FPS .





- . , .





, . postMessage, - . - ( 200 ), , ( JS, React.js ).





Web Workers

, - / / . , callback- . , .





 :
mobileNetVersion=V3
mobileNetVersionMultiplier = 0.75
mobileNetVersionType = float16
thumbnailSize=32px
backend = wasm
      
      



BlazeFace -.





Web Worker :





, Web Worker , TensorFlow browser.fromPixels Web Worker. , Mac OS ~ 27, - 5. 22 Mac OS 100โ€“300 Web Worker. , .





?

ยซยป, , . - ( , , ). ยซยป . FPS, 200โ€“300, . , :





:

, :





:





  • : > 30fps





  • + : 45fps





:





  • : 2.5fps 12-15fps





  • + : 2 12fps





  1. , , 30 .





  2. MobileNetV2 0.35, .





  3. . , uint16 float16, TTI.





  4. WASM WebGL BlazeFace. TensorFlow.js (<3Mb):





    WebGL - WASM, WASM ( 3Mb 60 ). GPU WebGL.





  5. TTI WASM WebGL .





  6. TensorFlow.js , WASM SIMD, . , 2โ€“3 WASM. . , . .





  7. ~ 3,5Mb JS , 466Kb BlazeFace, 1,1Mb 5,6Mb . TTI > 10 ; - ~ 5.





  8. - OpenCV.js -, TTI .





  9. , . , , . .





  10. , , . . USB , . .





  11. , 4-5 , UX. , / :





    • , .





    • / .





  12. Dengan interaksi pengguna seperti itu, penundaan antara waktu nyata dan metadata kami di layar akan menjadi 200-300ms. Nilai-nilai tersebut akan dianggap oleh pengguna sistem sebagai penundaan yang tidak kritis.








All Articles