[论文阅读] Instance Segmentation for Chinese Character Stroke Extraction, Datasets and Benchmarks

pre

title: Instance Segmentation for Chinese Character Stroke Extraction, Datasets and Benchmarks
accepted: arxiv
paper: http://export.arxiv.org/abs/2210.13826v1
code: https://github.com/lizhaoliu-Lec/CCSE

亮点:将实例分割用于笔画抽取

针对问题

  1. 现有笔画抽取方法由于数据有限高度依赖领域知识
  2. 没有标准的benchmark来比较方法优劣

注:关于baseline、benchmark:
baseline强调比较,在比较中作为参照物,基线,是被用于比较的模型
benchmark本身是一种标准、规则,包含操作或者数据,其他模型按照这组标准去评估得到结果再做比较
本文就是提出了一个新的benchmark:CCSE,含有两个大规模数据集跟评估方法

贡献

  1. 提出第一个公开基准,Chinese Character Stroke Extraction (CCSE) benchmark,其包含两个新大规模数据集,Kaiti CCSE (CCSE-Kai) and Handwritten CCSE (CCSE-HW).
  2. 将笔画抽取问题视作笔画实例分割问题
  3. 利用SOTA实例分割模型跟定义明确的评估指标,构建了标准benchmark促进今后的研究

作为CCSE benchmark的基础,数据集有两个要求:覆盖尽量多的汉字来代表笔画间的结构,其关系可能相当复杂(见图2左部),同时人类不同的手写习惯甚至同一笔画也不一样(图2右边),数据集应该关注这种多样性。总之两个数据集分别关注character-level 和 stroke-level 的多样性。

核心思想

将笔画抽取(stroke extraction)问题转换为实例分割(instance segmentation)问题

相关研究

图1 a本文考虑的25种汉字笔画 b笔画抽取示例

笔画提取,stroke extraction,就是根据给定汉字图片分解出笔画,是许多汉字相关应用的基石,这些各种各样的任务已经有很大进展,但对笔画的理解却相对滞后。

Stroke Extraction
一般可分为两条路线:

  1. 从 skeleton images 抽取笔画
  2. 从 original images 抽取笔画

对于第一种,thinning algorithm经常用于预处理阶段,这会导致笔划失真stroke distortion和短笔划short strokes的丢失,因此便有了第二种方法。第二种能得到丰富的信息,如笔画宽度跟曲率,性能也更好。最新研究结合两者的优点,找skeleton的交叉点并结合original images的笔画片段stroke segments。

因为缺乏数据,先前方法大多基于规则,在算法设计上要求较深的专业知识,这样有几个问题:

  1. 要把字分割为笔画片段,就得设定规则来找分割点,由于字符结构复杂这必然会纳入fork points
  2. 它们为常规、高度结构化的标准字体定制,在手写字上面由于不同手写习惯导致的巨大类间差异,可能表现就不好
  3. 仅优化笔画抽取任务,对下游任务可能没有可迁移的特征

而且缺乏可提供公平比较的基准benchmark跟数据集,光是精度accuracy无法顾及抽取的笔画的空间位置,不能综合评估抽取算法的性能。

Instance Segmentation
目标是分割图片中的每个实例,通过分配像素级的类标签。现存方法大概分为两类:

  1. two-stage,含实例检测跟分割两步
  2. one-stage

法1中 Mask R-CNN 是最重要的milestone,基于它的方法都要密集的dense先验proposal或anchor,才会有好结果,但也导致标签分配跟后处理步骤复杂。

为此,one-tage方法如YOLACT,将原型跟mask系数线性结合来产生实例mask,且不依赖于预检测步骤。

本文以充分研究的two-stage方法如Mask R-CNN作为baseline。

图2 提出的两数据集里的标注样本

注:关于实例分割可以参考经典论文:Microsoft COCO: Common Objects in Context

d即为实例分割

数据集

Image Collection and Annotation

Kai Ti Image Collection and Annotation
在网上找到了个开源项目 Make Me A Hanzi,跟进一步的cnchar,现在知道为啥笔画只取25个了。

图3 用cnchar逐笔画绘制汉字,浅棕色的是当前的笔画

图4 连笔与否的手写体跟楷体对比

用cncahr取9523个楷体字图片,用opencv标注浅棕色区域的bounding box跟mask,就有了CCSE-Kai数据集,样本可看图2。优点是自动化获取,省事,字符级多样性(字多),缺点是没有笔画级多样性(同一个字都是一样的)

Handwritten Image Collection and Annotation
还是用的开源CASIA Offline Chinese Handwriting Databases ,比较早的一个手写数据集,300人7185种字符,近3M手写图片。

如图4,它里面有一些连笔的,作者就全去掉了,而且300个最常用汉字每个挑10个样本,再选700个汉字,每个挑8个样本,总共7600张图,然后手动标注每张的笔画,最终形成CCSE-HW数据集,笔画数和CCSE-Kai一致。

Dataset Statistics

表1 跟其他汉字笔画数据集的比较 Pub.Ava.表示公开可获得

后面用了3张图分析提出的这两个数据集,略

方法(模型)流程

Overview

图8 笔画实例分割模型总览(使用Mask R-CNN)

实现基于detectron2框架,数据集的图片分辨率低,所以训练开销小,所有实验都在一块Titan XP上运行。每轮都随机选最小的图片尺寸(112, 120)。对于bounding box回归,默认使用广义IoU损失。将两个数据集按9:1:1划分进行训练、验证、测试。

实验

Stroke Instance Segmentation

表2 D表示数据集,K/H就是本文那俩,用于两个模型上的实验结果

图9 Mask R-CNN在俩数据集上的结果

CCSE-Kai的\(AP^{mask}\)比较低,作者归因于里面复杂的字比较多,很多笔画高度重叠,认为如果加上复杂的字符结构先验能够改进这一结果。定性结果看图9,失败的例子放附录里。

图10 用CCSE-Kai训练后的模型取抽取其他字体的笔画

图10展示了使用训练后的模型自动标注其他字体图片,选这几个字体因为常用、跟楷体结构、外观很像,较容易。模型标注结果仍需要人工小幅调整。

图11 加了复杂样本的背景

表3 Mask R-CNN在复杂背景图片上的结果

作者在图11里给字符加入复杂背景,因为它更接近实际使用场景,然后去测试模型,如表3所示

表4 不同源/目标数据集上的实验

表4是作者将两个数据集排列组合进行训练,S表示源训练集,T是目标测试集,混合在一起作为源数据会有提升,分开跨域训练的话会因为域差异导致效果很差。作者认为处理域不一致问题更数据有效的方式是无监督域自适应(unsupervised domain adaptation)

Comparison to Previous Approach

跟以往的方法比,它们只能抽取笔画的位置,而没有相应类别,需要人工评估抽取结果是否包含期望的笔画。

表5 本文实例分割方法跟传统笔画抽取方法的比较

其中\(K_s,\; H_s\)表示随机抽的100个数据点datapoints,\(K_s^*\)表示K里面笔画最多的100个数据点。

定量与传统方法(最新的传统笔画抽取,2016)比较发现:

  1. 传统方法在\(K_s^*\)上表现不好,不擅长处理复杂结构的字
  2. 传统方法难以识别手写数据集\(H_s\),展示了笔画高度差异对该任务产生的挑战
  3. 所有数据集上本文方法都大幅超越传统方法,注意到0.9的IoU阈值对实例分割已经很高,降低只会有更大的差距

图12 俩方法比较的定性结果

定性结果看图12,传统方法就普通的、笔画比较分离的效果好

Transferring Features to Downstream Tasks

表6 用不同预训练数据集在字体生成任务上的实验

表7 不同与训练数据集进行的手写审美评估实验

Font Generation
fontRL 做实验,它用了一个笔画bounding box网络(BBoxNet)将字的每个笔画在字符渲染前放到期望的位置。作者用不同的预训练模型初始化BBoxNet,结果如表6所示,IoU和MAE分别用于评估生成字体和GT字体的结构对齐跟外形差异。使用在本文数据集上预训练来的模型效果好。

Handwritten Aesthetic Assessment
手写审美评估?说是给定手写字图片,模型输出分类结果(好、中等、坏)和回归结果(范围从0到150)表示该手写字的美学水平。用不同预训练模型初始化ResNet-50,利用线性探测协议?(linear probing protocol),冻结预训练模型,仅训练分类和回归层,以此进一步探查特征的有效性。如表7所示,用CCSE-HW预训练的模型比在超过1M图片的ImageNet模型上训练的其他模型好得多,这表示小巧的、有字符结构知识的特定领域数据集比大规模综合视觉数据集更适合该项任务。

注:网上查到linear probe是测试预训练模型性能的一种方法,固定预训练模型其他参数,仅微调最后一个线性层,或许这就是为啥叫线性探测。

总结

提出首个大规模CCSE基准。获取大量汉字图片并加上笔画级标注来创建CCSE-Kai跟CCSE-HW两个数据集,这些数据集对字符级跟笔画级多样性都有益。分析数据集,指出固有的困难intrinsic difficulties。开展实验,展示用提出的数据集预训练模型对下游任务有益。将来的工作集中于改进严格IoU条件下的笔画分割表现。

可能由于本文目的是提供benchmark,对比的论文,挑的baseline都是比较早的,主要工作也就是整合网络资源,自己标注了下数据集,然后用已有的网络训练个笔画抽取模型,效果看起来还可以。

最后迁移那部分,fontRL感觉挺有意思的,但讲得太少,不是很清楚什么叫 “use different pretrained models to initialize the BBoxNet“ 既然是迁移想必得用到本文训练的Mask R-CNN才对,但怎么拿去初始化BBoxNet呢,而且ImageNet来预训练这河里吗,更离谱的是用本文数据集去预训练指标也没高多少啊。

启发

  1. 这个模型可以拿去GAN里面做一个判别器,给生成器提供监督信息
  2. 加复杂背景的trick
  3. 手写体风格多变,甚至同一个人写同一个字也未必会一样,难以找到一个统一的风格描述
  4. 找好研究方向很重要,总觉得本文思想简单成本也不高,真就感觉我上我也行

待解明

posted @ 2022-11-09 11:28  NoNoe  阅读(529)  评论(0编辑  收藏  举报