LiYing:照相馆证件照后期自动化,离线跑完换背景、裁切与排版
把一张符合要求的单人肖像照交给它,人脸识别、角度校正、换底色、裁尺寸、拼相纸连成一条线,全程在本机跑完。
照相馆的证件照后期,流程几乎是固定的:先把拍歪的人像摆正,再把背景换成红蓝白,然后按一寸或二寸裁好,最后在 5 寸、6 寸相纸上排成 3×3 或 2×2,加上裁剪线送去冲印。单张照片做下来并不复杂,麻烦的是每天都在重复同样的动作。
LiYing 是开发者 aoguai 写的一套自动化程序,把这条线整体搬到了本机。它在 GitHub 上以 AGPL-3.0 协议开源,仓库里写着这个项目的初衷是帮父母减轻照相馆的工作量。程序处理的是证件照,输入需要符合一般要求的单人肖像照。
一条流水线,六个步骤
官方给出的工作流分成六步:载入图像、智能角度与校正、皮肤美化、背景替换、尺寸调整、自动排版。识别环节由两个模型搭伙完成,YOLOv8n-pose 负责定位人体,YuNet 负责找人脸关键点,两者一起判断这张照片的构图能不能用。角度纠正就建立在这些关键点上,肩膀与眼睛的倾斜角度算出来之后,整张图跟着转正,不需要人盯着网格线自己拉。
换成什么底色,交给人像分割模型
背景替换用的是 RMBG 系列的主体分割模型,1.4 与 2.0 两个版本都在支持范围内。分割出来的主体可以合成到任意 RGB 颜色上,红底、蓝底、白底以及证件上常见的深色底都写在颜色配置里,需要别的颜色直接填通道值。它也能输出带透明通道的结果,后续若要放到别的图像软件里继续加工,这一步可以省掉重新抠图的功夫。
皮肤美化由 --skin-retouch 开关控制,默认磨皮 0.7、美白 0.8,两个度数都能单独调。下面的对比图左边是原图,右边是默认度数处理后的效果,脸上的高光与纹理都还在。

尺寸写在配置文件里
裁切尺寸不写死在代码里,而是放在 data 目录下的 CSV 配置中,中文和英文各一份。常见规格基本覆盖了,一寸、二寸、小一寸、小二寸、护照、签证都能直接选,不够用的时候照着模板加一条就行。裁切不是单纯把图片缩放,它还要保证人物在画面里的位置与比例符合规范,构图则由脸的大小和头顶留白两个参数微调,前者决定头像占多大,后者决定脸往下压多少。

拼到一张相纸上
排版这一步省下的手工活很明显。处理好的单张证件照会按指定行列排进相纸:一寸 3×3 排到 5 寸相纸,二寸 2×2 排到 5 寸相纸,一寸 4×2 排到 6 寸相纸,行列数可以自己定。照片之间的间距、整版在相纸上的位置也能调,位置一共九个锚点,从左上到右下,因此可以一次把两种排法拼满整张相纸,把边缘的空白也用上。裁剪线可以开关,打印出来沿着线裁就行。


三种用法,都在本机
Windows 用户可以拿整合包,里面已经带了嵌入式的 Python 运行环境,图形界面在本地地址上打开就能操作;命令行版本的参数覆盖更细,适合接进自己写的批处理脚本;Docker 部署把端口映射、模型目录挂载与显卡透传都写进了编排文件,适合放在一台常开的机器上。整个处理过程不需要联网,顾客的照片不会离开这台电脑,这一点对每天经手上百张人像的门店来说很重要。显卡加速是可选配置,装了 CUDA 与 cuDNN 之后程序会优先用显卡推理,没有显卡也不会卡住,会自动退回处理器计算。
用之前需要知道的事
模型文件不跟着程序走,需要单独取回并放进指定目录,第一次配置绕不开。识别与抠图的效果也和照片本身有关,作者在文档里写得很直白:这个项目针对的是证件照处理,输入应当是符合一般要求的单人肖像,拿复杂背景或多人合照去试,出现意外结果属于正常现象。也有用户反馈个别照片处理时会报错,换一组尺寸或底色的参数组合通常就能过去。
关于协议
AGPL-3.0 的要求比常见的宽松许可证更进一步:如果修改后的版本被当作网络服务提供给他人使用,改动部分同样需要以 AGPL 的方式开放源码。只是自己店里用来处理照片,不受这条约束。
从识别、校正、换底到裁切与拼版,LiYing 把照相馆证件照后期的重复动作收进一次运行,处理全在本机完成。它不解决拍摄,也不做精修,只把其中固定不变的那一段接了过去。