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


paper:  《DeepWriterID: An End-to-end Online Text-independent Writer Identification System》
地址: https://arxiv.org/abs/1508.04945v2
相关文章:《Character-level Chinese writer identification using path signature feature, dropstroke and deep CNN》 arXiv:1505.04922

前言

本篇文章针对的是书写者识别(Writer identification)任务的一个工作:DeepWriterID,且是文本无关,不依赖书写内容的在线手写书写人身份识别。主要通过数据预处理对字符进行分段、提取,随机删除笔画分段(DropSegment)进行数据增强, 路径签名特征图(path-signature feature maps)作为输入,CNN进行特征提取和优化分类损失。

算法流程

DeepWriterI

分割预处理

  • 分段生成

通过角点检测算法进行分段生成,通过非角点的前向向量和反向向量相互抵消的概念来计算弯曲度,具体公式:

其中弯曲度的局部最大值被视为角点,然后每一个笔画就可以通过角点拆分为若干个分段,如下图:

  • 伪字符分割

因为对于书写人识别任务,不需要精确地将每个字符分割出来,因此可以在保留不同签字人判别信息的情况下进行伪字符分割处理,具体地,当一个分段加进去时,字符的宽度超过了平均高度,这个分段便是另一个新字符的开始。即,为了CNN的固定大小输入,同时针对书写人笔迹识别 ,并不关心字符的具体内容和意义(即使是非字符或者英文包含了多个字母),本文将字符的高宽强行设置了一个相同的比例,[1,13]都会得到不错的效果,为了简单,文章将这个高宽比设置为了1。

Dropsegment

通过上述数据预处理,得到了带有分段的每个字符;对每个训练batch里面的字符,假设一个字符含有个分段,其中有个分段会被随机删除掉,。对于剩下的分段会非常零碎,会破坏写作者的风格,因此需要进行重新拼接组合,每个分段便成了一个新的笔画。

路径签名特征图

路径签名特征(path-signature feature),是粗糙路径理论(Rough Path Theory)的计算结果,在机器学习和时间序列分析领域中应用广泛。路径签名是一个路径的特征,往往可以代替路径数据作为模型的输入。下面进行简单的介绍:

路径:一个将连续取值区间[a,b]转换到多维空间的映射。最简单的二维欧式空间的路径:即物体在二维平面上从时刻持续运动到 时刻的轨迹,在其中每一时刻的位置都可以用一个二维向量表示,表明了物体在对应方向上随时间变化的规律。如以下路径:

是个逆时针绘制的圆心为,起始点为 的圆形路径。那么,对于维空间的路径,可以被定义为:

可简记为 ,路径 需要满足分段可导和处处连续。

但是在实际应用场景中,我们能够获取到的路径往往不是连续的,而是在取值区间内的不均匀采样,类似于在线签名笔迹,其点位数据是在起止时间内的离散采样点,因此往往需要进行插值操作获取时间上分布均匀且密集的路径。

路径积分:路径签名(path sigature)其实就是对不同阶路径积分(path integral)的集合, 对于维空间的路径,一阶路径签名项(路径积分)有个,对应着个维度。其定义为:

那么对于二维路径,则我们定义方向路径积分为:

其意义就是在参变量由变换至时对的积分, 相当于路径在维度上的投影距离。

接下来,二阶路径签名项, 其他定义同上。但是签名项有项, 签名编号也变成了有序对 . 我们定义第 项为:

对于二阶项有以下定理:

证明:

二维举例:

一般的n阶路径签名项,通项公式为:

路径签名:路径的路径签名,是一个无限长的序列,由1(即0阶签名项)和各个阶次的签名项构成:

路径签名具备的一些性质:

  1. 平移不变性,即路径的开始位置对于特征的求取没有影响。

  2. 重参数不变性,对时间进行重参数化后,路径的签名保持不变。这里的重参数化值得是 对时间t 做一个 函数映射 :

  3. 低阶项乘积可以通过高阶项的线性组合得到,意味着只使用高阶特征的线性组合来获取低层次的大尺寸特征。

  4. 时间反转路径签名乘积为1。其中,

  5. Chen’s Identity:两条路径连接的路径积分等于两个路径签名的乘积。

截断路径签名: 由于路径签名是无限长的序列,不适合直接用于机器学习算法。于是只取序列中的 阶和阶以前的签名项,这个新的序列叫做 阶截断路径签名。

因此,在字符分段的每一个点位都会产生阶截断的路径签名特征,, 签名路径为1,表示原始数据,时,表示路径位移,表示路径曲率,越大,提取越高阶的特征,但是维度也会指数级增长,因而同上述所说,会进行截断。

故而,输入的特征图个数有。通过对笔迹点位按特征值分配像素值,背景像素为0,再对相应的特征图像进行直方图均衡化,进而进行直观地展示,如下图:

每行表示每个书写人、列表示不同阶的路径积分特征。可以发现,不同作者同样的字特征相似度非常高,但是高阶特征的差异性很明显,印证了假设:高级别的路径签名可能包含有助于手写识别的信息。

为了做数据增强提升网络泛化能力,作者在提取path-signature feature maps之前还将字符数据进行了多种仿射变换:翻转、旋转、缩放。CNN训练的相关超参数:mini-batch 100,Dropout设置在最后四层,分别0.3, 0.4, 0.5, 和 0.5, 在一个GTX 980训练了一周( ̄︶ ̄)。最后网络softmax基于单个字可以输出所有ID类别的概率分布,通过综合一页所有字符级别的概率便能能得到基于页层面的书写人。作者实验发现,通过加入额外的路径签名特征,更能提取精细的笔迹特征,DCNN融入了这些先验知识,能够显著提高性能。

Performance of Path‐signature Feature(page level)

其中,Bitmap表示根据在线数据还原绘制的离线图片, Sign.n表示路径签名特征的截断阶数为n

网络结构

M×96×96Input-80C3-MP2-160C2-MP2-240C2-MP2-320C2-MP2-400C2-MP2-480FC-512FC-Output

M表示输入通道数,特征图个数。

数据集

NLPR handwriting database:中科院自动化研究所(CASIA)生物识别与安全技术研究中心发布的在线手写数据集,采用Wacom Intuos2签字板采集,包含丰富在线序列信息,包括笔触位置、笔触状态、方位角、高度、压力、时间戳等。

数据集包含三个子集:每个人4页中文,共187人(Dataset1);每个人4页英文,共134人(Dataset2),两个子集交集有133人(Dataset3),本文在Dataset1和Dataset2进行了实验

中文数据集

英文数据集

算法效果

中文:95.72%
英文:98.51%

参考

  1. Path Signature笔记
    https://zhuanlan.zhihu.com/p/335494125

  1. 路径签名Path Signature的一些总结
    https://blog.csdn.net/Yana_Zeng/article/details/119141453

  1. Path signature介绍
    https://blog.csdn.net/Dr_maker/article/details/122958988

  1. path_signatures_introduction
    https://github.com/pafoster/path_signatures_introduction

  1. A Primer on the Signature Method in Machine Learning
    https://arxiv.org/pdf/1603.03788.pdf

DeepWriterID:不依赖书写内容的书写人识别相关推荐

  1. 没有内容的营销是放空枪 你的内容能让人尖叫吗?

    没有内容的营销就是放空枪,一声巨响,毫无营养却镇伤内脏.是的,就是一坨干巴巴的硬广,毫无技术含量,劳民伤财,损兵折将. 靠吆喝声吸引过来的顾客,大多是一次性顾客,不是贪便宜就是贪便宜.而靠内容吸引过来 ...

  2. 使用java创建PDF并书写内容-怕原创删帖用做笔记

    原文链接:https://blog.csdn.net/weixin_37848710/article/details/89522862点击跳转 最近项目中使用到Java实现导出PDF文件,经过一番参考 ...

  3. 什么是医嘱?医嘱的书写内容?

    医嘱是指医师在医疗活动中下达的医学指令.医嘱内容及起始.停止时,间应当由医师书写.医嘱内容应当准确.清楚,每项医嘱应当只包含一个内容,并注明下达时间,应当具体到分钟. 医嘱不得涂改.需要取消时,应当使 ...

  4. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  5. html正则表达式的书写,前端正则表达式书写及常用的方法

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 前端正则表 ...

  6. java的书写规范_java书写规范以及技巧

    一. Java命名的一般性指导 1. 类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参 数.实际参数.局部变量)的首字母应小写,其中包含的所有单词都应紧靠在一起,而 且大写 ...

  7. 计算机文件目录格式书写,关于毕业论文书写格式 论文目录格式模板

    [通用]关于毕业论文书写格式为免费论文目录格式模板,为你的本科论文和硕士论文提供有标准的格式范文参考. 参考某一学校的要求) 论文书写格式(如图) 论文全部要采用word 来书写,文件名统一为repo ...

  8. c语言程序书写注意事项,书写C语言程序的注意事项.doc

    书写C语言程序的注意事项 1. 每一C程序必须有一个main( ),且也只能有一个main( ),程序始终是从main的第一个'{'开始执行的:如果遇到调用函数,流程就转向对应的被调用函数,执行被调用 ...

  9. python书写风格_python书写风格

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. python装饰器函数-python 装饰器 函数被装饰+函数执行
  2. 太炫酷了!逼格高的键盘敲代码贼爽!包邮送到家!
  3. ITK:清除四边网格
  4. 敏捷中gwt含义_在您的GWT应用程序中添加JSON功能
  5. xilinx sdk退出Debug模式回到C开发布局
  6. 利用动态数组生成魔方矩阵
  7. 偏执的iOS逆向研究员:收集全版本的macOS iOS+越狱+内核调试
  8. 家里两台电脑怎么共享文件_家里两台电脑怎么共享文件
  9. 计算机桌面保护时间的调整显示,电脑屏幕显示时间设置_电脑屏幕的显示时间...
  10. 计算机没桌面,电脑桌面的计算机图标没了怎么办
  11. Java 简单的新增方法
  12. 命令行操作flyway
  13. MySQL官方教程及各平台的安装教程和配置详解入口
  14. 计算机管理 合并分区,硬盘分区进行合并 硬盘分区后怎么合并
  15. python的turtle的正六角形简洁画法
  16. 如何安装2018matlab,MATLAB 2018a软件安装教程
  17. 十分钟实现鼠标悬停效果,CSS3悬停效果
  18. 数据可视化之美 -- 以Matlab、Python为工具
  19. geany配置python_python使用Geany编辑器配置方法
  20. JDBC连接数据库模板

热门文章

  1. Sqlite-Sqlite3中的数据类型
  2. 应用指定显示到副屏_广电演播领域与舞台LED租赁显示屏如何去选择LED小间距屏...
  3. guests mysql权限_MySQL降权运行之MySQL以Guests帐户启动设置方法
  4. AI理论知识基础(21)-对变化建模-用差分方程-动力系统及常数解
  5. tensorflow随笔-条件语句-tf.cond
  6. 玩双节棍的算法工程师:鱼佬的数据挖掘之路!
  7. 解决Github速度太慢的几种方案
  8. 【白话机器学习】算法理论+实战之K-Means聚类算法
  9. 【ICML 2020】REALM: Retrieval-Augmented Language Model PreTraining
  10. 收藏!!如何 Get 机器学习必备的算法技能? | 逻辑回归