本開示は、敵対的トレーニングを採用して、フォント分類を改善し、グリフ内容のクラス内変動により引き起こされる好ましくない副作用を取り除くフォント認識システムの1つまたは複数の実施形態について説明する。詳細には、フォント認識システムは、フォント分類器および敵対的グリフ分類器を使用してフォント認識ニューラルネットワークを敵対的にトレーニングして、多様なグリフ内容による好ましくない副作用を取り除くことにより総合的フォント認識を改善する。
例証するために、1つまたは複数の実施形態では、フォント認識システムは、トレーニング・フォント・セット内の描画されたテキスト画像からフォントを識別するように構成されたフォント認識ニューラルネットワークを生成する。たとえば、フォント認識システムは、トレーニング・フォント・セット内のテキスト画像から抽出した特徴に基づき、フォント分類器を使用してフォントを認識する。また、さらにフォント認識システムは、抽出特徴に基づきグリフを認識するように構成されたグリフ分類器を追加することにより、フォント認識ニューラルネットワークをさらにトレーニングすることができる。しかしながら、フォント認識ニューラルネットワークをトレーニングしてテキスト画像内のグリフを認識するのではなく、フォント認識システムは、グリフ分類器を使用して、フォント認識ニューラルネットワークをグリフに無関心(たとえば、グリフに非依存性)にする。たとえば、フォント認識システムは、グリフ分類器を採用して、トレーニング中にフォント分類器と敵対的に競合する。このようにして、フォント認識システムは、グリフによる副作用なしにフォントを区別するのに有効な特徴ベクトルを生成するフォント認識ニューラルネットワークをトレーニングする。
1つまたは複数の実施形態では、フォント認識ニューラルネットワークは、畳込み層(たとえば、下位ニューラルネットワーク層)および全結合層(たとえば、上位ニューラルネットワーク層)を含む畳込みニューラルネットワークである。いくつかの実施形態では、畳込み層は、調整可能な(たとえば、学習した)パラメータを使用してテキスト画像からフォント特徴を抽出することによりフォント特徴ベクトルを生成する符号化器を形成する。最初にトレーニングされたフォント認識ニューラルネットワークの全結合層は、符号化器からのフォント特徴ベクトルに基づきフォントを認識するフォント分類器を含むことができる。トレーニング中に、フォント分類損失モデルは、フォント分類器がトレーニング・フォント・セットからのテキスト画像を誤って分類するときを識別し、特徴抽出パラメータを修正または調整してフォントをよりよく分類するフィードバックを符号化器および/またはフォント分類器に提供する。
同じく上述のように、フォント認識システムは、詳細にはグリフ内容に伴うクラス内変動を示すフォントに関して、敵対的グリフ分類器を使用してフォント認識ニューラルネットワークをさらにトレーニングすることにより、フォントを認識する、フォント認識ニューラルネットワークの能力を改善することができる。たとえば、フォント認識システムは、グリフ分類器を形成する追加の1組の全結合層を追加する。たとえば、フォント分類器の1組の全結合層は、グリフ分類器の全結合層に積み重なる。これまでに述べたように、グリフ識別器は、符号化器からのフォント特徴ベクトルに基づきグリフを識別する。しかしながら、フォント認識システムは、符号化器がフォント認識に関して有能な(すなわち、フォント分類器)、およびグリフ認識に関して無能な(すなわち、グリフ分類器)フォント特徴ベクトルを作り出すように、符号化器およびフォント分類器をグリフ分類器と競合させることにより、フォント認識ニューラルネットワークをさらにトレーニングする。
例証するために、グリフ分類器は、符号化器が生成したフォント特徴ベクトルを特定のグリフとして分類し、この場合、フォント特徴ベクトルは、所与のテキスト画像(たとえば、トレーニング・フォント・セット内のテキスト画像)に対応する。特定のグリフが所与のテキスト画像内のグリフと正確に適合する場合、フォント認識システムは、符号化器にフィードバックを提供して、グリフ分類器がそのグリフを誤って分類し始めるまで、抽出パラメータを修正または調整する。周期的に、グリフ分類器がトレーニング中にテキスト画像内のグリフを誤って分類するとき、フォント認識システムは、グリフ分類器にフィードバックを代わりに提供し、それにより、グリフ分類器は、グリフ分類パラメータを調整し、符号化器/フォント分類器に対して競合する敵対者のままでいることが可能になる。総合的に、フォント認識システムは、フォント分類器に関する交差エントロピー損失を最小にする一方でグリフ分類器に関する交差エントロピー損失を最大にするミニマックス目的関数を使用して、フォント認識ニューラルネットワークをトレーニングする。
言及したように、フォント認識システムは、トレーニング中にフォント認識ニューラルネットワークの一部にフィードバックを提供することができる。実際に、フォント認識システムは、誤差逆伝播およびエンド・ツー・エンド学習を採用してフィードバックを提供し、フォント認識ニューラルネットワークをトレーニングする。さまざまな実施形態では、フォント認識システムは、フィードバックを順次提供する。たとえば、フォント認識システムは最初に、グリフ分類器内の誤差損失が所定のしきい値を超えるまで、符号化器内のパラメータを反復して更新する。しきい値を超えると、フォント認識システムは、固定された反復回数の間に、フォント分類器内のパラメータを、次いでグリフ分類器内のパラメータを更新する、またはその逆も同様である。フォント認識システムは、フォント認識ニューラルネットワークが敵対的トレーニングによって収束するまで、トレーニング・フォント・セットを使用してフィードバックを提供し、符号化器、フォント分類器、およびグリフ分類器でパラメータを順次更新する活動を繰り返すことができる。
さらに、1つまたは複数の実施形態では、フォント認識システムは、トレーニング・フォント・セット内のテキスト画像の中にランダム偏差を導入する。たとえば、フォント認識システムは、さまざまなテキスト画像に少量のガウスの雑音、ぼかし、または濃淡をランダムに導入する。さらに、フォント認識システムは、ランダムに選択したテキスト画像透視図を回転させる。ランダムな偏差を追加することにより、フォント認識システムは、フォント特徴ベクトルの生成に関して、トレーニングをより困難にすることにより、したがって、トレーニングされたフォント認識ニューラルネットワークをより弁別力のある(たとえば、より選択能力を持つ)ようにすることにより、フォント認識ニューラルネットワークのロバスト性を改善することができる。
フォント認識システムは、敵対的にトレーニングされたフォント認識ニューラルネットワークを使用して、入力画像内のフォントを識別する。たとえば、さまざまな実施形態では、フォント認識システムは、入力フォントを含む入力テキスト画像を受け取る。入力テキスト画像を受け取ると、フォント認識システムは、敵対的にトレーニングされたフォント認識ニューラルネットワークを使用して、入力フォントに関する1つまたは複数のフォント確率ベクトルを決定する。さらに、フォント認識システムは、決定したフォント確率ベクトルに基づき入力フォントを識別する。
具体的には、さまざまな実施形態では、フォント認識システムは、敵対的にトレーニングされたフォント認識ニューラルネットワーク(すなわち、トレーニングされた符号化器)を採用して、入力テキスト画像に関するフォント予測ベクトルを決定する。フォント確率に基づき、フォント認識システムは、トレーニングされたフォント分類器を使用して、入力テキスト画像で使用されたフォントを識別する。たとえば、フォント確率ベクトルは、入力フォントと1組の既知フォント内の各フォントとの間の適合確率を示し、その結果、フォント認識システムは、フォント確率ベクトルの中で最も高い適合確率を有する既知フォントとして入力フォントを識別する。フォント認識システムは、次に最も高い適合確率を有する既知フォントを類似フォント(たとえば、上位5つの適合フォント)として識別することができる。
すでに言及したように、フォント認識システムは、従来のシステムおよび方法よりも多くの利点および利益を提供する。一例として、フォント認識システムは、グリフ内容のクラス内変動により生じる好ましくない副作用を従来、欠点として持つフォント(たとえば、日本語フォント)をトレーニングし、識別する。詳細には、フォント分類器/フォント分類損失モデルと共にグリフ分類器/グリフ分類損失モデルを採用することにより、フォント認識システムは、フォント認識ニューラルネットワークを敵対的にトレーニングして、グリフ内容のクラス内変動の副作用を取り除く。
さらに、別の例として、多くの実施形態では、フォント認識システムは、トレーニング・フォント・セットに含まれない入力画像内のテキストを正確に識別することにより、既知のシステムよりも向上した柔軟性を提供する。詳細には、敵対的トレーニングによって、グリフ内容によって生じる好ましくない副作用を取り除いた結果として、敵対的にトレーニングされたフォント認識ニューラルネットワークは、より汎化されるようになり、それにより、フォント認識システムは、トレーニングステージで分からなかったグリフのフォントを正確に識別することが可能になる。これは、詳細には、トレーニング・フォント・セットが可能なグリフのわずかなパーセンテージ(たとえば、およそ1%)しか含まない場合があるので、可能なグリフの多様性が大きく数が多い言語(たとえば、日本語言語ではグリフは50,000を超える)を用いて作業するときに有利である。
以下でさらに説明するように、フォント認識システムは、トレーニング・フォント・セットに含まれない、テキスト画像からのフォントを正確に識別することに関して、直接対決の評価で最新式フォント分類システムよりも性能が優れている。実際に、フォント認識システムは、フォントを認識するだけではなく、正確な結果を作り出す、より汎化した能力を提供する。フォント認識システムの試験および評価の結果について、図7および図8に関して以下でさらに説明する。
他の利益として、フォント認識システムは、既知のシステムよりも、必要なメモリおよび計算要件を低減する。たとえば、フォント認識システムは、敵対的トレーニングを採用することにより、フォント分類ネットワークの総合トレーニング時間を低減する。別様に述べると、最新式フォント分類システムは、本明細書で開示するフォント認識システムと同じ水準の精度を達成するために、追加のトレーニング反復、著しくより大量のトレーニング・フォント・データ、および/またはメモリ記憶領域だけではなく、ニューラルネットワークを収束させて本明細書で開示する認識システムに匹敵する結果を達成するための追加時間も必要とする。さらに、最新式フォント分類システムは、時間および資源を増大させてさえ、本明細書で説明する1つまたは複数の実施形態と同じくらいロバストで安定したフォント認識ニューラルネットワークを作り出さない。
フォント認識システムのさらに別の利点および利益は、以下の説明を考慮して明らかになる。詳細には、1つまたは複数の図を参照してフォント認識システムの1つまたは複数の実施形態について以下で説明する。さらに、フォント認識システムの1つまたは複数の特徴について説明するために、以下の用語の規定を使用する。
本明細書で使用するとき、用語「テキスト画像」は、1つまたは複数のデジタルフォントで書かれたテキスト(すなわち、グリフ内容)を含む、任意のタイプの電子文書または電子ファイルを指す。たとえば、テキスト画像は、画像ファイル(永続的または一時的)、クリップボードファイル、ワードプロセッシング文書、PDF(portable document file)、電子メールファイル、テキストファイル、ウェブページ、または任意の他の電子ファイルの形をとる電子文書を含むことができる。テキスト画像は、公告、パンフレット、ちらし、書籍、雑誌、定期刊行物、または他の出版物などの物理的情報源に由来する可能性がある。
本明細書で使用するとき、用語「デジタルフォント」(または単に「フォント」)は、規定された1組のデジタル文字(たとえば、グリフ)を指す。詳細には,用語「フォント」は、特定のスタイルまたは書体のデジタル文字の集合体を含む。フォントは、.ttf、.otf、.fnt、.abf、.ttc、.suit、.woff、.vnf、.t65、.sfp、.sad、.pmt、.pfm、.pfb、.pfa、.odtff、.mf、.gdr、.fon、.fnt、.font、.etx、.eot、.compositefont、.acfm、.afm、または.amfmなどの拡張子を伴うデジタルファイルを含むが、それらに限定されない。たとえば、用語デジタルフォントは、Times New Roman、Helvetica、Arial、PT Sans Regular、Corbelと呼ばれるフォント、または他のフォントタイトルを含む。
フォント特徴ベクトルによりフォントを表すことができる。本明細書で使用するとき、用語「フォント特徴ベクトル」(または単に「特徴ベクトル」)は、フォントの特性および属性を表す数値からなるベクトルを指す。詳細には、用語「特徴ベクトル」は、フォントの潜在的および/または特許に関する属性および特性に対応する1組の値を含む。1つまたは複数の実施形態では、特徴ベクトルは、フォントを表す多次元データセットである。1つまたは複数の実施形態では、特徴ベクトルは、ニューラルネットワークなどの機械学習アルゴリズムにより学習した1組の数値指標を含む。たとえば、特徴ベクトルは、グリフ曲率、グリフ間隔、グリフサイズ、グリフ形状、グリフ幅、グリフ高さ、グリフ位置(たとえば、並び線に対するグリフ位置)、グリフ面積、グリフ配向、グリフあたりの曲線の数、アーク長、グリフコントラスト、およびフォント分類特徴(たとえば、フォントを分類するのに利用されるフォント特徴)などのフォント・グリフ・データを含むことができる。さらに、特徴ベクトルは、フォントのフォントクラスおよびフォント特性に関する数値を提供することができる。いくつかの実施形態では、特徴ベクトルは特徴表現の一例であるので、用語特徴ベクトルおよび特徴表現を交換可能に使用する。
上記で説明したように、特徴ベクトルは、フォント分類(すなわち、フォントクラス)の数値表現およびフォント特性を提供することができる。本明細書で使用するとき、用語「フォント分類」は、フォントカテゴリおよび/またはフォント名を指し、デジタルフォントを分類するために利用する、事前に規定したカテゴリを含むことができる。たとえば、フォント分類は、フォントクラス(すなわち、Serif、Sans Serif、Slab Serif、Script、Blackletter、Mono、Hand、またはDecorative)を含む。いくつかの実施形態では、用語「フォント特性」はまた、スタイル(たとえば、標準、太字、イタリック体、影付き、下線付き、取り消し線、下付き文字、上付き文字)、ウェート(たとえば、肉細活字体の、標準の、ボールド体のウェート)、幅(たとえば、コンデンスの、標準の、およびエキステンドの幅)、大文字使用スタイル(たとえば、すべて大文字、スモールキャピタル、先頭文字の大文字の指定、および文頭だけを大文字にする)、xハイト(たとえば、スモール、標準、ラージのxハイト)、およびコントラスト(たとえば、低い、標準の、および高いコントラスト)などの、フォントに対応する属性を指す。
用語「フォント確率ベクトル」は、入力フォントと既知フォントの間の相関関係を提供する1組の値に対応する。詳細には、用語「フォント確率ベクトル」は、n次元ベクトルを含み、ここで、nは、既知フォントの数に対応する。n個の既知フォントごとに、フォント確率ベクトルは、入力フォントが既知フォントに適合する適合確率を含む。場合によっては、フォント分類器は、入力フォントに関して生成された特徴ベクトルと各既知フォントの特徴ベクトルを(たとえば、ベクトル空間距離に基づき)比較して、入力フォントと既知フォントの間の適合確率を決定することにより、フォント確率ベクトルを生成する。
同様に、用語「グリフ確率ベクトル」は、入力グリフと既知グリフの間の相関関係を提供する1組の値に対応する。詳細には、用語「グリフ確率ベクトル」は、m次元ベクトルを含み、この場合、mは、既知グリフの数に対応する。場合によっては、グリフ分類器は、入力グリフに関して生成された特徴ベクトルと各既知グリフの特徴ベクトルを(たとえば、ベクトル空間距離に基づき)比較して、入力グリフと既知グリフの間の適合確率を決定することにより、グリフ確率ベクトルを生成する。
用語「機械学習」は、本明細書で使用するとき、データから学習し、データに関する予測を行うことができるアルゴリズムを構築し、実装する処理を指す。一般に、機械学習は、トレーニング・フォント・セットなどの代表例入力からモデルを構築して(たとえば、トレーニングして)データ駆動型予測または判定を行うことにより動作してもよい。いくつかの代表的実施形態では、機械学習は、共同特徴学習、またはトレーニング・フォント・セットからの特徴学習などの、データマイニングおよび統計的パターン認識のために使用される。
本明細書で使用するとき、用語「ニューラルネットワーク」は、入力に基づき調整して(たとえば、トレーニングして)未知の関数を近似することができる機械学習モデルを指す。詳細には、用語ニューラルネットワークは、モデルに提供された複数の入力に基づき通信し学習して複雑な関数を近似し、かつ出力を生成する、相互接続されたニューロンのモデルを含むことができる。たとえば、用語ニューラルネットワークは、1つまたは複数の機械学習アルゴリズムを含む。詳細には、用語ニューラルネットワークは、深層畳込みニューラルネットワーク(convolutional neural network)(すなわち、「CNN」)を含むことができる。さらに、ニューラルネットワークは、1組のアルゴリズムを利用して、高水準のデータ抽象化をモデル化するディープラーニング技法を実装するアルゴリズム(または、1組のアルゴリズム)である。本明細書で使用するとき、ニューラルネットワークは、損失層内に回帰損失モデル(たとえば、フォント分類損失モデルまたはトリプレット損失モデル)を有するニューラルネットワークを指す。以下の説明および図は、一般にCNNを指す。
本明細書で使用するとき、用語「敵対的学習」は、対立する学習モデルを一緒に解決する機械学習アルゴリズムを指す。詳細には、用語「敵対的学習」は、同じモデルで複数の学習タスクを、タスク全体にわたって役割および制約を利用しながら(たとえば、順に、または並列に)解決するステップを含む。いくつかの実施形態では、敵対的トレーニングは、第1のタイプの損失を最小にするだけではなく、第2のタイプの損失を最大にするミニマックス関数(たとえば、ミニマックス目的関数)を採用するステップを含む。たとえば、フォント認識システムは、敵対的トレーニングを採用して、フォント分類器に対する交差エントロピー損失を最小にし、その一方で、共同学習の一部としてグリフ分類器に対する交差エントロピー損失をさらにまた最大にする。
本明細書で使用するとき、用語「損失関数」または「損失モデル」は、多次元ベクトル空間内の特徴ベクトルおよび/または確率ベクトル間の損失誤差を示す関数を指す。機械学習アルゴリズム(たとえば、ニューラルネットワーク)は、誤差損失を最小にする、および/または最大にするために繰り返してトレーニングすることができる。いくつかの実施形態では、フォント認識システムは、複数の分類損失関数を採用し、この場合、いくつかの損失関数は最小になり、その一方で、他の損失関数は最大になる。損失関数の一例は、交差エントロピー損失を伴うソフトマックスフォント分類器を使用するフォント分類損失を含む。損失関数の別の例は、交差エントロピー損失を伴うソフトマックスグリフ分類器を使用するグリフ分類損失を含む。フォント分類損失とグリフ分類損失の両方について、以下でさらに説明する。
次に、図を参照すると、図1は、フォント認識ニューラルネットワークを敵対的にトレーニングするための一般的処理100の図を示す。たとえば、さまざまな実施形態では、フォント認識システムは、処理100を実装して、フォント認識ニューラルネットワークを完全にトレーニングする。フォント認識システムを、1つもしくは複数のサーバ機器、1つもしくは複数のクライアント機器、またはサーバ機器とクライアント機器の組合せなどの1つまたは複数のクライアント機器により実装することができる。
最初に、図は、日本語のフォントおよびグリフに関してフォント認識システムを説明している。フォント認識システムおよび図に関して説明する技法、動作、方法、および活動は、他のタイプのフォントおよびグリフに適用されることが認識されよう。フォント認識システムは、詳細には、グリフ内容のクラス内変動の好ましくない副作用を欠点として持つフォントと共に使用するとき、有利である。
図1に示すように、フォント認識システムは、1組の日本語フォントテキスト画像を描画する(102)。たとえば、フォント認識システムは、さまざまな日本語グリフおよび日本語フォントを含むテキスト画像からなるトレーニング・フォント・セットを生成する。フォント認識システムは、トレーニング・フォント・セットの一部として何百万ものテキスト画像を生成することができる。テキスト画像の描画に関する説明について、図2Aに関して以下でさらに提供する。
1組の日本語フォントテキスト画像を描画すると、フォント認識システムは、フォント分類器を使用して、フォント認識ニューラルネットワークを最初にトレーニングする(104)。たとえば、1つまたは複数の実施形態では、フォント認識システムは、フォント分類を採用して、テキスト画像に基づき調整可能なフォント特徴抽出パラメータを決定するフォント認識ニューラルネットワークを最初にトレーニングする。いくつかの実施形態では、フォント認識ニューラルネットワークは、下位畳込み層が符号器を形成し、かつ上位全結合層がフォント分類器を形成する畳込みニューラルネットワークである。たとえば、符号化器は、調整可能な特徴パラメータを使用してフォント特徴ベクトルを生成する。次に、フォント分類器は、特徴ベクトルに基づきフォントを分類し、フォント分類損失モデルにフォント確率ベクトルを提供し、次に、フォント分類損失モデルは、符号化器および/またはフォント分類器にフィードバックを提供する。最初にトレーニングされたフォント認識ニューラルネットワークの詳細な一例を、以下で説明する図2Aに提供する。
最初にトレーニングされたフォント認識ニューラルネットワークを、完全にトレーニングされたフォント認識ニューラルネットワークをトレーニングするステップの初期化段階とみなすことができる。たとえば、最初にトレーニングされたフォント認識ニューラルネットワークは、1組の日本語フォントテキスト画像(たとえばトレーニング・フォント・セット)内のさまざまなテキスト画像間の空間的関係を含む。しかしながら、日本語フォントはクラス内変動を示すので、最初にトレーニングされたフォント認識ニューラルネットワークは、対応する特徴ベクトル間の空間的関係を不適切にマッピングする場合がある。たとえば、最初にトレーニングされたフォント認識ニューラルネットワークは、日本語フォントテキスト画像内で分かったグリフに関してフォントを正確に識別する場合があるが、日本語フォントテキスト画像に含まれていないグリフのフォントをいつも決まって誤って分類する場合がある。500のグリフからなるトレーニング・フォント・セットは、全部の利用可能な日本語グリフのほぼ1%を含む。
クラス内変動問題に対処するために、フォント認識システムは、最初にトレーニングされたフォント認識ニューラルネットワークにグリフ分類器を追加して、フォント認識ニューラルネットワークのトレーニングを著しく改善することができる。例証するために、図1は、フォント認識システムが、最初にトレーニングされたフォント認識ニューラルネットワークに敵対的グリフ分類器を組み合わせて、トレーニングを最適化するステップ(106)を示す。1つまたは複数の実施形態では、敵対的グリフ分類器は、調整可能なグリフ特徴パラメータを伴うグリフ分類器を採用する。さらに、グリフ分類器は、グリフ分類損失モデルにグリフ確率ベクトルを出力して、符号化器および/またはグリフ分類器を精緻なものにすることができる。多くの実施形態では、フォント認識システムは、ニューラルネットワークの上位全結合層でフォント分類器の上に(または下に)グリフ分類器を積み重ねる。以下で説明する図2Bは、グリフ分類器を追加することにより、フォント認識ニューラルネットワークを敵対的にトレーニングするステップの詳細な一例を提供する。
グリフ分類器を追加し、敵対的トレーニングを使用することにより、フォント認識システムは、日本語フォントに関してグリフ内容間にあるクラス内変動の好ましくない副作用を、完全に取り除くわけではないとしても、著しく低減することができる。以下でさらに説明するように、フォント認識システムは、フォント分類器にグリフ分類器と競合させて、使用されたグリフにかかわりなくフォント認識を改善させることにより、フォント認識ニューラルネットワークをトレーニングする。したがって、敵対的にトレーニングされたフォント認識ニューラルネットワークは、入力テキスト画像がトレーニング・フォント・セットですでに分かっているグリフを含むかどうかとは無関係に、入力テキスト画像で使用されたフォントを正確に認識することができる。
上述のように、図2Aおよび図2Bは、フォント認識ニューラルネットワークを敵対的にトレーニングするためのより詳細な処理の図を示す。詳細には、図2Aは、フォント分類器およびフォント分類損失モデルを使用して、フォント認識ニューラルネットワーク210を最初にトレーニングするステップを示す。図2Bは、グリフ分類器およびグリフ分類損失モデルを追加することにより、フォント認識ニューラルネットワーク230を完全にトレーニングするステップを示す。図2Cは、トレーニングされたフォント認識ニューラルネットワーク250を採用して、入力テキスト画像内のフォントを識別するステップを示す。
たった今言及したように、図2Aは、テキスト画像206を使用してトレーニングされたフォント認識ニューラルネットワーク210を含む。1つまたは複数の実施形態では、フォント認識ニューラルネットワーク210は、下位ニューラルネットワーク層および上位ニューラルネットワーク層を含むディープラーニング畳込みニューラルネットワークである。詳細には、下位ニューラルネットワーク層は、符号化器212を含む畳込み層208であり、上位ニューラルネットワーク層は、フォント分類器218を含む全結合層216である。さらに、トレーニング中、フォント認識ニューラルネットワークは、フォント分類損失モデル224を有する損失層222を含む。
上述のように、フォント認識システムは、テキスト画像206を描画することができる、または他の方法で得ることができる。たとえば、フォント認識システムは、フォント202(たとえば、日本語フォント)を1つまたは複数のグリフ204(たとえば、日本語グリフ)とランダムに対形成して、多数のテキスト画像206(たとえば、日本語フォントテキスト画像)を描画する。いくつかの実施形態では、フォント認識システムは、ランダムなグリフ/フォントの組合せを表示する、何百万ものテキスト画像206を描画する。描画されたテキスト画像は、以下でさらに説明するように、フォント認識ニューラルネットワーク210をトレーニングするために使用するトレーニング・フォント・セットを形成することができる。
より具体的には、1つまたは複数の実施形態では、フォント認識システムは、1組のグリフおよび1組のフォントに基づきテキスト画像を描画する。例証するために、フォント認識システムは、グリフ204をランダムに選択する。いくつかの実例では、フォント認識システムは、500の最も使用される日本語グリフ、上位25%の最も使用される日本語グリフ、10,000のランダムに選択された日本語グリフ、または別のサブセット数の日本語グリフなどの、日本語グリフのサブセットからグリフ204を選択する。説明をわかりやすくするために、単一のグリフを選択することについて説明するが、しかしながら、フォント認識システムは、テキストストリングを形成する複数のグリフを同様に選択することができることに留意されたい。
選択されたグリフ204については、フォント認識システムは、グリフ204を書くためのフォント202を選択する。たとえば、フォント認識システムは、グリフ204を書くための600の日本語フォントのうち1つを選ぶ。選択したフォント202で1つまたは複数の選択したグリフ204を書くと、フォント認識システムは、書かれたグリフをテキスト画像として描画し、描画したテキスト画像を1組のテキスト画像206に追加する。さらに、フォント認識システムは、描画したテキスト画像内に示されるグリフ204およびフォント202を伴う描画したテキスト画像に、ラベルを付ける、注釈を付ける、または他の方法でタグを付けることができる。
代わりのまたはさらに別の実施形態では、フォント認識システムは、日本語フォントテキスト画像からなるトレーニング・フォント・セットを得る。たとえば、フォント認識システムは、フォントデータベースにローカルにまたは遠隔に記憶された日本語フォントテキスト画像からなるトレーニング・フォント・セットをすでに作成していた。別の例では、フォント認識システムは、第三者のフォントリポジトリから日本語フォントテキスト画像からなるトレーニング・フォント・セットを得る。フォント認識システムは、新しく描画された日本語フォントテキスト画像と1つまたは複数のトレーニング・フォント・セットを組み合わせることができる。
さまざまな実施形態では、フォント認識システムは、トレーニング・フォント・セット内のテキスト画像206の中に偏差をランダムに導入する。たとえば、フォント認識システムは、雑音(たとえば、平均値ゼロおよび標準偏差3のわずかなガウス雑音)、ぼかし(たとえば、2~4の間の標準偏差のランダムなガウスぼかし)、透視図回転(たとえば、ランダムにパラメータ化されたアフィン変換)、および/または濃淡(たとえば、入力背景を満たすランダムな勾配)をテキスト画像206の一部の中にランダムに導入する。さらに、フォント認識システムは、テキスト画像206に、可変文字間隔および/または可変縦横比の修正を追加することができる。これらの偏差は、フォント認識ニューラルネットワーク210をトレーニングしながらロバスト性を追加するだけではなく、トレーニングされたフォント認識ニューラルネットワークが現実世界のテキスト画像をよりよく認識することを可能にする。
上述のように、フォント認識システムは、テキスト画像206を入力として提供して、フォント認識ニューラルネットワーク210を最初にトレーニングする。たとえば、フォント認識システムは、符号化器212をトレーニングして、入力テキスト画像206内のフォントに関する特徴ベクトル214を生成し、フォント分類器218をトレーニングして、特徴ベクトル214に基づきフォントを識別し、フォント分類損失モデル224をトレーニングして、テキスト画像内のフォント(たとえば、フォント202)とフォント分類器218が識別した対応するフォントを比較することによりフォント分類器218の精度を決定する。
上記で説明したように、フォント分類器218は、符号化器212が生成した特徴ベクトルの解析に基づき、フォント確率ベクトル220を決定する。1つまたは複数の実施形態では、符号化器212は、特徴ベクトル214を生成するための1つまたは複数の正規化層およびプーリング層を含む。代わりの実施形態では、フォント認識システムは、異なるタイプの下位ニューラルネットワーク層を採用して、特徴ベクトル214を符号化する。
さらに、いくつかの実施形態では、フォント分類器218は、フォント確率ベクトル220を決定する。たとえば、テキスト画像206で600のフォントを使用する場合(たとえば、フォント202は、600の日本語フォントの1つである)、フォント分類器218は、0~1の範囲にわたる(すなわち、[0,1])エントリを伴う600次元のフォント確率ベクトル220を出力する。いくつかの実施形態では、フォント認識システムは、(たとえば、フォント特徴空間に)フォント認識ニューラルネットワーク210の一部として各特徴ベクトルを記憶することができる。
さらに、フォント認識システムは、フォント分類損失モデルにフォント確率ベクトル220を提供して、フォント分類の精度および/または誤差損失を決定することができる。いくつかの実施形態では、フォント分類損失モデル224は、ソフトマックス交差エントロピー損失フォント分類器および/または平均2乗誤差計算を採用して、フォント分類損失の量を決定する。たとえば、フォント分類損失モデル224は、フォント確率ベクトル220が、学習した特徴空間内部で入力フォント202に対応するフォント特徴からしきい値距離を超えるとき、および/またはフォント確率ベクトル220が入力フォント202からしきい値距離をどの程度まで超えるか(たとえば、誤差損失)を識別する。
誤差損失を使用して、フォント認識ニューラルネットワーク210のニューラルネットワーク層をトレーニングし、最適化して、フォント認識システムは、誤差逆伝播を採用して、フォント認識ニューラルネットワーク210の層内部の特徴パラメータを調整することができる。たとえば、1つまたは複数の実施形態では、フォント認識システムは、フォント分類損失モデル224から誤差損失出力を受け取り、フォント分類損失モデル224からの誤差損失が最小になるまで、誤差損失出力を畳込み層208および/または全結合層216に戻して提供する。
より具体的には、1つまたは複数の実施形態では、フォント分類損失モデル224は、誤差逆伝播によって符号化器212およびフォント分類器218にフィードバックを提供する。たとえば、フォント分類損失モデル224は、フォント分類器218がテキスト画像内のフォントを誤って分類したと判断するとき、符号化器212にフィードバックを提供する。それに応答して、符号化器212は、生成した特徴ベクトル214がテキスト画像206内のフォントをより正確に表すように、フォント特徴パラメータを修正し、調整する。フォント分類損失モデル224はまた、フォント分類器にフィードバックを提供して、符号化器212から出力された特徴ベクトル214に基づき、フォント分類パラメータを調整して、フォントをよりよく分類することができる。このようにして、フォント認識システムは、フォント認識ニューラルネットワーク210を反復してトレーニングして、1組の最良適合パラメータを学習する。
上述のように、最初にトレーニングされたフォント認識ニューラルネットワーク210は、日本語フォントの入力テキスト画像内のフォントを識別することができる。しかしながら、最初にトレーニングされたフォント認識ニューラルネットワーク210は単独で、多様なグリフ内容によるクラス内変動を示す、日本語フォントなどの多くのタイプのフォントに関して正確な結果を作り出さない場合がある。たとえば、最初にトレーニングされたフォント認識ニューラルネットワーク210は、トレーニングで分からなかったグリフの1つまたは複数をテキスト画像が含む場合、入力テキスト画像内のフォントを誤認する可能性が高い。
認識精度を改善し、フォント汎化を増大させるために、フォント認識システムは、敵対的グリフ分類器を使用してフォント認識ニューラルネットワーク210をさらにトレーニングする。図2Bに示すように、フォント認識システムは、フォント認識ニューラルネットワーク230の全結合層216内にグリフ分類器232を追加する。1つまたは複数の実施形態では、グリフ分類器232は、フォント分類器218と並列に積み重ねられる。代わりの実施形態では、グリフ分類器232は、全結合層216内部でフォント分類器218の前または後に配置される。上述のように、グリフ分類器232を追加することにより、フォント認識システムは、フォント認識ニューラルネットワーク230を敵対的にトレーニングして、日本語グリフの好ましくない副作用(すなわち、クラス内変動)を受けない、またはほとんど受けないフォント特徴を抽出することが可能になる。
図2Bが示すように、畳込み層208内の符号化器212は、フォント分類器218とグリフ分類器232の両方に提供される特徴ベクトル214を出力として生成する。フォント確率ベクトル220を生成するフォント分類器218のように、グリフ分類器は、グリフ確率ベクトル234を生成する。たとえば、フォント認識システムが500のグリフのサブセットからトレーニング・フォント・セットを描画した場合、グリフ分類器232は、0~1の間の範囲におよぶ(すなわち、[0,1])エントリを伴う500次元のグリフ確率ベクトルを生成する。
図に示すように、フォント認識システムはまた、損失層222にグリフ分類損失モデル236を追加して、フォント認識ニューラルネットワーク230をさらにトレーニングする。1つまたは複数の実施形態では、グリフ分類損失モデル236は、ソフトマックス公差エントロピー損失グリフ分類器および/または平均2乗誤差計算を採用して、グリフ分類損失の量を決定する。フォント分類損失と同様に、フォント認識システムは、グリフ誤差損失の量を計測し、フォント認識ニューラルネットワーク230の層に誤差損失を提供して、フォント認識ニューラルネットワーク230をさらにトレーニングし、最適化することができる。
例証するために、グリフ分類損失モデル236は、グリフ分類器232が生成したグリフ確率ベクトル234と、対応するテキスト画像で使用されたグリフ204との間の距離を計測して、グリフ分類器232の誤差損失の精度および/または量を決定する。たとえば、1つまたは複数の実施形態では、グリフ分類損失モデル236は、グリフ確率ベクトル234が、学習した特徴空間内部で入力グリフ204に対応するフォント特徴からしきい値距離を超えるとき、および/またはグリフ確率ベクトル234が、グリフ204からしきい値距離をどの程度まで超えるか(たとえば、グリフ誤差損失)を識別する。グリフ分類損失モデル236は、計測したグリフ損失を符号化器212および/またはグリフ分類器232に戻して提供する。
一般に、認識システムは、認識精度を増大させ、かつ誤差損失を最小にしようと試みる。たとえば、フォント認識システムは、フォント分類器損失を最小にしようと試みる。しかしながら、フォント認識システムは、敵対的な手法でグリフ分類器232を採用しているので、実際には、グリフ分類損失を最大にしようとする。それに応じて、フォント認識システムは、フォント分類損失を最小にする一方でグリフ分類損失を同時に最大にするミニマックス目的関数を採用する。
ミニマックス目的関数の概念上の一例として、ゲームで符号化器212と競合しているグリフ分類器232について考えてみる。符号化器212は、グリフ分類器232を誤った方向に導く(たとえば、グリフ分類器232がグリフを誤って分類する)特徴ベクトルを作り出すとき、得点を得る。逆に、グリフ分類器232は、符号化器212が生成した特徴ベクトルに基づきグリフを適切に分類するとき、得点を得る。グリフ分類器232が、符号化器212の得点を超えてしきい数値の得点を得る場合、フォント認識システムは、グリフ分類器232をさらに誤った方向に導くように、符号化器212のパラメータを調整する。同様に、符号化器212が、得た得点でグリフ分類器232を追い抜き始める場合、フォント認識システムは、グリフをよりよく分類するように、グリフ分類器232を教え込み、それにより、ゲームは競合し続ける。符号化器212およびグリフ分類器232は、強度が互角のままであるが、フォント認識システムは、フォント認識ニューラルネットワーク230を敵対的にトレーニングし続けることができる。
ミニマックス目的関数を採用することにより、フォント認識システムは、フォント認識ニューラルネットワーク230をトレーニングして、グリフ内容により生じるクラス内変動に対する感度を意図的に失いながら、テキスト画像206内のフォントを正確に識別する。いくつかの実施形態では、フォント分類損失モデル224およびグリフ分類損失モデル236は、自身の対応する分類損失を、ミニマックス目的関数(たとえば、L総計=min(Lフォント)+max(Lグリフ)、ここでLは分類損失を表す)を具体化する結合分類損失モデルに提供する。ミニマックス目的関数に関する詳細について、以下の図4に関してさらに提供する。
1つまたは複数の実施形態では、フォント認識システムは、符号化器212、フォント分類器218、およびグリフ分類器232にフィードバックを順次提供する。実際に、符号化器212およびフォント分類器218は、トレーニング中にグリフ分類器232と競合するので、フィードバックを通して最適化を同時に提供することは、困難な仕事である。たとえば、フォント認識システムは、最初に符号化器212を、次いでフォント分類器218を、次いでグリフ分類器232を最適化する。フォント認識ニューラルネットワーク230のフィードバックを最適化することに関する詳細について、図3に関連して以下でさらに説明する。
フォント認識ニューラルネットワーク230は、自身がトレーニングされるまで、総合フィードバックおよび最適化サイクルを反復して繰り返すことができる。たとえば、フォント認識ニューラルネットワーク230は、ニューラルネットワークが収束するまで、テキスト画像206を供給し、かつフォント認識ニューラルネットワーク230の層を最適化し続ける。したがって、さまざまな実施形態では、結合分類損失がミニマックス安定化水準に到達したとき、フォント認識ニューラルネットワーク230はトレーニングされたことになる。
総合的に、誤差逆伝播によってフィードバックを提供することにより、フォント認識システムは、エンド・ツー・エンドの手法でフォント認識ニューラルネットワーク230を敵対的にトレーニングすることができる。したがって、フォント認識システムにより、フォント認識ニューラルネットワーク230は正確で安定した学習済み状態に急速に収束可能とすることができる。実際に、トレーニング中にグリフ分類器232を追加することにより、フォント分類に関してグリフ内容の間にあるクラス内変動が低減される、または除去されるので、フォント認識システムは、トレーニング中に分からなかったグリフを入力テキスト画像が含んでいる場合でさえ、入力テキスト画像に関するフォントを正確に識別する、日本語(または他の)フォントに関する特徴ベクトルを急速に学習する。
さらに例示するために、図2Cは、1つまたは複数の実施形態による、トレーニングされたフォント認識ニューラルネットワーク250を採用して、入力テキスト画像240に基づきフォントを識別する図を示す。詳細には、図2Cは、フォント認識システムが、トレーニングされたフォント認識ニューラルネットワーク250の符号化器212およびフォント分類器218を使用して入力テキスト画像240内のテキストに関して、識別されたフォント242を決定するステップを示す。
図に示すように、フォント認識システムは、入力テキスト画像240を得る。たとえば、フォント認識システムは、入力テキスト画像240で使用されたフォントを識別するというユーザのリクエストを検出する。たとえば、フォント認識システムは、アプリケーション(たとえば、デスクトップまたは移動体のアプリケーション)内部の入力テキスト画像240のコピーを受け取る。入力テキスト画像240は、特定のフォントで書かれた1つまたは複数のグリフを含む。いくつかの実施形態では、ユーザは、入力テキスト画像240内部のグリフの不要部分を切り取った選択部分を提供する。
入力テキスト画像240を受け取ったことに応答して、フォント認識システムは、トレーニングされたフォント認識ニューラルネットワーク250を使用して、入力フォントに基づき1つまたは複数の特徴ベクトルを抽出する。詳細には、フォント認識システムは、符号化器212を使用して、入力テキスト画像240内で使用されたフォントに関する特徴ベクトル214を決定する。上記で説明したように、いくつかの実施形態では、フォント認識システムは、入力フォントに関する多次元特徴ベクトルを生成することができる。
決定した特徴ベクトルを使用して、フォント認識システムは、入力フォントの識別されたフォント242を識別するフォント確率ベクトルを生成する。例証するために、フォント認識システムは、フォント分類器218を採用して、特徴ベクトルに基づきフォント確率ベクトルを生成する。詳細には、フォント分類器218は、入力テキスト画像240内のフォントの特徴ベクトル214と、トレーニングされたフォント認識ニューラルネットワーク250を使用して生成した既知フォントの特徴ベクトルを比較して、フォント確率ベクトル(たとえば、600の既知フォントに基づく600次元の特徴ベクトル)を生成する。フォント確率ベクトルを使用して、フォント認識システムは、識別されたフォント242を識別する。
いくつかの実施形態では、入力テキスト画像240内のフォントに関して生成された特徴ベクトル214は、既知フォントの特徴ベクトルと正確に適合するわけではない(たとえば、2つの特徴ベクトル間の距離は、ゼロよりも大きくなる)。さらに、既知フォントは、トレーニング・フォント・セット内のテキスト画像に出現する既知フォントごとの1つの特徴ベクトルなどの、複数の特徴ベクトルを有する可能性がある。それに応じて、これらの実施形態では、フォント認識システム(たとえば、フォント分類器218)は、フォントに関する適合確率を生成するとき、入力フォントの特徴ベクトル214と既知フォントの平均特徴表現(すなわち、フォントに関する対応する特徴ベクトルを集めたもの)を比較する。詳細には、フォント認識システムは、入力フォントの特徴ベクトルから最も短い距離にある平均特徴表現を有する既知フォントを識別する。
識別されたフォント242を決定すると、フォント認識システムは、識別されたフォント242をユーザに提示することができる。たとえば、フォント認識システムは、識別されたフォント242をグラフィカル・ユーザ・インタフェース内部でユーザに提示する。1つまたは複数の実施形態では、フォント認識システムは、識別されたフォント242を使用して、入力テキスト画像240内のテキストを再現する。さまざまな実施形態では、フォント認識システムは、電子文書内部のテキストの一部分に、識別されたフォント242を自動的に適用する。
いくつかの実施形態では、フォント認識システムは、識別されたフォント242をユーザがコンピューティング機器上に有していないと判断し、識別されたフォント242をユーザが得る(たとえば、ダウンロードする、購入する、インストールする、または他の方法で入手する)のを手伝う。代わりの実施形態では、識別されたフォント242が、費用がかかり過ぎて入手できない場合、フォント認識システムは、より経済的な類似フォントをユーザに提供することができる。
同様に、1つまたは複数の実施形態では、フォント認識システムはまた、ユーザに類似フォントのリストを提供する。たとえば、フォント認識システムは、(たとえば、フォント確率ベクトルで示される適合確率に基づき)入力テキスト画像240内の入力フォントに類似する1組の既知フォントから5つのフォントを識別する。いくつかの実施形態では、フォント認識システムは、入力フォントと同じフォントを識別することができないとき、最も近く適合する既知フォントを提供する。
次に図3を参照すると、敵対的トレーニング中にフォント認識ニューラルネットワークを順次最適化するステップに関する詳細をさらに提供する。詳細には、図3は、フォント認識ニューラルネットワークをトレーニングしながら、分類パラメータを順次更新する一連の活動300の流れ図を示す。1つまたは複数の実施形態では、フォント認識システムは、一連の活動300を実装する。たとえば、フォント認識システムは、敵対的トレーニング中にフォント認識ニューラルネットワークを反復して最適化するためのシーケンスを実装する。
図に示すように、フォント認識システムは、フォント認識ニューラルネットワークをトレーニングし始める(302)。たとえば、フォント認識システムは、図2Bに示すように、フォント認識ニューラルネットワークの全結合層にグリフ分類器を追加し、トレーニング・フォント・セット内のテキスト画像を使用して、フォント認識ニューラルネットワークを敵対的にトレーニングし始める。このようにして、フォント認識システムは、フォント認識ニューラルネットワークの符号器にテキスト画像を提供し、符号化器は、フォント分類器とグリフ分類器の両方に特徴ベクトルを出力する。フォント分類器は、特徴ベクトルからフォントを認識しようと試み、グリフ分類器は、同様に同じ特徴ベクトルからフォントを認識しようと試みる。
符号化器およびグリフ分類器は敵対的であるので、競合する層を同時に更新することは非常に困難である。したがって、多くの実施形態では、フォント認識システムは、符号化器およびグリフ分類器を順次更新する。例証するために、図3は、フォント認識システムが誤差逆伝播によって符号化器内のパラメータを更新するステップ(304)を示す。たとえば、フォント認識システムは、トレーニング・フォント・セットから符号化器へテキスト画像を入力し、かつ対応する誤差分類損失(たとえば、フォント分類損失およびグリフ分類器損失)を符号化器に戻して提供し続ける。
たった今言及したように、フォント認識システムは、フィードバック(たとえば、フォント分類損失およびグリフ分類損失)を使用して、符号化器を反復して最適化する。符号化器は、特徴抽出パラメータを調整して、グリフ分類器を誤った方向に導くので、グリフ分類損失は大きくなる。上記で説明した概念上のゲームの例に関連して、符号化器はグリフ分類器を得点で追い抜き始める。それに応じて、フォント認識システムは、符号化器を反復して更新するとき、グリフ分類損失がグリフ損失しきい値(たとえば、しきい値t=4.0)を超えたかどうかを判断する(306)。
グリフ損失しきい値を超えない場合、フォント認識システムは、誤差逆伝播によって符号化器内のパラメータを更新し続ける(304)。このようにして、フォント認識システムは、符号化器をトレーニングし続けて、フォント分類器がフォントを正確に識別することを可能にする一方でグリフ分類器をさらに誤った方向に導く特徴ベクトルを生成する。あるいは、フォント認識システムは、グリフ分類損失がグリフ損失しきい値を超えたと判断した場合、フォント分類器およびグリフ分類器のパラメータを更新する。図3は、グリフ分類器の前にフォント分類器のパラメータを更新するステップを示すが、代わりの実施形態では、フォント認識システムは、フォント分類器の前にグリフ分類器のパラメータを更新する。
図3が示すように、フォント認識システムは、フォント分類器内のパラメータを更新する(308)。たとえば、フォント認識システムは、200回の反復などの、固定された反復回数の間、フォント分類器のフォント分類パラメータを調整する。フォント分類器を更新することにより、フォント認識システムは、符号化器が生成した特徴ベクトルとフォント分類器によるフォント分類の精度の間でフォント分類損失を最適化する。
次に、フォント認識システムは、グリフ分類器内のパラメータを更新する(310)。詳細には、フォント認識システムは、200回の反復などの、固定された反復回数(またはフォント分類器と異なる回数)の間グリフ分類器のグリフ分類パラメータを調整する。グリフ分類器のパラメータを更新することにより、グリフ分類器は、グリフをよりよく分類することが可能になる。敵対的トレーニングの目的は、符号化器をグリフ分類器よりも強固にする(たとえば、符号化器がグリフ分類器を誤った方向に導く特徴ベクトルを生成する)ことであるが、フォント認識システムは、グリフ分類器ができるだけ強固になって、総合トレーニングをより困難にし、その結果、符号化器の調整可能パラメータをよりロバストにすることを望む。
さらに、誤差逆伝播によってグリフ分類器をトレーニングすることにより、グリフ分類器の精度が増大するにつれ、グリフ分類損失が低減される。詳細には、グリフ分類器をトレーニングすることにより、多くの場合グリフ分類損失は、グリフ損失しきい値以下に低減される。しかしながら、グリフ分類器をトレーニングすることにより、固定された反復回数でグリフ分類損失がグリフ損失しきい値以下に低減されない場合、フォント認識システムは、以下で説明するように、グリフ分類器をトレーニングするために戻る前に一度、符号化器のパラメータだけを更新する。あるいは、フォント認識システムは、固定された反復回数でグリフ分類損失がグリフ損失しきい値以下に低下するまで、または所定の量のグリフ分類損失(たとえば、2.0)まで低下するまで、グリフ分類器をトレーニングする。
図3に示すように、フォント認識システムは、フォント認識ニューラルネットワークが収束したかどうかを判断する(312)。フォント認識ニューラルネットワークが収束した場合、フォント認識システムはトレーニングを終了する(314)。そうではない場合、フォント認識ニューラルネットワークは、グリフ分類損失がグリフ損失しきい値を超えるまで、誤差逆伝播によって符号化器のパラメータを反復して更新する活動304、固定された反復回数の間フォント分類器のパラメータを更新する活動308、およびフォント認識ニューラルネットワークが収束するまで、固定された反復回数の間グリフ分類器のパラメータを更新する活動310を繰り返す。
図4は、複数のグリフおよび複数のデジタルフォントから1組のテキスト画像を描画するステップを遂行する一連の活動400を示す。さらに、一連の活動400は、複数の描画されたテキスト画像に基づき、フォント分類損失および敵対的グリフ分類損失を使用して、フォント認識ニューラルネットワークをトレーニングするステップを遂行する活動を含む。さまざまな実施形態では、本明細書で説明するフォント認識システムは、一連の活動400を遂行する。いくつかの実施形態では、フォント認識システムは、サーバ機器に配置され、クライアント機器と一緒に一連の活動400のうち1つまたは複数を遂行する。
図に示すように、一連の活動400は、フォント認識システムが日本語フォントおよび日本語グリフを選択するステップ402を含む。たとえば、フォント認識システムは、フォントリポジトリにアクセスし、いくつかの日本語フォントを識別する。フォント認識システムは、識別した日本語フォントの一部またはすべてを選択することができる。さらに、フォント認識システムは、上記で説明したように、いくつかの日本語グリフ(たとえば、可能な50,000の中から500)を選択する。このようにして、フォント認識システムは、複数のグリフおよび複数のデジタルフォントから1組のテキスト画像を描画する。
同じく図に示すように、一連の活動400は、フォント認識システムが、選択した日本語のフォントおよびグリフからテキスト画像を描画するステップ404を含む。上記で説明したように、1つまたは複数の実施形態では、フォント認識システムは、日本語フォントだけではなく1つまたは複数の日本語グリフもランダムに選択する。次いで、フォント認識システムは、1つまたは複数の選択したグリフを、選択したフォントで書く。さらに、フォント認識システムは、1つまたは複数の書かれたグリフをテキスト画像として描画する。これまでに説明したように、フォント認識システムは、トレーニング・フォント・セットに編集された何千もの、何十万もの、または何百万ものテキスト画像を描画することができる。
さらに、いくつかの実施形態では、フォント認識システムは、描画されたテキスト画像それぞれとメタデータを関連づける。たとえば、フォント認識システムは、各テキスト画像で使用されたフォントおよびグリフにラベルを付ける。上記で説明したように、フォント認識システムは、トレーニング中にメタデータを使用して、精度を決定し、フォント認識ニューラルネットワークの誤差損失を計測することができる。さらに、図に関連して説明した実施形態では、フォント認識システムは、日本語フォントおよび日本語グリフを採用する。代わりの実施形態では、フォントおよびグリフは、すでに言及したように、異なる言語に対応する。
図4に示すように、一連の活動400は、フォント分類損失および敵対的グリフ分類損失を使用して、フォント認識ニューラルネットワークをトレーニングするステップ406を含む。たとえば、フォント認識システムは、複数の描画されたテキスト画像に基づき、フォント認識ニューラルネットワークをトレーニングする。上記で説明したように、フォント認識ニューラルネットワークをトレーニングするステップは、フォント抽出特徴のための初期パラメータ(たとえば、重みパラメータ)を得るために、フォント分類損失関数(すなわち、フォント分類損失モデル)を使用して、畳込みニューラルネットワーク(たとえば、フォント認識ニューラルネットワーク)を最初にトレーニングし、次いでさらに、フォント抽出特徴をさらに精緻なものにするために、敵対的グリフ分類器損失関数(すなわち、グリフ分類損失モデル)を使用して、畳込みニューラルネットワークをトレーニングするステップを含むことができる。
フォント認識ニューラルネットワークを敵対的にトレーニングする一部として、フォント認識システムは、符号化器(およびいくつかの実施例ではフォント分類器)をグリフ分類器と競合させる。詳細には、フォント認識システムは、フォント特徴を満足のいくように表す一方でグリフ特徴をさらにまた割引する特徴ベクトルを生成するように符号化器を最適化する。このようにして、生成された特徴ベクトルは、グリフ非依存性であり、特徴ベクトルにより、フォント分類器は、熟知していないグリフでさえ、入力テキスト画像内のフォントを正確に分類することが可能になることを意味する。別様に述べると、敵対的にトレーニングされたフォント認識ニューラルネットワークは、トレーニング中に観察したグリフだけではなく任意のグリフで書かれたフォントを認識することに、より汎化される。
例証するために、以下のミニマックス目的関数は、フォント認識システムがどのようにして、総合損失、および詳細にはフォント分類損失を最適化する一方で、グリフ分類損失を依然として最大にするかを識別する。
L総計=min(Lフォント分類)+max(Lグリフ分類) (1)
式1で、L総計は、総合組合せ総計損失を示し、Lフォント分類は、フォント分類損失関数からの損失を示し、Lグリフ分類は、グリフ分類損失関数からの損失を示す。
1つまたは複数の実施形態では、フォント認識システムは、Lフォント分類とLグリフ分類の両方のためにソフトマックス交差エントロピー分類器を採用することができる。たとえば、フォント認識システムは、平均2乗誤差(mean square error、MSE)を採用して、フォント分類損失および/またはグリフ分類損失を決定する。代わりの実施形態では、フォント認識システムは、フォント確率ベクトルおよび/またはグリフ確率ベクトルを同様に出力する、異なるタイプの分類器を採用する。
さらに詳細には、ミニマックス目的関数L総計を、総合目的関数として表現することができる。
式2では、L1は、フォント分類器に関する交差エントロピー損失を表し、L2は、グリフ分類器に関する交差エントロピー損失を表す。さらにθGは、符号化器内のパラメータを表し、
は、フォント分類器内のパラメータを表し、
は、グリフ分類器内のパラメータを表す。図に示すように、ミニマックス目的関数は、符号化器パラメータおよびフォント分類器パラメータを最適化することによりフォント分類損失を最小にする。さらに、ミニマックス目的関数はまた、グリフ分類パラメータを最適化することによりグリフ分類損失を最小にしようと試みる。同時に、ミニマックス目的関数は、符号化器パラメータを調整してグリフ抽出特徴を割引することにより、グリフ分類損失を敵対的に最大にしようと試み、その結果、符号化器は、異なるグリフ間で区別できない特徴ベクトルを生成する。
上記で説明したように、さまざまな実施形態では、フォント認識システムは、符号化器とフォント分類器とグリフ分類器の間で交互に最適化(すなわち、順次フィードバック)を採用する。たとえば、フォント認識システムは、符号化器内のパラメータを最適化して、フォント分類損失を低減するだけではなく、グリフ分類損失を増大させる。式2に示すように、符号化器内のパラメータ(すなわち、θG)を調整することにより、フォント分類損失とグリフ分類損失の両方が影響を受ける。さらに、符号化器パラメータを調整した後、フォント認識システムは、フォント分類器パラメータ
を最適化して、L1をさらに最小にし、グリフ分類器パラメータ
を最適化して、L2を最小にする(たとえば、符号化器パラメータを調整することによるL2の最大化を相殺する)。すでに述べたように、フォント認識システムは、フォント認識ニューラルネットワークがトレーニングにより収束するまで、符号化器パラメータ最適化とフォント分類器パラメータ最適化とグリフ分類器パラメータ最適化を交互に行うことができる。
図4に示すように、一連の活動400は、入力フォント(たとえば、日本語フォントで書かれた日本語グリフ)を含む入力テキスト画像を受け取るステップ408を含む。たとえば、ユーザは、未知の入力フォントで書かれたテキストを含む画像をフォント認識システムに提供する。いくつかの実施形態では、入力テキスト画像は、メタデータをまったく伴わない単調な画像である可能性があり、フォント認識システムは、未知の入力フォントを含む入力画像の領域を識別する。別の例では、フォント認識システムは、テキスト画像内のフォントを識別するバッチ動作の一部などで、入力フォントを伴うテキスト入力ファイルを自動的に受け取る。
図4に示すように、一連の活動400は、フォント認識ニューラルネットワークを使用して、入力テキスト画像から入力フォントを識別するステップ410を含む。たとえば、フォント認識システムは、トレーニングされたフォント認識ニューラルネットワークに、入力フォントを備える入力テキスト画像を提供する。それに応答して、フォント認識ニューラルネットワークは、入力フォントに関する特徴ベクトルおよびフォント確率ベクトルを決定する。さらに、これまでに説明したように、フォント認識システムは、フォント確率ベクトルに基づき入力フォントを識別する。
1つまたは複数の実施形態では、フォント認識システムは、サーバ機器上で入力フォントを識別する。たとえば、クライアント機器は、サーバ機器に入力テキスト画像(または表現するデータ)を提供し、サーバ機器は、識別した入力フォントをクライアント機器に戻して提供する。代わりの実施形態では、フォント認識システムは、クライアント機器上に少なくとも一部は常駐し、入力テキスト画像に関する特徴ベクトルおよび/またはフォント確率ベクトルを識別する(たとえば、サーバ機器は、トレーニングされたフォント認識ニューラルネットワークをクライアント機器に提供する)。
さらに、1つまたは複数の実施形態では、フォント認識システムは、アプリケーションと一緒に機能して、入力テキスト画像内のフォントを受け取り、識別する。たとえば、ユーザは、ワードプロセッシングまたはグラフィックデザインのアプリケーションを使用しており、入力テキスト画像に表示されたフォントを使用するように要求する。それに応答して、フォント認識システムは、フォント認識ニューラルネットワークを使用して入力テキスト画像内の入力フォントを識別し、識別したフォントをアプリケーションに戻して提供する。さらに、いくつかの実施形態では、フォント認識システムはまた、上記で説明したように、追加の類似フォントを提供する。
次に、図5を参照すると、1つまたは複数の実施形態によるフォント認識システムの能力および構成要素に関する詳細をさらに提供する。詳細には、図5は、フォント管理システム502内部に配置され、かつコンピューティング機器500上に収容されたフォント認識システム504の一例のアーキテクチャの概略図を示す。フォント認識システム504は、すでに説明したフォント認識システムの1つまたは複数の実施形態を表すことができる。
図に示すように、フォント認識システム504は、コンピューティング機器500上でフォント管理システム502内部に配置される。一般に、コンピューティング機器500は、さまざまなタイプのクライアント機器を表してもよい。たとえば、いくつかの実施形態では、クライアントは、携帯電話、スマートホン、PDA、タブレット、ラップトップなどのような移動体機器である。他の実施形態では、コンピューティング機器500は、デスクトップもしくはサーバ、または別のタイプのクライアント機器などの非移動体機器である。いくつかの実施形態では、コンピューティング機器500の一部分は、異なるタイプのコンピューティング機器に対応する(たとえば、いくつかの構成要素は、サーバ機器の役割を果たすとき、コンピューティング機器500上で動作し、いくつかの構成要素は、クライアント機器の役割を果たすとき、コンピューティング機器500上で動作する)。コンピューティング機器500に関する詳細については、以下で、ならびに図11に関連してさらに論じる。
フォント管理システム502は、一般に電子文書および/またはシステムアプリケーション内部のデジタルフォントの作成、修正、共有、インストール、および/または削除を容易にする。たとえば、フォント管理システム502は、フォントデータベース528内など、コンピューティング機器500上にフォントのリポジトリを記憶する。さらに、フォント管理システム502は、遠隔に配置された追加フォントにアクセスすることができる。さらに、いくつかの実施形態では、フォント管理システム502は、コンピューティング機器500から分離して配置されて、コンピューティング機器500にフォントを提供することができる。1つまたは複数の実施形態では、フォント管理システム502は、ADOBE(登録商標) TYPEKIT(登録商標)を備える。
さらに、フォント管理システム502は、1つまたは複数のアプリケーションと一緒に動作して、コンピューティング機器500上にフォントを表示することができる。たとえば、1つまたは複数の実施形態では、フォント管理システム502は、ADOBE(登録商標) ACROBAT(登録商標)、ADOBE(登録商標) INDESIGN(登録商標)、または別のワード・プロセッシング・アプリケーションなどのワード・プロセッシング・アプリケーションにフォントを提供する。他の実施形態では、フォント管理システム502は、ADOBE(登録商標) ILLUSTRATOR(登録商標)などの設計アプリケーションにフォントを提供する。
図5に示すように、フォント認識システム504は、さまざまな構成要素を含む。たとえば、フォント認識システム504は、フォントマネージャ506、テキスト画像レンダラ508、フォント認識ニューラルネットワーク510、フォント識別器526、およびフォントデータベース528を含む。図に示すように、フォントデータベース528は、トレーニング・フォント・セット530およびフォント特徴ベクトル532を含む。次に、これらの構成要素の各々について、以下で説明する。
フォントマネージャ506は、コンピューティング機器500内部でフォントを記憶し、受け取り、検出し、インストールし、順序づけし、および/または組織化することができる。たとえば、1つまたは複数の実施形態では、フォントマネージャ506は、コンピューティング機器500上に1組のフォントを記憶する。いくつかの実施形態では、フォントマネージャ506は、フォント管理システム502と共に、フォントデータベース528内部でフォントを維持する。たとえば、フォントマネージャ506は、ユーザが電子文書で採用することができる1組のフォント(たとえば、日本語フォント)を維持する。追加の一例として、フォントマネージャ506は、トレーニング・フォント・セット530(たとえば、日本語フォントのラベル付テキスト画像)を維持する。さまざまな実施形態では、フォントマネージャ506は、コンピューティング機器500上に記憶されていない、または配置されていない追加フォントを識別し、それらにアクセスすることができる。たとえば、フォントマネージャ506は、複数の言語に対応するフォントをコンピューティング機器500上に維持する。
テキスト画像レンダラ508は、フォント認識ニューラルネットワーク510をトレーニングするために使用するテキスト画像を生成することができる。たとえば、テキスト画像レンダラ508は、すでに説明したように、ランダムに選択したフォントおよびグリフからなるテキスト画像を描画する。いくつかの実施形態では、テキスト画像レンダラ508は、生成したテキスト画像をトレーニング・フォント・セット530としてフォントデータベース528に記憶する。さらに、テキスト画像レンダラ508は、これまでに説明したように、トレーニングで使用する描画されたテキスト画像それぞれにラベルを付ける、タグを付ける、または他の方法で注釈を付ける。
図5に示すように、フォント認識システム504は、フォント認識ニューラルネットワーク510を含む。フォント認識ニューラルネットワーク510は、畳込み層512、上位層514、および損失層520を含む。畳込み層512は、入力テキスト画像に基づき特徴ベクトル(たとえば、フォント特徴ベクトルおよび/またはグリフ特徴ベクトル)を生成する符号化器を含む下位ニューラルネットワーク層とすることができる。さらに、畳込み層512は、特徴ベクトルを生成するための、1つまたは複数の正規化層およびプーリング層を含むことができる。
上位層514は、フォント分類器516およびグリフ分類器518を含む。上記で説明したように、フォント分類器516は、符号化器が生成した特徴ベクトルを解析して、テキスト画像に関してフォントを決定する。詳細には、特徴ベクトルに基づき、フォント分類器516は、テキスト画像が1つまたは複数の既知フォントに一致する確率を示す多次元フォント確率ベクトルに対応する確率を示す。同様に、グリフ分類器518は、符号化器が生成した同じ特徴ベクトルを解析して、テキスト画像に関して1つまたは複数のグリフを決定する。詳細には、グリフ分類器518は、テキスト画像が1つまたは複数の既知グリフに一致する確率を示す多次元グリフ確率ベクトルを生成する。
損失層520は、フォント分類損失522およびグリフ分類損失524を含む。上記で説明したように、フォント認識システム504は、1つまたは複数の機械学習アルゴリズムを採用して、フォント認識ニューラルネットワーク510を敵対的にトレーニングする。詳細には、フォント認識システム504は、トレーニング・フォント・セット530を採用して、フォント分類器516およびフォント分類損失522を使用してフォント認識ニューラルネットワーク510の層を最初にトレーニングし、次いで、上記で詳細に説明したように、グリフ分類損失524と共にグリフ分類器518を追加することによりフォント認識ニューラルネットワーク510の層をさらにトレーニングする。たとえば、フォント認識システム504は、エンド・ツー・エンド学習および誤差逆伝播を使用して、フォント分類損失522(たとえば、最小にする)とグリフ分類損失524(最大にする)の間の組合せ損失をミニマックスにすることにより、フォント認識ニューラルネットワークをトレーニングする。
上記で説明したように、フォント認識システム504は、グリフ分類器518と、フォント認識ニューラルネットワーク510をトレーニング中に損失層520とを採用する。1つまたは複数の実施形態では、フォント認識ニューラルネットワーク510が完全にトレーニングされると、フォント認識システム504は、もはやグリフ分類器518も、フォント分類損失522も、グリフ分類損失524も採用しない。しかしながら後で、フォント認識システム504は、グリフ分類器518および損失層520を再度使用して、フォント認識ニューラルネットワーク510を再度トレーニングする、またはさらにトレーニングすることができる。
フォント認識ニューラルネットワーク510を使用して、フォント認識システム504は、フォントデータベース528に記憶される1組のフォント特徴ベクトル532を生成する。1つまたは複数の実施形態では、フォント認識システム504は、フォント認識ニューラルネットワーク510をトレーニングするステップの一部として、トレーニング・フォント・セット530内のフォントごとにフォント特徴ベクトル532を生成する。追加のおよび/または代わりの実施形態では、フォント認識システム504は、コンピューティング機器500上に記憶されたフォントなどの、トレーニング・フォント・セットで使用する、異なるおよび/または追加のフォントに関するフォント特徴ベクトル532を生成し、記憶する。フォント認識システム504は、トレーニングされたフォント認識ニューラルネットワーク510を使用してグリフを分類していないので、フォントデータベース528にグリフ特徴ベクトルを記憶する必要がない。
図に示すように、フォント認識システム504は、フォント識別器526を含む。フォント識別器526は、入力テキスト画像内部の入力フォントを受け取り、トレーニングされたフォント認識ニューラルネットワーク510を使用して入力フォントを識別することができる。詳細には、フォント識別器526は、トレーニングされたフォント認識ニューラルネットワーク510に入力テキスト画像を引き渡すことにより、入力テキスト画像内部の入力テキストに関する1つまたは複数のフォント特徴ベクトルを識別する。さらに、フォント識別器526は、これまでに説明したように、入力フォントの1つまたは複数の特徴ベクトルとフォント特徴ベクトル532を比較して、入力フォントに関するフォントを識別する(たとえば、フォント確率ベクトルを生成する)。さらにフォント識別器526は、識別したフォントを、たとえば入力テキスト画像を提出したユーザに提供する。
フォント認識システム504の構成要素506~532の各々は、ソフトウェア、ハードウェア、または両方を含むことができる。たとえば、構成要素506~532は、コンピュータ可読記憶媒体に記憶され、かつクライアント機器またはサーバ機器などの1つまたは複数のコンピューティング機器のプロセッサにより実行可能な1つまたは複数の命令を含むことができる。1つまたは複数のプロセッサにより実行されたとき、フォント認識システム504のコンピュータ実行可能命令は、本明細書で説明する特徴学習法を1つまたは複数のコンピューティング機器に遂行させることができる。あるいは、構成要素506~532は、ある種の関数、または関数のグループを遂行するための専用処理機器などのハードウェアを含むことができる。あるいは、フォント認識システム504の構成要素506~524は、コンピュータ実行可能命令とハードウェアの組合せを含むことができる。
さらに、フォント認識システム504の構成要素506~532を、たとえば、1つもしくは複数のオペレーティングシステムとして、1つもしくは複数のスタンドアロンのアプリケーションとして、アプリケーションの1つもしくは複数のモジュールとして、1つもしくは複数のプラグインとして、1つもしく複数のライブラリ関数、または他のアプリケーションにより呼び出されてもよい関数として、および/またはクラウド・コンピューティング・モデルとして実装してもよい。したがって、構成要素506~532を、デスクトップアプリケーションまたは移動体アプリケーションなどのスタンドアロンのアプリケーションとして実装してもよい。さらに、構成要素506~532を、遠隔サーバ上にホスティングされた1つまたは複数のウェブに基づくアプリケーションとして実装してもよい。構成要素506~532を、同じく一揃いの移動体機器アプリケーション、すなわち「app」に実装してもよい。例証するために、構成要素506~532を、ADOBE(登録商標) TYPEKIT(登録商標)、ADOBE(登録商標) INDESIGN(登録商標)、ADOBE(登録商標) ACROBAT(登録商標)、ADOBE(登録商標) ILLUSTRATOR(登録商標)、ADOBE(登録商標) PHOTOSHOP(登録商標)、ADOBE(登録商標) CREATIVE CLOUD(登録商標)のソフトウェアを含むがそれらに限定されないアプリケーションに実装してもよい。「ADOBE」、「INDESIGN」、「ACROBAT」、「ILLUSTRATOR」、「PHOTOSHOP」、および「CREATIVE CLOUD」はいずれも米国および/または他の国々のAdobe Systems Incorporatedの登録商標または商標である。
図6は、1つまたは複数の実施形態に従ってフォント認識システム504を実装してもよい環境600の概略図を示す。1つまたは複数の実施形態では、環境600は、1つまたは複数のサーバ機器602および1つまたは複数のクライアント機器604a、604bを含むさまざまなコンピューティング機器を含む。さらに環境600は、ネットワーク606を含む。ネットワーク606は、コンピューティング機器が通信することができる任意の適切なネットワークであってもよい。ネットワークの例を図11に関して以下でより詳細に論じる。
図6に示すように、環境600は、図11に関して以下で説明するコンピューティング機器の1つまたは複数などの任意のコンピューティング機器を備えてもよい1つまたは複数のサーバ機器602を含む。さらに1つまたは複数のサーバ機器602は、すでに説明したフォント管理システム502およびフォント認識システム504を含む。たとえば、上記で説明したように、フォント認識システム504は、フォント認識ニューラルネットワークを敵対的にトレーニングし、適用して、テキスト画像で使用されたフォント(たとえば、日本語フォント)を正確に識別することができる。
さらに、環境600は、1つまたは複数のクライアント機器604a、604bを含む。クライアント機器604a、604bは、図11に関して以下で説明するコンピューティング機器などの任意のコンピューティング機器を備えてもよい。上記で説明したように、1つまたは複数のクライアント機器604a、604bは、トレーニングされたフォント認識ニューラルネットワークを採用して、入力テキスト画像内部のフォントを識別することができる。
図示するように、1つまたは複数の実施形態では、1つまたは複数のサーバ機器602は、フォント認識システム504のすべてまたは一部分を含むことができる。詳細には、フォント認識システム504は、1つもしくは複数のサーバ機器602上で走るアプリケーション、または1つもしくは複数のサーバ機器602からダウンロードすることができるソフトウェアアプリケーションの一部分を備えることができる。たとえば、フォント認識システム504は、1つもしくは複数のサーバ機器602上にホスティングされたコンテンツとクライアント機器604aが対話することができるようにするウェブ・ホスティング・アプリケーションを含むことができる。例証するために、環境600の1つまたは複数の実施形態では、クライアント機器604aは、1つまたは複数のサーバ機器602がサポートするウェブページにアクセスする。詳細には、クライアント機器604aは、1つまたは複数のサーバ機器602でホスティングされたウェブページまたはウェブサイト内部のテキスト画像のフォントにユーザがアクセスし、それを見て、選択し、および/または識別することができるようにするアプリケーションを走らせることができる(たとえば、ウェブページにより、ユーザは入力フォントを含むテキスト画像を提供し、入力フォントの識別を確実に受け取ることが可能になる)。
図6は、1つまたは複数のサーバ機器602、クライアント機器604a、604b、およびネットワーク606の特定の配置を示すが、さまざまな配置がさらに可能である。たとえば、図6は、ネットワーク606を介して1つまたは複数のサーバ機器602と通信する1つまたは複数のクライアント機器604a、604bを示すが、1つまたは複数の実施形態では、単一のクライアント機器が、ネットワーク606をバイパスして1つまたは複数のサーバ機器602と直接通信してもよい。
同様に、さまざまな構成要素を有するとして図6の環境600について描写しているが、環境600は、追加のまたは代わりの構成要素を有してもよい。たとえば、フォント認識システム504を複数のコンピューティング機器上に実装することができる。詳細には、フォント認識システム504を1つまたは複数のサーバ機器602により全部実装してもよい、またはクライアント機器604aにより全部実装してもよい。あるいは、フォント認識システム504を、(たとえば、1つまたは複数のサーバ機器602および1つまたは複数のクライアント機器604a、604bを利用して)複数の機器または構成要素にわたり実装してもよい。
次に、図7A、図7B、および図8を参照すると、フォント認識システムの実施形態のトレーニングおよび評価に関する詳細についてさらに提供する。詳細には、図7Aおよび図7Bは、フォント認識精度の水準、および研究者がフォント認識ニューラルネットワークをトレーニング中に観察した、対応するグリフ認識精度の水準を表示するグラフを示す。さらに、図8は、最新式フォント分類システムと本明細書で開示するフォント認識システムの間でフォント認識の汎化能力を比較するグラフを示す。
図に示すように、図7Aは、トレーニング中のフォント認識ニューラルネットワークのフォント認識精度を表示する第1のグラフ710を含む。詳細には、第1のグラフ710は、フォント認識精度が、フォント認識ニューラルネットワークの、最初の10万回のトレーニング反復でほぼ70%まで急速に増大し、次いで、数10万回の反復後、安定するまでより漸進的に増大することを示す。
図7Bは、トレーニング中のフォント認識ニューラルネットワークのグリフ認識精度を表示する第2のグラフ720を含む。第1のグラフ710のフォント認識精度と同様に、グリフ認識精度は、最初の10万回の反復以内にほぼ60%まで急速に増大する。しかしながら、フォント認識システムが、フォント認識ニューラルネットワークをトレーニングして、グリフ分類損失を最大にするので、グリフ認識精度は、トレーニングが継続するにつれ、低下し始める。図に示すように、グリフ認識精度は、数10万回の反復後にトレーニングが安定するにつれ、ほぼ20%まで低下する。総合的に、第1のグラフ710および第2のグラフ720に示すように、フォント認識システムは、フォント認識ニューラルネットワークを敵対的にトレーニングして、フォント分類に有能であるだけではなくグリフ分類に無能な特徴ベクトルを生成する。
さらに、研究者は、最新式フォント分類システムと本明細書で説明するフォント認識システムの間で評価を遂行した。詳細には、研究者は、フォントを正しく分類した試験データのパーセンテージを計測することにより、敵対的トレーニングモデルの有効性を評価した。試験テキスト画像は、日本語のグリフ(たとえば、漢字)およびフォントを採用した。トレーニングで分かったグリフに関するフォント精度については、フォント認識システムおよび最新式フォント分類システムは、両方ともほぼ86%を計測した。しかしながら、トレーニングで分からなかったグリフに関するフォント精度については、フォント認識システムは、最新式フォント分類システムよりも性能が優れていた。たとえば、1組の試験では、フォント認識システムは、最新式フォント分類システムよりも2.2%正確であり(たとえば、81.36%対79.15%)、これは、著しく有利な点である。さらに、フォント認識精度の差は、トレーニング中に分かったグリフがより少ないときに、より著しくなる。
上述のように、図8は、最新式フォント分類システムと本明細書で開示するフォント認識システムの間でフォント認識の汎化能力を比較するグラフ800を示す。グラフ800に示すように、トレーニングで分からなかったグリフの精度(垂直のy軸)とトレーニングで分かったグリフの精度(水平のx軸)を比較して、過剰適合曲線を形成する。グラフ800は、完全相関直線802(すなわち、実線)、敵対的トレーニング線804(すなわち、点線)、および最新式トレーニング線806(すなわち、二点鎖線)を比較する。
グラフ800に示すように、完全相関直線802は、分かったグリフと分からなかったグリフの間の1対1の相関関係であり、トレーニング精度および試験制度が等しいので、過剰適合が生じないモデルを表す。敵対的トレーニング線804は、本明細書で開示するフォント認識システムを表す。図に示すように、敵対的トレーニング線804は、最新式トレーニング線806よりも完全相関直線802に近く、これは、最新式トレーニングフォント分類システムがトレーニング・フォント・セットに過剰適合し、その結果、分からなかったグリフに対しより不完全に作動することを示す。別様に述べると、グラフ800は、フォント認識システムが最新式トレーニングフォント分類システムよりもトレーニング・フォント・セットに過剰適合する可能性があまりないことを示す。したがって、フォント認識システムは、最新式トレーニングフォント分類システムよりも汎化され、ロバストである。
注釈として、図7A、図7B、および図8は、本明細書で説明するフォント認識システムと最新式フォント分類システムの比較を説明している。従来のフォント分類システムと比較したとき、本明細書で説明するフォント認識システムは、これらの従来のシステムよりもさらに性能が優れている。上述のように、従来のシステムは、日本語フォントなどの、クラス内変動を含むフォントに対してフォント分類を不完全に遂行する。
図1~図8、対応するテキスト、および例は、フォント認識システムのいくつかの異なる方法、システム、機器、および非一時的コンピュータ可読媒体を提供する。前述に加えて、1つまたは複数の実施形態についてもまた、特定の結果を達成するための活動を備えるフローチャートに関して説明することができる。たとえば、図9および図10を、より多くの、またはより少ない活動で遂行してもよい。さらに、異なる順序で活動を遂行してもよい。さらに、本明細書で説明する活動を繰り返しても、互いに並列に、または同じ活動もしくは類似する活動の異なるインスタンスと並列に遂行してもよい。
言及したように、図9は、1つまたは複数の実施形態による、管理された敵対的トレーニングを使用してフォント認識ニューラルネットワークをトレーニングしてデジタルフォントを分類するための一連の活動900の流れ図を示す。図9は、一実施形態による活動を示すが、代わりの実施形態は、図9に示す活動のいずれかを省略する、それに追加する、それを並べ替える、および/または修正してもよい。図9の活動を方法の一部として遂行することができる。あるいは、非一時的コンピュータ可読媒体は、1つまたは複数のプロセッサにより実行されたとき、コンピューティング機器に図9の活動を遂行させる命令を備えることができる。いくつかの実施形態では、システムは、図9の活動を遂行することができる。
1つまたは複数の実施形態では、一連の活動900を、コンピューティング機器500または1つもしくは複数のサーバ機器602などの1つまたは複数のコンピューティング機器上に実装する。さらに、いくつかの実施形態では、一連の活動900を、電子文書を作成または編集するために、デジタル環境に実装する。たとえば、一連の活動900を、デジタルフォントおよびグリフを記憶するメモリを有するコンピューティング機器に実装する。いくつかの実施形態では、デジタルフォントは日本語フォントであり、グリフは日本語グリフである。
一連の活動900は、1組のテキスト画像を生成する活動910を含む。詳細には、活動910は、複数のグリフから1つまたは複数のグリフをランダムに選択するステップ、1つまたは複数のグリフの各々に関して複数のデジタルフォントから1つのデジタルフォントを選択するステップ、および選択したデジタルフォントで書かれた1つまたは複数のグリフの各々を描画するステップに基づき、1組のテキスト画像を生成するステップを伴うことができる。いくつかの実施形態では、テキスト画像は、選択した日本語デジタルフォントで書かれた日本語グリフからなる画像を含む。1つまたは複数の実施形態では、活動910は、1組のテキスト画像の1つまたは複数に雑音、ぼかし、回転、または濃淡を追加するステップを含む。
図に示すように、一連の活動900はまた、フォント認識ニューラルネットワークを生成する活動920を含む。詳細には、活動920は、1組のテキスト画像に基づきデジタルフォントを分類するように構成されたフォント認識ニューラルネットワークを生成するステップを伴うことができる。1つまたは複数の実施形態では、フォント認識ニューラルネットワークは、畳込み層および全結合層を含む畳込みニューラルネットワークである。いくつかの実施形態では、畳込み層は、特徴抽出パラメータに基づきフォント特徴ベクトルを出力するフォント符号化器を含む。さまざまな実施形態では、全結合層は、フォント特徴ベクトルに基づきデジタルフォントを分類し、かつフォント確率ベクトルを出力するフォント分類器を含む。
図9に示すように、一連の活動900は、敵対的トレーニングを使用してフォント認識ニューラルネットワークをトレーニングして、デジタルフォントを効果的に区別するがグリフを効果的に区別しない、弁別力のある特徴を学習する活動930をさらに含む。1つまたは複数の実施形態では、活動930は、1組のテキスト画像に基づく。いくつかの実施形態では、フォント認識ニューラルネットワークの全結合層はまた、トレーニング中に、フォント特徴ベクトルに基づきグリフを分類し、かつグリフ確率ベクトルを出力するグリフ分類器を含む。
さらに別の実施形態では、活動930は、選択したデジタルフォントで書かれたグリフを含むテキスト画像に関して、テキスト画像に関して符号化器が出力したフォント特徴ベクトルに基づきグリフ分類器によりグリフを分類するステップと、分類したグリフとテキスト画像内のグリフを比較して、グリフ分類器がテキスト画像内のグリフを正しく分類したかどうかを判断するステップと、グリフ分類器がテキスト画像内のグリフを正しく分類したことに基づき、符号化器にフィードバックを提供して、特徴抽出パラメータを修正して、グリフ分類器にグリフを誤って分類させるステップとを含むことができる。さまざまな実施形態では、活動930は、フォント分類器に対する交差エントロピー損失を最小にする一方で、グリフ分類器に対する交差エントロピー損失を最大にすることにより、フォント認識ニューラルネットワークをトレーニングするステップを含むことができる。
一連の活動900はまた、いくつかの追加活動を含むことができる。1つまたは複数の実施形態では、一連の活動900は、フォント認識ニューラルネットワークが収束するまで、誤差逆伝播によって符号化器、フォント分類器、およびグリフ分類器を順次更新することにより、フォント認識ニューラルネットワークをトレーニングする活動を含む。さらに別の実施形態では、一連の活動900は、グリフ分類器に対する交差エントロピー損失がグリフ損失しきい値を超えるまで、符号化器にフィードバックを反復して提供することによりフォント認識ニューラルネットワークをトレーニングする活動と、グリフ損失しきい値を超えると、第1の固定された反復回数の間、フォント分類器にフィードバックを提供する活動と、第2の固定された反復回数の間、グリフ分類器にフィードバックを提供する活動とを含む。いくつかの実施形態では、第1の固定された反復回数および第2の固定された反復回数は、同じである。代わりの実施形態では、第1の固定された反復回数は、第2の固定された反復回数と異なる。さらに、さらに別の実施形態では、符号化器は、グリフ分類器と競合して、グリフ分類損失を最大にし、一方では、グリフ分類器は、符号化器と競合して、グリフ分類損失を最小にする。
いくつかの実施形態では、一連の活動900は、入力デジタルフォントで書かれたグリフを含む入力テキスト画像を受け取る活動、トレーニングされたフォント認識ニューラルネットワークを使用して、入力デジタルフォントのフォント特徴ベクトルとフォント認識ニューラルネットワークを使用して生成された、既知のデジタルフォントのフォント特徴ベクトルを比較して、入力デジタルフォントに関するフォント確率ベクトルを生成する活動、フォント確率ベクトルに基づき入力デジタルフォントを識別する活動、および識別した入力デジタルフォントを提示する活動を含む。いくつかの実施形態では、入力テキスト画像は、トレーニング・フォント・セットに含まれないグリフを含む。
すでに言及したように、図10は、1つまたは複数の実施形態による、敵対的にトレーニングされたフォント認識ニューラルネットワークを使用して、入力画像内の入力フォントを識別するための一連の活動1000を示す。図10は、一実施形態による活動を示すが、代わりの実施形態は、図10に示す活動のいずれかを省略する、それに追加する、それを並べ替える、および/または修正してもよい。図10の活動を方法の一部として遂行することができる。あるいは、非一時的コンピュータ可読媒体は、1つまたは複数のプロセッサにより実行されたとき、コンピューティング機器に図10の活動を遂行させる命令を備えることができる。1つまたは複数の実施形態では、システムは、図10の活動を遂行することができる。いくつかの実施形態では、一連の活動1000を、コンピューティング機器500または1つもしくは複数のサーバ機器602などの1つまたは複数のコンピューティング機器上のコンピューティングシステムにより実装する。
図に示すように、一連の活動1000は、入力デジタルフォントを有する入力テキスト画像を受け取る活動1010を含む。1つまたは複数の実施形態では、活動1010は、ユーザおよび/またはアプリケーションから入力テキスト画像を受け取るステップを含む。いくつかの実施形態では、以下で説明する入力デジタルフォントおよび既知のデジタルフォントは、日本語デジタルフォントを含む。
一連の活動1000はまた、デジタルフォントを効果的に区別するがグリフを効果的に区別しない、弁別力のある特徴を学習するように敵対的にトレーニングされたフォント認識ニューラルネットワークを使用して、入力デジタルフォントに関するフォント確率ベクトルを決定する活動1020を含む。詳細には、フォント認識ニューラルネットワークは、符号化器、フォント分類器、および敵対的グリフ分類器を使用して敵対的にトレーニングされ、この場合、トレーニングされたフォント認識ニューラルネットワークは、符号化器およびフォント分類器を採用して、デジタルフォントを識別する。
さらに、一連の活動1000は、フォント確率ベクトルに基づき入力デジタルフォントを識別する活動1030を含む。詳細には、活動1030は、入力デジタルフォントに関するフォント確率ベクトルに基づき、既知のデジタルフォントから入力デジタルフォントを識別するステップを伴うことができる。いくつかの実施形態では、活動1030は、入力デジタルフォントの特徴ベクトルと、既知のデジタルフォントの各々に対応する平均特徴表現を比較して、フォント確率ベクトルを生成するステップを含む。
一連の活動1000はまた、いくつかの追加活動を含むことができる。1つまたは複数の実施形態では、一連の活動1000は、識別した入力デジタルフォントをユーザに提示する活動を含む。さまざまな実施形態では、入力テキスト画像は、既知のデジタルフォントに関連するトレーニング・フォント・セットに含まれないグリフを含む。
用語「デジタル環境」は、本明細書で使用するとき、一般にたとえば、スタンドアロンのアプリケーション(たとえば、コンピューティング機器上で走っているパーソナルコンピュータまたは移動体のアプリケーション)として、アプリケーションの要素として、アプリケーションのためのプラグインとして、1つもしくは複数のライブラリ関数として、コンピューティング機器として、および/またはクラウド・コンピューティング・システムとして実装された環境を指す。デジタル媒体環境により、フォント認識システムは、本明細書で説明するように、フォント認識ニューラルネットワークを敵対的にトレーニングし、採用することができるようになる。
本開示の実施形態は、たとえば、以下でより詳細に論じるように、1つまたは複数のプロセッサおよびシステムメモリなどのコンピュータハードウェアを含む専用および汎用のコンピュータを備えても、利用してもよい。本開示の範囲に入る実施形態はまた、コンピュータ実行可能命令および/またはデータ構造を移送または記憶するための物理的コンピュータ可読媒体および他のコンピュータ可読媒体を含む。詳細には、本明細書で説明するプロセッサの1つまたは複数を、少なくとも一部は、非一時的コンピュータ可読媒体に埋め込まれ、かつ1つまたは複数のコンピューティング機器(たとえば、本明細書で説明する媒体内容アクセス機器のいずれか)により実行可能な命令として実装してもよい。一般に、プロセッサ(たとえば、マイクロプロセッサ)は、非一時的コンピュータ可読媒体(たとえば、メモリ)から命令を受け取り、それらの命令を実行し、それにより、本明細書で説明する処理の1つまたは複数を含む1つまたは複数の処理を遂行する。
コンピュータ可読媒体は、汎用または専用のコンピュータシステムがアクセスすることができる任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ可読媒体は、非一時的コンピュータ可読記憶媒体(機器)である。コンピュータ実行可能命令を移送するコンピュータ可読媒体は、伝送媒体である。したがって、限定としてではなく例として、本開示の実施形態は、少なくとも2つのはっきりと異なる種類のコンピュータ可読媒体を、すなわち、非一時的コンピュータ可読記憶媒体(機器)および伝送媒体を備えることができる。
非一時的コンピュータ可読記憶媒体(機器)は、RAM、ROM、EEPROM、CD-ROM、ソリッド・ステート・ドライブ(solid state drive、「SSD」)(たとえば、RAMに基づく)、フラッシュメモリ、相変化メモリ(phase-change memory、「PCM」)、他のタイプのメモリ、他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、またはコンピュータ実行可能命令もしくはデータ構造の形で所望のプログラムコード手段を記憶するために使用することができ、かつ汎用もしくは専用のコンピュータがアクセスすることができる任意の他の媒体を含む。
「ネットワーク」は、コンピュータシステムおよび/またはモジュールおよび/または他の電子機器の間で電子データの移送を可能にする1つまたは複数のデータリンクとして規定される。ネットワークまたは他の通信接続(有線、無線、または有線もしくは無線の組合せ)を介してコンピュータに情報を転送または提供するとき、コンピュータは、接続を伝送媒体と適切にみなす。伝送媒体は、コンピュータ実行可能命令またはデータ構造の形で所望のプログラムコード手段を移送するために使用することができ、かつ汎用または専用のコンピュータがアクセスすることができるネットワークおよび/またはデータリンクを含むことができる。上記の組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
さらに、さまざまなコンピュータシステム構成要素に届くと、コンピュータ実行可能命令またはデータ構造の形のプログラムコード手段を、伝送媒体から非一時的コンピュータ可読記憶媒体(機器)に(またはその逆も同様である)自動的に転送することができる。たとえば、ネットワークまたはデータリンクを介して受け取ったコンピュータ実行可能命令またはデータ構造を、ネットワーク・インタフェース・モジュール(たとえば、「NIC」)内部のRAMにバッファリングし、次いで最終的に、コンピュータシステムRAMに、および/またはコンピュータシステムのより揮発しにくいコンピュータ記憶媒体(機器)に転送することができる。したがって、さらに(またはそれどころか主として)伝送媒体を利用するコンピュータシステム構成要素に、非一時的コンピュータ可読記憶媒体(機器)を含むことができることを理解されたい。
コンピュータ実行可能命令は、たとえば、プロセッサにより実行されたとき、ある種の機能または機能のグループを汎用コンピュータ、専用コンピュータ、または専用処理機器に遂行させる命令およびデータを備える。いくつかの実施形態では、汎用コンピュータがコンピュータ実行可能命令を実行して、汎用コンピュータを本開示の要素を実装する専用コンピュータにする。コンピュータ実行可能命令は、たとえば、バイナリ、アッセンブリ言語などの中間形式の命令、またはさらにはソースコードであってもよい。構造的特徴および/または方法論的活動に特有な言語で主題について説明してきたが、添付の特許請求の範囲で規定される主題は、説明した特徴、または上記で説明した活動に必ずしも限定されないことを理解されたい。むしろ、説明した特徴および活動は、特許請求の範囲を実装する形態の例として開示されている。
本開示を、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド機器、マルチ・プロセッサ・システム、マイクロプロセッサに基づくまたはプログラム可能な家庭用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話、PDA、タブレット、ページャ、ルータ、スイッチなどを含む、多くのタイプのコンピュータシステム構成を備えるネットワークコンピューティング環境で実施してもよいことを当業者は認識されよう。本開示を、同じくネットワークを通して(有線データリンク、無線データリンクにより、または有線および無線のデータリンクの組合せにより)連結されたローカルおよび遠隔のコンピュータシステムが両方ともタスクを遂行する分散システム環境で実施してもよい。分散システム環境では、ローカルおよび遠隔のメモリ記憶装置の両方にプログラムモジュールを配置してもよい。
本開示の実施形態を、同じくクラウドコンピューティング環境に実装することができる。本明細書で使用するとき、用語「クラウドコンピューティング」は、構成可能なコンピューティング資源の共有プールへのオン・デマンド・ネットワーク・アクセスを可能にするためのモデルを指す。たとえば、市場でクラウドコンピューティングを採用して、構成可能なコンピューティング資源の共有プールへの、偏在的で便利なオン・デマンド・アクセスを提供することができる。構成可能なコンピューティング資源の共有プールを、仮想化を介して迅速に準備し、少ない管理努力またはサービスプロバイダの協力で公開し、次いで、それに従って規模を調整することができる。
クラウド・コンピューティング・モデルを、たとえば、オン・デマンド・セルフ・サービス、広域ネットワークアクセス、資源プーリング、迅速な融通性、度数制などのようなさまざまな特性から構成することができる。クラウド・コンピューティング・モデルはまた、たとえば、「SaaS(Software as a Service)」、「PaaS(Platform as a Service)」、および「IaaS(Infrastructure as a Service)」などのさまざまなサービスモデルを見せることができる。クラウド・コンピューティング・モデルを、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなどのような異なる導入モデルを使用してさらに導入することができる。さらに、本明細書で使用するとき、用語「クラウドコンピューティング環境」は、クラウドコンピューティングを採用する環境を指す。
図11は、上記で説明した処理の1つまたは複数を遂行するように構成されてもよい代表的コンピューティング機器1100の構成図を示す。コンピューティング機器1100などの1つまたは複数のコンピューティング機器は、上記で説明したコンピューティング機器(たとえば、コンピューティング機器500、1つまたは複数のサーバ機器602、およびクライアント機器604a、604b)を表してもよいことを認識されよう。1つまたは複数の実施形態では、コンピューティング機器1100は、移動体機器(たとえば、携帯電話、スマートホン、PDA、タブレット、ラップトップ、カメラ、トラッカ(tracker)、ウオッチ、ウェアラブル機器など)であってもよい。いくつかの実施形態では、コンピューティング機器1100は、非移動体機器(たとえば、デスクトップコンピュータまたは別のタイプのクライアント機器)であってもよい。さらに、コンピューティング機器1100は、クラウドに基づく処理および記憶能力を含むサーバ機器であってもよい。
図11に示すように、コンピューティング機器1100は、1つまたは複数のプロセッサ1102、メモリ1104、記憶装置1106、入出力(「I/O」)インタフェース1108、および通信インフラストラクチャ(たとえば、バス1112)によって通信可能に結合してもよい通信インタフェース1110を含むことができる。図11にはコンピューティング機器1100を示すが、図11に示す構成要素は、限定することを意図するものではない。追加のまたは代わりの構成要素を、他の実施形態で使用してもよい。さらに、ある種の実施形態では、コンピューティング機器1100は、図11に示す構成要素よりも少ない構成要素を含む。次に、図11に示すコンピューティング機器1100の構成要素について、さらに詳細に説明する。
特定の実施形態では、1つまたは複数のプロセッサ1102は、コンピュータプログラムを作り上げる命令などの命令を実行するためのハードウェアを含む。限定ではなく一例として、命令を実行するために、1つまたは複数のプロセッサ1102は、内部レジスタ、内部キャッシュ、メモリ1104、または記憶装置1106から命令を取り出し(またはフェッチし)、命令を復号し、実行してもよい。
コンピューティング機器1100は、1つまたは複数のプロセッサ1102に結合したメモリ1104を含む。データ、メタデータ、および1つまたは複数のプロセッサが実行するためのプログラムを記憶するために、メモリ1104使用してもよい。メモリ1104は、ランダム・アクセス・メモリ(Random-Access Memory、「RAM」)、読出し専用メモリ(Read-Only Memory、「ROM」)、ソリッド・ステート・ドライブ(「SSD」)、フラッシュ、相変化メモリ(「PCM」)、または他のタイプのデータ記憶領域などの、揮発性および不揮発性のメモリのうち1つまたは複数を含んでもよい。メモリ1104は、内部メモリであっても、分散メモリであってもよい。
コンピューティング機器1100は、データまたは命令を記憶するための記憶領域を含む記憶装置1106を含む。限定ではなく一例として、記憶装置1106は、上記で説明した非一時的記憶媒体を含むことができる。記憶装置1106は、ハード・ディスク・ドライブ(hard disk drive、HDD)、フラッシュメモリ、ユニバーサル・シリアル・バス(Universal Serial Bus、USB)ドライブ、またはこれらもしくは他の記憶装置の組み合わせを含んでもよい。
図に示すように、コンピューティング機器1100は、ユーザがコンピューティング機器1100に入力を提供し(ユーザがキーを打つなど)、コンピューティング機器1100から出力を受け取り、他の方法でコンピューティング機器1100との間でデータを転送することができるようにするように提供される、1つまたは複数のI/Oインタフェース1108を含む。これらのI/Oインタフェース1108は、マウス、キーパッドもしくはキーボード、タッチ画面、カメラ、光学スキャナ、ネットワークインタフェース、モデム、他の公知のI/O機器、またはそのようなI/Oインタフェース1108の組合せを含んでもよい。タッチ画面をスタイラスまたは指で活動化してもよい。
I/Oインタフェース1108は、グラフィックスエンジン、表示装置(たとえば、表示画面)、1つまたは複数の出力ドライバ(たとえば、表示ドライバ)、1つまたは複数のオーディオスピーカ、および1つまたは複数のオーディオドライバを含むがそれらに限定されない、ユーザに出力を提示するための1つまたは複数の機器を含んでもよい。ある種の実施形態では、I/Oインタフェース1108は、ユーザに提示するために表示装置にグラフィックデータを提供するように構成される。グラフィックデータは、特定の実装に役立つ場合があるような、1つまたは複数のグラフィカル・ユーザ・インタフェースおよび/または任意の他のグラフィックの内容の表現であってもよい。
コンピューティング機器1100は、通信インタフェース1110をさらに含むことができる。通信インタフェース1110は、ハードウェア、ソフトウェア、または両方を含むことができる。通信インタフェース1110は、コンピューティング機器と、1つもしくは複数の他のコンピューティング機器、または1つもしくは複数のネットワークとの間で通信(たとえば、パケットに基づく通信など)のための1つまたは複数のインタフェースを提供する。限定ではなく一例として、通信インタフェース1110は、イーサネット(登録商標)もしくは他の有線に基づくネットワークと通信するためのネットワーク・インタフェース・コントローラ(network interface controller、NIC)もしくはネットワークアダプタ、またはWi-Fiなどの無線ネットワークと通信するための無線NIC(wireless NIC、WNIC)もしくは無線アダプタを含んでもよい。コンピューティング機器1100は、バス1112をさらに含むことができる。バス1112は、コンピューティング機器1100の構成要素を互いに接続する、ハードウェア、ソフトウェア、または両方を含むことができる。
前述の明細では、本発明について、本発明の代表的実施形態を具体的に参照して説明してきた。1つまたは複数の本発明のさまざまな実施形態および様態について、本明細書で論じた詳細を参照して説明し、添付図面は、さまざまな実施形態を例示している。上記の説明および図面は、本発明を例証しており、本発明を限定していると解釈されるべきではない。本発明のさまざまな実施形態を完全に理解するために、数多くの特有の詳細について説明した。
本発明の精神または本質的特性を逸脱することなく、他の特有の形態で本発明を具体化してもよい。説明する実施形態は、すべての点で例示的でしかなく、限定的ではないと考えられるべきである。たとえば、本明細書で説明する方法をより少ない、またはより多いステップ/活動で遂行してもよい、またはステップ/活動を異なる順序で遂行してもよい。さらに、本明細書で説明するステップ/活動を、繰り返してもよい、または互いに並列に、または同じもしくは類似するステップ/活動の異なるインスタンスと並列に遂行してもよい。したがって、本発明の範囲は、前述の説明によるのではなく、添付の特許請求の範囲により示される。特許請求の範囲の均等物の意味および範囲に入るすべての変更は、特許請求の範囲に包含されるべきである。