Python AGPL-3.0

LiYing

LiYing is an automated photo processing program designed for automating the post-processing workflow of ID photos in general photo studios. | LiYing 是一套适用于自动化 完成一般照相馆后期证件照处理流程的照片自动处理的程序。

A

aoguai

Dernière activité 9 août 2026
aoguai/LiYing

3,7 k

étoiles

337

forks

2

issues ouvertes

background-replacementimage-compressionimage-croppingphoto-layoutphoto-processingportrait-recognition

Ce README est souvent en anglais.

LiYing

简体中文 | English

GitHub release GitHub stars GitHub issues GitHub contributors GitHub forks License

LiYing 是一套适用于自动化完成一般照相馆后期证件照处理流程的照片自动处理的程序。


🧭 项目介绍

LiYing 可以完成人体、人脸自动识别,角度自动纠正,自动更换任意背景色,任意尺寸证件照自动裁切,并自动排版。

LiYing 可以完全离线运行。所有图像处理操作都在本地运行。

工作流程

workflows

效果展示

一寸 · 5寸相纸 3×3 · 白底 · 裁剪线 二寸 · 5寸相纸 2×2 · 蓝底 一寸 · 6寸相纸 4×2 · 红底 · 照片旋转90° · RMBG-2.0 一寸 · 6寸相纸 4×2 · 深蓝底 · 照片间距 · 左上+右下双布局拼满
test1_output_sheet test2_output_sheet test3_output_sheet test4_output_sheet

皮肤美化(--skin-retouch 一键开启,左为原图,右为默认度数 磨皮 0.7 / 美白 0.8 效果)

test4_retouch_compare

以上示例均可通过 python docs/scripts/generate_examples.py 复现。

注:本项目仅针对证件照图像处理,而非要求任意照片图像都可以完美执行,所以该项目的输入图片应该是符合一般要求的单人肖像照片。

如果您使用复杂图片制作证件照出现意外情况属于正常现象。


⚙️ 开始使用

整合包

如果你是 Windows 用户且没有代码阅览需求,可以下载整合包(已在 Windows 7 SP1 & Windows 10 测试)

整合包从未包含模型,您可以参考 下载对应模型 章节说明来下载模型并放入正确的位置。

同时如果运行存在问题,请先尝试按照 先决条件 章节完善环境,如果没问题可以忽略。

运行整合包

运行 BAT 脚本:

cd LiYing
run.bat ./images/test1.jpg

运行 WebUI 界面:

# 运行 WebUI
cd LiYing
run_webui.bat
# 浏览器访问 127.0.0.1:7860

🛠 先决条件

  1. 依赖项

    • LiYing 依赖于 AGPicCompress
    • AGPicCompress 需要依赖于 mozjpeg 和 pngquant
    • 您可能需要手动安装 pngquant,参考 pngquant 官方文档
  2. pngquant 配置位置

    • 环境变量(推荐)
    • LiYing/src 目录下
    • LiYing/src 目录下的 ext 目录
  3. 系统要求

🧪 从源码构建

  1. 克隆项目:
git clone https://github.com/aoguai/LiYing
cd LiYing ## 进入 LiYing 目录
pip install -r requirements.txt # 安装依赖

注: 如果您使用的是 Windows 7 系统请您至少需要是 Windows 7 SP1 以上版本,且要求 onnxruntime==1.14.0, orjson==3.10.7, gradio==4.44.1

GPU推理加速(可选)

如需使用英伟达GPU加速推理,请按以下步骤操作:

  1. 确保已安装 CUDA 与 cuDNN
  2. 查找 ONNX、CUDA 与 cuDNN 之间的对应版本
  3. 安装支持 GPU 的 onnxruntime 版本:
    # 如果已安装 CPU 版本,先卸载
    pip uninstall onnxruntime
    # 安装 GPU 版本, 确保版本正确
    pip install onnxruntime-gpu

当前版本系统会自动检测是否支持 GPU,如果支持则优先使用 GPU 进行推理,否则会自动回退到 CPU。无需额外配置。

如果存在问题请优先检查且确保使用的 Python 版本 、CUDA 版本 、cuDNN 版本 与 onnxruntime-gpu 版本相互兼容。


📦 下载对应模型

您需要下载该项目使用到的模型并将其放置在 LiYing/src/model 中。或者您可以在 CIL 中指定模型路径。

用途 模型名称 下载链接 来源
人脸识别 Yunnet / Retinaface(排版可选,美肤必需) Yunnet 下载链接 / Retinaface 项目链接 Yunnet / Pytorch_Retinaface
主体识别替换背景 RMBG-1.4/2.0 1.4 下载链接/2.0 下载链接 BRIA AI
人体识别 yolov8n-pose 下载链接 ultralytics
自动美肤 cv_unet_skin_retouching_torch / Retinaface 磨皮下载链接 / Retinaface 项目链接 ModelScope damo / Pytorch_Retinaface

注: 对于 yolov8n-pose 模型,您需要将其导出为 ONNX 模型,您可以参考官方文档实现

注: 对于自动美肤功能,您可以参照 skin-retouching-onnxruntime 自行导出 ONNX 模型,将导出的 model.onnx 重命名为 skin_retouch_mask.onnx。

同时,我们提供了转换好的 ONNX 模型,您可以直接下载使用:

下载方式 链接
Google Drive 下载链接
Github releases 下载链接
百度网盘 下载链接(提取码:8gtq)

🚀 运行

查看 CIL 帮助:

cd LiYing/src
python main.py --help

对于 Window 用户,项目提供了 bat 运行脚本:

# 运行 BAT 脚本
cd LiYing
run.bat ./images/test1.jpg

运行 WebUI:

cd LiYing/src/webui
python app.py

🧾 CIL 参数信息与帮助

python main.py --help 
Usage: main.py [OPTIONS] IMG_PATH

Options:
  -y, --yolov8-model-path PATH    YOLOv8 模型路径
  -u, --yunet-model-path PATH     YuNet 模型路径
  --face-detector [yunet|retinaface]
                                  排版用人脸检测模型;retinaface 复用美肤的
                                  face_detector.onnx  [default: yunet]
  -r, --rmbg-model-path PATH      RMBG 模型路径
  -sz, --size-config PATH         尺寸配置文件路径
  -cl, --color-config PATH        颜色配置文件路径
  -b, --rgb-list RGB_LIST         RGB(A) 通道值列表(英文逗号分隔,可选 Alpha: 0-255),用于图像合成
  -s, --save-path PATH            保存路径
  -p, --photo-type TEXT           照片类型
  -ps, --photo-sheet-size TEXT    选择照片表格的尺寸
  -c, --compress / --no-compress  是否压缩图像(使用 AGPicCompress 压缩)
  -sv, --save-corrected / --no-save-corrected
                                  是否保存修正图像后的图片
  -bg, --change-background / --no-change-background
                                  是否替换背景
  -sb, --save-background / --no-save-background
                                  是否保存替换背景后的图像
  -lo, --layout-only              仅排版照片,不更换背景
  -sr, --sheet-rows INTEGER       照片表格的行数
  -sc, --sheet-cols INTEGER       照片表格的列数
  -rt, --rotate / --no-rotate     是否旋转照片90度
  -rs, --resize / --no-resize     是否调整图像尺寸
  --ratio-crop / --no-ratio-crop  按照片打印尺寸比例裁剪,不缩放到电子像素尺寸
  -svr, --save-resized / --no-save-resized
                                  是否保存调整尺寸后的图像
  -al, --add-crop-lines / --no-add-crop-lines
                                  在照片表格上添加裁剪线
  -ts, --target-size INTEGER      目标文件大小(KB)。指定后将忽略质量和大小范围参数。
  -szr, --size-range SIZE_RANGE   文件大小范围(KB),格式为最小值,最大值(例如:10,20)
  -uc, --use-csv-size / --no-use-csv-size
                                  是否使用CSV中的文件大小限制
  -lp, --layout-position INTEGER RANGE
                                  布局位置(0-8):0=左上,1=上,2=右上,3=左中,4=中,5=右中,6=左下,7
                                  =下,8=右下  [0<=x<=8]
  --layout / --no-layout          是否生成照片排版图
  -psp, --photos-spacing INTEGER  照片间距(像素,默认0)
  --face-height-ratio FLOAT       脸大小(0-1,不能为0):越大脸越大;先调此项  [default: 0.3]
  --top-margin-ratio FLOAT        头顶留白(0-1):越大脸越下移;脸大小合适后再调此项  [default:
                                  0.175]
  --skin-retouch / --no-skin-retouch
                                  开启自动美肤
  --skin-retouch-model-dir PATH   美肤模型目录(需包含 skin_retouch_mask.onnx、retouch_ge
                                  nerator.onnx、face_detector.onnx)
  --retouch-degree FLOAT RANGE    磨皮程度(0-1)  [default: 0.7; 0.0<=x<=1.0]
  --whitening-degree FLOAT RANGE  美白程度(0-1)  [default: 0.8; 0.0<=x<=1.0]
  --help                          Show this message and exit.

人像构图可通过人脸高度和头顶留白分别调整。例如,以下参数会让头像更大并减少头顶留白:

python main.py input.jpg --face-height-ratio 0.55 --top-margin-ratio 0.10

🗂 配置文件

在该版本中,在data目录中设置了常规的证件照配置size_XX.csv与常用颜色配置color_XX.csv,您可以自行按照给出的 CSV 模板格式修改或增删配置。


🐳 Docker 部署


️ 一、构建镜像

使用 docker-compose 构建

项目根目录执行:

docker compose build
手动构建镜像

在项目根目录执行以下命令:

docker build -t liying/webui:latest .

二、启动服务

使用以下命令启动 Gradio Web UI 服务:

docker compose up -d

启动后,可通过浏览器访问:

http://127.0.0.1:7860

如遇问题,建议先检查模型是否正确放置于 src/model/ 下,并确认端口未被占用。

需要了解更多部署细节或进阶配置,可查看 Dockerfile 和 docker-compose.yml。

🙏 致谢

该项目的制作初衷和项目名称来源于帮助我的父母更轻松的完成他们的工作,在此感谢我的父母。

相关项目

同时特别感谢以下项目和贡献者:

提供模型与理论:

或许你会对图片压缩部分感兴趣,那是我另一个开源项目:

它依赖于:


🤝 贡献

LiYing 是一个开源项目,非常欢迎社区的参与。要为该项目做出贡献,请遵循贡献指南。


📄 开源协议

LiYing 使用 AGPL-3.0 license 进行开源,详情请参阅 LICENSE 文件。


💖 赞赏

如果这个项目对您有帮助,欢迎任意赞赏,这对我十分有帮助,感谢您的支持!

USDT(TRON):TWFDp8aZMWZHPXjBodyhfPeK8LUyrWe9mi

usdt_thanks


⭐ Star History

Star History Chart

Projets similaires

⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。

Pythoncnndemodocker
ZZeyi-Lin
21,6 k étoiles2,5 k

🖼️ Image Toolbox is a powerful app for advanced image manipulation. It offers dozens of features, from basic tools like crop and draw to filters, OCR, and a wide range of image processing options

Kotlinaiandroidbackground-removal
TT8RIN
14,8 k étoiles643

Rembg is a tool to remove images background

Pythonbackground-removalimage-processingpython
Ddanielgatis
24,9 k étoiles2,4 k