专栏 · 抠出主体

第一次抠图下载的是模型,不是照片。

你要把主体从背景里拿出来,发给客户或放进详情页。先弄清第一次下载的是什么,再动笔刷。

抠图会不会把照片上传:不会

在就绪图里做抠出主体,计算发生在你这台浏览器里。像素不进就绪图的服务器。这里没有登录,也没有注册,不存在一个用来收图片的账号。你按下开始,结果由这台设备算出来,再由你自己下载。

所以照片不会上传到就绪图。你要发出去的是下载下来的那一份新文件。原图还在原来的文件夹里,除非你自己把它移走、换掉或删掉。

照片留在本机。下载的是这台设备刚生成的一张带透明的 PNG。

第一次用,浏览器会取一份模型

第一次点开这道工序,浏览器会从模型发布方下载一份识别模型,放进这台设备的缓存。那份文件是用来分辨前景和背景的,不是你的照片。计算仍然在这台设备上跑,模型只负责认边界。

模型下载和你手里的图是两件事。下载方向是从发布方到你的浏览器,图片没有反向传出去。所以「第一次用了网络」和「照片被上传」不是同一句话。把识别放在本地做,代价就是这一次下载;换来的是后面每张图都在同一台设备上算完,不必为了去背景先交一份原图出去。缓存里留下的是那份模型,不是你的画面。

会碰到网络的只有两处

页面打开时,这次访问交给 51.LA 统计。统计的是有人打开了页面,不是图片文件,也不会知道你放进来的是哪一张。这条边界在文件怎么处理里也写着。

另一处就是上面那份模型。除了这两件事,抠出主体不需要把画面送到别处去算。整台电脑不联网这句话不成立,但图片不上传到就绪图这句话站得住。

会走网络的是统计和模型。图片文件不在其中。

算完拿到的是透明 PNG

抠出主体的输出固定是 PNG,因为只有 PNG 留得住透明通道。背景去掉之后,主体周围空出来的地方是空的,不是白底。放到深色页面或另一张图上,边缘才不会带出一圈白。这种 PNG 常常比原来的 JPG 还大,因为空出来的地方也要占位置。要发出去之前,可以走一遍体积收缩,保持原格式,透明不会被铺成白底;别在这一步收成 JPG,那一步会把空的地方填上颜色。

这道工序只处理当前这一张。一次放 40 个文件是别的批量工序的用法;抠图要一张一张看边缘,不要指望它把一批全部跑完。

边缘不干净,用笔刷擦

自动认出来的边界不会每次都准。发丝、半透明的纱、和背景颜色接近的袖口,常会留下一点底色。这时用笔刷把残留的背景擦掉,擦的是下载下来的那份结果。

也有算不出来的时候。页面不会假装成功,它会让你改用涂抹,自己把主体圈出来。所以别人说抠图一定干净的时候,你可以不信。这道工序给的是一个起点,剩下几笔由你补。

发出去之前看三眼

  • 主体边缘有没有一圈原来的底色,深色背景上最容易看出来。
  • 要留透明的地方是不是真的空了,别把白底当成透明。
  • 下载下来的是一份新文件,原图还在原来的文件夹里。

还有一件事常被忽略:队列只活在这一次打开里。刷新页面或关掉标签,还没下载的结果就没了。抠完先下载,再去做别的事。

顺序上先后有别

先把构图定下来再抠,通常省事。主体已经落在画面中间,要认的范围小,边缘也更好检查。抠完再改尺寸,透明不会被填掉,边缘也不会被重新采样弄脏。

还没放图的话,回到工序台把图片丢进去,再开抠出主体。想核对文件到底去了哪里,翻一下文件怎么处理那一页。