|
BackgroundMattingV2 是华盛顿大学几位研究员提出的一种实时、高分辨率的背景替换技术,能保留头发细节,效果惊人,是基于 Python 实现的。在 4K 分辨率下,该技术的运行速度为 30fps,在现代 GPU 上,高清的运行速度为 60fps。该技术是基于背景抠图,其中一帧额外的背景被捕获并用于恢复前景蒙版和前景层。
! B" w3 h# N+ G5 M
/ d1 N# G$ e5 u4 T
项目源码地址:
: ^- d* I# `/ I6 u! K0 dhttps://github.com/PeterL1n/BackgroundMattingV2* r- h$ l1 @; v. k4 y
项目依赖库:: `/ ~- B; W0 U1 d) A# \" A j
kornia==0.4.1
/ v. ^$ F! U% {1 N( @ tensorboard==2.3.0' H6 X; q/ F6 T$ E+ |1 o
torchvision==0.8.12 P7 R5 S7 z6 N0 o7 u, f
tqdm==4.51.0* x4 B$ Q6 X1 o1 t+ k
opencv-python==4.4.0.442 Z" R5 O( c$ u* [
onnxruntime==1.6.0
4 B2 x, ]% K; k( |; b开发者提供的一些文件资源(国内需木弟子):3 ^5 b N9 ]/ F! A2 m" x7 U) j
1、下载模型/权重文件) O! d2 Z- M) D, D) h8 F; Z$ D
https://drive.google.com/drive/folders/1cbetlrKREitIgjnIikG1HdM4x72FtgBh?usp=sharing# G& n7 P c9 s# |* P" M
2、用于练习的视频和图片文件
8 W% x) u8 o/ o1 YHD视频:
* j; O) r |5 ]8 f' W3 Zhttps://drive.google.com/drive/folders/1j3BMrRFhFpfzJAe6P2WDtfanoeSCLPiq! ]+ G5 z- D, ?7 O/ N: Z- ]5 x6 F# G
4K视频和图片:7 v4 c$ f$ f4 l: R- g4 G3 W y6 S1 L
https://drive.google.com/drive/folders/16H6Vz3294J-DEzauw06j4IUARRqYGgRD?usp=sharing
* H) P7 }1 c: Y h7 ^7 i7 L/ ]项目demo脚本介绍:2 d" X3 L! ^! e4 ~/ [8 u
inference_images.py:用于图片中的背景替换,用法如下:; x( I% s# d. a# I
python inference_images.py
" w2 J# N# U8 w--model-type mattingrefine
) p: E" _# U( O--model-backbone resnet50
0 u+ j6 F. C3 K9 l( `( O+ k" R--model-backbone-scale 0.25
& X. ^ A! n* I" D( v--model-refine-mode sampling0 a( v5 ?$ [0 z% V n, T& b3 Q
--model-refine-sample-pixels 80000
) s6 }, W" F( y% k--model-checkpoint "PATH_TO_CHECKPOINT" V4 c" Y: ~/ h6 ?7 A, m) j' {
--images-src "PATH_TO_IMAGES_SRC_DIR"
; M, m. ^$ B5 D7 N--images-bgr "PATH_TO_IMAGES_BGR_DIR"
# L$ u& c8 \) E* k, r1 t--output-dir "PATH_TO_OUTPUT_DIR"
# Q3 V y) j/ ~) j--output-type com fgr pha3 d4 D% q& v" q, i: K4 v* P8 B
inference_video.py: 用于视频中的背景替换,用法如下:% d6 n+ {' s# d$ }
python inference_video.py 2 K/ H: x( D* @2 x6 j( E
--model-type mattingrefine
! s8 |& O3 Z$ G4 i--model-backbone resnet50
0 e. b/ G5 h! _3 k3 D' `--model-backbone-scale 0.25 1 z7 I* V8 Y) E
--model-refine-mode sampling
3 I( F, N4 b N* T. D. n--model-refine-sample-pixels 80000
, i# v; ]) W0 z+ T& _--model-checkpoint "PATH_TO_CHECKPOINT" * P$ c, T# L4 v
--video-src "PATH_TO_VIDEO_SRC" # c* s S3 _* B. A
--video-bgr "PATH_TO_VIDEO_BGR"
( X$ I& K6 h% E--video-resize 1920 1080 ; D& K3 o6 W) n* R
--output-dir "PATH_TO_OUTPUT_DIR" ; c; S; S; Z! j& ~$ c
--output-type com fgr pha err ref% X+ U9 O, z7 w1 n% `
inference_webcam.py:用于使用网络摄像头下的交互式背景替换,用法如下:
3 V3 C8 I" D( h9 o1 u- Npython inference_webcam.py 3 Y/ D7 _, R3 F5 [; @
--model-type mattingrefine 2 h, m& E; w, `" c/ J6 R
--model-backbone resnet50
+ v1 f% b. O+ q( R% _--model-checkpoint "PATH_TO_CHECKPOINT"
' ?% L+ n) N' e5 w. J! U--resolution 1280 7208 P/ G. p- S I0 i
虚拟摄像机
- ` E1 B4 a! c; K 开发者提供了一个应用插件,通过他们的模型将网络摄像头视频输送到一个虚拟摄像头。该插件仅适用于Linux系统,可以在Zoom视频会议软件中使用。更多详情请查看:+ o! o, c/ _; h9 O2 s+ y9 h
https://github.com/andreyryabtsev/BGMv2-webcam-plugin-linux
' J# r. z- O) x2 [. ]1 K$ W在Google Colab上体验2 l9 R! p% K) n' F
另外,开发者还提供了Google Colab的体验地址(国内需要木弟子),可以体验替换图片和视频中的背景。
" l+ L2 Q$ g1 N& `. q1、图片背景替换体验地址:
( f2 M6 ?* g% f" l# thttps://colab.research.google.com/drive/1cTxFq1YuoJ5QPqaTcnskwlHDolnjBkB9?usp=sharing
7 ?5 F2 |. l" W! n6 m H2、视频背景替换体验地址:
! p% B6 V9 s1 _% l9 Jhttps://colab.research.google.com/drive/1Y9zWfULc8-DDTSsCH-pX6Utw8skiJG5s?usp=sharing4 u+ k- _3 q3 K# L) z' e5 A
附上开发者提供的项目演示视频:, y9 j/ t; K ~ y$ d$ g; Q
. @5 @, S9 s5 n3 [: r% J7 W
|
|