|
BackgroundMattingV2 是华盛顿大学几位研究员提出的一种实时、高分辨率的背景替换技术,能保留头发细节,效果惊人,是基于 Python 实现的。在 4K 分辨率下,该技术的运行速度为 30fps,在现代 GPU 上,高清的运行速度为 60fps。该技术是基于背景抠图,其中一帧额外的背景被捕获并用于恢复前景蒙版和前景层。( F( Y; Z. g: ^3 l6 W
9 @# m& B9 j1 k8 [% }
项目源码地址:
0 w/ _" q" k! a, @* b4 Shttps://github.com/PeterL1n/BackgroundMattingV2
0 J n- Z& J! J9 \" @项目依赖库:- g3 T- A2 e7 l: n9 N K
kornia==0.4.1
& @2 S/ @' k) T5 g6 ` tensorboard==2.3.0
6 V3 C Z% f* C2 g torchvision==0.8.1, c* k1 J6 X, P: i
tqdm==4.51.0! D: G, [* F1 k7 Q7 I& H6 P
opencv-python==4.4.0.44
3 f' _/ o3 o9 ]6 V+ ]9 Y& H onnxruntime==1.6.08 r( f" I! c. \: x" N/ N& G0 |
开发者提供的一些文件资源(国内需木弟子):/ t" k i- U; Q7 o* z3 f3 W
1、下载模型/权重文件
. ~9 d8 U* h/ g: nhttps://drive.google.com/drive/folders/1cbetlrKREitIgjnIikG1HdM4x72FtgBh?usp=sharing
4 N3 X# [1 I7 q4 K2、用于练习的视频和图片文件
8 x/ N5 o2 H: ~* A& B& ^HD视频:7 E- L# W5 F8 g" O2 D/ N# \, F7 Y) H! b
https://drive.google.com/drive/folders/1j3BMrRFhFpfzJAe6P2WDtfanoeSCLPiq, b/ S# l& u7 q- B3 n& a
4K视频和图片:5 p7 p* K/ ~1 t8 t& Z1 F# X* A" c
https://drive.google.com/drive/folders/16H6Vz3294J-DEzauw06j4IUARRqYGgRD?usp=sharing
( `/ n: S2 k' J0 B' A2 B项目demo脚本介绍:! M2 B0 F" v8 {8 Y) r# |
inference_images.py:用于图片中的背景替换,用法如下:
' x6 s1 \) |+ |0 O% P6 ppython inference_images.py& d/ U1 j5 q1 N6 U& j; t" o
--model-type mattingrefine
3 Z+ B" {8 s+ [7 }; k- {: V1 K/ Z--model-backbone resnet505 D6 m. }4 s; x+ k
--model-backbone-scale 0.259 }- x' F+ ^+ B7 Y8 s
--model-refine-mode sampling
. L6 }' t* h f, z--model-refine-sample-pixels 80000
% U- _: @" H' m--model-checkpoint "PATH_TO_CHECKPOINT"
; z1 I: m; @% C4 v3 {, s--images-src "PATH_TO_IMAGES_SRC_DIR"
o' l4 B0 {: P8 I9 l--images-bgr "PATH_TO_IMAGES_BGR_DIR"
3 W1 q' L9 s( V0 i--output-dir "PATH_TO_OUTPUT_DIR"$ Y* |! f; l( Q" R1 o7 T- {
--output-type com fgr pha6 ] |9 C$ z. H- D& |6 J8 y
inference_video.py: 用于视频中的背景替换,用法如下:
3 P1 J- F% t: ?; P. |python inference_video.py " E% F6 G$ R! K8 n5 Q' _5 w5 s
--model-type mattingrefine - D: P9 @6 Y: z) @$ z) N" C7 m( s
--model-backbone resnet50 * \& o! I/ I3 e% O
--model-backbone-scale 0.25 : `2 m1 e- L$ j) U: V# A
--model-refine-mode sampling
6 Q# F( V8 S; V4 F$ r--model-refine-sample-pixels 80000 / w+ Y+ k- v: R9 o3 F: l
--model-checkpoint "PATH_TO_CHECKPOINT" # E: F6 o0 A5 `9 r4 i2 W
--video-src "PATH_TO_VIDEO_SRC" 0 i* B! v: [7 x9 ]% [
--video-bgr "PATH_TO_VIDEO_BGR" / L1 O: ^# V0 N9 P& d6 h
--video-resize 1920 1080
+ O' p0 n8 h$ `2 V: a--output-dir "PATH_TO_OUTPUT_DIR"
- r, X6 T9 C: f( b. [8 g- B/ i--output-type com fgr pha err ref
. p* E$ E! F) @) z: w, g" `inference_webcam.py:用于使用网络摄像头下的交互式背景替换,用法如下:. C: o( z: Z8 x) @: _7 Z
python inference_webcam.py
+ Y! [# t; ]& {. K6 L7 \9 g--model-type mattingrefine : P8 q" W) m- V0 n9 |
--model-backbone resnet50
# t/ T( ~; g' C+ O7 p* n--model-checkpoint "PATH_TO_CHECKPOINT" - u8 ~5 _) \# W ~
--resolution 1280 720
8 e3 E1 w7 ^' x4 a4 Q6 T/ G虚拟摄像机
7 V1 X9 S$ C* l) K7 N6 [ 开发者提供了一个应用插件,通过他们的模型将网络摄像头视频输送到一个虚拟摄像头。该插件仅适用于Linux系统,可以在Zoom视频会议软件中使用。更多详情请查看:
" B e. D+ I, q {, Vhttps://github.com/andreyryabtsev/BGMv2-webcam-plugin-linux; v* C9 F1 {( |- t; I
在Google Colab上体验/ l( V& _# o, t
另外,开发者还提供了Google Colab的体验地址(国内需要木弟子),可以体验替换图片和视频中的背景。
) o7 v& \2 T( Z6 q5 C- C6 w1、图片背景替换体验地址:
% c8 D0 {- P9 c6 ?: jhttps://colab.research.google.com/drive/1cTxFq1YuoJ5QPqaTcnskwlHDolnjBkB9?usp=sharing1 K, H8 Y. N* a8 H! U" u7 W
2、视频背景替换体验地址:/ M1 M! j! I2 p% M. P8 N* V) r
https://colab.research.google.com/drive/1Y9zWfULc8-DDTSsCH-pX6Utw8skiJG5s?usp=sharing( P8 w" ]/ [# q/ s6 p1 j' J9 t' z
附上开发者提供的项目演示视频:
: z& [, g- C& z
" L# k- |4 W$ W. @8 P9 ~ |
|