我们可能会经常用到去图片去背景的功能, 比如证件照改背景色,或者修改图片的背景。这个现在世面上有很多的软件可以实现此类的功能,但大多数都不提供 api 接口访问,或者说接口收费昂贵,今天和大家说一下如何来自建图片去背景服务,可以给自己的软件提供去背景的接口。
一、介绍
目前市面上有很多自动去背景的图片,但要么准确率不高,要么要收费,我们来看下比较流行的市面上的软件。
1. 百度抠图
网址:https://ai.baidu.com/tech/body/seg
优点:可以在线试用,支持 API 调用,可以制作属于自己的抠图软件
缺点:只支持人像抠图,其它抠图效果不理想, api 有调用次数限制,超出需要购买
2. remove.bg
基于 U-2-Net 做的深度学习在线抠图,效果非常好
网址:https://remove.bg
优点:效果好,支持 api 调用
缺点:不支持高清图片下载,api 收费贵
其实还是可以通过自建 remove bg 服务,搭建好了后,不管是自己使用还是制作去背景软件,都可以胜任。
二、自建去背景服务
这里使用的是托管在 github 的一款开源图片去背景工具,效果还是非常不错的,可以自定义模型,可以使用 api 接口调用
安装前提需要 python3.8 以上版本,并安装了 pip
安装命令:pip install rembg
安装完成后就安装完成了,是不是非常简单~ 但还需要再下载一个模型文件
下载完成后,把这2个文件放到 ~/.u2net 目录下至此就完成了项目的搭建工作,下面可以用命令行或者 reset 接口的方式给图片去背景
三、图片去背景
把~/.local/bin 目录加到 path 下, 因为去背景的命令在这里。
1. web网页形式给图片去背景
启动去背景服务 rembg-server 启动服务
http://localhost:5000/?url=http://image.png
后面接网络图片地址,可以对网络上的图片去背景
如果是自己本地的图片可以选择 post 方式提交
<form action="http://localhost:5000" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="upload"/>
</form>
这样就可以了。怎么样是不是非常简单~
如果是想通过 api 接口访问,只需要把图片通过 api 接口发送到你的服务地址便可以
2. 命令行的方式给图片去背景
命令行去背景用的命名是 rembg, 我们可以使用 rembg -h 查看帮助
rembg -o out.png usage: rembg [-h] [-m {u2netp,u2net}] [-a [ALPHA_MATTING]] [-af ALPHA_MATTING_FOREGROUND_THRESHOLD] [-ab ALPHA_MATTING_BACKGROUND_THRESHOLD] [-ae ALPHA_MATTING_ERODE_SIZE] [-az ALPHA_MATTING_BASE_SIZE] [-p PATH PATH] [-o [OUTPUT]] [input]
positional arguments:
input Path to the input image.
optional arguments:
-h, --help show this help message and exit
-m {u2netp,u2net}, --model {u2netp,u2net}
The model name.
-a [ALPHA_MATTING], --alpha-matting [ALPHA_MATTING]
When true use alpha matting cutout.
-af ALPHA_MATTING_FOREGROUND_THRESHOLD, --alpha-matting-foreground-threshold ALPHA_MATTING_FOREGROUND_THRESHOLD
The trimap foreground threshold.
-ab ALPHA_MATTING_BACKGROUND_THRESHOLD, --alpha-matting-background-threshold ALPHA_MATTING_BACKGROUND_THRESHOLD
The trimap background threshold.
-ae ALPHA_MATTING_ERODE_SIZE, --alpha-matting-erode-size ALPHA_MATTING_ERODE_SIZE
Size of element used for the erosion.
-az ALPHA_MATTING_BASE_SIZE, --alpha-matting-base-size ALPHA_MATTING_BASE_SIZE
The image base size.
-p PATH PATH, --path PATH PATH
An input folder and an output folder.
-o [OUTPUT], --output [OUTPUT]
Path to the output png image..jpg
简单的使用方式
rembg -o output.png input.png 就可以完成图片的去背景
高级使用,可以使用 -a -ae 等参数来调整图片
四、总结
如果想要自建图片去背景服务,可以使用 rembg,他安装和使用上都非常简单,可调的参数也很多,支持通过命名行或者通过 api 的方式提交图片,这样就完全可以自制一个去背景图片的软件