(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-15
(45)【発行日】2022-06-23
(54)【発明の名称】線画の生成
(51)【国際特許分類】
G06T 5/20 20060101AFI20220616BHJP
G06T 7/00 20170101ALI20220616BHJP
【FI】
G06T5/20
G06T7/00 350C
【外国語出願】
(21)【出願番号】P 2020007275
(22)【出願日】2020-01-21
【審査請求日】2020-11-13
(32)【優先日】2019-05-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595097771
【氏名又は名称】アドビ インコーポレイテッド
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】ブライアン・プライス
(72)【発明者】
【氏名】ニン・シュ
(72)【発明者】
【氏名】井上 直人
(72)【発明者】
【氏名】ジメイ・ヤン
(72)【発明者】
【氏名】伊藤 大地
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2009-217606(JP,A)
【文献】特開平3-218581(JP,A)
【文献】米国特許出願公開第2017/0287137(US,A1)
【文献】Min-Ho Park, 外3名,"False Contour Reduction Using Neural Networks and Adaptive Bi-Directional Smoothing",2010 Digest of Technical Papers International Conference on Consumer Electronics (ICCE),2010年02月22日
【文献】Yixue Wang, 外3名,"Generating Facial Line-drawing with Convolutional Neural Networks",2018 24th International Conference on Pattern Recognition (ICPR),2018年11月29日,p.513-516
(58)【調査した分野】(Int.Cl.,DB名)
G06T 5/20
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
第1のニューラルネットワークを実行する計算デバイスによって、デジタル画像を前記
第1のニューラルネットワークに入力するステップであって、前記デジタル画像は写真を含む、ステップ;
前記
第1のニューラルネットワークを用いて、前記写真の内容を識別するステップ;
モデルを前記内容に適用するステップであって、前記モデルは、前記
第1のニューラルネットワーク
及び第2のニューラルネットワークのために構成され、前記モデルは、前記内容を図示するための単色の線を描画するための第1の特徴部分のセットを抽出するための、第1のパラメータを有し、また、線が描画されるべきでない第2の特徴部分のセットのための第2のパラメータを有する、ステップ;
前記
第1のニューラルネットワークを用いて、前記第1の特徴部分のセットを前記デジタル画像から抽出
するステップ;
前記第1のニューラルネットワークからの出力を、前記第2のニューラルネットワークに入力するステップ;
前記第2のニューラルネットワークを用いて、前記第2の特徴部分のセットをフィルタリングするステップ;
前記
第2のニューラルネットワークを用いて、前記第1の特徴部分のセットのための線のセットを生成するステップであって、前記線のセットは、前記内容の複数の様相をトレースする、ステップ;及び
前記
第2のニューラルネットワークを用いて、前記デジタル画像のデジタル線画を出力するステップであって、前記デジタル線画は、前記線のセットを含む、ステップ
を含
み、
前記第2のニューラルネットワークは、前記第1のニューラルネットワークとは別個に、線画及び前記デジタル線画のコピーのデータセットで訓練され、
前記コピーは、デジタル的に付加されたアーティファクトを含む、コンピュータ
に実装
される方法。
【請求項2】
前記デジタル線画は、前記写真内のオブジェクトのエッジと、前記オブジェクトの特定の特徴部分とを含む、請求項1に記載のコンピュータ
に実装
される方法。
【請求項3】
前記第2のニューラルネットワークは、グレースケールデジタル画像からデジタルアーティファクトを除去して、2色調デジタル画像を出力するよう訓練され、また前記第2のニューラルネットワークは、前記デジタル線画を出力する、ステップを更に含む、請求項1に記載のコンピュータ
に実装
される方法。
【請求項4】
前記
第1のニューラルネットワークは、デジタル写真及び前記デジタル写真のデジタル線画を含むデータセットで訓練され、
前記デジタル線画は、前記デジタル写真内のオブジェクトのエッジ及び特定の特徴部分のための線を含む、請求項1に記載のコンピュータ
に実装
される方法。
【請求項5】
前記特定の特徴部分のための線は、前記オブジェクトの認識を支援する、請求項
4に記載のコンピュータ
に実装
される方法。
【請求項6】
前記特定の特徴部分のための線は、前記オブジェクトの複数の部分に対して、形状又は明確さを提供する、請求項
4に記載のコンピュータ
に実装
される方法。
【請求項7】
前記特定の特徴部分は、前記オブジェクトが前記デジタル写真の前景にある場合には、テクスチャを含む、請求項
4に記載のコンピュータ
に実装
される方法。
【請求項8】
前記特定の特徴部分はテクスチャを除外する、請求項
4に記載のコンピュータ
に実装
される方法。
【請求項9】
前記内容は、人物又は建築構造物の一部を含む、請求項1に記載のコンピュータ
に実装
される方法。
【請求項10】
前記写真は、野外のシーン又は建造物内部の写真である、請求項1に記載のコンピュータ
に実装
される方法。
【請求項11】
前記デジタル線画は2色調デジタル画像であり、前記線のセットが第1の色調であり、背景が第2の色調であり、
前記線のセットは幅が略均一である、請求項1に記載のコンピュータ
に実装
される方法。
【請求項12】
1つ以上のプロセッサ;及び
命令を含む非一時的コンピュータ可読媒体
を備える、計算デバイスであって、
前記命令は、前記1つ以上のプロセッサによって実行された場合に、前記1つ以上のプロセッサに:
前記計算デバイスによって実行されている
第1のニューラルネットワークに、デジタル画像を入力するステップであって、前記デジタル画像は写真を含む、ステップ;
前記
第1のニューラルネットワークを用いて、前記写真の内容を識別するステップ;
モデルを前記内容に適用するステップであって、前記モデルは、前記
第1のニューラルネットワーク
及び第2のニューラルネットワークのために構成され、前記モデルは、前記内容を図示するための単色の線を描画するための第1の特徴部分のセットを抽出するための、第1のパラメータを有し、また、線が描画されるべきでない第2の特徴部分のセットのための第2のパラメータを有する、ステップ;
前記
第1のニューラルネットワークを用いて、前記第1の特徴部分のセットを前記デジタル画像から抽出
するステップ;
前記第1のニューラルネットワークからの出力を、前記第2のニューラルネットワークに入力するステップ;
前記第2のニューラルネットワークを用いて、前記第2の特徴部分のセットをフィルタリングするステップ;
前記
第2のニューラルネットワークを用いて、前記第1の特徴部分のセットのための線のセットを生成するステップであって、前記線のセットは、前記内容の複数の様相をトレースする、ステップ;及び
前記
第2のニューラルネットワークを用いて、前記デジタル画像のデジタル線画を出力するステップであって、前記デジタル線画は、前記線のセットを含む、ステップ
を含む操作を実施させ
、
前記第2のニューラルネットワークは、前記第1のニューラルネットワークとは別個に、線画及び前記デジタル線画のコピーのデータセットで訓練され、
前記コピーは、デジタル的に付加されたアーティファクトを含む、
計算デバイス。
【請求項13】
前記デジタル線画は、前記写真内のオブジェクトのエッジと、前記オブジェクトの特定の特徴部分とを含む、請求項
12に記載の計算デバイス。
【請求項14】
前記操作は:
前記第2のニューラルネットワークは、グレースケールデジタル画像からデジタルアーティファクトを除去して、2色調デジタル画像を出力するよう訓練され、また前記第2のニューラルネットワークは、前記デジタル線画を出力する、ステップ
を更に含む、請求項
12に記載の計算デバイス。
【請求項15】
前記
第1のニューラルネットワークは、デジタル写真及び前記デジタル写真のデジタル線画を含むデータセットで訓練され、
前記デジタル線画は、前記デジタル写真内のオブジェクトのエッジ及び特定の特徴部分のための線を含む、請求項
12に記載の計算デバイス。
【請求項16】
前記内容は、人物又は建築構造物の一部を含む、請求項
12に記載の計算デバイス。
【請求項17】
前記写真は、野外のシーン又は建造物内部の写真である、請求項
12に記載の計算デバイス。
【請求項18】
命令が保存されている、非一時的コンピュータ可読媒体であって、
前記命令は、計算デバイスの1つ以上のプロセッサによって実行された場合に、前記1つ以上のプロセッサに:
前記計算デバイスによって実行されている
第1のニューラルネットワークに、デジタル画像を入力するステップであって、前記デジタル画像は写真を含む、ステップ;
前記
第1のニューラルネットワークを用いて、前記写真の内容を識別するステップ;
モデルを前記内容に適用するステップであって、前記モデルは、前記
第1のニューラルネットワーク
及び第2のニューラルネットワークのために構成され、前記モデルは、前記内容を図示するための単色の線を描画するための第1の特徴部分のセットを抽出するための、第1のパラメータを有し、また、線が描画されるべきでない第2の特徴部分のセットのための第2のパラメータを有する、ステップ;
前記
第1のニューラルネットワークを用いて、前記第1の特徴部分のセットを前記デジタル画像から抽出
するステップ;
前記第1のニューラルネットワークからの出力を、前記第2のニューラルネットワークに入力するステップ;
前記第2のニューラルネットワークを用いて、前記第2の特徴部分のセットをフィルタリングするステップ;
前記
第2のニューラルネットワークを用いて、前記第1の特徴部分のセットのための線のセットを生成するステップであって、前記線のセットは、前記内容の複数の様相をトレースする、ステップ;及び
前記
第2のニューラルネットワークを用いて、前記デジタル画像のデジタル線画を出力するステップであって、前記デジタル線画は、前記線のセットを含む、ステップ
を含む操作を実施させ、
前記第2のニューラルネットワークは、前記第1のニューラルネットワークとは別個に、線画及び前記デジタル線画のコピーのデータセットで訓練され、
前記コピーは、デジタル的に付加されたアーティファクトを含む、
非一時的コンピュータ可読媒体。
【請求項19】
前記デジタル線画は2色調デジタル画像であり、前記線のセットが第1の色調であり、背景が第2の色調であり、
前記線のセットは幅が略均一である、請求項
18に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
線画は、多くの文脈で使用されている。例えば線画はとりわけ:テクニカルイラストレーションのために;塗り絵において;及びコミックブックの作成において、使用される。線画は、線のみを使用してオブジェクトを表現する図である。背景色以外の色は存在せず、背景色はほとんどの場合均一である。線は、オブジェクトの輪郭及び/又は形状を描画でき、また場合によっては、上記オブジェクトの認識及び/又は図面中の他のオブジェクトからの上記オブジェクトの区別を支援できる、オブジェクトの細部を描画できる。場合によっては、線を用いてテクスチャも表現できる。例えば、壁の中のレンガの外観、毛髪の房、又は海の表面を、図面中の線によって近似できる。
【0002】
線画を写真から作成してよい。写真はアーティストに、正確な比率、遠近感、奥行き及び/又は内容を有する精密でリアルな画像を迅速に作成するための、便利な基礎を提供する。更に、写真が入手可能である場合、アーティストは現場にいる必要がなくなり、及び/又はモデルの時間を占領する必要がなくなる。線画の作成のために、アーティストは、写真の複数の様相をトレースでき、これにより、図面を目の前の状況から又は想像から作成する場合よりも時間が更に節約され、また得られる図面の精度が向上し、場合によっては得られる図面がより詳細になる。
【0003】
写真から線画を作成するのは、十分な経験を積んだアーティストであっても、非常に時間がかかる。よって、写真から自動的に線画を作成することが、デジタル画像編集ツールの目的である。
【発明の概要】
【発明が解決しようとする課題】
【0004】
線画を生成するための自動システムは、写真から線画を得るために必要な時間量を大幅に削減できる。いくつかの自動システムは、エッジ検出又は輪郭の識別に基づいて動作する。これらのシステムは写真の内容を意識しないため、これらのシステムは、アーティストが望むような、トレースするべき特徴部分と、無視するべき特徴部分とを区別できない場合がある。
【課題を解決するための手段】
【0005】
本明細書に記載の、線画を生成するための自動システムは、あるオブジェクトのどの特徴部分のために線を引くべきか、及びどの特徴部分を無視するべきかを識別するように訓練される、ニューラルネットワークを使用する。この判定は本質的に主観的なものであるため、上記ニューラルネットワークは、写真と、上記写真の線画とで訓練され、ここで上記線画は、人間のアーティストが行った主観的決定を含む。これらの線画で訓練することにより、上記ニューラルネットワークは、同等の判定を行うように学習できる。
【0006】
本明細書に記載の例は:デジタル写真からデジタル線画を生成する操作を実施するためのステップを含むコンピュータ実装型の方法;1つ以上のプロセッサと、上記1つ以上のプロセッサによって実行された場合に、上記1つ以上のプロセッサに、デジタル写真からデジタル線画を生成するための操作を実施させる命令を含む、非一時的コンピュータ可読媒体とを含む、計算デバイス;及び1つ以上のプロセッサによって実行された場合に、上記1つ以上のプロセッサに、デジタル写真からデジタル線画を生成するための操作を実施させる命令が保存された、非一時的コンピュータ可読媒体を含む。デジタル写真からデジタル線画を生成するための上記操作は、デジタル画像をニューラルネットワークに入力するステップを含むことができ、上記デジタル画像は写真を含む。上記操作は更に、上記ニューラルネットワークを用いて、上記写真の内容を識別するステップを含むことができる。上記操作は更に、モデルを上記内容に適用するステップを含むことができ、上記モデルは、上記ニューラルネットワークのために構成され、上記モデルは、上記内容を図示するための単色の線を描画するための第1の特徴部分のセットを抽出するための、第1のパラメータを有し、また、線が描画されるべきでない第2の特徴部分のセットのための第2のパラメータを有する。上記操作は更に、上記ニューラルネットワークを用いて、上記第1の特徴部分のセットを上記デジタル画像から抽出し、上記第2の特徴部分のセットをフィルタリングするステップを含むことができる。上記操作は更に、上記ニューラルネットワークを用いて、上記第1の特徴部分のセットのための線のセットを生成するステップを含むことができ、上記線のセットは、上記内容の複数の様相をトレースする。上記操作は更に、上記ニューラルネットワークを用いて、上記デジタル画像のデジタル線画を出力するステップを含み、上記デジタル線画は、上記線のセットを含む。
【0007】
いくつかの態様では、上記デジタル線画は、上記写真内のオブジェクトのエッジと、上記オブジェクトの特定の特徴部分とを含む。
【0008】
いくつかの態様では、デジタル写真からデジタル線画を生成するための上記操作は更に、上記ニューラルネットワークからの出力を、第2のニューラルネットワークに入力するステップを含むことができ、上記第2のニューラルネットワークは、グレースケールデジタル画像からデジタルアーティファクトを除去して、2色調デジタル画像を出力するよう訓練され、また上記第2のニューラルネットワークは、上記デジタル線画を出力する。いくつかの態様では、上記第2のニューラルネットワークは、上記ニューラルネットワークとは別個に、線画及び上記デジタル線画のコピーのデータセットで訓練され、上記コピーは、デジタル的に付加されたアーティファクトを含む。
【0009】
いくつかの態様では、上記ニューラルネットワークは、デジタル写真及び上記デジタル写真のデジタル線画を含むデータセットで訓練され、上記デジタル線画は、上記デジタル写真内のオブジェクトのエッジ及び特定の特徴部分のための線を含む。いくつかの態様では、上記特定の特徴部分のための線は、上記オブジェクトの認識を支援する。いくつかの態様では、上記特定の特徴部分のための線は、上記オブジェクトの複数の部分に対して、形状又は明確さを提供する。いくつかの態様では、上記特定の特徴部分は、上記オブジェクトが上記デジタル写真の前景にある場合には、テクスチャを含む。いくつかの態様では、上記特定の特徴部分はテクスチャを除外する。
【0010】
いくつかの態様では、上記内容は、人物又は建築構造物の一部を含む。いくつかの態様では、上記写真は、野外のシーン又は建造物内部の写真である。
【0011】
いくつかの態様では、上記デジタル線画は2色調デジタル画像であり、上記線のセットが第1の色調であり、背景が第2の色調であり、上記線のセットは幅が略均一である。
【0012】
これより、例示的な実施例について、以下の図面を参照しながら詳細に説明する。
【図面の簡単な説明】
【0013】
【
図3】
図3は、線画を作成するための自動システムの例の図を含む。
【
図4】
図4は、線画を作成するための自動システムの別の例の図を含む。
【
図5】
図5は、復元用ネットワークを訓練するためのシステムの例を示すブロック図を含む。
【
図6】
図6は、一般化された例示的なニューラルネットワークのアーキテクチャを示す。
【
図8】
図8は、サンプル写真及び線画の別の表を含む。
【
図9A】
図9Aは、描画の自動生成のためのあるシステムに、ある例示的な写真を入力した結果の例を示す。
【
図9B】
図9Bは、描画の自動生成のための別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図9C】
図9Cは、描画の自動生成のための更に別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図9D】
図9Dは、描画の自動生成のためのまた更に別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図10A】
図10Aは、描画の自動生成のためのあるシステムに、ある例示的な写真を入力した結果の例を示す。
【
図10B】
図10Bは、描画の自動生成のための別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図10C】
図10Cは、描画の自動生成のための更に別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図10D】
図10Dは、描画の自動生成のためのまた更に別のシステムに、ある例示的な写真を入力した結果の例を示す。
【
図11】
図11は、描画の自動生成のためのプロセスの例を示すフローチャートを含む。
【
図12】
図12は、計算デバイスの例を示すブロック図を含む。
【
図14】
図14は、計算デバイスの例を示すブロック図を含む。
【
図15】
図15は、データセンターの例を示すブロック図を含む。
【発明を実施するための形態】
【0014】
本明細書に記載されるのは、写真の内容のデジタル線画を自動生成するための技法である。様々な例において、これらの技法は、写真と、人が生成した上記写真の線画とのデータセットで訓練された、本明細書中では生成用ネットワークと呼ばれるニューラルネットワークの使用を含む。訓練用データセットは、上記写真内のオブジェクトのエッジをトレースすることだけでなく、どのエッジをトレースするべきであり、かつどのエッジを無視できるかを、上記ニューラルネットワークに教える。上記生成用ネットワークの出力は、2色調デジタル画像(例えば白黒画像)であり、この画像の背景は1つの色調(例えば全体が白色)であり、入力された上記写真内の上記オブジェクトは、第2の色調で描画された線(例えば黒色の線又はグレースケール線)で表される。
【0015】
いくつかの入力写真は、曖昧な領域を含むことがあり、上記生成用ネットワークが上記領域を線に変換する方法に関する明確な方針を持たない場合がある。例えば写真は、人間のアーティストが無視する場合も線画に含める場合もあるテクスチャ又は高いレベルの細部を有し得る。これらの状況では、上記生成用ネットワークは、上記領域を無視することと、上記領域内の細部を描画することとの中間の線を控えめに出力する場合があり、これは、美しい線ではなく、汚れ又は視覚的ノイズをもたらす場合がある。これらの状況のために、本明細書に記載の技法は更に、本明細書中では復元用ネットワークと呼ばれる第2のニューラルネットワークの使用を含む。上記復元用ネットワークは、「美しくない(unclean)」線画、即ちとりわけ視覚的アーティファクト、望ましくない線、鮮明なエッジを有しない線、及び/又はあまりに多くの破線を含む線画で、訓練できる。上記復元用ネットワークは、例えば上記生成用ネットワークの上記出力で訓練できる。上記復元用ネットワークのターゲットは、視覚的アーティファクトを含まず、比較的均一な線しか含まない線画である。例えば、上記生成用ネットワークの訓練に使用される、人が生成した線画を、上記復元用ネットワークの訓練にも使用できる。
【0016】
デジタル画像編集ツールを用いて写真から線画を作成するために、様々な技法が提案されている。例えば、いくつかのデジタル画像編集プログラムは、オブジェクトのエッジを強調してエッジ間の領域を抑制するために適用できる、フィルタを含む。別の例として、デジタル画像編集プログラムは、写真のコントラストを操作する機能を含むことができ、これにより、コントラストの操作及びフィルタの適用によって、オブジェクト及びテクスチャの弱いエッジの強調を押さえながら、強いエッジを強調できる。
【0017】
しかしながら、これらの技法及びその他の技法は、写真の意味的情報を利用しない。人間のアーティストが写真をトレースする場合、アーティストは、どのエッジをトレースし、どのエッジを無視するかに関する選択を行う場合がある。これらの選択は、トレースされているオブジェクトのタイプ、オブジェクトが観察者に対して近いか遠いか、オブジェクトが全景の際立った特徴部分となっているか、及び/又はオブジェクトを高レベルの細部と共にレンダリングすることで、最終的な図面の外観が損なわれるか向上するかといった因子に基づくものとすることができる。例えばテクスチャは、上記テクスチャが画像にとって重要である場合にはトレースしてよいが、上記テクスチャが過剰な細部を導入する、又は全景の重要な特徴部分ではない場合には、除外してよい。これらの因子は、アーティストの判定だけでなく、十分に確立されたベストプラクティスの影響も受ける場合がある。
【0018】
場合によっては、人間のアーティストは更に、写真のある様相を単純化若しくは修正する線、又はハードエッジとは対照的に写真内で勾配として見える線を描画する場合がある。例えばアーティストは、波状のエッジに対して直線を描画する場合があり、又は不連続な複数のエッジを単一の連続した線へと接合してしまう場合がある。これらの例、及びその他の例では、忠実にトレースすると、視覚的に混乱するものとなり得、又は過剰な細部が導入され得る。別の例として、アーティストは、写真ではハードエッジとしてではなく微妙な勾配としてしか見えない場合がある人間の鼻のエッジを描画する場合がある。この例及びその他の例では、写真がハードエッジを含まない箇所に描画された線は、出力される線画が何を表しているかに関する視覚的な手がかりを提供できる。
【0019】
エッジ検出、フィルタリング及び/又は色操作に依存する画像操作技法は、写真の内容の理解を利用しないため、これらの技法は、人間のアーティストが作成するものに近い画像を作成できない場合がある。例えば出力される画像は、アーティストなら省略するエッジを含む場合があり、又はアーティストが簡略化し得るエッジを過剰に忠実に再現する場合がある。別の例として、出力される画像は、エッジ検出のみでは識別が困難であり得る細部、例えば人間の顔の細部を省略する場合がある。場合によっては、出力される画像は、美しい線画ではなくフィルタリングされた写真のように見える。
【0020】
写真からの線画の自動作成は、コンピュータが人間のような決定を行うことを必要とし得るため、本明細書に記載の技法は、この課題を解決するためにニューラルネットワークを適用する。ニューラルネットワーク形成は、コンピュータプロセスが人間の脳の動作を模倣しようとする、人工知能の一分野である。訓練(training)と呼ばれるプロセスを通して、ニューラルネットワークに入力データを提供し、ニューラルネットワークの出力データを、期待出力と比較する。続いて、重み(weight)と呼ばれる、ニューラルネットワークのノードにおける値を、上記出力と、上記期待出力との間の差に応じて調整できる。可能性のある多数の異なるバリエーションを含む入力データのセットを提供することにより、ニューラルネットワークは、ある特定のタスクの実施を学習できる。例えば、とりわけオブジェクトのクラスの認識、発話の認識、及び言語の翻訳を実施するために、ニューラルネットワークの訓練が行われている。訓練後、ニューラルネットワークを、結果が未知であるデータに適用できる。ニューラルネットワークの使用は、推論(inference)と呼ばれる。
【0021】
本明細書に記載のニューラルネットワークは、顔及び身体の写真、並びに/又は建築に関するシーンの写真といった写真で訓練され、期待出力は、上記写真の線画である。このデータセットでニューラルネットワークを訓練する際の課題は、十分な量の訓練用データを得ることである。この期待データは人間のアーティストによって作成されるため、ニューラルネットワークは、上記アーティストが行った決定を行うように学習でき、また上述のように、人間のアーティストにとって線画の作成は時間がかかるものである場合がある。わずかに異なるタスクに関して訓練された2つのニューラルネットワークを使用することにより、限定的な訓練用データセットを用いて得られる結果を改善できる。予備訓練、及び人工的に生成された画像といった、結果を更に改善するための技法についても、本明細書に記載する。
【0022】
本明細書に記載の技法は、従来の方法の限界を克服できる、写真から線画を生成するためのコンピュータ実装型の方法を提供できる。ニューラルネットワークは、写真の内容の意味的理解を得ることができるため、ニューラルネットワークは、ピクセル値のみに依存するのではなく、写真の主題に基づいた決定を行うことができる。更にニューラルネットワークは、訓練用データから、線画の作成にあたってアーティストが行うであろう特定の決定を学習でき、また同一の決定実行プロセスの模倣を試みることができる。その結果、ニューラルネットワークは、人間のアーティストが作成に数時間必要とし得る、人間のアーティストの作品に近い結果を、数秒で作成できる。
【0023】
図1A~1Bは、写真110及びこの写真110の線画112の例を含む。この例では、写真110は、建築に関するシーン、特に路上のシーンである。この文脈において、「建築に関する(architectural)」は、物理的な構造体を含み、また場合によっては関連する要素及び/又は周囲の要素も含む、シーンを指す。建築に関するシーンに含まれ得る物理的構造体の例としては、建造物の外部及び/又は内部が挙げられる。関連する及び/又は周囲の要素の例としては、建造物の外部に関して、とりわけ道路、道路標識、電線、車両、橋梁、並びに樹木、河川及び山といった自然要素が挙げられる。
【0024】
建築に関するシーンの写真は、線画へとレンダリングされる主題の一例である。路上のシーン及び建造物の内部の線画は、例えばコミックブックの背景のシーンとして使用され得る。この例では、漫画家はキャラクターをシーンの中に描画でき、及び/又は上記シーンの特徴部分を着色できる。
【0025】
図1Aの例示的な写真110は、道路沿いの歩道の写真である。写真110は、比較的真っ直ぐで規則的なエッジを有するオブジェクト、例えば建造物、電柱、フェンス、及び歩道の縁部を含む。写真110はまた、不規則な形状及びエッジを有するオブジェクト、例えば樹木及びよしずも含む。写真110は更に、とりわけよしずのテクスチャ、樹木のテクスチャ、プラスチック製のシート、フェンスの木製板といった、多くのテクスチャを含む。
【0026】
図1Bは、本明細書に記載の自動システムを用いて作成された、写真110の線画112を含む。この例によって図示されているように、線画112は、写真110の主要な要素を含み、上記主要な要素としては、建造物、歩道の縁部、フェンス、よしず、日除け、及び観察者付近に位置する自転車が挙げられる。線画112はまた、樹木等の一部の要素を簡略化している。自動システムの訓練において、これらの領域を忠実にトレースすると、過剰な細部が作成されてしまうと判断された可能性がある。あるいは、又は更に、これらの領域の線を最小化することによって、線画112を用いて作業を行うアーティストが、上記領域の処理方法を決定できると判断された可能性がある。線画112は更に、一部のテクスチャを含み、その一方でその他のテクスチャは簡略化されているか、又は除外されている。例えば、フェンスのうち観察者に比較的近い部分は、比較的詳細にレンダリングされているが、遠く離れた部分は部分的にしかレンダリングされていない。別の例として、よしずのテクスチャは、小枝の各エッジ及び陰影を描画するのではなく、この仕切りが小枝の細工であることを示唆する程度にしかレンダリングされていない。
【0027】
図2A~2Bは、写真210及びこの写真210の線画212の別の例を含む。この例では、写真210はポートレート、即ち人物の顔を主に写した人物の写真である。顔又は人物の身体を含む人物の写真は、線画へとレンダリングされる主題の他の例である。人物の線画は例えば塗り絵に使用できる。
【0028】
図2Aの例示的な写真210は、2匹の子猫を抱いた少女を含む。ポートレート写真によくあるように、写真210の背景には焦点が合っておらず、少女及び子猫が視覚的に強調されている。
【0029】
図2Bは、本明細書に記載の自動システムを用いて作成された、写真210の線画212を含む。この例で図示されているように、眼、鼻、口、及びひげを含む、少女及び子猫の際立った特徴部分が描画されている一方、少女の毛髪及び子猫の毛皮といった一部のテクスチャは、大半が空白のまま残されている。更に、背景は完全に除外されている。自動システムの訓練において、写真の一部に焦点が合っていない場合、この一部は描画するべきではないと判断された可能性がある。
図2Bの線画212の場合にはこれが実施された可能性があり、これにより、写真の際立った主題のみがレンダリングされている。
【0030】
図3は、線画を作成するための自動システム300の例を示す図を含む。システム300は、ここでは生成用ネットワーク320と呼ばれるニューラルネットワークを含む。用語「生成用(generator)」は、分かりやすさのみを目的として使用されており、いずれの特定の意味又は機能を含意することを意図したものではない。生成用ネットワーク320は、本明細書では第1のニューラルネットワークとも呼ばれる。
【0031】
様々な例において、生成用ネットワーク320は、写真310を入力として、写真310の線画312を出力する。線画312は、予測図面(predicted drawing)、即ち生成用ネットワーク320によって予測された図面と呼ぶこともできる。訓練中、線画312は、期待結果314と比較される。期待結果314は、グラウンドトゥルース(ground truth)又はターゲット画像と呼ぶこともできる。線画312と期待される結果314との間の差を用いて、生成用ネットワーク320の値を修正できる。生成用ネットワーク320が推論を実施する(例えば生成用ネットワーク320が訓練され、動作する)と、線画312を最終的な結果として出力できる。様々な例において、線画312は、更なる処理を行わずに使用できる程度に十分に美しく、かつ詳細なものとすることができる。この文脈において、「美しい(clean)」は、線画312が、とりわけ汚れ、漂遊及び切断ピクセル、他の視覚的ノイズ、鮮明でない(例えば黒色でなく灰色の陰影である)線、並びに鮮明なエッジではなくぼやけた線を含まないことを意味する。
【0032】
写真310は、ピクセルベースのデジタル画像、即ち、各ピクセルが、色相を表す値、輝度を表す値、色調を表す値、並びに/又はピクセルが色、陰影及び/若しくは濃淡を表現することを可能とする他の値のセットを有する、ピクセルの配列とすることができる。写真310はカラー写真であってよく、従って3つのカラーチャネル(例えば赤、緑及び青)を有してよく、又はグレースケールであってよく、従って(例えば白~黒の値の)1つのカラーチャネルを有してよい。線画312はまた、ピクセルベースの図面とすることもできる。いくつかの例では、線画312中のピクセルは、黒又は白である。いくつかの例では、線画312は、例えばエッジに沿って又は線の端部において、灰色の陰影を有してよい。期待結果314は、白黒ピクセルベースの画像、又はグレースケール画像とすることもできる。
【0033】
様々な例において、生成用ネットワーク320は、写真310のピクセル間の長期の相互作用(long‐range interactions)をモデリングし、小さな線、又は望ましくない線を抑制する。このようなモデルを実装するために、生成用ネットワーク320はまず、第1の段階322及び第2の段階324を含むことができる。エンコーダーと呼ぶこともできる第1の段階322は、構造要素、エッジ、勾配、オブジェクト、オブジェクトの組み合わせ、テクスチャ、及び入力写真310の内容の他の様相といった、入力写真310中の高次の特徴部分を認識するように訓練できる。例えば、第1の段階322は、顔を識別し、顔を特に目、鼻、口及び毛髪に細分化するように訓練できる。別の例では、第1の段階322は、建造物、壁、道路、床、家具等といった建築要素、並びに建築要素の間に見られる場合がある、植物等のオブジェクトを識別するように、訓練できる。第1の段階322の出力は、入力写真310の内容のマッピングとすることができる。上記内容は例えば、写真310の特徴部分をそれぞれ記述する、特徴部分マップと呼ぶことができる複数の行列のセットを用いて表すことができる。特徴部分マップは例えば、エッジ、勾配、オブジェクト、テクスチャ、及び入力写真310の内容の他の様相の場所、並びに場合によっては、サイズ、スケール(例えば観察者からの距離)、密度、複雑さ等といった他の情報も、示すことができる。いくつかの例では、生成用ネットワーク320の訓練に基づいて、特徴部分マップは、テクスチャ又は細部といった情報を省略できる。省略される情報としては、それに関して線が描画されることのない、入力写真310の様相が挙げられる。
【0034】
デコーダーとも呼ぶことができる第2の段階324は、マッピングを使用して、出力される線画312を作成できる。例えば第2の段階324は、第1の段階322によって識別される内容(例えば構造要素、エッジ、勾配、オブジェクト、テクスチャ等)を、上記特徴部分マップによって提供された記述から、デジタル画像のピクセルへと変換でき、ここで、上記特徴部分マップによって、線を描画するべきであるものとして識別された内容に関して、線が描画される。一例として、第2の段階324は、眼、口、又は椅子といった、写真310内の特徴部分を、詳細にトレースするべきオブジェクトとして、関連付けることができる。別の例として、第2の段階324は、毛髪又は植物といった特徴部分を、細部を最小限にして略図を描画するべきオブジェクトとして、関連付けることができる。第2の段階324は、線画312を作成できる。
【0035】
生成用ネットワーク320を訓練するために、システム300は、線画312を、写真310に対応する期待結果314と比較する、同等性関数(equivalency function)326を含むことができる。同等性関数326は例えば、線画312と期待結果314とのピクセル毎の比較を実施して、いずれの差を出力できる。あるいは、又は更に、同等性関数326は、線画312と期待結果314との間の誤差の量を測定する、損失関数又はコスト関数を実装できる。同等性関数326の出力は、生成用ネットワーク320へのフィードバック328として提供できる。フィードバック328内に記述された差又は誤差を、生成用ネットワーク320の複数のレイヤーを通して伝播させることにより、生成用ネットワーク320のノードの重み値を調整できる。これらの重み値を調整することにより、上記差又は誤差を最小化できる。
【0036】
図4は、線画を作成するための自動システム400の別の例を示す図を含む。システム400は、生成用ネットワーク420と呼ばれる第1のニューラルネットワークと、復元用ネットワーク430と呼ばれる第2のニューラルネットワークとを含む。用語「生成用」及び「復元用(restorer)」は、分かりやすさのみを目的として使用されており、いずれの特定の意味又は機能を含意することを意図したものではない。生成用ネットワーク420は第1のニューラルネットワークと呼ばれる場合もあり、復元用ネットワーク430は第2のニューラルネットワークと呼ばれる場合もある。
【0037】
様々な例において、生成用ネットワーク420は、写真410を入力として、写真410から線を抽出する。生成用ネットワーク420は、抽出された線を、中間画像416で出力する。システム400は、中間画像416を復元用ネットワーク430に入力し、この復元用ネットワーク430は完成した線画412を作成できる。訓練中、線画412を期待出力414と比較でき、この比較の結果を生成用ネットワーク420及び/又は復元用ネットワーク430にフィードバックすることにより、ニューラルネットワークの重み値を調整できる。様々な例において、写真410、中間画像416、線画412、及び/又は期待出力414は、ピクセルベースの画像とすることができる。
【0038】
いくつかの例では、中間画像416は、期待出力414と十分に類似しており(例えば20%未満、10%未満、5%未満、又はその他のパーセンテージの差又は誤差しか有さず)、システム400の最終出力として使用できる。いくつかの例では、中間画像416はあまりに大きな差又は誤差を有する場合がある。例えば生成用ネットワーク420は、写真410から粗い線しか抽出できない場合がある。別の例では、(例えば訓練用データセットのサイズを原因として)生成用ネットワーク420が決定を行うために十分な情報を有しないいくつかの領域、又は生成用ネットワークの訓練によって、ある回答が別の回答と同程度に良好であることが示されるようないくつかの領域が存在する場合がある。この例では、生成用ネットワーク420は、保守的で中道的なアプローチを取る可能性があり、これは、汚れた、美しくない、ノイズの多い(例えば漂遊ピクセル、切断ピクセルを有する)、又は鮮明に定義された線を含まない、中間画像416内の領域をもたらす可能性がある。
【0039】
様々な例において、復元用ネットワーク430は、ある程度の所望の線を含み、また視覚的ノイズも含む、グレースケール画像を得て、上記視覚的ノイズを除去するように訓練でき、従って得られる線画412は、鮮明に定義された線のみを含む。例えば復元用ネットワーク430は、隣り合った複数のピクセルを考慮でき、隣り合った複数のピクセルのグループが、切れ目のない美しい線を形成しない場合、復元用ネットワーク430はこれらのピクセルを除去してよい。別の例として、復元用ネットワーク430は、ぼやけており、鮮明でない(例えば灰色である、及び/又は灰色へと退色してゆくエッジを有する)線を識別でき、これらの線を切れ目のない線に変換できる、及び/又はエッジをトリミングできる。復元用ネットワーク430の出力は、システム400からの最終的な結果として提供できる。
【0040】
様々な例において、生成用ネットワーク420は、第1の段階422及び第2の段階424を含む。第1の段階422はエンコーダーと呼ぶことができ、第2の段階424はデコーダーと呼ぶことができる。様々な例において、第1の段階422は、オブジェクト認識及び/又はオブジェクト細分化を実施するよう訓練できる。第1の段階422の出力は、写真410の内容の様々な様相を記述する特徴部分マップのセットにおいてキャプチャされたマッピングとすることができる。第2の段階424は、上記特徴部分マップを中間画像416に変換できる。例えば第2の段階424は、アップサンプリングを実施して、特徴部分マップを写真410のサイズまで復元でき、また特徴部分マップを組み合わせて、中間画像416の線を作成できる。いくつかの例では、生成用ネットワーク420は、
図3に関して説明した生成用ネットワークと同様とすることができる。
【0041】
様々な例において、
図4の復元用ネットワーク430もまた、第1の段階432及び第2の段階434を含む。復元用ネットワーク430の第1の段階432及び第2の段階434もまた、それぞれエンコーダー及びデコーダーと呼ぶことができる。第1の段階432は、線と、線ではなくノイズである画像の特徴部分とを認識するように、訓練できる。第1の段階432は、中間画像416中の線及び視覚的ノイズを記述する、特徴部分マップのセットを作成する。第2の段階434は、上記特徴部分マップを用いて視覚的ノイズを排除でき、及び/又は一部の視覚的ノイズを線に変換できる。復元用ネットワーク430の出力は、線画412であり、これは、切れ目のない黒色の線(又は別の色の線)のみを含んでよく、灰色の領域をほとんど含まなくてよい。
【0042】
生成用ネットワーク420及び復元用ネットワーク430を訓練するために、システム400は、第1の同等性関数426及び第2の同等性関数436を含むことができる。第1の同等性関数426は、中間画像416を期待出力414と比較して、フィードバック428を生成用ネットワーク420に提供できる。第2の同等性関数436は、線画412を期待出力414と比較して、フィードバック438を復元用ネットワーク430に提供できる。いくつかの例では、第1の同等性関数426は、線画412を期待出力414と比較して、生成用ネットワーク420のためのフィードバックを決定する。
【0043】
図5は、復元用ネットワーク530を訓練するためのシステム500の例を示すブロック図を含む。復元用ネットワーク530は、
図4に関して上述されているようなニューラルネットワークである。上述のように、
図5の復元用ネットワーク530は、視覚的ノイズを有する入力線画に関して、上記視覚的ノイズを除去し、主に明確に定義された鮮明な線を含む線画512を出力するよう、訓練できる。
【0044】
上述のように、復元用ネットワーク530は、写真を加工して、粗く定義された線の画像を作成する、別のニューラルネットワークの出力で訓練できる。復元用ネットワーク530によって作成された線画512を、人間が生成した上記写真の線画と比較でき、差を用いて復元用ネットワーク530を訓練できる。しかしながら、線画を手で作成するために時間と労力が必要となるため、写真に関して大量の線画を得るのは困難であり得る。少量の訓練用データセットのみを用いると、復元用ネットワーク530は、高レベルの精度を達成できない場合がある。
【0045】
従って、様々な例において、システム500は、復元用ネットワーク530を、欠陥及び視覚的ノイズが付加された線画で訓練できる。このデータセットからの入力画像は、劣化画像516、合成劣化画像、又は合成画像と呼ばれる。様々な例において、劣化画像516は、いずれの線画を取得し、この図面にデジタルツール及び/又はフィルタを適用して、退色した線、ぼやけた線、及び/又は様々な陰影のピクセルのランダムな散乱を含むランダム領域といった効果を生成できる。このデータセットの作成に使用される線画は、例えば塗り絵、コミックブック、及びテクニカルイラストレーションといった、様々なソースから得ることができる。これらのソースから得られた図面に対応する写真は入手できない場合があるため、これらの図面は、例えば
図4のシステムの訓練には使用できない場合がある。しかしながら、これらの図面は大量に入手できる場合があり、デジタル画像編集ツールを、これらの図面を破損するようにプログラムすることにより、大量の訓練用データセットを作成できる。
【0046】
訓練プロセスでは、劣化画像516の作成に用いたソース線画を、期待出力514として使用できる。上記システムは、同等性関数536を用いて、期待出力514を、復元用ネットワーク530が出力した線画512と比較できる。同等性関数536によって決定された差及び/又は誤差は、フィードバック538として復元用ネットワーク530に提供でき、また復元用ネットワーク530の複数のレイヤーを通して伝播させることにより、復元用ネットワーク530の重み値を、上記差又は誤差が最小化されるように調整できる。
【0047】
これより、上述のシステムの生成用ネットワーク及び復元用ネットワークの例について記載する。
図6は、一般化された例示的なニューラルネットワークアーキテクチャ600を示し、そのバリエーションを用いて、生成用ネットワーク及び/又は復元用ネットワークを実装できる。この例示的なニューラルネットワークアーキテクチャ600は、エンコーダー‐デコーダー構成を有し、エンコーダー622のレイヤーは、畳み込み及び他の演算を実施し、デコーダー624のレイヤーは、デコンボリューション及び他の演算を実施する。
図6の例では、ニューラルネットワークアーキテクチャ600の各レイヤーは、3次元的な正方形で表され、異なるタイプのレイヤーは異なるタイプの網掛けパターンで示されている。更に、正方形のサイズは、入力される特徴部分マップに比例する、各レイヤーが出力する特徴部分マップのサイズを示す。
【0048】
様々な例において、ニューラルネットワークアーキテクチャ600に含めることができるレイヤーとしては、畳み込み640レイヤー、プーリング642レイヤー、ドロップアウト644レイヤー、アップサンプリング646レイヤー、及びデコンボリューション648レイヤーが挙げられる。
図6のニューラルネットワークアーキテクチャ600はまた、ソフトマックス650レイヤーを最後のレイヤーとして含む。ニューラルネットワーク600は更に、とりわけ完全に接続されたレイヤー、又はリカレントレイヤーといった、ここで図示されていない他のレイヤーを含むことができる。最初のレイヤー以外の各レイヤーは、1つ前のレイヤーの出力に対して動作する。最初のレイヤーは、ニューラルネットワークへの入力に対して動作し、また最後のレイヤーは最終的な結果を出力する。入力データは、とりわけある画像中のピクセル値、あるオーディオセグメント中の音、又は単語若しくは単語の断片といった情報を表す値の行列であってよい。レイヤーへの入力は、入力特徴部分マップと呼ぶことができ、またレイヤーの出力は、出力特徴部分マップと呼ぶことができる。
【0049】
畳み込み640レイヤーは、1つ以上の入力特徴部分マップに対して畳み込みを実施する。畳み込みは、入力特徴部分マップに対するフィルタの適用を伴うことができ、このフィルタ及び入力特徴部分マップはそれぞれ、行列である。フィルタは、線、エッジ、曲線、隅、しみ、隆起等といった特定の特徴部分を、入力特徴部分マップから抽出するよう構成できる。フィルタは、カーネル、又は特徴部分デコーダーと呼ぶこともできる。畳み込みレイヤーは、2つ以上のフィルタを、入力特徴部分マップの同一のセットに対して適用してよい。
【0050】
ニューラルネットワークアーキテクチャ600では、畳み込み640レイヤーは、畳み込みの結果に対して、バッチ正規化及び非線形性の適用といった、追加の演算を実施できる。バッチ正規化は、あるレイヤーの出力値を制限して、訓練中のニューラルネットワークの安定性を改善できる。出力値を制限することによって、後続のレイヤーは、極端な値で訓練されることがなく、従ってネットワーク全体の訓練を更に迅速に実施できる。非線形性は、いくつかの畳み込み演算の後に付加できる。畳み込みは線形演算であり、いくつかの例では、畳み込み型ニューラルネットワークが学習することになる現実世界のデータが非線形であることが想定される。よって、要素毎に、非線形関数を、畳み込みからの出力特徴部分マップに対して適用できる。このような非線形関数は、正規化線形関数(Rectified Linear Unit :ReLU)によって提供され、その出力はOutput=Max(0,Input)で与えられる。他の非線形関数としては、tanh関数及びシグモイド関数が挙げられる。
【0051】
ニューラルネットワークアーキテクチャ600のエンコーダー622では、畳み込み640レイヤーのセットに、プーリング642レイヤーが続いている。サブサンプリング又はダウンサンプリングと呼ぶこともできるプーリングは、最も重要な情報を保持したまま、特徴部分マップの次元を低減できる。例えばプーリングは、特徴部分マップの行列中の値の領域(例えば2×2近傍、又は別のサイズの近傍)を取得するステップ、及び上記領域内の上記値にわたる最大値を決定するステップを含むことができる。あるいは、アベレージ関数、サム関数又は別の関数をプーリング関数として使用できる。プーリングを用いて、入力される表現の空間的サイズを漸減させることができる。例えばプーリングにより、入力される表現(例えば特徴部分の次元)を、より小さく、より管理しやすくすることができる。別の例として、プーリングは、パラメータ、及びニューラルネットワークが実施する必要がある計算の数を減少させることができる。別の例として、プーリングは、ニューラルネットワークを、入力画像のわずかな変換、歪み又は翻訳に対して不変とすることができる。即ち、最大値(又は平均、若しくは合計、若しくは他の何らかの演算)はローカルな近傍で行われるため、入力のわずかな歪みは、プーリングの出力を変化させない。更なる例として、プーリングは、画像の、スケールが略不変の表現(同変表現(equivariant representation)と呼ばれる)の決定を支援できる。これは例えば、あるオブジェクトを、ある画像内において、上記オブジェクトが上記画像内のどこにあるかに関係なく検出できることを意味する。
【0052】
エンコーダー622は更に、ドロップアウト644レイヤーを含むことができる。ドロップアウトレイヤーは、過剰適合の問題を低減する。過剰適合は、ニューラルネットワークが訓練用データ中の細部及びノイズを学習し、上記細部及びノイズが全ての状況に当てはまらない場合に、発生する。過剰適合は、ニューラルネットワークが新たなデータを学習するのを妨げる場合がある。ドロップアウトレイヤーは、ノードの着信方向及び発信方向の接続を含み、従ってレイヤーの出力の平均化の結果を近似する、レイヤー中のノードを一時的に除去することによって、過剰適合の問題を低減する。
【0053】
プーリングは、特徴部分マップの分解能を低減し、従ってデコーダー624レイヤーは、特徴部分マップを再び、元の入力のサイズにリサイズするための、アップサンプリング646レイヤーを含む。アップサンプリング646は、とりわけ最近傍、双線形、双三次スプライン、又は一般化双三次補間といった、異なるタイプの補間を実施できる。
【0054】
デコーダー624のデコンボリューション648レイヤーは、畳み込み640レイヤーによって畳み込まれた入力特徴部分マップを「復元(restore)」するための逆畳み込みを実施する。デコンボリューション演算は、入力特徴部分マップを完全に復元する試みでなくてよく、入力特徴部分マップの畳み込みに使用したものとは異なるフィルタを用いて、入力特徴部分マップの変更バージョンを復元してよい。デコンボリューション648レイヤーは、デコンボリューションの結果のバッチ正規化、及び/又は非線形性の適用も含むことができる。
【0055】
ソフトマックス650レイヤーは、ソフトマックス関数を適用して、最後から2番目のレイヤーの出力を確率分布に正規化できる。確率分布は、ニューラルネットワークが出力を予測するよう訓練された複数のクラスにまたがってよい。例えば、ニューラルネットワークが猫の画像を認識するように訓練されている場合、ソフトマックスは、入力画像が猫を含む又は含まない確率を出力できる。ニューラルネットワークアーキテクチャ600では、ソフトマックスを用いて、ピクセル値の確率、例えばある特定のピクセルをある色にするべきか別の色にするべきか等を、出力できる。様々な例において、シグモイド関数等の、ソフトマックス以外の関数を、最後のレイヤーで使用できる。
【0056】
表1は、生成用ネットワークに関する例示的な構成を示す。この例では、生成用ネットワークの第1の段階(例えばエンコーダー)は、ResNet‐50ニューラルネットワークを用いて実装されており、これは、オブジェクト分類のために構成された、深さ50レイヤーの畳み込み型ニューラルネットワークである。いくつかの例では、ResNet‐50の一部分、例えば最初の20、30、40又は他の何らかの個数のレイヤーを使用する。例えば、conv3_4レイヤーまでのレイヤーを使用できる。他の例では、他のニューラルネットワークを使用でき、又はカスタム構成のニューラルネットワークを使用できる。表1に示されている残りのレイヤーは、第2の段階(例えばデコーダー)のためのものである。
【0057】
【0058】
表1の例では、ResNet‐50ネットワークの出力は、512個の行列を含み、これらは、出力画像の分解能の1/8を有する。ダウンスケーリングは、畳み込み型ニューラルネットワークの頻繁に現れる特徴である。というのは、512個の特徴部分マップはそれぞれ、入力画像の1つの特定の様相に焦点を合わせているためである。後続のレイヤーは、特徴部分マップを元の入力サイズにアップスケールし、ResNet‐50によって識別された複数の異なる特徴部分を、単一の望ましい特徴部分(例えば1つの線画)へと組み合わせる。様々な例において、生成用ネットワークの出力中の値は、0~1の範囲内(0、1を含む)である。
【0059】
表2は、復元用ネットワークに関する例示的な構成を示す。この例によって示されるように、復元用ネットワークの第1の段階(例えばエンコーダー)は、それぞれ入力画像の1/8のサイズを有する256個の特徴部分マップを作成する。第2の段階(例えばデコーダー)は、これらの特徴部分マップを複数のステージでアップサンプリングし、近傍のピクセルを考慮するフィルタを適用する。様々な例において、復元用ネットワーク430の出力中の値は、0~1の範囲内(0、1を含む)である。
【0060】
【0061】
生成用ネットワーク、又は生成用ネットワークと復元用ネットワークとの組み合わせを、データセットDtrainで訓練できる。この訓練用データセットは、カラー写真xとターゲット線画yとのペアを含むことができる。カラー写真xは、x∈R3×W×Hとすることができ、即ち各xは、幅W及び高さHを有する実数の3つ(赤色、青色及び緑色チャネルそれぞれに関して1つ)の行列を含むことができる。更に、又はあるいは、いくつかの例では、Dtrainは、幅W及び高さHの実数の1つの行列を有する、グレースケール画像を含むことができる。線画yは、y∈R1×W×Hとすることができ、即ち各yは、幅W及び高さHを有する実数の1つの行列を有することができる。生成用ネットワークの出力は、グレースケール画像G(x)∈R1×W×Hである。復元用ネットワークの出力もまた、グレースケール画像R(G(x))∈R1×W×Hである。
【0062】
図7は、D
trainデータセットに含めることができる、サンプル写真710及び線画712の表700を含む。この例示的な表700では、写真710は、顔及び身体の全体又は一部分を含む、人物の画像を含む。これらの写真は、602×602ピクセル~1,946×2,432ピクセルとすることができ、又はこの範囲より大きくも小さくもすることができる。線画712は、人間のアーティストが作成できる。データセットのサイズを増大させるために、このデータセットは更に、写真710から切り取った顔と、これに対応する線画712からの領域とを含む。表700が示すデータセットは例えば、写真と線画との138個のペアを含むことができる。
【0063】
表700に示されているデータセットで訓練されたニューラルネットワークは、期待出力(線画712)のスタイル及び内容が一貫していれば、更に効果的に訓練できる。従って、線画を生成したアーティストは、線画のサンプルのセットによって表されているように、ある1人のアーティストのスタイルに従うように指示された。更にアーティストは、焦点が合っていない領域(例えば背景)を無視するように、及び/又は背景の重要な部分(例えば水平線若しくは家具)に関して線を描画するように、指示された。異なるスタイルを有する異なる複数のアーティストの影響を低減するために、アーティストは、毛髪等の複雑なテクスチャを有する領域に関して、略図を提供するようにも指示された。
【0064】
図8は、D
trainデータセットに含めることができる、サンプル写真810及び線画812の別の表800を含む。この例示的な表800では、写真810は建築に関するシーンを含み、上記シーンはこの場合、建造物及び路上のシーンを含む。ここでは図示されていないが、このデータセットは屋内のシーンを含むこともできる。写真810は、3,750×5,000ピクセル~17,008×11,304ピクセルのサイズとすることができ、又はこの範囲より大きくも小さくもすることができる。表800に示されているデータセットは例えば、写真と線画との174個のペアを含むことができる。
【0065】
表800の複数の線画812の間に一貫性を持たせるために、アーティストは、テクスチャ及び群葉等の要素に関して指示を受けていてもよい。例えばアーティストは、全てのテクスチャを無視するように、又はあるテクスチャが前景にある場合若しくはその他の理由でシーンの中で重要となっている場合にはそのテクスチャを描画するように、指示されていてよい。別の例では、アーティストは、樹木及び茂みといった群葉について略図を描画するように指示されていてよい。
【0066】
いくつかの例では、生成用ネットワーク又は生成用ネットワークと復元用ネットワークとの組み合わせのあるインスタンスを、
図7に示されているデータセットで訓練でき、異なるインスタンスを表8に示されているデータセットで訓練できる。これらの例では、第1のインスタンスを、顔及び身体の線画の生成に特化でき、第2のインスタンスを、建築に関するシーンの線画の生成に特化できる。いくつかの例では、生成用ネットワーク又は生成用ネットワークと復元用ネットワークとの組み合わせを、
図7、8に示されている両方のデータセットで訓練できる。いくつかの例では、1つの又は組み合わされたニューラルネットワークは更に、車両、風景、動物、スポーツイベント等といった、人物及び建造物以外の画像を含む、追加のデータで訓練できる。
【0067】
ニューラルネットワークを訓練するステップは、(人間が作成するはずの結果をニューラルネットワークが予測していることから)予測と呼ぶことができる、ニューラルネットワークの出力と、グラウンドトゥルースとも呼ぶことができる、ターゲットである結果との間の差を計算するステップを含むことができる。この差は例えば、損失関数又はコスト関数を用いて計算できる。例えば、加重損失LWL1は、以下のようにして計算でき、ここでaは予測された画像を表す行列であり、bはターゲット画像を表す行列である:
【0068】
【0069】
上の式1では、重み付けハイパーパラメータγが、予測画像の行列に適用される。この重み付けハイパーパラメータは、空白全体にわたる複数の線に対してどの程度の重要度が与えられるかを制御できる。γがゼロに等しい場合、式(1)は、aとbとの間に平均絶対誤差を生成する。γの適用によって得られた行列を、ターゲット画像から予測画像を減算して生成された行列に乗算する。
【0070】
式1の損失関数は、ベースラインモデルの加重損失を計算する以下の式に従って、生成用ネットワークの出力G(x)を予測画像として使用し、かつxに対応する線画yをターゲット画像として使用することにより、生成用ネットワークに適用できる:
【0071】
【0072】
式2の結果をフィードバックとして用いて、生成用ネットワークを訓練できる。
【0073】
いくつかの例では、生成用ネットワークの最適化バージョンを、以下の式に従って生成できる:
【0074】
【0075】
式3では、生成用ネットワークのタスクを実施するために達成可能な最良の重みを、Lbaseで示される損失を最小化することによって決定でき、ここで、式2に示されているように、損失関数は、生成用ネットワークの出力を期待出力と比較する。式3の最適化は例えば、逆伝播又は別のタイプの最適化方法を用いて勾配降下を行うことにより、実施できる。
【0076】
本明細書において補助損失(auxiliary loss)と呼ばれるものを計算する以下の式に従って、式1の損失関数を、生成用ネットワーク及び復元用ネットワークの出力の組み合わせR(G(x),y)に適用できる:
【0077】
【0078】
式4の結果をフィードバックとして使用して、生成用ネットワークと復元用ネットワークとの組み合わせを訓練できる。補助損失関数は、訓練を安定化するために使用できる。
【0079】
上述のように、復元用ネットワークは、ターゲット画像を表現した線画を修正又は破損することによって作成された合成劣化線画で、別個に訓練できる。劣化線画yは、y*∈R1×W×Hとすることができる。
【0080】
様々な異なるアルゴリズムをy画像に適用して、y*画像を作成できる。例えば、等式:
【0081】
【数5】
を用いて退色を適用でき、ここでσ∈[0.0,1.0]であり、これは、白色のピクセルを修正しないまま残し、黒色のピクセルを灰色の陰影に変化させるという結果をもたらすことができる。別の例では、標準偏差σ∈[0.0,1.0]の2次元ガウスフィルタを適用することによって、線画の一部をぼやけさせることができる。別の例では、線画のランダムな領域をピクセルで埋めることができる。例えば、16×16ピクセル~40×40ピクセルのサイズの、10~50個の領域を、(量、サイズ及び位置に関して)ランダムに選択でき、並びに/又は2×2ピクセル~16×16ピクセルのサイズの、100~500個の領域を選択できる。この例では、選択された領域それぞれに関して、退色、ピクセルの白色への変更、又はy*=σy+(1-σ)t(ここでσ∈[0.0,1.0])に従ったテクスチャtの生成といったランダムな演算を実施できる。この後者の場合には、テクスチャを、画像編集ツールによって生成できるテクスチャ(例えば雲のテクスチャ)からランダムに切り取ることができる。いくつかの例では、y*画像は訓練中に生成でき、上述の演算はランダムに適用され、及び/又は組み合わされる。
【0082】
式1の損失関数は、劣化画像y*で復元用ネットワークを訓練する場合、復元用ネットワークの出力にも適用でき、これは復元損失と呼ばれる:
【0083】
【0084】
復元用ネットワークを劣化画像データセットで訓練する場合に、式5の結果をフィードバックとして使用できる。
【0085】
いくつかの例では、マルチタスク学習を採用して、抽出及び改良プロセスのパフォーマンスを同時に改善できる。マルチタスク学習は、復元用ネットワークをy*で訓練するのと同時に、生成用ネットワーク、及び生成用ネットワークと復元用ネットワークとの組み合わせを、x、yで訓練するステップを含むことができる。同時損失関数は、以下のように計算できる:
【0086】
【0087】
式6では、α、βはハイパーパラメータである。
【0088】
いくつかの例では、生成用ネットワークと復元用ネットワークとの組み合わせの最適化バージョンを、以下の式に従って生成できる:
【0089】
【0090】
式4では、生成用ネットワークと復元用ネットワークとの組み合わせのタスクを実施するための、得られる最良の重みを、どのネットワークが同時損失関数Ljointの期待値を最小化するかを決定することによって、決定できる。この同時最適化は例えば、逆伝播を用いて実施でき、ここでは、期待出力と実際の出力との間の差を、ネットワークを通して逆伝播させ、期待出力と実際の出力との間の誤差又は差が最小化されるように重みを更新する。様々な例において、最適化は、コストの期待値が最小化されるよう、多数の画像を用いて実施される。
【0091】
いくつかの例では、式7によって記述されているように、最適化された、生成用ネットワークと復元用ネットワークとの組み合わせを、学習率1.0×10
-4及びバッチサイズ4で、10000回反復して同時に訓練した。
図7に示されているデータセットに関して、ハイパーパラメータをγ=2に設定し、
図8に示されているデータセットに関して、ハイパーパラメータをγ=0に設定した。式6に関するハイパーパラメータは、(α,β)=(0.1,10.0)に設定した。
【0092】
いくつかの例では、生成用ネットワークのパフォーマンスを、生成用ネットワークの第1の段階を予備訓練することによって更に改善できる。例えば、上記第1の段階は、ImageNetデータベース等の、オブジェクト認識のための入手可能なデータセットを用いて、オブジェクト認識及び/又は細分化に関して訓練できる。一例として、上記第1の段階は、顔認識及び/又は細分化に関して訓練できる。この例では、第1の段階は第2の段階とは別個のものとすることができ、このデータセットで独立して訓練できる。第1の段階の訓練後、第1の段階と第2の段階との組み合わせを、Dtrainデータセットで訓練できる。予備訓練を用いたため、第1の段階は調整をほとんど必要としなくてよく、オブジェクト識別及び/又は細分化に関して比較的正確なものであり得る、第2の段階のための入力を生成できる。従ってこの訓練は、第2の段階の調整に焦点を当てることができ、第2の段階をより迅速かつより正確に訓練できる。
【0093】
いくつかの例では、上述の式3を、生成用ネットワークの予備訓練時に適用した。生成用ネットワークを、学習率1.0×10-3及びバッチサイズ8で、30000回反復して訓練した。
【0094】
訓練用データセットDtrainは、線画yの取得の困難さから、小さなものとなり得る。いくつかの例では、写真と線画とのいくつかのペアを複製して、コピーに修正を適用することによって、訓練用データセットを増強できる。例えばコピーされたペアを(例えば元のサイズの0.5~1.5倍若しくは別の範囲で)拡大縮小する、左右反転させる、(例えば元の配向から-0.25~0.25の範囲若しくは別の範囲で)回転させる、及び/又は(例えば384×384若しくは別のサイズに)切り取ることができる。あるいは、又は更に、コピーされた写真のコントラスト、サチュレーション、色相、及び/又は輝度を修正できる。
【0095】
建築に関するシーンの線画を作成するのは特に時間がかかる場合がある。従っていくつかの例では、様々な街の3次元モデルから写真を生成することによって、データセットを拡大できる。上記3次元モデルを加工して、モデル内に輪郭の略図を作成できる。このプロセスは、写真と対応する線画との間にミスマッチを生成する場合があるが、これは人間のアーティストによって補正できる。あるいは、又は更に、MASKアノテーションm∈R
1×W×Hを用いて誤差を示すことができ、ここでmは、(例えば値1又は0をそれぞれ用いて)ある位置が有効であるか又は無効であるかを示す。いくつかの例では、
図8に示されているデータセットは、このようにして生成された、写真と線画との92個のペアと、線画を人間のアーティストが生成した、写真と線画との82個のペアとを含むことができる。
【0096】
いくつかの例では、MASKアノテーションを含めるために、加重損失関数を以下のように修正できる:
【0097】
【0098】
いくつかの例では、復元用ネットワーク及び/又は生成用ネットワークと復元用ネットワークとの組み合わせの訓練を、敵対的生成ネットワーク(Generative Adversarial ネットワーク:GAN)技法を用いて増強できる。この例では、入力線画が人間によって作成されたものか機械によって作成されたものかを認識するために、(決定ネットワーク(determinative network)と呼ばれる)別個のネットワークを構成できる。決定ネットワークの結果を、復元用ネットワーク又は組み合わせたネットワークにフィードバックでき、その訓練の目的は、決定ネットワークの誤差率を増大させる(例えば決定ネットワークを「騙して(fool)」、復元用ネットワーク又は組み合わせたネットワークが作成した線画を、人間が作成したものと決定させる)ことである。
【0099】
推論を実施する際、線画を作成するための自動システム(例えば生成用ネットワークと復元用ネットワークとの組み合わせ)は、いずれのサイズの写真を入力とすることができる。以下の表3は、様々なサイズの画像に対するシステムの実行時間の例を示す。
【0100】
【0101】
様々な例において、線画を作成するための自動システムのユーザは、入力写真を修正することによって出力に影響を及ぼすことができる。例えば、ユーザが入力写真のスケールを(例えばダウンスケーリングによって)低下させると、システムは、微小な細部を比較的少数しか生成できない。別の例としてユーザは、写真のある領域を選択して、上記領域をぼやけさせるフィルタを適用でき、これにより、上記領域は焦点が合っていないように見える。この例では、システムはぼやけた領域を無視でき、上記領域に線を生成しない。別の例として、線画を作成するための自動システムを含む画像編集ツールにより、ユーザは、線画が適用されることになる領域の選択、及び/又は線画が適用されない領域の選択が可能となる。
【0102】
図9A~9Dは、上述の技法を含む、線画の自動生成のための異なるシステムに、例示的な写真910を入力した結果の例を示す。
図9Aは、3つの異なるシステムへの入力として使用した、例示的な写真910を示す。
【0103】
図9Bは、画像‐画像変換のための条件付き敵対ネットワークを使用するシステムである、Pix2pixの出力902を示す。Pix2Pixは、敵対学習を使用して、入力‐出力間マッピングを学習し、また損失関数を使用してこのマッピングを達成する。
【0104】
図9Cは、エッジ検出器であるCannyの出力904を示す。
【0105】
図9Dは、上述の生成用及び復元用ネットワークの出力906を示す。
【0106】
図10A~10Dは、線画の自動生成のための異なるシステムに、例示的な写真1010を入力した結果の例を示す。
図10Aは、3つの異なるシステムへの入力として使用した、例示的な写真1010を示す。
【0107】
【0108】
図10Cは、エッジ検出器であるCannyの出力1004を示す。
【0109】
図10Dは、上述の生成用及び復元用ネットワークの出力1006を示す。
【0110】
場合によっては、Cannyはグローバルイルミネーションに敏感であり、テクスチャのような線を作成する傾向がある、また影になった領域のほとんどの線を無視することがある。Pix2pixはこれらの問題を有しないものの、あまりに多くの短く望ましくない線、ノイズ、及び強度が一貫しない線を生成する。
【0111】
線画を生成するための自動システムの出力は、コミックブック(漫画形式のコミックブック等)及び塗り絵の作成といった、様々な用途で使用できる。
【0112】
様々な例において、漫画形式のコミックブックの画面は、少なくとも2つのレイヤー:線画、及びハーフトーンスクリーンを含むことができる。線画は画面の背景を提供する。ハーフトーンスクリーンは、テクスチャ及び影といった視覚効果を含む、事前に定義されたパターンを含むことができる。アーティストは、写真からシーンをコピーすることによって線画を作成してよいが、線画を生成するためのシステムに写真を入力することによって、時間をかなり節約できる。自動生成された線画をアーティストが得ると、アーティストは線を追加若しくは除去でき、及び/又はスタイルの変更を加えることができる。次にアーティストは、微小な細部を表現するために、ハーフトーンスクリーンレイヤーを追加できる。
【0113】
塗り絵は、ユーザがとりわけ鉛筆、クレヨン及び/又は塗料といった媒体を用いて色を付加できる線画画像を含む本である。デジタル塗り絵では、ユーザは、選択した色で満たすために領域を選択することにより、色を付加できる。塗り絵の作成は、線画を生成するための自動システムの使用によって高速化できる。
【0114】
いくつかの例では、線画を作成するための自動システムの出力を、画像からベクトルフォーマットへの変換といった更なる編集に使用できる。様々な技法を用いて、ピクセルベースの画像をベクトルベースの画像に変換できる。これらの技法により、ユーザは、ベクトル化された画像の忠実度、及び得られる画像の単純さ又は複雑さを調整できる。
【0115】
図11は、線画の自動生成のためのプロセス1100の例を示すフローチャートを含む。例示的なプロセス1100は例えば、1つ以上のプロセッサと、上記1つ以上のプロセッサによって実行された場合に、上記1つ以上のプロセッサにプロセス1100の複数のステップを含む動作を実施させる命令を含む、非一時的コンピュータ可読媒体とを含む、計算デバイスによって、実施できる。あるいは、又は更に、非一時的コンピュータ可読媒体は、計算デバイスの1つ以上のプロセッサによって実行された場合に、上記1つ以上のプロセッサにプロセス1100の複数の演算を実施させる命令を、保存できる。様々な例では、計算デバイスは、プロセス1100の複数のステップを実施する際に使用できる、ニューラルネットワークを実行する。
【0116】
ステップ1102では、プロセス1100は、デジタル画像をニューラルネットワークに入力するステップを含み、上記デジタル画像は写真を含む。いくつかの例では、デジタル画像は、ニューラルネットワークの訓練のために、ニューラルネットワークに入力される。いくつかの例では、デジタル画像は、デジタル画像に対して推論を実施するため、即ち上記画像の内容の線画を作成するために、入力される。
【0117】
ステップ1104では、プロセス1100は、写真を識別するステップを含む。上記内容としては、オブジェクト、オブジェクトの組み合わせ、テクスチャ、エッジ、勾配、輪郭、及び/又は上記写真の他の様相が挙げられる。いくつかの例では、オブジェクトは、人物又は建築構造物の一部を含む。いくつかの例では、写真は、野外のシーン又は建造物の内部の写真である。
【0118】
様々な例において、ニューラルネットワークは、デジタル写真と上記デジタル写真のデジタル線画とを含むデータセットで訓練される。上記デジタル線画は、デジタル写真中のオブジェクトのエッジ及び特定の特徴部分のための線を含むことができる。例えば、特定の特徴部分のための線は、オブジェクトの認識を支援できる。別の例では、特定の特徴部分のための線は、オブジェクトの複数の部分に対して、形状又は明確さを提供する。いくつかの例では、特定の特徴部分は、上記オブジェクトが上記デジタル写真の前景にある場合には、テクスチャを含む。いくつかの例では、特定の特徴部分はテクスチャを除外する。
【0119】
いくつかの例では、プロセス1100更に、ニューラルネットワークからの出力を、第2のニューラルネットワークに入力するステップを含むことができる。これらの例では、第2のニューラルネットワークは、グレースケールデジタル画像からデジタルアーティファクトを除去して、2色調デジタル画像を出力するよう訓練できる。この文脈において、「2色調(two‐tone)」は、出力されるデジタル画像の背景が、ほとんどの場合は均一な、ある1つの色(例えば白色又は別の色)であり、写真の内容を図示するために描画された線は第2の色(例えば黒色又は別の色)であることを意味する。これらの線は、均一な1色であってよく、又は線の縁部等において、上記1つの色の勾配を含んでよい。いくつかの例では、第2のニューラルネットワークは、上記ニューラルネットワークとは別個に、線画及び上記デジタル線画のコピーのデータセットで訓練され、上記コピーは、デジタル的に付加されたアーティファクトを含む。これらの例及びその他の例では、第2のニューラルネットワークは上記デジタル線画を出力できる。
【0120】
ステップ1106では、プロセス1100は、モデルを上記内容に適用するステップを含み、上記モデルは、ニューラルネットワークのために構成されている。モデルは、上記内容を図示するための単色の線を描画するための第1の特徴部分のセットを抽出するための、第1のパラメータを有することができる。モデルは更に、線が描画されるべきでない第2の特徴部分のセットのための第2のパラメータを有することができる。
【0121】
ステップ1108では、プロセス1100は、第1の特徴部分のセットをデジタル画像から抽出し、第2の特徴部分のセットをフィルタリングするステップを含む。第1の特徴部分のセットは、写真中のオブジェクトのエッジ、上記オブジェクトのテクスチャ、並びに/又は上記オブジェクトの識別を支援する若しくは上記オブジェクトに形状及び/若しくは明確さを提供する、上記オブジェクトの様相を含むことができる。第2の特徴部分のセットは、上記オブジェクトのテクスチャ、及び/又はモデルが無視すると決定するべき微小な細部を含むことができる。
【0122】
ステップ1110では、プロセス1100は、上記第1の特徴部分のセットのための線のセットを生成するステップを含み、上記線のセットは、上記内容の複数の様相をトレースする。上記線のセットは、幅にわたって略均一とする(例えば特に、最小幅1ピクセルを超えず、かつ最大幅が2ピクセルを超えないものとする、若しくは幅をわずか2ピクセルとする)ことができ、及び/又は最小の長さを有することができる。
【0123】
ステップ1112では、プロセス1100は、上記デジタル画像のデジタル線画を出力するステップを含み、上記デジタル線画は、上記線のセットを含む。上記デジタル線画は2色調デジタル画像であり、上記線のセットが第1の色調であり、背景が第2の色調であり、上記線のセットは幅が略均一である。
【0124】
図12は、線画を生成するための自動システムを実装する画像編集プログラムを実行できる計算デバイス1200の例を示すブロック図を含む。計算デバイス1200は例えば、とりわけデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、又はスマートフォンとすることができる。例示的な計算デバイス1200は、とりわけプロセッサ1202、システムメモリ1214(プロセッサメモリ又はメインメモリと呼ぶこともできる)、周辺デバイス1204、及び1つ以上のネットワークインタフェース1218を含む、様々なハードウェア構成要素を含むことができる。動作時、計算デバイス1200はまた、オペレーティングシステム1216及びアプリケーション1212といったソフトウェア構成要素も含むことができる。計算デバイス1200はまた、非動作時に、とりわけ計算デバイス1200の他のメモリデバイス上にファームウェアとして保存されたソフトウェア、及び/又はストレージデバイス1206に保存されたソフトウェアといったソフトウェア構成要素も含むことができる。
【0125】
プロセッサ1202は、プログラム命令を実行できる集積回路デバイスである。プログラム命令は、オペレーティングシステム1216及び/又はアプリケーション1212を実行するためのものとすることができる。上記命令は、プロセッサ1202によって実行されると、プロセッサ1202に、上記プログラムの操作を実施させる。上記命令は、プロセッサ1202によって実行されると、場合によっては命令によって操作されるデータと共に、システムメモリ1214に保存される。システムメモリ1214は、ランダムアクセスメモリ(RAM)タイプ等、揮発性メモリストレージタイプとすることができる。システムメモリ1214は、ダイナミックRAM(DRAM)と呼ばれる場合もあるが、DRAMベースの技術を用いて実装する必要はない。更に、システムメモリ1214は、フラッシュメモリ等の不揮発性メモリタイプを用いて実装できる。
【0126】
周辺デバイス1204は、計算デバイス1200に機能を追加できるハードウェア構成要素を含むことができる。
図12に示す例では、周辺デバイス1204は、ストレージデバイス1206及び入力/出力デバイス1208を含む。ストレージデバイス1206は、とりわけ光学若しくは磁気ディスク、又はソリッドステートドライブといった、不揮発性ストレージデバイスを含むことができる。ストレージデバイス1206は、内部のものとすることができ(例えば図示された他の構成要素と同一のシャーシ内に設置でき)、又は外部のものとすることができる(例えば別個のエンクロージャ内にあり、ケーブルを用いて計算デバイス1200に接続できる)。いくつかの例では、ストレージデバイス1206はネットワーク1250上に配置できる。入力/出力デバイス1208は、情報をユーザに表示できるようにし、計算デバイス1200にデータを入力するために使用される、様々なデバイス、及び/又はデバイスのためのコネクタを含むことができる。例えば入力/出力デバイス1208は、とりわけ表示デバイス(例えばスクリーン若しくはモニター)、スピーカー、ヘッドフォン、及び/又はプリンターを含むことができる。更に入力/出力デバイス1208は、とりわけキーボード、マウス、タッチスクリーン、デジタル化タブレット、マイクロフォン、モーションセンサー、及びスキャナを含むことができる。周辺デバイス1204は、グラフィックアクセラレータ等の、ここで図示されていない他のデバイスを含むことができる。
【0127】
周辺デバイスの1つのタイプでもあるネットワークインタフェース1218により、計算デバイス1200はネットワーク1250と通信できる。ネットワークインタフェース1218は例えば、ネットワークケーブルを接続するためのソケット、及び/又は無線ネットワークと通信するためのアンテナを含むことができる。ネットワークインタフェース1218が2つ以上のインタフェースを含む場合、計算デバイス1200は、異なる複数のネットワークと同時に通信できる。ネットワーク1250は、プライベート(例えばファイヤーウォール設定され、認証資格情報を用いなければアクセスできない)ネットワーク、及び/又はインターネット等のパブリックネットワークを含むことができる。
【0128】
計算デバイス1200の操作は、オペレーティングシステム1216によって協調及び制御できる。オペレーティングシステム1216は例えば、プロセッサ1202に、
図12に図示されている例示的なアプリケーション1212等の、ユーザによって起動されたアプリケーションをロードさせて実行させることができる。更なる例として、オペレーティングシステム1216は、計算デバイス1200上で実行されるアプリケーションによる、計算デバイス1200のハードウェアへのアクセス及び上記ハードウェアの使用を制御できる。
【0129】
図12の例示的なアプリケーション1212は、この例では線画エンジン1232として実装された、線画を生成するための自動システムを含む、画像編集プログラムとすることができる。従ってアプリケーション1212は、ユーザが編集のために画像をロードできるエディタ1210を含む。画像は、計算デバイス1200のストレージデバイス1206のうちの1つに保存された画像ファイル1222からロードしてよい。あるいは、画像ファイル1222は、あるネットワーク位置から、ネットワークインタフェース1218を介してロードしてよい。一旦ロードすると、上記画像のための画像ファイル1222は、システムメモリ1214内にも存在できる。
【0130】
画像ファイル1222は写真1234を含むことができ、これは、画像ファイル1222をエディタ1210にロードすると、エディタ1210で視認できる。様々な例において、エディタ1210は、ユーザが写真1234を線画エンジン1232に入力できるようにする、ツール、オプション、メニュー、又は別のオンスクリーンコントロールを含むことができる。線画エンジン1232は、写真1234中のオブジェクト及び上記オブジェクトの特徴部分を識別して、上記オブジェクトのための線を含む線画1236を作成するよう訓練された、上述の生成用ネットワーク等のニューラルネットワークを含むことができる。いくつかの例では、線画エンジン1232は、オブジェクトの細分化及び線画の作成のために訓練された第1のニューラルネットワーク(例えば生成用ネットワーク)と、グレースケール画像からデジタルアーティファクトを除去して、主に線を含み、漂遊ピクセル、影になった領域、又は極めて短い線を実質的に含まない、線画を出力するよう訓練された、第2のニューラルネットワーク(例えば上述の復元用ネットワーク)とを含む。
【0131】
いくつかの例では、線画エンジン1232はアプリケーション1212の構成要素であり、例示的な計算デバイス1200上で、アプリケーション1212と共に実行される。いくつかの例では、線画エンジン1232の一部又は全体は、ネットワーク1250を介して利用可能なデータサービス1252によって提供できる。例えばデータサービス1252は、生成用ネットワークによって提供されるもの等の、オブジェクト認識及び細分化を提供できる。別の例として、データサービス1252に写真1234を与えることができ、データサービス1252は線画1236を送り返すことができる。
【0132】
図13は、計算デバイス1310上で画像を編集するために使用できる、画像編集システム1300の例を示す図である。様々な例において、画像編集システム1300は、
図13に示す計算デバイス1310等の計算デバイスに画像編集サービスを提供できる、画像編集サービス1320を含む。様々な例において、画像編集サービス1320は、プライベートネットワーク、及び/又はインターネット等のパブリックネットワークを含むことができるネットワーク1350を介して、計算デバイス1310と通信できる。いくつかの例では、画像編集サービス1320は任意に、線画の作成を支援できるデータサービス1352と、ネットワーク1350を介して通信できる。
【0133】
この例の計算デバイス1310は、計算コードの命令を実行できるマイクロプロセッサ、命令及び/又は他のデータを保存するためのメモリ、並びに有線若しくは無線ネットワークカード及び/又はセルラーアンテナといったネットワーク機能を含む、様々なタイプの電子デバイスを含むことができる。このような電子デバイスの例としては、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、パーソナルデジタルアシスタント、スマートウォッチ、デジタル眼鏡システム、インターネットテレビ、ゲームコンソール等が挙げられる。
【0134】
計算デバイス1310は、1人のユーザ又は複数のユーザに関連付けることができる。この文脈において、ユーザは、計算システムによって保守され、かつデータをユーザに関連付ける様々なタイプのデジタル識別子が存在し得る、デジタルエンティティである。例えばユーザは、英数字の文字列とすることができるユーザ名によって、計算システムに対して識別できる。この例では、ユーザ名を、計算システム上及び/又はネットワーク上のユーザアカウントと関連付けることができる。ユーザアカウントは更に、パスワード、セキュリティトークン、生物情報学データ、又は上記アカウントへのアクセスをある人物に与えるため、若しくは計算システムへのアクセスを上記アカウントに与えるために使用できる他のデータといった、認証データに関連付けることができる。別の例として、ユーザは、eメールアドレス、ソーシャルメディアのハンドル(例えばあるタイプのユーザ名)、ゲームのハンドル、携帯電話番号、又は別のタイプの識別子によって識別できる。いくつかの例では、1人のユーザを複数のユーザアカウントに関連付けることができる。いくつかの例では、1人のユーザを、複数のeメールアドレス、ソーシャルメディアのハンドル、又は他の識別子に関連付けることができる。いくつかの例では、2人以上の人物(例えば人間)を同一のユーザに関連付けることができる。例えば、ネットワーク管理者のチームは、同一のユーザアカウントへのアクセスをそれぞれ有してよい。
【0135】
様々な例において、計算デバイス1310は、ユーザが画像編集サービス1320の画像編集操作を利用できるように、計算デバイス1310に画像編集サービス1320と対話させることができる、ハードウェア及びソフトウェアを含むことができる。例えば、計算デバイス1310は、それを通してユーザが画像編集サービス1320と対話して画像を編集できる、アプリケーション1312を実行できる。アプリケーション1312は、画像編集サービス1320によって提供されるものとすることができる。アプリケーション1312は、デバイス1310のディスプレイを用いて出力できるグラフィカルユーザインターフェースを含むことができ、これを通してユーザは画像を視認できる。アプリケーション1312は更に、画像編集サービス1320の編集機能へのアクセスを可能とすることができる。計算デバイス1310は更に、ユーザが編集操作を実施できるようにする、マウス、トラックパッド、キーボード、デジタル化タブレット、タッチスクリーン、及び/又はマイクロフォンといった入力デバイス1316を含むことができる。様々な例において、他のアプリケーション1318も計算デバイス1310上で実行できる。
【0136】
様々な例において、画像編集サービス1320は、1つ以上のサーバコンピュータ1322上で実行される様々なソフトウェアプロセッサを用いて実装できる。ソフトウェアプロセッサとしては例えば、とりわけエディタ1330、線画エンジン1332、及びユーザインタフェース(UI)管理プロセス1338が挙げられる。画像編集サービス1320は更に、他のデータの中でも特にストックの写真1324等のデータを保存するための、1つ以上のデータストアを含むことができる。データストアは例えば、ハードドライブ、ソリッドステートドライブ、又は他の形態の不揮発性保存メモリを用いて実装できる。
【0137】
プロセスを実行できるサーバコンピュータ1322は、プログラム命令を実行できる1つ以上のプロセッサと、上記プログラム命令を保存するためのメモリとを含む、計算デバイスとすることができる。サーバコンピュータ1322及びデータストアは例えば、データセンター内に格納でき、及び/又はデータセンターからのサービスとして提供できる。あるいは、又は更に、サーバコンピュータ1322及びデータストアは、画像編集サービス1320によって操作及び制御されるネットワーク内に格納できる。
【0138】
エディタ1330は、ユーザが、デジタル写真1334等のデジタル画像を編集できるようにすることができる。いくつかの例では、ユーザは、写真1334を含むファイルをアプリケーション1312に入力することによって、写真1334を提供できる。いくつかの例では、ユーザは、ストックの写真1324のデータストアから、写真1334を取得できる。
【0139】
様々な例において、エディタ1330は、ユーザが写真1334を線画エンジン1332に入力できるようにする、ツール、オプション、コマンド、メニュー、又は別のオンスクリーンコントロールを含むことができる。その後、線画エンジン1332は線画1336を出力することになり、ユーザはこの線画1336を、エディタ1330を通して視認できる。線画エンジン1332は、写真1334中のオブジェクト及び上記オブジェクトの特徴部分を識別して、上記オブジェクトのための線を含む線画1336を作成するよう訓練された、上述の生成用ネットワーク等のニューラルネットワークを含むことができる。いくつかの例では、線画エンジン1332は、オブジェクトの細分化及び線画の作成のために訓練された第1のニューラルネットワーク(例えば生成用ネットワーク)と、グレースケール画像からデジタルアーティファクトを除去して、線画1336を出力するよう訓練された、第2のニューラルネットワーク(例えば上述の復元用ネットワーク)とを含む。
【0140】
いくつかの例では、線画エンジン1332のいくつかの操作は、データサービス1352によってサポートできる。例えばデータサービス1352は、線画エンジン1332に含まれる1つ以上のニューラルネットワークを実行するための計算リソースを提供できる。別の例として、線画エンジン1332に含まれるニューラルネットワークのうちの一方又は両方を、データサービス1352で実行できる。いくつかの例では、データサービス1352は、画像編集サービス1320を通してユーザが編集できるストックの写真の、別のソースとすることができる。
【0141】
ユーザインタフェース管理プロセス1338は、ユーザがアプリケーション1312の使用中に遅延を体験しないように、画像編集サービス1320とアプリケーション1312のユーザインタフェースとの間でのデータの転送を管理できる。例えば、ユーザインタフェース管理プロセス1338は、アプリケーション1312へのユーザの入力と、この入力に応答してエディタ1330が行うアクションとを、協調させることができる。画像編集サービス1320は更に、ここで例示されていない他のプロセスを含むことができる。
【0142】
図14は、
図13に示されている計算デバイス等の計算デバイス1410の例を示すブロック図を含む。
図14の例示的な計算デバイス1410は、計算デバイス1410から画像編集サービスにアクセスするために様々な組み合わせで使用できる、様々なハードウェア構成要素及びソフトウェア構成要素を含むことができる。
【0143】
様々な例において、ソフトウェア構成要素は、オペレーティングシステム1440及びアプリケーション1442を含むことができる。オペレーティングシステム1440は、計算デバイス1410上で実行されるアプリケーション1442、及び計算デバイスのハードウェアを含む、計算デバイス1410の様々な動作を管理できる。アプリケーション1442は、ユーザがそれを通して画像編集サービスと対話できる送達アプリケーション1412を含む、計算デバイス1410のユーザがアクセスできるプログラムを含むことができる。
【0144】
様々な例において、ハードウェア構成要素は、他の構成要素の中でも特にプロセッサ1444、メモリ1446、入力/出力(I/O)デバイス1416、及びネットワークインタフェース1448を含むことができる。プロセッサ1444は、オペレーティングシステム1440及びアプリケーション1442を実行するための命令を含むプログラム命令を実行するために動作可能な集積回路デバイスとすることができる。メモリ1446は、プロセッサ1444が命令を実行している間、及び/又は計算デバイス1410が電源を切られている間に、プログラム命令を保存できる。様々な例において、計算デバイス1410は、揮発性及び/又は不揮発性メモリを含む複数のメモリを含むことができる。不揮発性メモリは、「非一時的」と記述することもできる。I/Oデバイス1416は、表示スクリーン、タッチスクリーン、キーボード、マウス等といったユーザ入力及び出力デバイスを含むことができる。I/Oデバイス1416は更に、全地球測位システム(GPS)受信機等の位置デバイスを含むことができる。ネットワークインタフェース1448は、特にネットワークポート、Wi‐Fiアンテナ、及び/又はセルラーアンテナといった、有線及び/又は無線ネットワークデバイスを含むことができる。ネットワークインタフェース1448により、計算デバイス1410は、例えばインターネットを含むネットワーク1450と通信できる。
【0145】
図15は、
図14に示されている画像編集サービスのような画像編集サービス1520をホストできるデータセンター1560の例を示すブロック図を含む。
図15のデータセンター1560は、画像編集サービス1520を制御するエンティティ以外のエンティティによって操作でき、また、画像編集サービス1520のオペレータにリソースをリースすることができる。あるいは、データセンター1560は、画像編集サービス1520を制御するエンティティによって操作してもよい。
【0146】
データセンター1560は、複数のサーバ1562a~1562bを含み、そのうちの2つがここで図示されている。サーバは、主にネットワークを介してアクセスするための、また場合によっては複数の無関係なユーザが同時に使用するための、計算デバイスとすることができる。サーバの構成の例を、第1のサーバ1562aによって
図15に示す。第1のサーバ1562aによって示されているように、サーバは、ソフトウェアレイヤー及びハードウェアレイヤーを含むことができる。
【0147】
ソフトウェアレイヤーは例えば、他のソフトウェア及びアプリケーションの中でも特に、オペレーティングシステム1570、ハイパーバイザー1572、及び仮想機械1574a~1574dを含むことができる。オペレーティングシステム1570は、ハイパーバイザー1572、仮想機械1574a~1574d、及びハードウェアの操作の実行を含む、第1のサーバ1562aの複数の操作を、制御して協調させることができる。カーネルベース仮想機械(kernel‐based virtual machine:KVM)又は仮想機械モニター(virtual machine monitor:VMM)と呼ぶこともできるハイパーバイザー1572は、仮想機械1574a~1574dを管理できる。例えば、ハイパーバイザー1572は、他の操作の中でも特に、新しい仮想機械の起動、第1のサーバのハードウェアの仮想機械の使用、及び仮想機械の停止等の操作を処理できる。いくつかの例では、ハイパーバイザー1572はオペレーティングシステム1570に統合される。
【0148】
仮想機械は、物理コンピュータシステムのハードウェア上で実行される、エミュレートされたコンピュータシステムである。第1の仮想機械1574aによって示されているように、仮想機械は、コンピュータハードウェア1578の下層表現を含むことができ、これは、上記仮想機械が実行されている計算システムの物理ハードウェアにマッピングする必要は全くない。仮想機械は更に、仮想ハードウェア1578の最上部で実行されているソフトウェア1576を含むことができる。ソフトウェア1576は、オペレーティングシステム及びアプリケーションを含むことができ、これらは、第1のサーバ1562aのオペレーティングシステム1570及びアプリケーションとは別個のものである。物理計算システムと同様、仮想機械は互いから分離でき、ある仮想機械内で操作を行うユーザは、同一のシステム上に他の仮想機械が存在していることに気づかない場合がある。
図15に示されている仮想機械1574a~1574hはそれぞれ、実行されるソフトウェア、及び/又は仮想ハードウェアの特定の構成が変化するものの、第1の仮想機械1574aに関して図示されているものと同様の構成を有することができる。
【0149】
例示的な第1のサーバ1562aのハードウェアレイヤーは、他のハードウェアの中でも特に、プロセッサ1564、メモリ1566、ストレージデバイス1568、及びネットワークインタフェース1580を含むことができる。プロセッサ1564は、第1のサーバ1562aのソフトウェアレイヤーで実行されるプログラムのための命令を含むプログラム命令を実行するよう動作可能な集積回路デバイスである。いくつかの例では、第1のサーバ1562aは、複数のプロセッサを含むことができる。いくつかの例では、1つのプロセッサは、複数の処理コアを含むことができる。プロセッサ1564がプログラム命令を実行している間、上記プログラム命令はメモリ1566内に保存できる。様々な例において、メモリ1566は、揮発性メモリ及び/又は不揮発性メモリとすることができる。様々な例において、第1のサーバ1562aは、複数の異なるメモリを含むことができる。ストレージデバイス1568は、特にハードドライブ、フラッシュドライブ、及び/又はソリッドステートドライブといった、不揮発性ストレージシステムを含むことができる。プログラム命令は、実行されていない間、及び場合によっては実行されている間、ストレージデバイス1568に保存できる。メモリ1566及びストレージデバイス1568は、非一時的コンピュータ可読媒体の2つの例を示す。ネットワークインタフェース1580は、第1のサーバ1562aを、データセンター1560の内部ネットワーク1590等のネットワークに接続するための、ハードウェア及びソフトウェアを含むことができる。いくつかの例では、第1のサーバ1562aは複数のネットワークインタフェース1580を含むことができ、従って第1のサーバ1562aは、内部ネットワーク1590への複数の接続を保持できる。
【0150】
様々な例において、第2のサーバ1562b等の、データセンター1560内の他のサーバは、場合によっては実行されるソフトウェア、いずれの所与の時点で実行されている仮想機械の数、及び/又はサーバに含まれるハードウェアが変化するものの、第1のサーバ1562aと同様に構成できる。
【0151】
データセンター1560の内部ネットワーク1590は、データセンター1560のサーバ1562a~1562bを、互いに及びインターネット等の外部ネットワーク1550に接続できる。内部ネットワーク1590は、ネットワーク管理1592ソフトウェアを含むことができ、これは、各サーバ1562a~1562bの作業負荷の平衡化、サーバの起動及び停止、並びにデータセンターのカスタマーの、サーバ及び/又はサーバ上の仮想機械への割り当てといった操作を実施できる。内部ネットワーク1590は更に、ルート、スイッチ、ハブ、及びゲートウェイといった、内部ネットワーク1590を形成するネットワークハードウェア1594を含むことができる。
【0152】
データセンター1560のカスタマーは、画像編集サービス1520を含むことができる。画像編集サービス1520は例えば、データセンター1560内の1つ以上の仮想機械を割り当てることができ、画像編集サービス1520はこれを用いて、画像編集サービス1520の様々なプロセスを実行できる。データセンター1560は、画像編集サービス1520のオペレータが、この画像編集サービス1520に割り当てられた仮想機械がどこで実行されているのかを知る必要がないように、構成できる。
図15の例では、画像編集サービス1520は、第1のサーバ1562a上で実行されるいくつかの仮想機械と、第2のサーバ1562b上で実行されるいくつかの仮想機械とを割り当てられる。様々な例において、データセンター1560は、画像編集サービス1520を異なるサーバに移動させることを決定してよく、従って画像編集サービス1520の操作を、ある仮想機械から別の仮想機械に移行させてよい。
【0153】
様々な例において、画像編集サービス1520のオペレータは、画像編集サービス1520に割り当てられた仮想機械に、ネットワーク1550からアクセスできる。例えばデータセンター1560は、コンソール又はグラフィカルユーザインターフェースを提供でき、オペレータはこれらを介して仮想機械を構成できる。様々な例において、画像編集サービス1520のデータは、サーバのストレージデバイス1568上、及び/又はデータセンター1560内のネットワーク接続ストレージデバイス上に保存できる。
【0154】
画像編集サービス1520のサービスは更に、ネットワーク1550を介してユーザに提供できる。例えば、画像編集サービス1520に割り当てられた仮想機械はそれぞれ、仮想ネットワークインタフェースを含むことができ、仮想機械はこれらを通して、ネットワーク1550と通信できる。通信は、画像及び上記画像を編集するための命令を含む入力の、ユーザデバイスからの受信、並びに/又は画像の更新されたバージョン及び/若しくは上記命令の実施結果の、ユーザデバイスへの送信を含むことができる。
【0155】
線画を生成するための自動システムのためのシステム及び構成要素の様々な実装形態の完全な理解を提供するために、以上の説明において、具体的な詳細を提供した。しかしながら、上述の実装形態を、これらの具体的な詳細を用いずに実施できることは、当業者には理解されるだろう。例えば、回路、システム、ネットワーク、プロセス、及び他の構成要素は、上記実施形態を不必要な詳細によって不明瞭にしないよう、ブロック図の形式の構成要素として示されている場合がある。他の例では、上記実施形態が不明瞭になるのを回避するために、公知の回路、プロセス、アルゴリズム、構造及び技法は、不要な詳細を含めずに示されている場合がある。
【0156】
個々の実装形態は、フローチャート、フロー図、データフロー図、構造図、又はブロック図として図示されたプロセスとして記述される場合があることにも留意されたい。あるフローチャートが複数の操作を順次プロセスとして記述している場合があるが、これらの操作のうちの多くは、並列に又は同時に実施できる。更に、操作の順序は再配置できる。あるプロセスは、その操作が完了すると終了するが、図に含まれていない追加のステップを有する場合もある。プロセスは、方法、関数、手順、サブルーチン、サブプログラム等に相当し得る。プロセスが関数に相当する場合、その終了は、上記関数が、呼び出し元の関数又はメイン関数に戻ることに対応していてよい。
【0157】
用語「コンピュータ可読媒体(computer‐readable medium)」は、限定するものではないが、可搬性又は非可搬性ストレージデバイス、光学ストレージデバイス、並びに1つ以上の命令及び/又はデータを保存、内包又は搬送できる他の様々な媒体を含む。コンピュータ可読媒体は、データを保存でき、かつ無線で又は有線接続を介して伝播する搬送波及び/又は一時的電子信号を含まない、非一時的媒体を含んでよい。非一時的媒体の例としては、限定するものではないが、磁気ディスク又はテープ;コンパクトディスク(CD)若しくはデジタル多用途ディスク(DVD)等の光学ストレージ媒体;フラッシュメモリ;メモリ;又はメモリデバイスが挙げられる。コンピュータ可読媒体は、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、又は命令、データ構造若しくはプログラム文のいずれの組み合わせを表すことができる、コード及び/又は機械実行可能命令を保存したものであってよい。コードセグメントは、情報、データ、引数、パラメータ又はメモリの内容を受け渡す及び/又は受け取ることにより、別のコードセグメント又はハードウェア回路に連結できる。情報、引数、パラメータ、データ等は、メモリ共有、メッセージの受け渡し、トークンの受け渡し、ネットワーク伝送等を含むいずれの好適な手段によって、受け渡し、転送、又は送信を行うことができる。
【0158】
上述の様々な例は更に、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又はこれらのいずれの組み合わせによって実装してよい。ソフトウェア、ファームウェア、ミドルウェア又はマイクロコードとして実装される場合、必要なタスクを実施するためのプログラムコード又はコードセグメント(例えばコンピュータプログラム製品)は、コンピュータ可読又は機械可読ストレージ媒体(例えばプログラムコード又はコードセグメントを保存するための媒体)に保存してよい。集積回路内に実装された1つ以上のプロセッサが、上記必要なタスクを実施してよい。
【0159】
構成要素が、特定の操作を実施する「よう構成され(configured to)」ていると記載されている場合、このような構成は例えば:操作を実施するように電子回路若しくは他のハードウェアを設計することによって;操作を実施するように、プログラム可能な電子回路(例えばマイクロプロセッサ若しくは他の好適な電子回路)をプログラムすることによって;又はこれらのいずれの組み合わせによって、達成できる。
【0160】
本明細書で開示されている実装形態に関連して説明されている、様々な例示的な論理ブロック、モジュール、回路、及びアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、又はこれらの組み合わせとして実装してよい。ハードウェアとソフトウェアとがこのように相互交換可能であることを明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路及びステップを、その機能に関して上で概説した。このような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の用途、及びシステム全体に課された設計上の制約に依存する。当業者は、特定の用途それぞれに関して、本明細書に記載の機能を様々な方法で実装してよいが、このような実装の決定は、本開示の範囲からの逸脱を引き起こすものとして解釈されないものとする。
【0161】
本明細書に記載の技法もまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、又はこれらのいずれの組み合わせとして実装してよい。このような技法は、汎用コンピュータ、無線通信デバイスハンドセット、又は無線通信デバイスハンドセット及び他のデバイスにおける用途を含む多数の使用法を有する集積回路デバイスといった、多様なデバイスのうちのいずれとして実装してよい。モジュール又は構成要素として説明されているいずれの特徴部分は、集積論理デバイス内に一体として実装してよく、又は分離しているものの相互運用可能な論理デバイスとして別個に実装してよい。ソフトウェアとして実装される場合、これらの技法は少なくともその一部が、プログラムコードを含むコンピュータ可読データストレージ媒体によって実現されてよく、上記プログラムコードは、実行された場合に、上述の方法のうちの1つ以上を実施する。コンピュータ可読データストレージ媒体は、コンピュータプログラム製品の一部を形成してよく、これは梱包材料を含んでよい。コンピュータ可読媒体は、同期式ダイナミックランダムアクセスメモリ(SDRAM)等のランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能なプログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリ、磁気又は光学データストレージ媒体等といった、メモリ又はデータストレージ媒体を含んでよい。更に、又はあるいは、上記技法は、少なくともその一部が、コンピュータ可読通信媒体によって実現されてよく、上記コンピュータ可読通信媒体は、命令又はデータ構造の形態のプログラムコードを搬送又は通信し、またコンピュータによってアクセス、読み出し、及び/又は実行が可能であり、例えば伝播した信号又は波である。
【0162】
プログラムコードはプロセッサによって実行でき、上記プロセッサは、1つ以上のプロセッサ、例えば1つ以上のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他の同等の集積若しくはディスクリート論理回路といった、1つ以上のプロセッサを含んでよい。このようなプロセッサは、本開示に記載の技法のうちのいずれを実施するよう構成してよい。汎用プロセッサはマイクロプロセッサであってよいが、代替例では、上記プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、又は状態機械であってよい。プロセッサはまた、計算デバイスの組み合わせ、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと併用される1つ以上のマイクロプロセッサ、又は他のいずれのこのような構造として、実装してもよい。従って、本明細書中で使用される用語「プロセッサ(processor)」は、上述の構造のうちのいずれ、上述の構造のいずれの組み合わせ、又は本明細書に記載の技法の実装に好適な他のいずれの構造若しくは装置を指してよい。更に、いくつかの態様では、本明細書に記載の機能は、線画の自動生成のために構成された専用のソフトウェアモジュール又はハードウェアモジュール内に提供してよい。
【符号の説明】
【0163】
110、210、310、410、710、810、910、1010、1234 写真
112、212、312、412、512、712、812、1236 線画
1200、1310、1410 計算デバイス