bellFace가 채택한 초경량 가상 배경 정보
6505 단어 JavaScriptTensorFlowwasmtech
bellFace의 가상 배경
2021년 8월 발표된 벨페이스의 가상 배경에 적용된 기술을 소개한다.
Tensorflow.정보
브라우저에 설치된 가상 배경은 대부분 Tensorflow입니다.js[1]를 사용하고 싶은데 실현되는 경우가 많습니다.
Tensorflow.js는 일반적으로 WebGL 백엔드[2]를 사용하여 연산합니다.
이 웹GL 백엔드는 CPU 백엔드에 비해 최대 속도가 100배나 빨라 당연히 모니터가 없는 PC에서는 성능을 향상시키기 어렵다.
Wasm 백엔드 정보
Wasm은 WebAssembly,TensorFlow를 말합니다.js의 Wasm 백엔드는 신경 네트워크 연산으로 최적화되어 도형판이 없어도 CPU만으로 고속 연산을 할 수 있다.
그러나 Wasm 백엔드도 만능이 아니다정부 지침서에는 다음과 같은 내용이 기재돼 있다.
일반적으로 Wasm은 모델이 작거나 WebGL(OES texture flat 확장 기능)을 지원하지 않거나 저성능 GPU를 탑재한 로우엔드 장치에 적용됩니다.
또한 다음 표는 TensorFolow입니다.js1.5.2 시점의 추론 시간이지만 이 표를 보면 소형 모델 중Wasm이 더 빠르고 모델 사이즈가 클수록 WebGL이 우세하다.
소형 모형
모델
WebGL
Wasm
CPU
메모리
BlazeFace
22.5 ms
15.6 ms
315.2 ms
.4 MB
FaceMesh
19.3 ms
19.2 ms
335 ms
2.8 MB
대규모 모형
모델
WebGL
Wasm
CPU
메모리
PoseNet
42.5 ms
173.9 ms
1514.7 ms
4.5 MB
BodyPix
77 ms
188.4 ms
2683 ms
4.6 MB
MobileNet v2
37 ms
94 ms
923.6 ms
13 MB
또한, TensorFolow.js의 버전 2.3.0에서부터 Wasm 백엔드는 상기 표보다 더욱 고속화[3]되었다.
동작 환경에 따라 Wasm+SIMD+다중 스레드를 지원하면 PoseNet의 Wasm 백엔드도 더욱 높은 성능을 낼 수 있습니다.
사용 방법도 간단합니다. 아래 코드를 통해 간단하게 전환할 수 있습니다.
// どこかで↓を定義しておく
// tfjsWasm.setWasmPaths('wasmのある場所を指定');
// バックエンドを指定する
await tf.setBackend('wasm');
await tf.ready();
벨페이스의 수법에 대해서.
Tensorflow.js+Wasm 백엔드+Blaze Face를 기반으로 합니다.
고객의 동작 환경은 다음과 같은 측면에서 시도되었는데 가상 배경이 ON이더라도 CPU 부하가 8%가량 상승하는 데 그쳐 일반적인 가상 배경의 부하보다 훨씬 낮았다.
CPU 부하가 높으면 팬이 신음하고 동작이 불안정해지기도 하지만 벨페이스라면 가상 배경을 오래 사용해도 문제가 되지 않으니 기회가 된다면 꼭 시도해보세요.
모델
CPU
메모리
MacBook Pro (13-inch, 2019)
2.8GHz 코어 Intel Core i7
16 GB 2133 MHz LPDDR3
동작 검증 페이지
내장형 카메라는 CORS 제한으로 인해 실행할 수 없습니다. 다음 링크에서 확인을 엽니다.
페이지 오른쪽 상단의 Controls 패널에서 백엔드 및 모델을 전환할 수 있습니다.
Macbook에서 열린 상태에서 캡처한 사진을 게재했는데 Wasm+Blazeface가 가장 빠른 조합입니다.
또 사용 중인 PC에 고속 비디오 패널을 설치한 경우도 웹GL이 더 빠른 경우도 있다.
Wasm + BlazeFace
60fps 정도
WebGL + BlazeFace
35fps 정도
Wasm + BodyPix
18fps 정도
WebGL + BodyPix
20fps 정도
총결산
현재 Wasm 백엔드 + Blaze Face는 가장 강력한 성능의 조합으로 BellFace의 가상 배경을 구현했습니다.
Wasm 백엔드의 성능 개선은 계속될 것으로 보이며 버전 업그레이드와 브라우저 설치 상황에 따라 앞으로도 달라질 것으로 보인다.
또 웹GL보다 빠른 웹GPU도 기대된다.
10월에 Tensor Folow.js의 웹GPU 백엔드알파 버전도 나와요.이기 때문에 앞으로 로컬 응용 프로그램과 같은 성능을 발휘할 수 있습니다.
We are hiring!!!
베어페이스는 계속해서 제품과 시스템의 구성원을 적극적으로 채용했다.
엔지니어는 아래에서 응모할 수 있다.
이외의 위치는 다음과 같이 확인할 수 있다.
메티도 있다고 해서 캐주얼한 면담으로 들어보고 싶은 분들은 아래부터 들어보세요.
Who's Next ??
내일「bellFace Advent Calendar 2021」은 제품 매니저 야원 씨입니다.내일도 기대해주세요!
각주
https://www.tensorflow.org/js?hl=ja ↩︎
https://www.tensorflow.org/js/guide/platform_environment?hl=ja#webgl_백엔드 ↩︎
https://developers-jp.googleblog.com/2020/09/simd-tensorflowjs-webassembly.html ↩︎
Reference
이 문제에 관하여(bellFace가 채택한 초경량 가상 배경 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/branch/articles/b65a22ee778661텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)