研究背景
大阪電気通信大学 総合情報学部 デジタルゲーム学科 情報デザイン研究室では、ペン字学習をサポートするアプリケーションの作成を行っている。そこで使用するペン字の見本を一から作成しようとすると膨大な時間がかかってしまう。また、流派などによって書き方が変わるため、流派の数だけサポートが必要となる。そこで、フォントからペン字文字を生成することができれば、様々な文字を生成することができるのではないかと考えた。本研究では、フォントからペン字文字を生成することを目標とする。はじめに、フォントAからフォントBへの生成を行うことができることを検証し、次にペン字生成を行う。
研究内容
本研究では,機械学習分野に属する敵対的生成ネットワークを使用して行う。その際に、任意のデータを生成できるConditional GANやpix2pix, CycleGANが候補に挙がった。今回の場合、様々なデータを生成することを加味し、Conditional GANは使用しない。また、pix2pixとCycleGANを比較した際に、対となる画像を必要とするpix2pixより、対となる画像を必要とせずに学習を行うことができるCycleGANを使用することにした。
CycleGANを使用して行う研究の最終目的として,文字画像をCycleGANに通すことでその文字をペン字に翻訳して出力するというものである.それを行うため、手始めに通常のフォントからフォントへの変換を行い、その後ペン字画像の生成を行った。
CycleGAN
CycleGANとは、画像から画像への翻訳を行うことができる敵対的生成ネットワークのことである。この技術は、pix2pixと言われる対となる画像を学習し翻訳を行う敵対的生成ネットワークを改良したものである。pix2pixの対となる画像が必要とされている部分を2つの生成器と識別器を用いることにより、対となる画像がなくとも学習できるようにしたものである。
主な活用方法としては風景画像を画家が描いた風にスタイルを変更させることや、ウマとシマウマの色を変更させることなどである。

(引用元: https://www.tensorflow.org/tutorials/generative/cyclegan?hl=ja)
通常のCycleGANを用いた生成結果
生成は以下の3つの生成を行い、徐々に文字の複雑さを上げた生成を行っている。
- セリフ体とサンセリフ体への翻訳
- ひらがなのみを学習し、その後非学習文字の生成
セリフ体とサンセリフ体への翻訳


ひらがなの学習後の非学習文字の翻訳


CycleGANの精度向上
CycleGANの精度向上を行う際にサイクル一貫性損失の変更とモデルの変更、学習データへの処理を行った。
初めに行ったのはサイクル一貫性損失の変更である。これは、画像を再翻訳する際に影響を受ける値である。初期値を10.0で行っていたが、それを1.0から11.0まで1.0刻みで生成を行った結果、サイクル一貫性損失は6.0で行うことにより特徴の変化とノイズが乗りにくくなった。
モデルの変更では、過学習によりノイズや文字の崩れが起きていると考えたため、Dropout層を追加した。これにより、過学習を防ぎノイズや文字の崩れが減ると考えられる。
学習データの処理では、学習する画像に対して左右への移動や回転、拡大縮小などの処理を行った。これもモデルの変更を行った際の過学習を防ぐために行ったものである。
精度向上後の生成結果
セリフ体とサンセリフ体への翻訳


ひらがなの学習後の非学習文字の翻訳


まとめ
本研究では、ペン字画像の生成を行うモデルの提案を行った。フォントからフォントへの大まかな特徴変化を行うモデルを提案することができた。また、モデルの生成を行う際に学習するデータへの処理を行っておくことにより、学習していないデータの生成を行うことに対して強いCycleGANを作ることができた。しかし綺麗に生成ができていないため,今後の課題として全体的な特徴変化を行えるようにする。また、学習結果の精度をより高いものへとすることである。
使用させていただいたフォント
Palatino
SF Compact Rounded Ultralight
幻ノにじみ明朝(http://www.fontna.com/blog/1912/)
Nikkyou Sans Font(https://www.fontspace.com/nikkyou-sans-font-f31053)
コメント