【AI落地应用实战】HivisionIDPhotos AI证件照制作实践指南

最近在网上发现了一款轻量级的AI证件照制作的项目,名为HivisionIDPhotos。它利用AI模型实现对多种拍照场景的识别、抠图与证件照生成,支持轻量级抠图、多种标准证件照和排版照生成、纯离线或端云推理、美颜等功能。此外,项目还提供了Gradio Demo交互页面和API服务,方便用户进行证件照的制作和自定义。

项目仓库:https://github.com/Zeyi-Lin/HivisionIDPhotos

在这里插入图片描述
本篇将介绍使用DAMODEL深度学习平台部署HivisionIDPhotos模型进行复现。

一、创建实例

本次实验选择了DAMODEL(丹摩智算)平台,致力于提供丰富的算力资源与基础设施助力AI应用的开发、训练、部署。首先进入控制台,,点击资源-GPU云实例,点击创建实例:

在这里插入图片描述
进入创建页面后,首先在实例配置中首先选择付费类型为按量付费,其次选择单卡启动,然后选择需求的GPU型号,本次实验可以选择选择NVIDIA-GeForc-RTX-4090或者Tesla-P40显卡。

除了这些以外,可以看到丹摩最近还上线了H800和A800显卡,A800基于NVIDIA的Ampere架构,而H800则是基于更新的Hopper架构。这两款显卡都具备强大的计算能力,高达80GB的显存能够处理复杂的数学模型和算法,支持深度学习模型的训练和推理,以及科学模拟、气候研究、基因组学等领域的高性能计算任务。

在这里插入图片描述
继续往下翻,配置数据硬盘的大小,每个实例默认附带了50GB的数据硬盘,本次创建可以就选择默认大小50GB,可以看到,平台提供了一些基础镜像供快速启动,镜像中安装了对应的基础环境和框架,这里选择PyTorch镜像启动。除此之外,平台还提供了ComfyUI、FLUX.1-dev-fp8+ComfyUI、yolov8镜像,适合初学者和专业人士使用。

在这里插入图片描述

二、配置代码和模型

2.1、配置代码与环境

首先输入git clone,将仓库代码克隆到本地,这里连接github可能偶尔不稳定,可以克隆gitee的仓库,两者内容相同:

git clone https://gitee.com/lipengfeiSUaz/HivisionIDPhotos.git

在这里插入图片描述
克隆完成后,进入项目文件夹,输入pip install -r requirements.txtpip install -r requirements-app.txt安装依赖环境:

在这里插入图片描述

2.2、下载模型

除了配置代码和安装环境外,还需要下载部分人像抠图模型的权重,下载好的模型均存到项目的hivision/creator/weights目录下,其中rmbg-1.4需要重命名为rmbg-1.4.onnx,birefnet-v1-lite需要重命名为birefnet-v1-lite.onnx

人像抠图模型介绍下载链接
MODNet实时人像抠图模型,无需辅助信息http://file.s3/damodel-openfile/HivisionIDPhotos/model.onnx
hivision_modnet优化版MODNet,更适合纯色背景抠图http://file.s3/damodel-openfile/HivisionIDPhotos/hivision_modnet.onnx
rmbg-1.4BRIA AI开源的抠图模型,下载后重命名为rmbg-1.4.onnxhttp://file.s3/damodel-openfile/HivisionIDPhotos/rmbg-1.4.onnx
birefnet-v1-liteZhengPeng7开源抠图模型,拥有最好的分割精度,下载后重命名为birefnet-v1-lite.onnxhttp://file.s3/damodel-openfile/HivisionIDPhotos/birefnet-v1-lite.onnx

重命名后如下图所示:

在这里插入图片描述
配置以上步骤后,就可以开始使用了。

三、运行项目

项目的主函数在inference.py文件,其使用了argparse库来处理命令行参数,并根据参数执行不同的图像处理任务,提供了以下功能:

  • 证件照制作(idphoto):使用creator生成标准证件照和高清证件照,并保存。
  • 人像抠图(human_matting):仅抠图,不添加背景,保存抠图结果。
  • 添加背景(add_background):给图像添加背景色,并根据用户选择的渲染模式(纯色、上下渐变、中心渐变)进行处理,保存结果。
  • 生成排版照(generate_layout_photos):生成排版照,并根据需要调整图片大小。

我们可以直接通过Python运行脚本进行推理,其中,核心参数:

  • -i: 输入图像路径
  • -o: 保存图像路径
  • -t: 推理类型,有idphoto、human_matting、add_background、generate_layout_photos可选
  • –matting_model: 人像抠图模型权重选择
  • –face_detect_model: 人脸检测模型选择

更多参数也可通过python inference.py --help查看

3.1、证件照制作

证件照制作输入 1 张照片,输出 1 张标准证件照和 1 张高清证件照的 4 通道透明 png图片,可以输入以下命令运行:

python inference.py -i demo/images/test0.jpg -o ./idphoto.png --height 413 --width 295

其中,–height指定了证件照的高度为413像素。–width 295指定了证件照的宽度为295像素。随便试了两张,效果如下:

在这里插入图片描述

在这里插入图片描述
这一步可能会遇到以下问题:

Traceback (most recent call last):File "/root/workspace/crqfkuvhri0c7384uh6g/workspace/HivisionIDPhotos/inference.py", line 2, in <module>import cv2File "/root/anaconda3/envs/hidp/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>bootstrap()File "/root/anaconda3/envs/hidp/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrapnative_module = importlib.import_module("cv2")File "/root/anaconda3/envs/hidp/lib/python3.10/importlib/__init__.py", line 126, in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

这个报错表明在尝试找到 libGL.so.1 这个共享库文件出现了问题,输入以下命令,补充安装库文件再次运行就好了!

apt-get update
apt-get install ffmpeg libsm6 libxext6 -y

3.2、证件照换底色

除了透明图,模型还提供了将证件照换色,输入以下命令:

python inference.py -t add_background -i ./idphoto.png -o ./idphoto_ab.jpg  -c 4f83ce -k 30 -r 1

其中,-t add_background参数告诉脚本你想要执行的任务类型是“add_background”,即添加背景色。-c 4f83ce参数定义了你想要将证件照背景换成的颜色,在这里,4f83ce是RGB十六进制的颜色定义方式,如果需要蓝底、红底,可以根据需要调整代码。而-k 30参数指定了输出照片的文件最大大小,单位是KB。这里30表示你希望输出的证件照文件大小大约为30KB。-r 1参数选择了背景色的渲染模式。在这里,1代表“上下渐变”模式,背景色将从上到下渐变,而不是单一的纯色。

效果如下:

在这里插入图片描述

3.3、排版照(打印版)

当然,模型还提供了排版照,这种排版方式在需要批量制作证件照时非常有用,便于一次性打印多张照片,节省纸张和打印成本。

python inference.py -t generate_layout_photos -i ./idphoto_ab.jpg -o ./idphoto_layout.jpg  --height 413 --width 295 -k 200

在这个命令中,-t generate_layout_photos参数指定了任务类型为生成排版照。这意味着脚本将执行生成排版照的相关操作。-k 200参数指定了输出照片的文件最大大小,单位是KB。

效果如下:

在这里插入图片描述
模型还在不断维护更新中,还有很多新功能值得探索!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3628.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM的在线作业管理系统 -octopus-master(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

【SPIE单独出版审核,见刊检索稳定!】2024年遥感技术与图像处理国际学术会议(RSTIP 2024,11月29-12月1日)

2024年遥感技术与图像处理国际学术会议&#xff08;RSTIP 2024&#xff09; 2024 International Conference on Remote Sensing Technology and Image Processing 官方信息 会议官网&#xff1a;www.rstip.org 时间地点&#xff1a;2024年11月29-12月1日 | 中国大理 三轮截…

青少年编程能力等级测评CPA Python编程(一级)

青少年编程能力等级测评CPA Python编程(一级) &#xff08;考试时间90分钟&#xff0c;满分100分&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; 下列语句的输出结果是&#xff08; &#xff09;。 print(35*2) A&a…

数学篇 - 微分(求导)的基本法则与行列式

一、常数及基本函数的求导规则 常数的导数&#xff1a; ( C ) ′ 0 (C)0 (C)′0 幂函数的导数&#xff1a; ( x μ ) ′ μ x μ − 1 (x^\mu)\mu x^{\mu-1} (xμ)′μxμ−1 三角函数正弦、余弦函数的导数&#xff1a; ( s i n x ) ′ c o s x (sin\ x)cos\ x (sin x)′…

玄机-应急响应- Linux入侵排查

一、web目录存在木马&#xff0c;请找到木马的密码提交 到web目录进行搜索 find ./ type f -name "*.php" | xargs grep "eval(" 发现有三个可疑文件 1.php看到密码 1 flag{1} 二、服务器疑似存在不死马&#xff0c;请找到不死马的密码提交 被md5加密的…

H.266与H.265、AV1、H.264对比

好多开发者希望搞清楚H.266&#xff08;Versatile Video Coding&#xff0c;VVC&#xff09;、H.265&#xff08;High Efficiency Video Coding&#xff0c;HEVC&#xff09;、AV1、H.264&#xff08;Advanced Video Coding&#xff09;四者区别&#xff0c;本文从压缩效率、画…

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

01 引言 本篇文章中&#xff0c;我们将首先介绍 layerdetails 中的参数信息&#xff0c;然后将结合实例分析如何利用 layerdetails 来分析模型的性能瓶颈&#xff0c;进而对模型的性能进行优化。 02 layerdetails 中信息解读 征程 6 工具链目前提供了两种方式生成性能评估报…

有线电视 1.27.5 | 完全免费的电视直播应用,频道丰富,画质清晰

有线电视是一款针对智能电视和电视盒子开发的在线观看电视应用软件。该软件最大的特色是完全免费&#xff0c;并且支持几乎国内所有的电视台&#xff0c;无论是央视频道还是省卫视频道应有尽有。为了更好地服务用户&#xff0c;有线电视还对电视频道进行了分类&#xff0c;包含…

ML2001-1 机器学习/深度学习 Introduction of Machine / Deep Learning

图片说明来自李宏毅老师视频的学习笔记&#xff0c;如有侵权&#xff0c;请通知下架 影片参考 【李宏毅】3.第一节 - (上) - 机器学习基本概念简介_哔哩哔哩_bilibili 1. 机器学习的概念与任务类型 概念&#xff1a;机器学习近似于寻找函数&#xff0c;用于处理不同类型的任…

Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 基于Java、…

推荐一款面向增材制造的高效设计平台:nTopology

nTopology是一款面向增材制造的高效设计平台&#xff0c;平台预置了大量增材制造常用的设计工具包&#xff0c;工程师通过调用若干个预置工具包、或自主开发定制的工具包&#xff0c;建立一个工作流&#xff0c;实现复杂几何结构的参数化设计。nTopology集合了的强大几何建模和…

CreateEvent使用笔记

一、前言 开发中上位机获取或设置下位机参数的接口&#xff0c;有阻塞、非阻塞两种&#xff1a; 1、API非阻塞&#xff0c;异步回调返回结果 2、API阻塞&#xff0c;超时或直接返回结果 对于应用层调用者来说&#xff0c;阻塞API更方便&#xff0c;而要实现阻塞API在windows可使…

从“点”到“面”,热成像防爆手机如何为安全织就“透视网”?

市场上测温产品让人眼花缭乱&#xff0c;通过调研分析&#xff0c;小编发现测温枪占很高比重。但是&#xff0c;测温枪局限于显示单一数值信息&#xff0c;无法直观地展示物体的整体温度分布情况&#xff0c;而且几乎没有功能拓展能力。以AORO A23为代表的热成像防爆手机改变了…

代码随想录一刷——454.四数相加II

我们现在前2个数组中&#xff0c;统计元素之和以及出现的次数&#xff08;用map&#xff09;&#xff0c;随后再另外2个数组中遍历看上面元素之和的相反数是否存在于map中即可。 C&#xff1a; class Solution { public: int fourSumCount(vector<int>& nums1, ve…

本篇万字,博客最细,oled多级菜单代码解析,与实现教程,指针实现(含源码)!!!

目录 教程前言 多级菜单基本知识 驱动文件创建 ​编辑 ​编辑 ​编辑 定义菜单数据类型代码解析 按键代码解析 菜单数据赋值代码解析 菜单按键切换显示代码解析 项目工程移植地址 教程前言 前言&#xff1a;编写不易&#xf…

C++中STL的list类常用接口及其源码解析

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素和后一个元素。 3. list与…

csp2024T3

题目大意&#xff1a;对于每个数而言&#xff0c;可以将其染成红或蓝&#xff0c;对于每一个数&#xff0c;定义其贡献为&#xff0c;当且仅当这个数最近的同色数与其相等&#xff0c;否则其贡献为0&#xff0c;求最大贡献和。 思路&#xff1a;考虑dp 1.考场20多分钟想的奇怪…

Leetcode 198. 打家劫舍 动态规划

原题链接&#xff1a;Leetcode 198. 打家劫舍 class Solution { public:int rob(vector<int>& nums) {int n nums.size();if (n 1)return nums[0];int dp[n];dp[0] nums[0];dp[1] max(nums[1], nums[0]);for (int i 2; i < n; i) {dp[i] max(dp[i - 2] num…

Spring源码学习(五):Spring AOP

免责声明 本人还处于学习阶段&#xff0c;如果内容有错误麻烦指出&#xff0c;敬请见谅&#xff01;&#xff01;&#xff01;Demo <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.8<…

外包干了6年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了6年的功能测试…