一、前言
注!!!未经博主许可,请勿随意转载博文,若需转载,底下评论或私信博主。
吹的再好不如直接看结果吧,CVPR最新出炉的开源模型附论文
论文:https://arxiv.org/abs/2004.00626
模型:https://github.com/senguptaumd/Background-Matting
上官方视频(手动狗头.jpg)
文末贴上自己跑的证件照效果
二、环境
首先真的要提一下这个模型的环境了,因为博主的电脑是window10系统,对于这个模型可能不太友好,光是为了使这个模型能够成功运行,博主估计查过百条博客有余,不断的在tiao bug,真的是难受。。。
最后还要在吐槽一个,tensor的生态是真的乱,各种接口就和下面这张图一样,导模型换模板搞到没脾气。。
接着说环境,大概是这几个:
- CUDA=10.0
- cudnn=7.x(只要是7开头即可)
- pytorch=1.1.0
- torchvision=0.3.0
- tensorflow-gpu==1.14.0
- numpy==1.17.0(官方是这样,但是我降到了1.16,版本太高会出现bug)
- opencv-python==3.4.5.20
- pandas
- Pillow==6.1
- scikit-image==0.14.2
- scipy==1.2.1
- tqdm
- tensorboardX
温馨提示!!!尽量按照官方提供的版本进行安装,特别是前五个环境,丝毫不能错。。
三、模型下载
3.1 分割抠图模型下载
首先大家去官网把模型下载下来,如果嫌G社下载太慢,大家可以用我的链接:https://download.csdn.net/download/weixin_45829462/12414302
下来后应该都是这几个文件:
但这只是目前的,后续还需要添加很多模型和新建一些文件夹。
3.2 DeepLab生态模型下载
因为前面以及下来一个tensor1.14了,但是你发现单纯使用它会不断报bug,所以博主回去看了官方文件,发现还有下载另一个tensor版本,原文注解如下:
Background Matting needs a segmentation mask for the subject. We use tensorflow version of Deeplabv3+
故还需要下载deeplab_model,地址如下:https://github.com/tensorflow/models/tree/master/research/deeplab
依旧附上博主的链接:https://download.csdn.net/download/weixin_45829462/12414074
下载后的deeplab_model根文件夹下,模型里面包含的文件有:
重头戏来了,点开research文件夹,按照官方要求:
cd models/research/
export PYTHONPATH=$PYTHONPATH:pwd
:pwd
/slim
将research和research中的slim文件添加到环境变量在,注,用户和本机的都要!
3.3 下载官方训练模型
一共是四个,下载地址:https://drive.google.com/drive/folders/1WLDBC_Q-cA72QC8bB-Rdj53UB2vSPnXv
需要梯子。。。需要梯子,下载的文件如下:
附上博主的链接:
https://download.csdn.net/download/weixin_45829462/12414329
https://download.csdn.net/download/weixin_45829462/12414333
https://download.csdn.net/download/weixin_45829462/12414341
https://download.csdn.net/download/weixin_45829462/12414349
接着,就可以开开心心的运行模型了
四、运行结果
首先运行分割的py文件:
python test_segmentation_deeplab.py -i sample_data/input
结果如下:
效果还可以。。
,接着,运行背景替换的py文件:
python test_background-matting_image.py -m real-hand-held -i sample_data/input/ -o sample_data/output/ -tb sample_data/background/0001.png
命令行很长,讲解一下,
- -m real-hand-held 是你要选择的权重模型,就是博主之前说的下载的那四个
- -i sample_data/input/ -i指input ,说的是你要处理的图片,包含之前被分割的中间图,以及有人的图,和没有人的背景图
- -o sample_data/output/ 指输出后的图片存放的文件夹,所以这里需要新建文件加output,故,一共有这几个文件夹
结果如下:
切割图:
输出图:
效果是真的不错,但也不排除作者自己的模型对自己的数据会比较友好。。。
最后,附上博主自己运行模型扣的切割图:
,最后证件照的轮廓也大致是这样,就不放上来了,只能说,还是挺香的吧。。。
博客这几天会不定时更新,将之前跑模型的坑不断补上,感兴趣的可以点赞关注博主