Python + AI:完美抠图,更换背景

1 篇文章 0 订阅

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/7BdEjWTF9S0kGMgWnudSNA

翻看家里的老照片,发现一只小 dog,很趣致吧,这眼神汪汪地~ (背景是在厨房)。

有时候就想把某些照片里的人物或者主角抠出来,然后贴到喜欢的背景图里,比如你想自己制作一个 DIY 的头像。

虽然有很多 APP 或者小程序可以提供这类的功能,付费购买服务固然没问题,但是免费的服务都是带有瑕疵的,比如输出的最终图片带有广告水印,或者像素过低导致图片略显模糊等等。

你想要免费的早午晚三餐,我都懂。求人不如求己,发挥极客精神,让我们自己动手吧。接下来就介绍一个非常好用的 python 工具包 Rembg,其中也应用了大模型之类的 AI 来辅助提取人像或者主角,详情往下看。

环境准备–linux

Rembg 是用 python 开发的,依赖于 python3 的执行环境,而且要求版本在 python 3.7 ~ 3.11 之间。

我比较常使用的平台是 linux,现在大部分的 linux 发行版都是默认安装了 python3,开始之前还是确认一下 python 的版本

$ cat /etc/issue
Ubuntu 20.04.4 LTS
$ python -V
Python 3.8.10

如果你最先安装的是 python 2,然后又安装了 python 3,那么可以

$ python3 -V

环境

在安装工具包之前,有必要提醒一下,每个工具都有其依赖的特定环境,那么环境的相互隔离就显得很有必要了,在 python 生态中,我们可以运用好虚拟环境的特性做到这点。

创建一个工程目录 rembg,并在里边新建虚拟环境,存放环境的目录名这里定为 .venv,然后切换 python 环境到虚拟环境下

$ python -m venv .venv
$ source .venv/bin/activate
(.venv) $ 

进入虚拟环境后,命令行的最前面会自动加上虚拟环境的目录,表示已经进入该目录下的虚拟环境。关于 python 虚拟环境的更多介绍可以看看我的另一篇文章《Python:灵活的开发环境》// TODO.

安装 Rembg

(.venv) $ pip install rembg

Rembg 的依赖包比较多,安装启动后,需要等一会,一杯茶过后我们再回来看。。。

如果你的网络环境不是很顺畅,可以参考一下网上的方法,切换 linux 安装包源到墙内的镜像源,不展开了,自行查阅。

虽说运行前的环境已安装好,但是 Rembg 在本地第一次运行的时候会从 github 下载一个叫做 U-2-Net(U square net) 的模式识别图像处理模型,这是一个基于 Apache 2.0 license 的开源 AI 项目,曾经获得 2020 最佳论文奖(BEST PAPER AWARD)。

到这一步了,如果还会执行失败,大概率是因为你的网络受限导致下载失败,比如在墙内。不用慌,我都替你想好了,可以在我公众号后台回复【u2net】获得网盘分享链接。下载完成后,用 tar -zxf 解压并存放到当前用户的 ~/.u2net/u2net.onnx。u2net.onnx 就是解压后的最终文件,大小接近 200 MB,下载起来需要花点时间,不过这对于好奇心爆棚的你来说,都是小 case。

小试牛刀–抹除背景

好了,环境已准备好,现在开始耍耍刚磨好的大刀 -

动物篇

就用文初的那张小狗图片来试一下吧,原始图片是 dog.jpeg,输出没有背景的图片 dog_without_bg.jpeg,文件路径都在当前文件夹下。

(.venv) $ rembg i dog.jpeg dog_without_bg.jpeg
(.venv) $ ll
...
-r-xr-xr-x 1 root root  959306 Mar 16  2017 dog.jpeg*
-rwxrwxrwx 1 root root 2088784 Oct 21 20:52 dog_without_bg.jpeg*

打开输出的图片 dog_without_bg.jpeg 看看

看上去图像提取得非常好,背景真的抹去了,而且速度很快,输入的源图片文件 dog.jpeg 大小接近 1 MB,花费的时间也不过十几秒钟,可能我的机器比较高级?其实硬件放在现在就是中规中矩的配置,你一点也不需要为此担心硬件。

人物篇

试完动物,再换一张人像看看,试一下可爱的小女孩被偷拍下的一瞬间

(.venv) $ rembg i girl.jpeg girl_without_bg.jpeg
(.venv) $ ll
...
-r-xr-xr-x 1 root root  99541 Dec 28  2014 girl.jpeg*
-rwxrwxrwx 1 root root 857075 Oct 21 20:54 girl_without_bg.jpeg*

打开输出的图片 girl_without_bg.jpeg 看看

这效果真的是杠杠滴,输入的图片文件 girl.jpeg 大小接近 100 KB,花费的时间也仅需要几秒钟,太棒了!

更换背景

上面只是抹除了老照片里的背景,新的背景插入还需要其它软件来完成,而插入图片可以通过专业图片处理软件的图层操作来添加,比如 Photoshop 等等。

但是我要介绍一个非常好用的开源免费软件给大家,这样你就不需要为盗版 license 烦恼了,我怎么那么喜欢为大伙操碎了心?

GIMP 接受挑战!GIMP 跨平台,在各个主流操作系统都有完好的支持。

先来看看效果,我把小狗的背景换到了更加喜庆的场合下,你看

怎么弄的?

  1. 打开 GIMP,然后菜单栏 文件 --> 打开,选中上面 Rembg 输出的已抹去背景的小狗图 dog_without_bg.jpeg。

  2. 再次菜单栏 文件 --> 作为图层打开,选中一张你觉得很喜庆的照片,这张照片将作为新背景图。我选了一张放鞭炮之后的照片,鞭炮象征着热闹,再好不过了。

  3. 这时候,你会发现新背景图在最前面,把其它内容都遮盖了。你可以在主窗口的右边,有个图层窗口,其中列出来了有两个图层,最上面是最后打开的新背景图,下面才是没有背景的小狗图,这样你可以拖动其中一张,让它俩互换顺序,然后你就可以看到小狗已经站在新背景图里了。

  4. 再来一些后期大小位置调整,这里略过。。。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值