把一张普通的单人肖像丢给程序,自动输出换好底色、裁剪到位并排满相纸的证件照。开源项目 aoguai/LiYing 正在做这件事,它在 GitHub 上已积累 3.6k Star,最近一次推送时间为 2026-08-09,代码语言为 Python。
一家照相馆的后期流程,被拆成了一条命令
传统照相馆的后期师傅往往要盯着显示器做重复劳动:抠图、换底色、裁切尺寸、拼到相纸上,活多的时候时间全花在这些步骤上。LiYing 把这几个动作串成了一条可配置流水线,输入一张符合要求的一般单人肖像,就能得到标准的相纸排布结果。
据项目 README 的「效果展示」,其 test1 输出排版可对应多种组合,包括 1 寸照片在 5 寸相纸上的 33 张排版、2 寸照片在 5 寸相纸上的 22 张排版、1 寸照片在 6 寸相纸上的 42 张排版,以及相对应的 22、22 等数量组合。项目特别说明,它聚焦的是证件照图像处理,不保证任意照片都能完美执行,输入应当符合一般要求,若拿复杂图片来做证件照而出现异常属于正常现象。
三个关键词:离线、组件化、配置驱动
从 README 的「工作流程」说明来看,LiYing 的能力边界划得比较清楚,它的立足点是离线运行、组件拆分以及由配置决定行为,更适配标准化场景。软件内部承担的工作包括人体或人脸识别、拍摄角度纠正、任意背景色替换、任意尺寸裁切,以及往标准相纸上拼版。

整条链路的实现被拆分得很细,从左到右依次覆盖检测、分割、背景替换、裁切、排版这几个环节。其中 ImageProcessor 对外提供统一入口,把 PhotoEntity、ImageSegmentation、PhotoRequirements 组合起来,模型路径和相关参数通过构造器注入进去。参数并未写进代码,而是要经 ConfigManager 以单例形式懒加载 CSV 读取:size_zh.csv 配合 size_en.csv 管裁切和排版尺寸,color_zh.csv 搭配 color_en.csv 管可替换的底色,zh 还是 en 决定最终用哪一套文件。所有运算均在本机完成,图像不离开设备,也不依赖云端 API,数据、组件化程度与二次开发便利性上各有侧重。
最短跑通路径与两个容易踩的坑
想体验最小可用示例,先确认参数里的路径写全。项目给出的默认调用方式是 run.bat ./images/test1.jpg;如果不带入图片路径直接双击运行,程序并不知道要处理哪张图。正确做法是先进到项目目录,再执行带路径的命令。
在动手之前,有几个问题值得提前看清楚。第一,默认装好的 onnxruntime 只走 CPU,要想借助显卡提速,得自行安装 onnxruntime-gpu,接着把每个 InferenceSession 的 providers 改成 ['CUDAExecutionProvider', 'CPUExecutionProvider']。第二,部署在服务器上时,图片先落到服务端,浏览器无法替用户把结果直接存到本地,现阶段只能通过右键「图片另存为」来下载。另外,尽量不要拿太复杂的图像去测试,输出可能会发生异常的旋转;优先选择满足常规条件的单人人像照片。
社区反馈已经给出了三条明确线索
使用者反馈的情况与源码问题之间,已经形成了一些确定结论:显卡加速必须手动替换 providers;服务端下载受制于浏览器行为,暂时只能右键保存;按比例裁剪这个功能已被确认会支持。至于旋转 defect 涉及的问题,目前仍处在研究阶段,缺少一个能够稳定复现的样本。

综合起来看,这个项目现阶段能力强的是自动检测换底和排版,输入越接近常规单人肖像越稳,复杂图片出现意外属于它当前还在承受的能力边界。
参与方式与许可协议
如果不愿意继续手动修图,参与门槛其实不高,从轻量反馈做起即可,没有必要一上手就改动模型。可以做的事情包括:到 issue 区反馈旋转缺陷、补充中文文档、上传更贴近真实照相馆业务场景的测试样本;若能提供旋转问题的稳定复现步骤,维护者定位起来会更快。
代码层面的任务也列得明白:给 providers 加上 GPU 自动检测、实现按比例裁剪以及取消排版、修复肩膀矫正可能导致的旋转问题。项目的进入入口在 https://github.com/aoguai/LiYing,仓库里能看到对应的最简运行示例。
需要留心的是开源合规问题,LiYing 采用 AGPL-3.0 这一许可,若打算进入商用或做闭源衍生产品,最好先确认清楚合规要求。
小结:LiYing 把证件照的识别、换底、裁剪与相纸排版压缩成一条离线配置流水线,3.6k Star 已说明这套路子被开发者认可;但默认仅 CPU 推理以及服务端仅能右键下载这两点,用户上手初期必须自查。项目已明确把按比例裁剪列入待做功能,旋转问题则仍需社区补充可稳定复现的案例。
