项目复现-HivisionIDPhotos
项目复现-HivisionIDPhotos
IT咖啡馆服务员来了
项目简介
如果哈利波特在中国要上学,他得先准备什么?魔法棒?猫头鹰?还是黑斗篷?不他得先照张证件照HivisionIDPhotos是一个通过AI来实现证件照的工具,它能够帮助你快速生成,符合不同规格的标准证件照。并且支持多种功能,如智能抠图、美颜以及智能换证装,而且只需要CPU,就可以完成抠图和生成工作。项目可以在Linux,Windows,macos上安装运行,如果想在本地安装运行,建议使用Python 3.10,下载代码到本地后,通过PIP来安装相关的依赖,在项目的release下载权重文件,存到项目的wights目录下,这种轻便小巧的AI项目,很值得大家借鉴,如果想先感受一下使用效果,可以到项目的Demo环境去体验一下
官方简介
🚀 谢谢你对我们的工作感兴趣。您可能还想查看我们在图像领域的其他成果,欢迎来信:zeyi.lin@swanhub.co .
HivisionIDPhoto 旨在开发一种实用、系统性的证件照智能制作算法。
它利用一套完善的AI模型工作流程,实现对多种用户拍照场景的识别、抠图与证件照生成。
HivisionIDPhoto 可以做到:
- 轻量级抠图(纯离线,仅需 CPU 即可快速推理)
- 根据不同尺寸规格生成不同的标准证件照、六寸排版照
- 支持 纯离线 或 端云 推理
- 美颜(waiting)
- 智能换正装(waiting)
项目搭建
前期准备
环境安装与依赖:
- Python >= 3.7(项目主要测试在 python 3.10)
- OS: Linux, Windows, MacOS
1. 克隆项目
1 | git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git |
2. 安装依赖环境
建议 conda 创建一个 python3.10 虚拟环境后,执行以下命令
如果没有pip先安装pip
1 | apt update |
如果有直接进行这一步
1 | pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple |
3. 下载权重文件
方式一:脚本下载
1 | python3 scripts/download_model.py --models all |
方式二:直接下载
存到项目的hivision/creator/weights
目录下:
modnet_photographic_portrait_matting.onnx
(24.7MB): MODNet 官方权重,下载hivision_modnet.onnx
(24.7MB): 对纯色换底适配性更好的抠图模型,下载rmbg-1.4.onnx
(176.2MB): BRIA AI 开源的抠图模型,下载 后重命名为rmbg-1.4.onnx
birefnet-v1-lite.onnx
(224MB): ZhengPeng7 开源的抠图模型,下载 后重命名为birefnet-v1-lite.onnx
4. 人脸检测模型配置(可选)
拓展人脸检测模型 | 介绍 | 使用文档 |
---|---|---|
MTCNN | 离线人脸检测模型,高性能CPU推理(毫秒级),为默认模型,检测精度较低 | Clone此项目后直接使用 |
RetinaFace | 离线人脸检测模型,CPU推理速度中等(秒级),精度较高 | 下载 后放到hivision/creator/retinaface/weights 目录下 |
Face++ | 旷视推出的在线人脸检测API,检测精度较高,官方文档 | 使用文档 |
5. GPU推理加速(可选)
如需使用英伟达GPU加速推理,在确保你已经安装CUDA与cuDNN后,根据文档 找到对应的onnxruntime-gpu
版本安装,如:
1 | # CUDA 12.x, cuDNN 8 |
完成后,调用如birefnet-v1-lite
模型将会利用GPU加速推理。
项目的运行
运行 Gradio Demo
1 | python app.py |
运行程序将生成一个本地 Web 页面,在页面中可完成证件照的操作与交互。
错误1:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
解决:系统没有安装必要的OpenGL库文件
1
2
3
4 # 在Ubuntu 或 Debian 系统上
sudo apt-get install libgl1-mesa-glx
# 在CentOS 或 RHEL 系统上
sudo yum install mesa-libGL
Python 推理
核心参数:
-i
: 输入图像路径-o
: 保存图像路径-t
: 推理类型,有idphoto、human_matting、add_background、generate_layout_photos可选--matting_model
: 人像抠图模型权重选择--face_detect_model
: 人脸检测模型选择
更多参数可通过python inference.py --help
查看
1. 证件照制作
输入 1 张照片,获得 1 张标准证件照和 1 张高清证件照的 4 通道透明 png
1 | python inference.py -i demo/images/test.jpg -o ./idphoto.png --height 413 --width 295 |
2. 人像抠图
输入 1 张照片,获得 1张 4 通道透明 png
1 | python inference.py -t human_matting -i demo/images/test.jpg -o ./idphoto_matting.png --matting_model hivision_modnet |
3. 透明图增加底色
输入 1 张 4 通道透明 png,获得 1 张增加了底色的 3通道图像
1 | python inference.py -t add_background -i ./idphoto.png -o ./idphoto_ab.jpg -c 4f83ce -k 30 -r 1 |
4. 得到六寸排版照
输入 1 张 3 通道照片,获得 1 张六寸排版照
1 | python inference.py -t generate_layout_photos -i ./idphoto_ab.jpg -o ./idphoto_layout.jpg --height 413 --width 295 -k 200 |
项目二次开发
启动后端
1 | python deploy_api.py |
请求 API 服务
详细请求方式请参考 API 文档 ,包含以下请求示例:
1 | import requests |
Docker 部署
1. 拉取或构建镜像
以下方式三选一
方式一:拉取最新镜像:
1 | docker pull linzeyi/hivision_idphotos |
方式二:Dockrfile 直接构建镜像:
在确保将模型权重文件hivision_modnet.onnx 放到hivision/creator/weights
下后,在项目根目录执行:
1 | docker build -t linzeyi/hivision_idphotos . |
方式三:Docker compose 构建:
确保将模型权重文件 hivision_modnet.onnx 放在hivision/creator/weights
下后,在项目根目录下执行:
1 | docker compose build |
2. 运行服务
启动 Gradio Demo 服务
运行下面的命令,在你的本地访问 http://127.0.0.1:7860 即可使用。
1 | docker run -d -p 7860:7860 linzeyi/hivision_idphotos |
启动 API 后端服务
1 | docker run -d -p 8080:8080 linzeyi/hivision_idphotos python3 deploy_api.py |
两个服务同时启动
1 | docker compose up -d |
环境变量
本项目提供了一些额外的配置项,使用环境变量进行设置:
环境变量 | 类型 | 描述 | 示例 |
---|---|---|---|
FACE_PLUS_API_KEY | 可选 | 这是你在 Face++ 控制台申请的 API 密钥 | 7-fZStDJ···· |
FACE_PLUS_API_SECRET | 可选 | Face++ API密钥对应的Secret | VTee824E···· |
docker使用环境变量示例:
1 | docker run -d -p 7860:7860 \ |
引用项目
MTCNN:
1 | @software{ipazc_mtcnn_2021, |
ModNet:
1 | @software{zhkkke_modnet_2021, |
Q&A
如何修改预设尺寸和颜色?
- 尺寸:修改size_list_CN.csv 后再次运行
app.py
即可,其中第一列为尺寸名,第二列为高度,第三列为宽度。 - 颜色:修改color_list_CN.csv 后再次运行
app.py
即可,其中第一列为颜色名,第二列为Hex值。
如何修改水印字体?
- 将字体文件放到
hivision/plugin/font
文件夹下 - 修改
hivision/plugin/watermark.py
的font_file
参数值为字体文件名
📧 联系作者
如果您有任何问题,请发邮件至 zeyi.lin@swanhub.co
- 标题: 项目复现-HivisionIDPhotos
- 作者: ligood
- 创建于 : 2024-09-11 09:51:46
- 更新于 : 2024-09-11 09:52:42
- 链接: https://blog.ligood.top/2024/09/11/项目复现-HivisionIDPhotos/
- 版权声明: 版权所有 © ligood,禁止转载。