本文へスキップ

Glyph Similarity Analyzer

2024.09
グリフの類似性を分析するCNN

グリフの類似性を分析するための訓練/推論モデル。CNNベース。

inspired by 「かむかもしかもにどもかも!(imai remix)」Music Video

IMG_1313 2.jpg

IMG_1315.jpg

仕組み

分類問題として解かせる。
学習データはフォントファイルから自動で作る。1文字ずつ32×32に描き出したものがそのまま訓練画像になる。
文字を32×32に描くとき、textbbox で実際の描画範囲を測ってから中央に置いている。フォントのベースラインのまま描くと字ごとに位置がずれ、形ではなく位置の違いを学習してしまうため。

ヒラギノ角ゴ Pro W3で13670文字、100エポックで93%ほどの精度。

特殊文字を省く

康煕部首

https://ja.wikipedia.org/wiki/%E5%BA%B7%E7%85%95%E9%83%A8%E9%A6%96

# exclude control characters and whitespaces
category = unicodedata.category(normalized_char)
# exclude variation selectors: 異体字
variation_selector = 0xFE00 <= ord(normalized_char) <= 0xFE0F
# exclude kangxi radicals: 康煕部首
kangxi_radicals = 0x2F00 <= ord(normalized_char) <= 0x2FDF

if (not category.startswith('C') and
    not normalized_char.isspace() and
    not variation_selector and
    not kangxi_radicals):
    characters.add(normalized_char)

謎文字たちを除外する。Unicodeは範囲で特定のブロックを指定できるらしい。

unicodedata.normalize('NFC', char)を用いて、文字を正規化していたけれど、これは間違い。NFC(Normalization Form Canonical Composition)は、文字を正準等価性に基づいて正規化し、可能な限り合成するらしい。

άέ ←こういうやつみたく結合される

モーフィング

徐々に変わるグリフでスリンキー

Screenshot 2024-09-24 at 16.49.30.png