当前位置: 首页 > news >正文

【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。

效果如下:

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

在这里插入图片描述

相关文章:

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

最近在网上发现了一款轻量级的AI证件照制作的项目&#xff0c;名为HivisionIDPhotos。它利用AI模型实现对多种拍照场景的识别、抠图与证件照生成&#xff0c;支持轻量级抠图、多种标准证件照和排版照生成、纯离线或端云推理、美颜等功能。此外&#xff0c;项目还提供了Gradio D…...

php实现sl651水文规约解析

SL651-2014-《水文监测数据通信规约》 1、要素解析说明 39 23 00 00 03 45 0x39查标识符得知为:39H Z 瞬时河道水位、潮位,我们定义为水位 0x23 按照要素标识符的规定,高5bit,低3bit,00100 011 对应的转换为10进制为4与3,也就是水位数据占用4字节,小…...

【Linux】简易版shell

文章目录 shell的基本框架PrintCommandLineGetCommandLineParseCommandLineExecuteCommandInitEnvCheckAndExecBuildCommand代码总览运行效果总结 shell的基本框架 要写一个命令行我们首先要写出基本框架。 打印命令行获取用户输入的命令分析命令执行命令 基本框架的代码&am…...

宝塔Linux面板安装PHP扩展失败报wget: unable to resolve host address ‘download.bt.cn’

一、问题&#xff1a; 当使用宝塔面板安装PHP扩展失败出现如下错误时 Resolving download.bt.cn(download.bt.cn)...failed: Connection timed out. wget: unable toresolve host address download.bt.cn’ 二、解决&#xff1a; 第一步&#xff1a;如下命令执行拿到返回的I…...

问:Redis常见性能问题及解法?

Redis 作为一个高性能的键值存储系统&#xff0c;在实际应用中可能会遇到各种性能问题。本文将探讨 Redis 的常见性能问题&#xff0c;并提供相应的解决建议。主要针对五个关键问题进行讨论&#xff1a;Master 节点的持久化工作、Slave 节点的数据备份、主从复制的网络环境、主…...

Imperva 数据库与安全解决方案

Imperva是网络安全解决方案的专业提供商&#xff0c;能够在云端和本地对业务关键数据和应用程序提供保护。公司成立于 2002 年&#xff0c;拥有稳定的发展和成功历史并于 2014 年实现产值1.64亿美元&#xff0c;公司的3700多位客户及300个合作伙伴分布于全球各地的90多个国家。…...

【JavaScript】之文档对象模型(DOM)详解

JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互&#xff0c;动态地修改网页内容和样式。而实现这一功能的核心就是 DOM&#xff08;文档对象模型&#xff09;。 一、什么是 DOM&#xff1f; DOM 是文档对象模型&#xff08;Document Object Model&#xff09;的缩写。它…...

速盾:cdn域名与ip区别

CDN&#xff08;内容分发网络&#xff09;是一种通过在全球多个服务器上缓存和分发静态资源的网络服务&#xff0c;可以提高网站的访问速度和性能。在使用CDN时&#xff0c;域名与IP地址是两个关键的概念。本文将介绍CDN域名与IP地址的区别和作用。 首先&#xff0c;CDN域名是…...

如何优雅的在页面上嵌入AI-Agent人工智能

前言 IDEA启动&#xff01;大模型的title想必不用我多说了&#xff0c;多少公司想要搭上时代前言技术的快车&#xff0c;感受科技的魅力。现在大模型作为降本增效的强大工具&#xff0c;基本上公司大多人都想要部署开发一把&#xff0c;更多的想要利用到这些模型放到生产中来提…...

如何对LabVIEW软件进行性能评估?

对LabVIEW软件进行性能评估&#xff0c;可以从以下几个方面着手&#xff0c;通过定量与定性分析&#xff0c;全面了解软件在实际应用中的表现。这些评估方法适用于确保LabVIEW程序的运行效率、稳定性和可维护性。 一、响应时间和执行效率 时间戳测量&#xff1a;使用LabVIEW的时…...

动态规划 —— dp问题-按摩师

1. 按摩师 题目链接&#xff1a; 面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/the-masseuse-lcci/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;选择到i位置…...

SQL 语法学习

在当今数字化的时代&#xff0c;数据的管理和分析变得至关重要。而 SQL&#xff08;Structured Query Language&#xff09;&#xff0c;即结构化查询语言&#xff0c;作为一种用于管理关系型数据库的强大工具&#xff0c;掌握它对于从事数据相关工作的人来说是一项必备技能。在…...

MYSQL---TEST5(Trigger触发器Procedure存储过程综合练习)

触发器Trigger 数据库mydb16_trigger创建 表的创建 goods create table goods( gid char(8) primary key, #商品号 name varchar(10), #商品名 price decimal(8,2), #价格 num int&#xff1b;&#xff09; #数量orders create tabl…...

蓝桥杯 区间移位--二分、枚举

题目 代码 #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> #include <iostream> using namespace std; struct node{ int a,b; }; vector<node> q; bool cmp(node x,node y){ return x.b <…...

Nginx 报错400 Request Header Or Cookie Too Large

错误的原因&#xff1a; 1、可能是你的网络DNS配置错误。 2、由request header过大所引起&#xff0c;request过大&#xff0c;通常是由于cookie中写入了较大的值所引起的。 3、访问太频繁&#xff0c;浏览器的缓存量太大&#xff0c;产生错误。 解决办法&#xff1a; 1、清…...

【Redis】一种常见的Redis分布式锁原理简述

本文主要简述一下基于set命令的Redis分布式锁的原理。 一&#xff0c;a线程持有的锁不要被b线程同时持有→setnx 抢锁的时候&#xff0c;最核心的就是&#xff0c;a线程持有的锁不要被b线程同时持有&#xff0c;放在基于set命令的redis分布式锁中来看&#xff0c;就是“如果锁…...

HOT100_最大子数组和

class Solution {public int maxSubArray(int[] nums) {int[] dp new int[nums.length];int res nums[0];dp[0] nums[0];for(int i 1; i< nums.length; i){dp[i] Math.max(nums[i] ,dp[i-1] nums[i]);res Math.max(res, dp[i]);}return res;} }...

DiskGenius工具扩容Mac OS X Apple APFS分区

DiskGenius是一款功能强大的磁盘分区工具&#xff0c;它支持Windows和Mac OS X系统&#xff0c;可以用于管理硬盘分区&#xff0c;包括扩容Mac OS X的Apple APFS分区。然而&#xff0c;直接使用DiskGenius来扩容Mac OS X的APFS分区可能存在一定的风险&#xff0c;因为不是专门为…...

从零开始的LeetCode刷题日记:70. 爬楼梯

一.相关链接 题目链接&#xff1a;70. 爬楼梯 二.心得体会 这道题还是动规五部曲。 1.首先是dp数组及其下标的含义&#xff0c;dp记录了每层楼梯对应的爬的方法&#xff0c;每个下标存储每个对应楼层。 2.然后是递归公式&#xff0c;其实每一层楼都是可以从下面一层和下面…...

Unity照片墙效果

Unity照片墙效果&#xff0c;如下效果展示 。 工程源码...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...