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

论文解读——掌纹生成网络 RPG-Palm

论文:RPG-Palm: Realistic Pseudo-data Generation for Palmprint Recognition(2023.7)
作者:Lei Shen, Jianlong Jin, Ruixin Zhang, Huaen Li, Kai Zhao, Yingyi Zhang, Jingyun Zhang, Shouhong Ding, Yang Zhao, Wei Jia
链接:https://arxiv.org/abs/2307.14016
代码:暂无

文章目录

  • 1、算法概述
  • 2、背景知识
  • 3、RPG-Palm细节
    • 3.1 Conditional Modulation Palmprint Generator
    • 3.2 Palmprint Encoder
    • 3.3 ID-aware Loss
    • 3.4 Improved Bézier Palm Creases Synthesis
  • 4、实验


1、算法概述

该文是腾讯在2022年提出的BézierPalm的升级版,利用BézierPalm生成的掌纹褶皱图作为条件,结合作者自己设计的generation model和ID-aware loss,达到了可以同时扩展掌纹数据的类间多样性和类内多样性。


2、背景知识

识别领域的数据生成算法,在人脸识别领域,有利用人脸属性、人脸结构及3D face来生成,对于指纹识别,也有手工制作或基于学习的方法来生成逼真的指纹图片。在掌纹识别任务中,BézierPalm用Bezier曲线模拟掌纹的褶皱;PalmGAN利用CycleGAN使得普通掌纹和多光谱掌纹之间转换样式提升了掌纹的跨越识别能力。但是PalmGAN这个方法不能创造新的掌纹id,而BézierPalm生成的掌纹褶皱图片(一个id可生成多张图片)与真正的掌纹图片有着比较明显的风格差异。所以作者想到利用BézierPalm生成的掌纹褶皱图片作为GAN的条件,结合作者自己设计的generation model和ID-aware loss,该方法可以同时扩展掌纹数据的类间多样性和类内多样性。于是达到生成虚拟的掌纹数据集目的,且这个数据集包含多个虚拟的id,一个id包含多张图片。


3、RPG-Palm细节

RPG-Palm整个框架包含训练和推理阶段,如下图所示:
在这里插入图片描述

注:读过BicycleGAN论文的看到这个框图就有点熟悉了,作者是在BicycleGAN的基础上改进的,下图是BicycleGAN框图作为对比。
在这里插入图片描述
仔细对比可以看出,本文框图中左上蓝色部分和BicycleGAN的Training cVAE-GAN一模一样,本文主要改进点在框图右下黄色部分,即对应BicycleGAN的Training cLR-GAN部分,本文作者将BicycleGAN的Training cLR-GAN中我画的红框部分去掉,并且去掉了后续的L1损失,新增了两个生成图像的Lid损失用于规范生成图像的id一致性。后面实验部分,作者所使用的参数也是依据BicycleGAN,在它的基础上新增了一个Lid损失的权重参数。


3.1 Conditional Modulation Palmprint Generator

生成器G以高斯噪声向量作为输入,以BézierPalm方法合成的掌纹折线图A作为条件,生成掌纹图片B’。生成器G结构类似于常见的图像生成器结构UNet,其详细结构如下图a所示,为了生成多样化的结果,引入了条件自适应实例规范化模块(CAdaIN),对每个Down-Block和Up-Block生成的细节进行调制。
在这里插入图片描述
CAdaIN模块可用以下公式表示:
在这里插入图片描述
其中Xi和X0代表CAdaIN模块的输入和输出特征,fc1和fc2代表两个FC层。通过使用随机噪声编码的潜在控制向量,实现了系统的控制CAdaIN可以调节特征产生不同的分布,从而产生多样化的掌纹图像。此外,为了进一步提高多样性,在调制特征中加入与特征图具有相同空间分辨率的随机噪声n0(也就是图中的Noise),以注入更多的随机性。
为了能产生逼真的生成效果,采用L1损失和对抗损失LD来更新生成器G,公式如下:
在这里插入图片描述
L1是常见的逐像素损失,它保证生成的掌纹图像与真实掌纹在数值上的相似性,但是由于生成的掌纹图像B’是以生成的掌纹褶皱图A为条件,而A与B其实不是“配对”的,即不是同一个id,所以过于强烈的像素约束可能会导致错误的过拟合到B的细节上。所以作者增加对抗损失LD用来放松约束,约束B和B’之间的语义相似度,LD的损失和PatchGAN的方法类似。

3.2 Palmprint Encoder

编码器E用于将掌纹图像B映射到高斯噪声域Q(z|B)。编码器结构如上图b结构,它是Resnet结构,输入为256x256,经过几个残差模块后分辨率下降到16x16,后面接FC,它被用来估计均值uQ和方差σQ2,最后,从高斯空间N(uQ,σQ2)中采样噪声向量Q(z|B)。
在训练过程中,作者在Q(z|B)~ N(uQ,σQ2)和噪声向量N(z)~N(0,1)之间保持KL散度,使得编码器E的目标域近似逼近标准正态分布。其损失函数可以用如下公式表示:
在这里插入图片描述
本文将编码器E和生成器G结合起来,从未配对的训练数据中学习域到域的映射,而不是使用完全监督的方式。首先,这种结构可以避免对人工标注配对数据的依赖。其次,条件双向域到域映射既能再现随机逼真的图像,又能保持手掌折痕条件的信息。

3.3 ID-aware Loss

对于训练识别模型来说,生成的掌纹不仅需要多样化,而且需要带有预先定义的id身份信息。对于相同的输入条件A,生成的掌纹图片应该具有相同的id信息,即应该具有相同的掌纹折痕。因此,增加了一个ID感知损失LID来约束生成器。如Fig2(a)中所示,生成器G通过利用相同的输入条件图片A和噪声N(z)生成掌纹图像B”,理论上,B’与B”应该带有相同的id信息。所以用ID感知损失LID表示两者的id一致性损失。公式为:
在这里插入图片描述
公式中“.”代表向量点积,DMB是采用MobileFaceNet结构得到的预训练掌纹识别模型提取的512维特征向量。即LID计算同一ID下生成的两张图像的提取特征之间的余弦相似度。有了ID感知损失,增加生成器的随机性和多样性便不会破坏类内ID的一致性。
总的训练损失如下:
在这里插入图片描述

3.4 Improved Bézier Palm Creases Synthesis

在推理阶段,仅使用生成器G利用生成的手掌折痕A中生成掌纹图像,如Fig2(b)所示。受BézierPalm的启发,作者也采用两级bezier曲线合成了包含三条主线和随机皱纹线的手掌折痕图像用于生成大量的虚拟id掌纹图像。但是作者发现随机调整bezier曲线可能导致一些随机生成的折痕的布局与真实掌纹的布局有很大的不同。如下图所示:
在这里插入图片描述
所以,本文将从以下三个点来改进BézierPalm生成的掌纹折痕。
首先,作者根据真实掌纹情况调整三条主线参数点(即起点、控制点和终点)的粗略范围。使合成主线的布局更接近真实掌纹主线布局。
其次,对合成规则进行调整,生成更多长度适中、分布均匀的皱纹线。
第三,加入基于RLOC的相似性约束,使不同id的主线具有充分的可区分性。RLOC是一种经典的掌纹识别方法,它可以测量两个折痕图像的相似度。为了避免为不同的id生成非常相似的主线,我们过滤掉了一些超过RLOC类间相似性阈值的折痕图像。
最后,将改进后的随机bézier曲线输入到生成器G中,得到相应的掌纹图像。


4、实验

ImageNet ILSVRC2012上分类实验
网络训练采用渐进式学习,设置如下:
在这里插入图片描述
得到的分类结果如下:
在这里插入图片描述
消融实验:略

相关文章:

  • STM32第十二课:ADC检测烟雾浓度(MQ2)
  • 4-数据提取方法2(xpath和lxml)(6节课学会爬虫)
  • 2024最全前端面试系列(计算机网络)(非科班出身最薄弱的环节)
  • 系统架构设计师教程(清华第2版)<第1章 绪论>解读
  • 一个启动脚本例子
  • git 常用语句
  • Windows环境使用SpringBoot整合Minio平替OSS
  • 点击notify里面的通知,实现路由跳转
  • 学习Symfony框架
  • react框架,使用vite和nextjs构建react项目
  • datawhale大模型应用开发夏令营学习笔记一
  • 下拉选择输入框(基于elment-ui)
  • 【JavaEE】多线程代码案例(2)
  • 8.ApplicationContext常见实现
  • 【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验15 网络故障导致的路由环路问题
  • 【347天】每日项目总结系列085(2018.01.18)
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6语法详解(一)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • GraphQL学习过程应该是这样的
  • If…else
  • Java的Interrupt与线程中断
  • Java多线程(4):使用线程池执行定时任务
  • Js基础——数据类型之Null和Undefined
  • Python中eval与exec的使用及区别
  • 来,膜拜下android roadmap,强大的执行力
  • 目录与文件属性:编写ls
  • 深度学习入门:10门免费线上课程推荐
  • 阿里云ACE认证学习知识点梳理
  • ​一些不规范的GTID使用场景
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if #elif #endif
  • (12)目标检测_SSD基于pytorch搭建代码
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)socket Aio demo
  • (转)Sublime Text3配置Lua运行环境
  • .Net Core 中间件验签
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net下的富文本编辑器FCKeditor的配置方法
  • .NET业务框架的构建
  • @EnableWebMvc介绍和使用详细demo
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @Query中countQuery的介绍
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ACTF2020 新生赛]Upload 1
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬