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

论文解读——掌纹生成网络 RPG-Palm升级版PCE-Palm

该文章是2023年论文RPG-Palm的升级版
论文:PCE-Palm: Palm Crease Energy Based Two-Stage Realistic Pseudo-Palmprint Generation
作者:Jin, Jianlong and Shen, Lei and Zhang, Ruixin and Zhao, Chenglong and Jin, Ge and Zhang, Jingyun and Ding, Shouhong and Zhao, Yang and Jia, Wei
出版刊物:Proceedings of the AAAI Conference on Artificial Intelligence
代码:https://github.com/Ukuer/PCE-Palm


文章目录

  • 1、算法概述
  • 2、背景知识
  • 3、算法细节
    • 3.1 Transfer from Bézier Palm to PCE Domain
    • 3.2 Generate Realistic Palmprint from PCE Domain
    • 3.3 推理阶段
  • 4、实验


1、算法概述

腾讯优图的掌纹生成文章,从2022年的BézierPalm,到2023年的RPG-Palm,到今年2024年的PCE-Palm,该文章是将RPG-Palm中从Bézier曲线一步到位生成掌纹图片拆分成了两步进行,新增了中间一步叫做PCE图像,减小了一步到位生成掌纹图像的难度。


2、背景知识

因为该论文是基于RPG-Palm进行改进升级的,所以有必要了解一下RPG-Palm算法的训练和推理步骤,详细论文解读见博文掌纹生成网络RPG-Palm论文解读,RPG-Palm算法框架如下图所示:
在这里插入图片描述
图(a)是训练阶段,图(b)是推理阶段;
生成器G结构类似于常见的图像生成器结构UNet,为了生成多样化的结果,引入了条件自适应实例规范化模块(CAdaIN),对每个Down-Block和Up-Block生成的细节进行调制。D是判别器,而编码器E用于将掌纹图像进行编码,论文中了Resnet结构,为了保证生成的id类内一致,作者添加了ID-aware Loss。
推理阶段,可以看到,是一步到位的,即直接从Bézier图像经过生成器G生成了“伪”掌纹图像。


3、算法细节

PCE-Palm掌纹生成算法基于RPG-Palm算法将推理步骤拆分成两个阶段,中间插入了生成PCE图像( palm crease energy),下图是两者的区别:
在这里插入图片描述
可以看到,从Bézier曲线图到掌纹图像之间有着巨大差距,而RPG-Palm算法试图一步到位生成(上面的箭头),而本文的PCE-Palm算法分两步,首先从Bézier曲线图生成手掌折痕图,第二步再加入皮肤纹理(下面的箭头)。

3.1 Transfer from Bézier Palm to PCE Domain

在第一阶段,生成器GB->P将随机采样的Bézier曲线转换为PCE图像。第一阶段主要的网络就是生成器GB->P,为了模拟高斯MFRAT
滤波器(Jia,Huang,andZhang2008)的效果,作者提出了线特征增强模块( line feature enhancement block, LFEB)用于增强生成器GB->P对线路能量特性的关注能力。第一阶段及生成器GB->P以及线特征增强模块LFEB的结构如下:
在这里插入图片描述
PCEM模块用于从真实掌纹图像中提取PCE图像,它的结构如下:
在这里插入图片描述


3.2 Generate Realistic Palmprint from PCE Domain

第二阶段是利用PCE图像生成逼真的掌纹图像,其训练生成器GP->R的框图如下:
在这里插入图片描述
其中,生成器GP->R和编码器E依然和RPG-Palm一样,均是采用Unet和Resnet结构,PCEM模块同第一阶段一样,用于从掌纹图像中提取PCE图像信息。

与RPG-Palm不一样的是,对于确认生成的掌纹与真实像不像这里的损失,RPG-Palm用是的Lid损失函数加L1和判别器D的损失,Lid损失函数是计算两张图片特征的余弦相似度大小;而本论文是用的循环ID一致性损失Lcyc加L1和判别器D的损失,这个循环ID一致性损失Lcyc说白了也是L1损失,只是计算的两张图片是PCE图像,一个是由真实掌纹图而来,一个是由生成的掌纹图而来,它是基于这个假设,生成的掌纹图越像真实掌纹图,那么两者的PCE图应该也非常像。

循环ID一致性损失Lcyc公式如下:
在这里插入图片描述
生成器GP->R的损失函数以及第二阶段整个损失函数的公式如下:
在这里插入图片描述


3.3 推理阶段

推理阶段就没那么复杂了,直接利用上面两节训练好的生成器GB->P和生成器GP->R进行生成就行,首先用随机抽样的控制点生成Bézier曲线。然后,使用生成器GB→P将Bézier曲线转换到PCE域。之后,用训练好的生成器GP→R可以以PCE图像作为ID条件生成逼真的掌纹。为了生成多样化的掌纹,将随机噪声向量输入到GP→R中作为潜在的控制向量,以再现各种光线和皮肤纹理。如下面框图所示:
在这里插入图片描述
同时,作者为了最大限度地减少了生成掌纹和真实掌纹之间的差距。还根据皮肤纹理学方面的知识,设计了Bézier曲线的5个模板,生成Bézier曲线均基于这些模板,如下图所示:
在这里插入图片描述


4、实验

开放集掌纹识别对比情况如下表所示:
在这里插入图片描述

限制id数量下掌纹识别对比情况如下:
在这里插入图片描述

在开放集协议下,采用不同的生成方法进行定量识别的对比情况如下:
在这里插入图片描述

消融实验
在这里插入图片描述

线特征增强模块LFEB提升掌纹中线的特征提取能力,可视化结果如下:
在这里插入图片描述
可以看到,掌纹图像经过LFEB模块后,线特征得到了强化,有点图像锐化的效果,对于后续生成PCE图像有帮助。

相关文章:

论文解读——掌纹生成网络 RPG-Palm升级版PCE-Palm

该文章是2023年论文RPG-Palm的升级版 论文:PCE-Palm: Palm Crease Energy Based Two-Stage Realistic Pseudo-Palmprint Generation 作者:Jin, Jianlong and Shen, Lei and Zhang, Ruixin and Zhao, Chenglong and Jin, Ge and Zhang, Jingyun and Ding,…...

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...

16 循环语句——for循环

#字符串是可以进行迭代的 for 循环: for 变量 in 可迭代的东西: 代码 把可迭代的东西中的每一项内容拿出来,挨个的赋值给变量,每一次的赋值都要执行一次循环体(代码) s "你好呀,我叫赛利…...

代码随想录-笔记-其八

让我们开始:动态规划! 70. 爬楼梯 - 力扣(LeetCode) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? class Solution { public:int climbStairs(i…...

Effective C++ 条款 15:在资源管理类中提供对原始资源的访问

文章目录 条款 15:在资源管理类中提供对原始资源的访问核心思想原始资源的访问方式标准库中的实现示例设计建议总结 条款 15:在资源管理类中提供对原始资源的访问 核心思想 为什么需要访问原始资源? 在使用 RAII(Resource Acquis…...

Linux高并发服务器开发 第五天(压缩解压缩/vim编辑器/查找替换/分屏操作/vim的配置)

目录 1.压缩和解压缩 1.1压缩 1.2解压缩 2.vim编辑器 2.1vim的3种工作模式 2.2切换编辑模式 2.3保存和退出 2.4光标移动 2.5复制粘贴 2.6剪切、删除 2.7查找 替换 2.7.1查找 2.7.2替换 3.分屏操作 3.1快速翻屏 3.2分屏 4.vim的配置 4.1系统配置 4.2用户配置…...

C++ 面向对象编程:关系运算符重载、函数调用运算符重载

对 、<、> 三个运算符分别进行重载&#xff0c;可见以下代码&#xff1a; #include<iostream> using namespace std;class location { public:location(int x1, int y1) :x(x1), y(y1){};bool operator(const location& l1) const{return x l1.x && …...

拉普拉斯分布极大似然估计

在拉普拉斯分布中&#xff0c;概率密度函数 (PDF) 表示为&#xff1a; f ( x ∣ μ , b ) 1 2 b exp ⁡ ( − ∣ x − μ ∣ b ) , f(x | \mu, b) \frac{1}{2b} \exp\left(-\frac{|x - \mu|}{b}\right), f(x∣μ,b)2b1​exp(−b∣x−μ∣​), 其中 μ \mu μ 是位置参数&…...

VLMs之Gemma 2:PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略

VLMs之Gemma 2&#xff1a;PaliGemma 2的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;2024年12月4日&#xff0c;PaliGemma 2是一个基于Gemma 2系列语言模型的开源视觉语言模型 (VLM) 家族。PaliGemma 2 通过提供一个规模化、多功能且开源的VLM家族&#xff0c;…...

qwenvl 代码中的attention pool 注意力池如何理解,attention pool注意力池是什么?

qwenvl 中的attention pool如何理解&#xff0c;其实这就是一个概念的问题 看qwenvl的huggingface的代码的时候&#xff0c;发现代码里有一个Resampler 以及attn_pool&#xff0c;这和之前理解的连接池 线程池 表示资源复用的意思不太一样&#xff0c;查了一下&#xff1a; 注…...

源码分析之Openlayers中GeometryCollection类

概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…...

常见LLM大模型总结

常见LLM大模型总结 模型名称发布机构主要特点参数规模应用场景GPT-4OpenAI强大的推理能力&#xff0c;支持多模态&#xff08;图像文本&#xff09;&#xff0c;上下文理解更深1.7万亿参数聊天机器人、内容生成、代码生成ChatGPTOpenAI面向对话优化&#xff0c;支持多轮对话记…...

向量检索+大语言模型,免费搭建基于专属知识库的 RAG 智能助手

随着生成式人工智能技术的飞速发展&#xff0c;越来越多的人和企业开始应用AI到日常的工作和生活中。但公域的AI助手其数据来自互联网上的大量公开文本&#xff0c;虽然具有广泛的知识&#xff0c;但在面对一些特定领域的专业问题时&#xff0c;可能会出现回答不够准确或深入的…...

基础11C++中的异常处理以及swap

一、异常处理手段 抛出异常&#xff1a;throw 异常 作用&#xff1a;让调用者看见这个异常&#xff0c;如果调用者不理睬&#xff0c;就让调用者的调用者看见 接住异常: try {可能异常的code} catch(异常类型) {处理方式} 异常类型&#xff1a;一般为const &&#xff0c;防…...

写作词汇积累:得偿所望、可见一斑、搭腔

得偿所望 【得偿所望】是指经过长时间的期盼和努力&#xff0c;最终实现了自己的愿望或目标。 【得偿所望】强调了愿望实现后的满足感和成就感&#xff0c;是一个充满正能量和积极情感的词语。 【得偿所望】与【得偿所愿】在表达上也具有相似的含义&#xff0c;都指愿望得到了…...

android jetpack compose Model对象更新变量 UI不更新、不刷新问题

以前是搞老本行Android原生开发的&#xff0c;因为工作原因&#xff0c;一直在用vue小程序&#xff1b;因为一些工作需要&#xff0c;又需要用到Android原生开发&#xff0c;建了个项目&#xff0c;打开源码一看&#xff0c;天塌了&#xff01;&#xff01;&#xff01;我以前的…...

数据库概论

目录 1、数据库管理系统(DBMS) 1.1 DBMS的主要功能 1. 数据库的定义功能 2. 数据库的操纵功能 3. 数据库的运行控制功能 4. 数据库的维护 5. 数据字典(Data Dictionary&#xff0c;DD) 2、数据模型 2.1 信息和数据(了解) 2.2 数据模型的三个层次 2.3 信息世界中的基…...

基于python使用UDP协议对飞秋进行通讯—DDOS

基于飞秋的信息传输 声明&#xff1a;笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 老规矩&#xff0c;封面在文末&#xff01; 飞秋介绍 &#xff08;…...

数据库管理-第275期 Oracle 23ai:画了两张架构图(20241225)

数据库管理275期 2024-12-25 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09;1 系统管理分片2 用户定义分片总结 数据库管理-第275期 Oracle 23ai&#xff1a;画了两张架构图&#xff08;20241225&#xff09; 作者&#xff1a;胖…...

使用Streamlit部署机器学习模型

机器学习&#xff1a; 计算机能够从经验中学习&#xff0c;而无需明确编程。机器学习是目前最热门的领域之一&#xff0c;世界各地的顶级公司都在使用它来改善他们的服务和产品。但是没有使用在Jupyter Notebook中训练的机器学习模型。因此&#xff0c;我们需要部署这些模型&am…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...

云安全与网络安全:核心区别与协同作用解析

在数字化转型的浪潮中&#xff0c;云安全与网络安全作为信息安全的两大支柱&#xff0c;常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异&#xff0c;并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全&#xff1a;聚焦于保…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...