HivisionIDPhotos:用一张自拍离线生成合规AI证件照
【免费下载链接】HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。项目地址: https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos
上周四下午,同事小周赶一份签证材料,翻遍手机相册,最后选中的是一张海边旅游自拍——背景是浪花,画面角落还站着他表哥。这种照片离"证件照"三个字差了十万八千里,但换个底色、裁对比例之后,它就是张标准一寸照。HivisionIDPhotos 就是干这件事的:输入一张普通照片,它负责离线完成抠图、换背景、按尺寸标准裁好,输出直接能用的 AI 证件照。这篇文章从装好它讲起,到把常用开关都摸一遍,预计 5 分钟。
五分钟跑起来(快速上手)
整个过程就三条命令,建议用 Python 3.7 以上(项目主要在 3.10 下测试):
git clone https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos cd HivisionIDPhotos && pip install -r requirements.txt -r requirements-app.txt python scripts/download_model.py --models all第一条把仓库拉到本地;第二条安装运行依赖;第三条下载人像抠图模型权重,默认组合只需 24.7MB,其余模型按需下载。模型全部放在本地,推理过程不联网。
python app.py启动后浏览器会打开 http://127.0.0.1:7860,左侧是照片上传区,右侧一列是尺寸、底色、美颜、排版照等选项。对上了:点生成,右边就是标准证件照和一张高清透明底 PNG,下载默认带 300DPI。这个项目有 GUI、命令行和 API 三种入口,走哪条路取决于你是想点点看,还是想接进自己的代码。
一张自拍变成证件照,中间过了哪几道工序
照片进来后,依次经过四道工序。
第一刀:把人从背景里剪出来
原理就像 PS 里的"选择主体",但全自动、毫秒级完成:一个轻量 ONNX 模型逐像素判断"这属于人,那属于背景",输出 4 通道透明 PNG。模型可换——MODNet 和 hivision_modnet 都是 24.7MB,后者对纯色换底更稳;BiRefNet 224MB,分割精度最高。相关实现在 hivision/creator/human_matting.py。
第二步:找到人脸,顺便把它扶正
证件照的第一要求是脸的位置和角度。检测器先框出人脸并标出左右眼、鼻子、嘴角等关键点;歪头的照片会据此算出倾斜角,超出范围就自动旋转扶正,五官保持水平。检测器默认是离线 MTCNN,CPU 上毫秒级;要更准可换 RetinaFace,追求极限精度则接 Face++ 在线 API。见 hivision/creator/face_detector.py。
第三步:算出该裁哪块
目标是二寸,脸就得占画面的固定比例、头顶要留出标准间距。系统根据人脸框和一寸、二寸、签证等各种规格算出最优裁剪区域,让头不大不小、人居中不偏。
最后一道工序:贴上底色,合成出图
透明人像放到你选的纯色背景上,可顺带做美白、磨皮这类微调,最后输出标准尺寸照片加一张透明底 PNG。如果你不想开网页,接口长这样:
result = creator(image, size=(413, 295)) # 返回标准照与高清透明底整条流水线跑完,默认组合(MODNet + MTCNN)在 Mac M1 Max 上实测约 0.2 秒——瓶颈在模型加载,不在计算。
三种打开方式(使用姿势)
| 入口 | 适合谁 | 启动成本 | 能做什么 |
|---|---|---|---|
Gradio Web(python app.py) | 想自己用的普通用户 | 装依赖+下载模型 | 全套功能:换底色、美颜、六寸排版照、300DPI 下载 |
命令行(python inference.py) | 想批量处理的用户 | 同上 | 证件照、抠图、加底色、排版照,脚本里循环跑 |
REST API(python deploy_api.py) | 要接进自己网站或 App 的开发者 | 同上,请求方式见 docs/api_CN.md | 远程传图出图,支持 base64 传图和美颜参数 |
大多数人直接选 Gradio 网页版:零学习成本,功能最全,排版照和模板照这些进阶项也都在里面。
最常改的几个开关:
- 预设尺寸:加一行即可新增规格,demo/assets/size_list_CN.csv
- 底色方案:改 demo/assets/color_list_CN.csv,或直接选"自定义底色"输入 HEX 值
- 社交媒体模板照:透明 PNG 放 hivision/plugin/template/assets/,再在
template_config.json注册锚点坐标 - 排版尺寸(六寸/五寸/A4 等):改 demo/locales.py 里的
print_switch字典
跑得动吗?(性能与部署选择)
📌 数据来自项目 README,测试环境 Mac M1 Max(64GB,未用 GPU):
| 模型组合 | 内存占用 | 512x715 图片 | 764x1146 图片 |
|---|---|---|---|
| MODNet + MTCNN | 410MB | 0.207s | 0.246s |
| MODNet + RetinaFace | 405MB | 0.571s | 0.971s |
| BiRefNet-lite + RetinaFace | 6.20GB | 7.063s | 7.128s |
怎么选很简单:内存 8GB 的笔记本,用默认组合 MODNet + MTCNN,半秒出图;要最高精度但机器是 CPU,BiRefNet 可用,代价是 6.2GB 内存和约 7 秒;有 16GB 左右显存的英伟达独显,装onnxruntime-gpu直接给 BiRefNet 加速。离线/在线的边界:抠图和 MTCNN、RetinaFace 检测全程离线,只有接 Face++ 时才会联网,追求检测精度又接受联网服务时再考虑。
周边生态 & 还能怎么玩
- ComfyUI 工作流:把证件照生成拖进节点式 AI 工作流里跑
- 微信小程序(原生 + uniapp 两套实现):手机端拍完直接出图
- 网页版:浏览器里用的在线版
- C++ 版本与 Windows 客户端:不依赖 Python 环境的高性能/桌面方案
回到开头小周那张海边自拍。在网页里传上去,换白底、裁二寸,半秒多就出了图,再顺手生成一张排版好的六寸相纸带去打印店——全程离线,没有一张照片离开这台电脑。项目地址:https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos
【免费下载链接】HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。项目地址: https://gitcode.com/GitHub_Trending/hiv/HivisionIDPhotos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考