点击上方“AI搞事情”关注我们


论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/Wei_Inverse_Discriminative_Networks_for_Handwritten_Signature_Verification_CVPR_2019_paper.pdf
复现源码:https://github.com/jeason353/IDN

※ 前言

个人签名属于人们的生物识别特征之一,在财务、商业、司法文件得以广泛使用,签名的真实性鉴别(笔迹鉴定)成为了一个具有现实应用场景的任务。

本文针对离线手写签名问题,引入了Attention模块以及对图片进行黑白翻转搭建多路结构来训练网络,聚焦在笔划信息上从而提取出更加鲁棒的特征,以适应于签名认证任务。

签名图片数据是比较稀疏的,经过二值化处理以后大部分区域都是背景,如何从稀疏的笔划像素部分提取有效信息是签名认证任务的关键点。

1. 签字数据集

  • 论文列出的图片数据集
    CEDAR
    MCYT-75
    BHSig
    GPDS

  • 数据类签名数据集
    MCYT-100:该数据库是由马德里自治大学的BiDA实验室采集的签名数据库,通过电磁感应式手写板WACOM手写板采集到采样点的坐标、时刻和笔尖压力值,以及笔的水平偏角和垂直偏角等信息,该数据库包括100个签名,每个签名有25个真实样本和25个伪造样本,是目前数据量最大的常用数据库之一。
    SVC2004:2004年由香港科技大学组织的第一届世界签名认证竞赛提供的比赛数据库,包含了中文和英文签名。任务1 仅提供签名的x、y 坐标轨迹特征,任务2提供了签名的轨迹、压力、签名时刻、提笔落笔标记以及笔的水平偏角和垂直偏角。该数据的数据量较少,每个任务仅有40个签名用户,每个包括20个真实签名和20个伪造签名。
    SUSIG:数据库是由土耳其萨班哲大学生物特征识别研究组采集的签名数据库,数据包含智能笔采集的签名时笔的轨迹和压力感应屏记录的笔尖压力信息。该数据库包括了94个签名,每个签名有20个真实样本和10 个伪造样本,前十个真实签名和后十个真实签名的签名时间间隔为一周。

由于缺乏中文签名数据集,论文采集了包含749个用户约29,000张签字图片的中文签名数据集,每个姓名有20次不同时间点的真实签名(genuine signature)和20次冒写签名(forged signature),冒写包含10次志愿者简单冒写和10次书法家专业仿写。所有签名扫描成图片后,裁剪并缩放到同样大小,经OTSU算法和归一化处理,将签名统一为背景像素为255(白色),笔画为原始像素的图片数据,以此构建中文签名数据集,并将其作为对提出算法的评测数据集之一。

2. 相关方法

  • 手工特征
    图像几何特征:签字高度,宽度,面积
    局部特征:LBP,SIFT

  • NN特征
    CNN网络:基于分类,融合两通道
    孪生网络
    GAN网络

※ 本文方法

1. 逆鉴别网络

解决问题:如何让模型在大量背景的稀疏签名图片中更关注签名笔画像素信息?

基本思想:网络识别源签字图片和逆签字图片应该得到同样的结果。

也就是说,网络只关注笔画信息,只要笔画像素一样,背景不同不会影响识别结果。按照上图来说,测试图片image2与参考图片image1的网络输出结果应该和image2与image1的逆图像image3相同,同理,和image1与与image4的结果也应该相同。

基于上述思想,本文提出的逆判别网络(inverse discriminative network ,IDN)网络结构如下:

本文网络结构

该网络可以看作是孪生网络的加强版(四胞胎网络????),包含四路共享权重的级联CNN模块,可以分为两路判别流,即以测试图片和参考图片作为输入的两路网络;和两路逆流(inverse streams:就是这么翻译的吧),以逆图片作为输入的两路网络。共享网络中,每个模块两个卷积层,卷积核3x3,步长为1,ReLu激活函数,一个2x2大小的池化层进行降维,每个模块的卷积核个数分别为: 32、64、96、128。

2. 多路Attention机制

在判别流和逆流之间有8路Attention连接对不同尺度的特征图进行处理,指导网络学习签字笔画的判别性信息,抑制干扰信息,增强签名验证的重要特征。如结构图红框所示,每个attention模块包含前向过程和反向过程。前向过程接收判别流每个卷积模块的第一层特征,反向过程主要是逆流输出特征向判别流第二层卷积层传递注意力信息。

attention模块内部结构示意图,包含了空间注意力机制和通道注意力机制。在两路网络之间建立attention机,将网络对原笔迹图片和逆笔迹图片提取的特征联系了起来。

如上图所示,逆流网络各模块输出特征经过上采样后,特征图大小与判别流第一层输出特征一致,经过Sigmoid激活函数的卷积操作学习到特征调节因子g,与判别流卷积模块第一层输出h逐像素相乘后再逐像素加上第一层输出h,得到空间调整后的特征图:h · g + h;调节后的特征图通过全局平均池化和Sigmoid激活的全连接层,得到通道调节因子f,将f与调节后的特征图逐通道相乘后输出attention机制处理后的特征:(h · g + h) × f。

对相加后的特征,经过两个卷积层和一个池化层(256卷积核),不同输出流的特征被融合为三个256通道的特征图,融合特征经过全局平均池化(global average pooling ,GAP)处理输入到全连接层进行验证计算。

3. 损失函数

基于交叉熵,提出逆监督损失函数,实际就对真实标签为同一个值的三对输出做交叉熵损失的加权求和。

y表示真实二值标签,1表示真实(genuine)签名,0表示冒写(forged)签名,yi(i = 1, 2, 3)表示三对图片的预测结果。αi表示调整损失函数的权重。

※ 实验

1. 评价指标

FAR(错误识别率):

识别为同一人签字次数测试数据中不同人签字次数

FRR(错误拒绝率):

识别为同一人签字次数测试数据中不同人签字次数

EER(等误率):

AUC(ROC曲线面积)
ACC(准确度):

2. 数据集

● CSD:中文签名 749个人  20真实,20冒写
训练集:357   验证集:187   测试集:

● CEDAR:英文签名 55个人 24真实, 24 冒写
http://www.cedar.buffalo.edu/NIJ/data/signatures.rar
训练集:50    测试集:5

● BHSig260:包含两个子集
https://drive.google.com/file/d/0B29vNACcjvzVc1RfVkg5dUh2b1E

BHSig-B:孟加拉语签名 100个人,24真实,30冒写
训练集:50    测试集:50

BHSig-H:印地语签名  160个人,24真实,30冒写
训练集:100   测试集:60

3. 跨语言测试

在一种语言的签名数据集上训练模型,在另一种语言签名数据进行测试,鉴别性能会剧烈下降,这可能是由于语言文字的不同会影响签名者的书写习惯和风格,所以导致了鉴别器在跨语种的任务上泛化性能较差。

※flask搭建一个签字程序

在做算法调研时,发现一个绘制平滑签名的JavaScript库,基于HTML5 canvas实现,它适用于所有现代桌面和移动浏览器,且不依赖于任何外部库的签字程序:signature_pad

Github demo

Flask是python的轻量级Web应用框架,最大的特征是轻便,我们可以使用Python语言快速实现一个网站或Web服务。python环境下安装flask:

pip install flask

通过flask加载签字html页面,可参考signature_pad demo实现或者博客:https://blog.csdn.net/weixin_38362455/article/details/88171200

python代码

import json
import base64
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/')
def hello_world():return render_template('index.html')@app.route('/image', methods=['POST'])
def get_image_data():img_data = request.values.get('imgStr', 0)sign_data = request.values.get('sign_data', 0)# 保存图片with open('test.png', 'wb') as f:f.write(base64.b64decode(img_data))return img_dataif __name__ == '__main__':app.config["DEBUG"] = True      # 设置debug=True是为了让代码修改实时生效,而不用每次重启加载app.run(host='0.0.0.0', port=500)

PC端效果

手机端效果

基于这样的签字服务和算法,后面的就可以实现很多的应用,如:手写字体识别、笔迹识别、笔迹比对等。

长按二维码关注我们

有趣的灵魂在等你

留言就摁吧

CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention相关推荐

  1. python笔迹识别_CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention

    论文链接: http://openaccess.thecvf.com/content_CVPR_2019/papers/Wei_Inverse_Discriminative_Networks_for_ ...

  2. (九:2020.08.27)CVPR 2019 追踪之论文纲要(译)

    CVPR 2019 追踪之论文纲要(修正于2020.08.28) 讲在前面 论文目录 讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自 ...

  3. CVPR 2019 爆款论文作者现场解读:视觉语言导航、运动视频深度预测、6D姿态估计...

    2019年计算机视觉顶会CVPR前不久刚在美国长滩闭幕.Robin.ly在大会现场独家采访20多位热点论文作者,为大家解读论文干货.本期三篇爆款文章包括: 1. CVPR满分文章.最佳学生论文奖.结合 ...

  4. CVPR 2019超全论文合集新鲜出炉!| 资源帖

    整理 | 夕颜 出品 | AI科技大本营(ID: rgznai100) 实不相瞒,这是一个资源福利帖--CVPR 2019 接收论文超全合集! 此前关于 CVPR 2019 论文和合集出过不少,但是这 ...

  5. 快了!CVPR 2019 所有录用论文题目列表刊出,即将开放下载!

    点击我爱计算机视觉标星,更快获取CVML新技术 早前CVPR 2019 已经公布了录用论文列表,可惜只有论文编号: http://cvpr2019.thecvf.com/files/cvpr_2019 ...

  6. CVPR 2019 目标检测论文汇总

    CVPR 2019 目标检测论文汇总(0506更新中)极市平台​已认证的官方帐号84 人赞同了该文章前段时间,计算机视觉顶会CVPR 2019 公布了接收结果,极市也对此做了相关报道 ,目前官方公布了 ...

  7. CVPR 2019 | 近日新出论文汇总(含视频目标分割、GAN、度量学习、高效语义分割等主题)...

    点击我爱计算机视觉标星,更快获取CVML新技术 CV君汇总了最近两天新出的CVPR 2019 论文,涵盖内容包括:度量学习.视频目标分割.GAN图像生成.基于RGB图像的物体表面网格生成.深度补全.高 ...

  8. CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法

    整理 | 刘畅.Jane 责编 | Jane 出品 | AI科技大本营(公众号id:rgznai100) 如何挑战百万年薪的人工智能! https://edu.csdn.net/topic/ai30? ...

  9. CVPR 2019|手写签名认证的逆鉴别网络

    点击我爱计算机视觉标星,更快获取CVML新技术 本文简要介绍CVPR2019论文"Inverse Discriminative Networks for Handwritten Signat ...

最新文章

  1. VTK:Utilities之RenderScalarToFloatBuffer
  2. 保存的图数据丢失_自从用了这2个功能,再也没有担心过文档丢失
  3. 数据结构----二叉树叶子结点到根节点的高度计算
  4. 移动信号突然变成无服务器,为什么移动4G信号突然变成H、E、G就无法上网, 背后的真实原因?...
  5. 将SublimeText加入右键菜单
  6. initializer element is not a compile-time constant
  7. ggplot 非常难调的参数
  8. 作为一个程序猿你必须会的技能----自学框架!
  9. Word2Vec简明教程:入门、原理及代码实现
  10. Springboot实现阿里云通信短信服务有关短信验证码的发送
  11. 使用组件,一直报错Unknown custom element: <etregister> - did you register the component correctly?
  12. JAVA基础篇-数据依赖性含义
  13. openstreetmap-server-ubuntu-16-04+GraphHopper搭建离线地图服务器和离线路径规划
  14. 官宣!CATCTF不日开赛!!
  15. Android拍摄raw照片,这20款摄影APP,让你的照片飞上天!
  16. 对Windows和类Unix争论的观点] 谁是谁的躯壳,谁又是谁的灵魂
  17. 数据库32位升级到64位解决方案
  18. php电子商务的服装库存管理系统
  19. 解决超新尔雅网课无法倍速(16+倍速冲刺)
  20. 原来Oracle也不喜欢“蜀黍(r6笔记第54天)

热门文章

  1. idea配置Spring遇到的问题(Lombok和修改镜像仓库)
  2. VC导入导出二维数组到 .txt
  3. win7 安装c语言环境变量,win7下如何配置编程环境变量的方法
  4. java mybatis狂神说sql_Mybatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防!
  5. C/C++关键字 static 和 const
  6. 【学术相关】研究生、博士生全程只靠自己能否发一篇 SCI?
  7. 【Python】你的表格太丑了!能美化下吗?
  8. 【论文相关】1.1 T 的 arXiv 数据集:170 万篇论文,可以看到下辈子
  9. 【效率】神器工具:新一代多系统启动 U 盘装机解决方案
  10. python正则表达式,看完这篇文章就够了...