DeepGlyphで感じた課題とAI JIMOJI

MOJICITY

先月の1月23日に、自分らしいフォントを自由に楽しむ世界というコンセプトのサービス『MOJICITY (もじシティ) 』が公開されました。こちらのサービスのコンテンツ『AI JIMOJI』では手書きの文字がOpenTypeフォントになるというとても面白い体験ができます。今回このフォント生成システム実装の一部に関わらせていただきました。

fontworks.co.jp

私は以前個人のプロジェクトとして似たようなコンセプトの『DeepGlyph』を開発していたこともあり、AI JIMOJIとの関連を説明すべきかと思いこちらでブログの形で公開します。DeepGlyphのBeta版公開以降更新が止まっている件も (すみません…) 合わせて書こうと思います。

deepglyph.app

最初にまとめると、

  • DeepGlyphは公開以降サービスの方向性と技術的な課題のミスマッチが解消できず行き詰まっている
  • AI JIMOJIとDeepGlyphは (一見) 目的は似ているがアプローチは全く異なる
  • AI JIMOJIは多くのメンバーによるR&Dの成果によるもので、私のアイディアは一部のみ

DeepGlyphのリリース以降開発が止まっていたのはなぜ?

いくつかの面で、DeepGlyphが実現したい方向性とDeepGlyphができることとのミスマッチを認識したためです。

f:id:spring_raining:20220313191740p:plain

DeepGlyphが実現していることは「ゴシック体や明朝体などのフォントを少ないサンプルから生成すること」でした。一方でBeta版のリリース以降、DeepGlyphの目的が「自分の書いた文字をフォントとして生成する」ものとして認識されているようでした。一見同じような目的に見えますが、この2つは特徴として大きく違っています。

前者のゴシック体や明朝体などの一般的に使われるフォントの文字 (紛らわしいので以後グリフと表現) は、一見フォントごとに多くのバリエーションを持っているように見えますが、文字全体を見ると統一感を持ってデザインされているものです。フォントは利用目的上、それぞれのグリフはストロークの幅や余白の持ち方が一つのフォントの中で一貫しています。それは「グリフの生成」が深層学習を用いた生成のタスクとして適していると私が考えた理由の一つでもあります。

一方で、手書きの文字はそのようなグリフとは異なるルールで作られるものです。同一人物が書いた文字という意味では一貫性はありますが、その特徴はグリフの持つ特徴とは全く異なるもので、本来DeepGlyphが目的としていないものでした。もしDeepGlyphのタスクを手書き文字の生成にする場合は、データセットやそもそもの生成方法から考え直さないといけないはずです。DeepGlyphのインターフェースが手書き文字を受け付けそうな見た目になっているのも勘違いの一因ですが、この部分の認識がずれたままだと (手書き文字として) 期待はずれの生成結果になった、という失望をユーザーに与え続けてしまいそうでした。

DeepGlyphアプリケーションのスクリーンショット
DeepGlyphアプリケーションのスクリーンショット

それではグリフの生成に特化したアプリケーションに改善していくか? と考えたときも、主にクオリティの面で壁にぶつかります。Beta版を使ってみた方は理解してもらえるかと思いますが、生成されるフォントは全体として一貫性はあるもののなんとなくふにゃふにゃしたグリフになりがちで、サンプルとして入力したグリフともそれほど似ていないという問題があります。

前提として (手書き文字ではなく) 自分のデザインしたグリフのフォントを作りたい! というDeepGlyphのユースケースを考えたときに、比較的フォントに対する品質への目が厳しそうなユーザーとの相性は元々よくありませんでした*1。 残念ながら現状の生成品質では、こういったユーザーの方を満足させられるようはプロダクトにはなっていません。いや、実は品質を改善するアイディアは無いことはないですが、具体的に学習に落とし込む方法が見いだせていないという状態です。

このようなことを延々考えた結果、アプリケーションとしてのDeepGlyphを発展させる方向を決めきれないまま今に至っています。ただ、多彩なグリフを自動生成する方法としてDeepGlyphが使えないということはなく、タスク次第で提示できるものもまだまだあると思っています。SIGGRAPH 2021で発表された『Goshuin 2.0 *2 』は御朱印を自動生成するというシステムで、自動生成ができることとタスクとの相性の良さを感じました。

そしてなぜ今になってフォント生成アプリケーションがAI JIMOJIという形で公開されたのか、という話はまた長くなってしまうのですが、結果的には後者の「自分の書いた文字をフォントとして生成する」という目的を達成するものになりました。

AI JIMOJI について

ここで明らかにしておきますが、AI JIMOJIは明確にフォントワークス社の提供するサービスであり、DeepGlyphとは直接的な関係性はありません。フォントの生成アイディアは私以外の複数人とのR&Dの結果で、その生成手法はDeepGlyphと全く違うものになっています。

ではなぜDeepGlyphをほったらかしにして宣伝しているかというと、このサービスが提供するフォント生成の先に私自身が興味と期待を持っているからです。それは、AI JIMOJIが日本語における最大の手書き文字データセットとなる可能性、また最も品質の良い手書き文字データセットになる可能性です。

MNISTに代表されるように、手書き文字のデータセットはビットマップ (幅×高さの2次元配列) 形式が大半です。この形式は学習データとして取り扱いやすいものですが、ビットマップ形式に落とし込む際にどうしてもデータとしての情報量が失われてしまいます。

AI JIMOJIのスクリーンショット
字が汚い

AI JIMOJIが得ているデータは、ペンのストロークそのものに関する情報です。つまり、ペンの筆跡、速さ、筆圧といった情報を元にフォントが生成されています。この情報量の差は非常に重要で、後にこれらのデータを元に学習させる際に取れる選択肢が格段に変わってきます。文字のストロークという情報量の多いデータセットが、将来AI JIMOJIの生成する手書き文字フォントの品質向上につながるのです。これは全体で考えると、フォントを生成するところまでが目的ではなく、むしろ『Quick, Draw!』のようなコンセプトで発展していくサービスだと思っています。2022年1月に一旦はWebサービスのコンテンツとして登場しましたが、今後いろいろな形での展開を検討しているとのことで、今後どのように発展していくのか楽しみです。

一開発者として、ぜひAI JIMOJIを使ってフォント生成を楽しみながら品質向上に役立ててもらいたいです。スマートフォンと指で書いても良いですが、できればお手元のiPad+Apple Pencilで試してみてください!

*1:もし「手書き文字ではなくグリフを生成する」かつ「フォントの品質に対する要求が厳しくない」ユースケースを思いついた方はこっそり私に教えて下さい🥺

*2:Shimizu, Shuma, et al. "Goshuin 2.0: Construction of the World’s Largest Goshuin Dataset and Automatic Generation System of Goshuin with Neural Style Transfer." ACM SIGGRAPH 2021 Posters. 2021. 1-2. https://dl.acm.org/doi/10.1145/3450618.3469160