|
|
BackgroundMattingV2 是华盛顿大学几位研究员提出的一种实时、高分辨率的背景替换技术,能保留头发细节,效果惊人,是基于 Python 实现的。在 4K 分辨率下,该技术的运行速度为 30fps,在现代 GPU 上,高清的运行速度为 60fps。该技术是基于背景抠图,其中一帧额外的背景被捕获并用于恢复前景蒙版和前景层。# w1 S9 A) D. N% m5 N
! O) G2 o& \ H7 c, N/ f" ^
项目源码地址:
8 [$ S2 ^4 V5 Z: [7 ]https://github.com/PeterL1n/BackgroundMattingV2
# ]. _2 {" Z3 a" K, O项目依赖库:+ `$ E4 A+ L" M# m( ^
kornia==0.4.1
5 W: n0 H# z4 Q2 A1 C) J3 g tensorboard==2.3.0" G/ a% ^* ^2 L, ^
torchvision==0.8.1- E5 o0 r+ n; h
tqdm==4.51.0& \ `, { w$ c0 c7 v8 b% P
opencv-python==4.4.0.449 N; K% {- _# w8 o
onnxruntime==1.6.0* x9 U& Y( J& z& k6 i; v' N' m( u. q; x
开发者提供的一些文件资源(国内需木弟子):
4 P5 A2 D; Z z! F- |1 ^1、下载模型/权重文件
+ l. J/ Z$ O/ j! R' q) Phttps://drive.google.com/drive/folders/1cbetlrKREitIgjnIikG1HdM4x72FtgBh?usp=sharing
3 i! g; T5 g/ S! y5 q0 f2、用于练习的视频和图片文件
8 ], Z4 B7 P k, n0 {" R% \' f, \HD视频:
$ {# h; g) J7 yhttps://drive.google.com/drive/folders/1j3BMrRFhFpfzJAe6P2WDtfanoeSCLPiq/ [. X3 f! M8 P5 G( k" @
4K视频和图片:
( }' C8 l& a+ d* M' Y0 l3 thttps://drive.google.com/drive/folders/16H6Vz3294J-DEzauw06j4IUARRqYGgRD?usp=sharing3 d, V% a" \3 G% a6 L# W7 l0 J
项目demo脚本介绍:
2 C- x. b1 e5 O% y* }8 Qinference_images.py:用于图片中的背景替换,用法如下:+ E% `% p% m+ Z& T5 o& |3 E& ^! T
python inference_images.py
( Q( @2 s" q: w5 y: {--model-type mattingrefine
" K0 F! A* z; v4 ^* ^# W9 Q# ~+ j--model-backbone resnet50
6 L1 W! S! V) e* P2 \# K# M3 X: F--model-backbone-scale 0.25
0 _0 I* S1 A/ P--model-refine-mode sampling
( { T5 A" k7 k9 P! b* V3 C--model-refine-sample-pixels 80000
, \" A8 T) I. e' k( u) N--model-checkpoint "PATH_TO_CHECKPOINT"
, ^9 q$ G5 A1 J1 {4 D$ Q& Q--images-src "PATH_TO_IMAGES_SRC_DIR"
, b# k4 m1 B$ H$ f; W--images-bgr "PATH_TO_IMAGES_BGR_DIR"
0 A6 \6 j8 K# w8 F/ Z; w--output-dir "PATH_TO_OUTPUT_DIR", X' a! s, B, ~$ N5 H
--output-type com fgr pha$ C. o1 d' O2 a
inference_video.py: 用于视频中的背景替换,用法如下:
+ |. n$ T0 Z) m5 |6 x4 W: Ypython inference_video.py ' @! y2 b5 ^+ |# N" g
--model-type mattingrefine * H3 c# K% t( g/ h
--model-backbone resnet50 4 H c$ n2 x9 H
--model-backbone-scale 0.25
U0 I+ J2 w# }& [--model-refine-mode sampling
* E- [9 d" _& S3 a--model-refine-sample-pixels 80000 9 f x1 `/ ^' c% M" o- b( Y' r
--model-checkpoint "PATH_TO_CHECKPOINT"
" U( g" _, k. T& n--video-src "PATH_TO_VIDEO_SRC"
: N [$ q# _, S2 t r( m--video-bgr "PATH_TO_VIDEO_BGR"
) z7 @# c! L; h--video-resize 1920 1080
: F9 u% }- [2 ]--output-dir "PATH_TO_OUTPUT_DIR" ; x3 Y3 y1 h, k* K
--output-type com fgr pha err ref+ }2 Y. q% e/ @1 t: e
inference_webcam.py:用于使用网络摄像头下的交互式背景替换,用法如下:
, g8 j0 J# [& p+ N) Ppython inference_webcam.py
: j! m/ n) b( y( u--model-type mattingrefine 2 \+ m, H* X) A6 l& j2 {: ?
--model-backbone resnet50 ) ]4 x, K1 D. y# j2 z
--model-checkpoint "PATH_TO_CHECKPOINT"
# N1 B7 |* A" v! n: I' o--resolution 1280 720
$ I6 ?) F' m1 E2 S' c8 u虚拟摄像机
, [. C& B4 I4 ^( g 开发者提供了一个应用插件,通过他们的模型将网络摄像头视频输送到一个虚拟摄像头。该插件仅适用于Linux系统,可以在Zoom视频会议软件中使用。更多详情请查看:
0 N6 \. ~: u: Y0 h% T- s! rhttps://github.com/andreyryabtsev/BGMv2-webcam-plugin-linux
2 H% O& N$ I; Q9 {6 L/ c在Google Colab上体验
9 u% E: d/ E2 a, \4 z: s) g0 T 另外,开发者还提供了Google Colab的体验地址(国内需要木弟子),可以体验替换图片和视频中的背景。
" O7 u4 D3 I; N2 w. l! L$ c1、图片背景替换体验地址:
, j# A' n7 `) g& Chttps://colab.research.google.com/drive/1cTxFq1YuoJ5QPqaTcnskwlHDolnjBkB9?usp=sharing+ _$ C7 J; m5 I
2、视频背景替换体验地址:
7 v2 t/ _4 w' g+ E' ^+ C; Ahttps://colab.research.google.com/drive/1Y9zWfULc8-DDTSsCH-pX6Utw8skiJG5s?usp=sharing$ X2 o" d7 D5 c5 U6 M. H7 K
附上开发者提供的项目演示视频:& E. A4 ?+ I/ o" ^! \" t4 Z
- H" H2 r" `3 G) O |
|