IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-機械学習を用いた画像カラー化 図1
  • 特許-機械学習を用いた画像カラー化 図2
  • 特許-機械学習を用いた画像カラー化 図3
  • 特許-機械学習を用いた画像カラー化 図4
  • 特許-機械学習を用いた画像カラー化 図5
  • 特許-機械学習を用いた画像カラー化 図6
  • 特許-機械学習を用いた画像カラー化 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-16
(45)【発行日】2024-05-24
(54)【発明の名称】機械学習を用いた画像カラー化
(51)【国際特許分類】
   G06T 1/40 20060101AFI20240517BHJP
   G06T 7/00 20170101ALI20240517BHJP
   G06T 7/11 20170101ALI20240517BHJP
   G06V 10/82 20220101ALI20240517BHJP
   G06T 7/80 20170101ALI20240517BHJP
【FI】
G06T1/40
G06T7/00 350C
G06T7/11
G06V10/82
G06T7/00 660B
G06T7/80
【請求項の数】 11
(21)【出願番号】P 2021575418
(86)(22)【出願日】2019-09-11
(65)【公表番号】
(43)【公表日】2022-11-16
(86)【国際出願番号】 US2019050527
(87)【国際公開番号】W WO2021050055
(87)【国際公開日】2021-03-18
【審査請求日】2022-03-17
【前置審査】
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】カナザワ,ノリ
【審査官】松永 隆志
(56)【参考文献】
【文献】特開2019-117558(JP,A)
【文献】特開2012-043151(JP,A)
【文献】中国特許出願公開第109949353(CN,A)
【文献】中国特許出願公開第109376661(CN,A)
【文献】森 敦 ほか2名,画素識別と回帰計算に基づく近赤外線顔画像のカラー化手法 ,電子情報通信学会技術研究報告 ,2013年01月16日,第112巻 第386号,p.353~358
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00-19/20
G06V 10/82
(57)【特許請求の範囲】
【請求項1】
グレースケール画像をカラー化するように畳み込みニューラルネットワークを訓練するためのコンピュータ実行方法であって、前記方法は、
各々が1人以上の人物を写している複数のカラー訓練画像と、対応するグレースケール訓練画像と、各カラー訓練画像内の前記1人以上の人物の部位アノテーションとを含む訓練データを提供するステップと、
各グレースケール訓練画像に対して、
前記グレースケール訓練画像および前記グレースケール訓練画像内の前記1人以上の人物の部位アノテーションに基づいて、カラー化画像を表現する出力特徴ベクトルを前記畳み込みニューラルネットワークの出力として取得するステップと、
ピクセル識別器から、知覚損失値を取得するステップとを含み、前記ピクセル識別器は、前記カラー化画像と、前記複数のカラー訓練画像のうち、前記グレースケール画像に対応する前記カラー訓練画像とを比較することによって、前記知覚損失値を生成し、前記出力特徴ベクトルおよび前記部位アノテーションは、前記ピクセル識別器への入力として提供され、
前記知覚損失値に基づいて、前記畳み込みニューラルネットワークのパラメータを修正するステップとを含み、
前記方法は、
各グレースケール訓練画像に対して、
前記グレースケール訓練画像および前記グレースケール訓練画像内の前記1人以上の人物の中間部位アノテーションに基づいて、前記畳み込みニューラルネットワークの潜在層から、中間カラー化画像を表現する中間特徴ベクトルを取得するステップと、
前記中間カラー化画像に対応する正解カラー画像が存在するか否かという、特徴識別器による予測に基づいて、前記特徴識別器から特徴損失値を取得するステップとをさらに含み、前記中間特徴ベクトルは、前記特徴識別器への入力として提供され、
前記畳み込みニューラルネットワークの前記パラメータを修正するステップは、さらに前記特徴損失値に基づいて実行される、コンピュータ実行方法。
【請求項2】
前記中間カラー化画像をサイズ変更するステップと、
前記畳み込みニューラルネットワークの出力層から、ネットワーク出力画像を取得するステップと、
前記カラー化画像を取得するように、サイズ変更済みの前記中間カラー化画像と前記ネットワーク出力画像とを合成するステップとをさらに含む、請求項に記載のコンピュータ実行方法。
【請求項3】
彩度増強器から、各グレースケール訓練画像の彩度損失を取得するステップをさらに含み、
前記畳み込みニューラルネットワークの前記パラメータを修正するステップは、さらに前記彩度損失に基づいて実行される、請求項またはに記載のコンピュータ実行方法。
【請求項4】
前記彩度損失を取得するステップは、
前記部位アノテーションに基づいて、前記カラー化画像の1つ以上の背景領域を識別するステップと、
前記カラー化画像の彩度および前記カラー化画像の輝度に基づいて、前記背景領域にあると識別されたピクセルの前記彩度損失を計算するするステップとを含む、請求項に記載のコンピュータ実行方法。
【請求項5】
肌色増強器から、各グレースケール訓練画像の肌色損失を取得するステップをさらに含み、
前記畳み込みニューラルネットワークの前記パラメータを修正するステップは、さらに前記肌色損失に基づいて実行され、
前記肌色損失を取得するステップは、必要に応じて、
前記部位アノテーションに基づいて、前記カラー化画像の1つ以上のシルエットを識別するステップと、
前記カラー化画像の色相と、前記カラー化画像の各ピクセルが前記カラー化画像の前記1つ以上のシルエットのうちの少なくとも1つにあるか否かとに基づいて、前記ピクセルの前記肌色損失を計算するステップとを含む、請求項のいずれか1項に記載のコンピュータ実行方法。
【請求項6】
システムであって、
1つ以上のプロセッサによって実装された畳み込みニューラルネットワークを備え、
前記畳み込みニューラルネットワークは、複数の層を有し、1人以上の人物を写しているグレースケール画像を受信する動作と、前記グレースケール画像に基づいてカラー化画像を生成する動作とを含む複数の動作を実行するように構成され、前記カラー化画像は、前記グレースケール画像内の前記1人以上の人物の部位アノテーションを含み、
前記システムは、前記1つ以上のプロセッサによって実装されたピクセル識別器をさらに備え、
前記ピクセル識別器は、
前記カラー化画像を受信する動作と、
前記カラー化画像が元のカラー画像であるかまたは予測カラー画像であるかを示すラベル予測を生成する動作とを含む複数の動作を実行するように構成され、
前記畳み込みニューラルネットワークによって実行される複数の動作は、前記グレースケール画像に基づいて、前記畳み込みニューラルネットワークの潜在層で中間カラー化画像を生成する動作をさらに含み、前記中間カラー化画像は、前記グレースケール画像内の前記1人以上の人物の中間部位アノテーションを含み、
前記システムは、前記1つ以上のプロセッサによって実装された特徴識別器をさらに備え、
前記特徴識別器は、
前記中間カラー化画像を受信する動作と、
前記グレースケール画像に対応する正解カラー画像が存在するか否かを示す予測を生成する動作とを含む複数の動作を実行するように構成される、システム。
【請求項7】
前記中間カラー化画像は、前記グレースケール画像の解像度よりも低い解像度を有し、
前記カラー化画像を生成する動作は、
前記中間カラー化画像を前記グレースケール画像の前記解像度にサイズ変更する動作と、
前記サイズ変更する動作の後、前記カラー化画像を取得するように、前記中間カラー化画像と前記畳み込みニューラルネットワークの出力層からのネットワーク出力画像とを合成する動作とを含む、請求項に記載のシステム。
【請求項8】
前記特徴識別器の前記予測は、前記畳み込みニューラルネットワークの1つ以上のパラメータを調整することによって前記畳み込みニューラルネットワークを訓練するために使用される、請求項またはに記載のシステム。
【請求項9】
複数の画像が正解カラー画像であることを示す正解ラベルに関連付けられた複数の正解カラー画像を入力として提供するとともに、各入力画像の前記ラベル予測と前記正解ラベルとの間の差に基づいた損失を用いて前記ピクセル識別器の1つ以上のパラメータを調整することによって、前記ピクセル識別器は訓練される、請求項のいずれか1項に記載のシステム。
【請求項10】
前記ピクセル識別器は、前記ラベル予測と、前記カラー化画像が前記元のカラー画像であるかまたは前記予測カラー画像であるかを示す正解ラベルとを比較する損失に基づいて訓練され、
前記ピクセル識別器の前記ラベル予測は、前記畳み込みニューラルネットワークの1つ以上のパラメータを調整することによって前記畳み込みニューラルネットワークを訓練するために使用される、請求項のいずれか1項に記載のシステム。
【請求項11】
請求項1~のいずれか1項に記載のコンピュータ実行方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
カメラが初めて利用可能になってから、ユーザは、記念のために写真を撮影してきた。カメラ技術の制限およびカラー写真の撮影コストが高いなどの理由によって、初期に撮影された写真は、白黒画像であった。その後、カラー写真が安価で利用可能になったため、ユーザは、カラー写真を撮影し、保存してきた。
【0002】
ユーザは、最新の画像アプリケーションを用いて、写真を保存、閲覧および編集することができる。多くのユーザは、古い白黒写真をスキャンして、最近に撮影されたカラー写真と共にライブラリに保存する。これらの古い白黒写真がカラー写真として表示される場合、ユーザは、これらの古い白黒写真を楽しむことができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
機械学習に基づく技術を含む画像カラー化技術を用いて、白黒画像をカラー化することができるが、このような技術を古い白黒写真、特に1人以上の人物を写している写真に適用する場合、良好なカラー化画像を出力することは、困難である。例えば、皮膚領域の肌色が調和しないなどのエラーが生じる。したがって、一部の皮膚領域、例えば顔がカラー化されるが、別の領域、例えば手がカラー化されていない。これによって、カラー化写真が満足できない。
【0004】
さらに、現在の画像カラー化技術は、古い黒白写真に写されている人物が、多くの場合、最近のカラー写真に写されている人物とは異なる服装を着ていることを考慮していない。現在の画像カラー化技術は、1人以上の人物を写している白黒写真に色を付けるときに、このような差異に対処できない。これは、ドメイン適応課題である。
【0005】
本明細書に記載された背景技術の説明は、本開示の文脈を概略的に示すことを目的としている。この背景技術の部分に記載されている範囲内で、現在名前を挙げている発明者の研究は、出願時に従来技術としてみなされない記載と同様に、本開示に対する従来技術として明示的にまたは暗示的に認められない。
【課題を解決するための手段】
【0006】
概要
本明細書に記載された実装形態は、機械学習モデルを訓練および使用して、1人以上の人物を写しているグレースケール画像をカラー化するための方法、システム、およびコンピュータ可読媒体に関する。
【0007】
いくつかの実装形態において、コンピュータ実行方法は、人物を含むグレースケール画像を受信するステップを含む。この方法は、訓練済み畳み込みニューラルネットワーク(CNN)への入力としてグレースケール画像を提供することによって、訓練済みCNNの出力としてのグレースケール画像に基づいて、カラー化画像を生成するステップをさらに含む。いくつかの実装形態において、訓練済みCNNは、人物の1つ以上の部位を検出するための部位セグメンテーションを実行し、グレースケール画像をカラー化する。
【0008】
いくつかの実装形態において、カラー化画像を生成するステップは、訓練済みCNNの潜在層の出力として中間カラー化画像を取得するステップと、訓練済みCNNの出力層の出力としてネットワーク出力画像を取得するステップと、カラー化画像を取得するように、中間カラー化画像とネットワーク出力画像とを合成するステップとを含む。いくつかの実装形態において、中間カラー化画像は、ネットワーク出力画像よりも低い解像度を有する。これらの実装形態において、この方法は、合成するステップの前に、中間カラー化画像をネットワーク出力画像と同じ解像度にアップサンプリングするステップをさらに含むことができる。
【0009】
いくつかの実装形態において、この方法は、訓練済みCNNへの入力としてグレースケール画像を提供する前に、グレースケール画像をダウンサンプリングするステップをさらに含むことができる。
【0010】
いくつかの実装形態において、カラー化画像は、グレースケール画像よりも低い解像度を有する。これらの実装形態において、この方法は、カラー化画像をグレースケール画像と同じ解像度にアップサンプリングするステップと、出力画像を取得するように、カラー化画像とグレースケール画像とを合成するステップとをさらに含むことができる。いくつかの実装形態において、カラー化画像は、sRGB画像であってもよい。
【0011】
いくつかの実装形態において、グレースケール画像をカラー化するように畳み込みニューラルネットワークを訓練するためのコンピュータ実行方法は、各々が1人以上の人物を写している複数のカラー訓練画像と、対応するグレースケール訓練画像と、各カラー訓練画像内の1人以上の人物の部位アノテーションとを含む訓練データを提供するステップを含む。この方法は、各グレースケール訓練画像に対して、グレースケール訓練画像およびグレースケール訓練画像内の1人以上の人物の部位アノテーションに基づいて、カラー化画像を表現する出力特徴ベクトルを畳み込みニューラルネットワークの出力として取得するステップを含む。この方法は、各グレースケール訓練画像に対して、カラー化画像が元のカラー画像であるかまたは予測カラー画像であるかを示す、ピクセル識別器によるラベル予測に基づいて、ピクセル識別器から、知覚損失値を取得するステップを含む。この方法は、各グレースケール訓練画像に対して、知覚損失値に基づいて、畳み込みニューラルネットワークのパラメータを修正するステップとを含む。
【0012】
いくつかの実装形態において、畳み込みニューラルネットワークを訓練するための方法は、各グレースケール訓練画像に対して、グレースケール訓練画像およびグレースケール訓練画像内の1人以上の人物の中間部位アノテーションに基づいて、畳み込みニューラルネットワークの潜在層から、中間カラー化画像を表現する中間特徴ベクトルを取得するステップをさらに含むことができる。この方法は、中間カラー化画像に対応する正解カラー画像が存在するか否かという、特徴識別器による予測に基づいて、特徴識別器から特徴損失値を取得するステップとをさらに含むことができる。これらの実装形態において、中間特徴ベクトルは、特徴識別器への入力として提供される。この方法は、さらに特徴損失値に基づいて畳み込みニューラルネットワークのパラメータを修正するステップをさらに含むことができる。いくつかの実装形態において、この方法は、中間カラー化画像をサイズ変更するステップと、畳み込みニューラルネットワークの出力層から、ネットワーク出力画像を取得するステップと、カラー化画像を取得するように、中間カラー化画像とネットワーク出力画像とを合成するステップとをさらに含むことができる。
【0013】
いくつかの実装形態において、畳み込みニューラルネットワークを訓練するための方法は、各グレースケール訓練画像に対して、彩度増強器から彩度損失を取得することをさらに含むことができる。これらの実装形態において、畳み込みニューラルネットワークのパラメータを修正することは、さらに彩度損失に基づいて実行される。いくつかの実装形態において、彩度損失を取得するステップは、部位アノテーションに基づいて、カラー化画像の1つ以上の背景領域を識別するステップと、カラー化画像の彩度およびカラー化画像の輝度に基づいて、背景領域にあると識別されたピクセルの彩度損失を計算するするステップとを含むことができる。
【0014】
いくつかの実装形態において、畳み込みニューラルネットワークを訓練するための方法は、肌色増強器から、各グレースケール訓練画像の肌色損失を取得するステップをさらに含むことができる。これらの実装形態において、肌色損失を取得するステップは、部位アノテーションに基づいて、カラー化画像の1つ以上のシルエットを識別するステップと、カラー化画像の色相と、カラー化画像の各ピクセルがカラー化画像の1つ以上のシルエットのうちの少なくとも1つにあるか否かとに基づいて、各ピクセルの肌色損失を計算するステップとを含むことができる。
【0015】
いくつかの実装形態において、システムは、複数の層を有する畳み込みニューラルネットワークを実装する1つ以上のプロセッサを含む。畳み込みニューラルネットワークは、1人以上の人物を写しているグレースケール画像を受信する動作と、グレースケール画像に基づいてカラー化画像を生成する動作とを実行するように構成される。カラー化画像は、グレースケール画像内の1人以上の人物の部位アノテーションを含む。1つ以上のプロセッサは、ピクセル識別器をさらに実装する。ピクセル識別器は、ピクセル識別器は、カラー化画像を受信する動作と、カラー化画像が元のカラー画像であるかまたは予測カラー画像であるかを示すラベル予測を生成する動作とを実行するように構成される。
【0016】
いくつかの実装形態において、畳み込みニューラルネットワークは、グレースケール画像に基づいて、畳み込みニューラルネットワークの潜在層において中間カラー化画像を生成する動作を含むことができるさらなる動作を実行するように構成される。中間カラー化画像は、グレースケール画像内の1人以上の人物の中間部位アノテーションを含む。これらの実装形態において、1つ以上のプロセッサは、ピクセル識別器をさらに実装し含む。ピクセル識別器は、中間カラー化画像を受信する動作と、グレースケール画像に対応する正解カラー画像が存在するか否かを示す予測を生成する動作とを含む動作を実行するように構成される。
【0017】
いくつかの実装形態において、中間カラー化画像は、グレースケール画像の解像度よりも低い解像度を有する。これらの実装形態において、カラー化画像を生成する動作は、中間カラー化画像をグレースケール画像の解像度にサイズ変更する動作と、サイズ変更する動作の後、カラー化画像を取得するように、中間カラー化画像と畳み込みニューラルネットワークの出力層からのネットワーク出力画像とを合成する動作とを含むことができる。
【0018】
いくつかの実装形態において、特徴識別器の予測を用いて、畳み込みニューラルネットワークの1つ以上のパラメータを調整することによって、畳み込みニューラルネットワークを訓練することができる。
【0019】
いくつかの実装形態において、複数の画像が正解カラー画像であることを示す正解ラベルに関連付けられた複数の正解カラー画像を入力として提供するとともに、各入力画像の前記ラベル予測と前記正解ラベルとの間の差に基づいた損失を用いて前記ピクセル識別器の1つ以上のパラメータを調整することによって、ピクセル識別器は、訓練されてもよい。
【0020】
ピクセル識別器は、ラベル予測と、カラー化画像が元のカラー画像であるかまたは予測カラー画像であるかを示す正解ラベルとを比較する損失に基づいて訓練されてもよい。
【0021】
いくつかの実装形態において、ピクセル識別器のラベル予測は、畳み込みニューラルネットワークの1つ以上のパラメータを調整することによって畳み込みニューラルネットワークを訓練するために使用されてもよい。
【図面の簡単な説明】
【0022】
図1】本明細書に記載された1つ以上の実装形態に使用され得る例示的なネットワーク環境を示すブロック図である。
図2】画像をカラー化するための機械学習モデルを訓練するための例示的な敵対的生成ネットワーク(GAN)構成200を示すブロック図である。
図3】いくつかの実装形態に従って、特徴識別器を訓練するための例示的な方法を示すフロー図である。
図4】いくつかの実装形態に従って、ピクセル識別器を訓練するための例示的な方法を示すフロー図である。
図5】いくつかの実装形態に従って、カラー化器を訓練するための例示的な方法を示すフロー図である。
図6】いくつかの実装形態に従って、訓練済み畳み込みニューラルネットワークを用いて画像をカラー化するための例示的な方法を示すフロー図である。
図7】本明細書に記載された1つ以上の実装形態に使用され得る例示的な装置を示すブロック図である。
【発明を実施するための形態】
【0023】
詳細な説明
本明細書に記載された実装形態は、訓練済み機械学習モデルを用いて、グレースケール画像からカラー化画像を生成することができる。機械学習モデルは、グレースケール画像に写されている人物の1つ以上の部位を検出するように部位セグメンテーションを実行し、グレースケール画像をカラー化するように訓練されてもよい。
【0024】
本明細書に記載されたいくつかの実装形態は、部位セグメンテーションおよび画像カラー化を実行することができる生成モデルを訓練するために使用され得る敵対的生成ネットワーク(GAN)構成に関する。GAN構成は、例えば、畳み込みニューラルネットワークのような生成モデルと、2つの敵対的モデルとを含むことができる。いくつかの実装形態において、生成モデルは、グレースケール画像からカラー化画像を生成するように訓練されてもよい。第1の敵対的モデルは、カラー化される画像の正解カラー画像が存在するか否かを判断するように訓練されてもよい。いくつかの実装形態において、第1の敵対的モデルは、畳み込みニューラルネットワークを用いて実装された生成モデルの潜在層において生成された中間カラー化画像を受信することができる。いくつかの実装形態において、第2の敵対的モデルは、カラー化される画像が正解カラー画像であるか、または生成モデルの出力として、例えば畳み込みニューラルネットワークの出力層から生成された画像であるかを判断するように訓練されてもよい。
【0025】
いくつかの実装形態において、第1の敵対的モデルおよび第2の敵対的モデルによって生成された損失値は、訓練入力として生成モデルに提供される。いくつかの実装形態において、追加の損失値は、(例えば、画像の背景領域の)画像彩度および(例えば、画像に写されている1人以上の人物の)肌色に関連するヒューリスティックスに基づいて取得されよく、生成モデルを訓練するために使用されてもよい。
【0026】
本明細書に記載されたいくつかの実装形態は、入力グレースケール画像からカラー画像を生成することができるように訓練された生成機械学習モデルに関する。機械学習モデルは、入力画像に写されている人物の1つ以上の部位を注釈するように部位セグメンテーションを実行し、入力画像をカラー化するように訓練されてもよい。いくつかの実装形態において、機械学習モデルは、畳み込みニューラルネットワーク(CNN)を用いて実装される。いくつかの実装形態において、カラー画像は、CNNの潜在層から取得された中間カラー化画像と、CNNの出力層から取得されたネットワーク出力画像とを合成することによって取得される。
【0027】
図1は、本明細書に記載されたいくつかの実装形態に使用され得る例示的なネットワーク環境100のブロック図を示す。いくつかの実装形態において、ネットワーク環境100は、1つ以上のサーバシステム(例えば、図1の例において、サーバシステム102および第2のサーバシステム140)を含む。サーバシステム102および140は、例えば、ネットワーク130と通信することができる。サーバシステム102は、サーバ装置104と、データベース106または他の記憶装置とを含むことができる。いくつかの実装形態において、サーバ装置104は、画像アプリケーション156bおよび/または訓練アプリケーション158を提供することができる。第2のサーバシステム140は、第2のサーバ装置142を含むことができる。第2のサーバ装置142は、1つ以上のアプリケーション、例えば、アプリケーションA144、アプリケーションB146およびアプリケーションC148を提供するように構成される。図1および他の図面において、参照番号の後の文字、例えば「156a」は、その特定の参照番号を有する要素への言及を表す。後ろに文字を持たない本文中の参照番号、例えば「156」は、その参照番号を有する要素の実施形態への一般的言及を表す。
【0028】
また、ネットワーク環境100は、1つ以上のクライアント装置、例えばクライアント装置120、122、124および126を含むことができる。クライアント装置120、122、124および126は、ネットワーク130を介して互いに通信することができ、および/またはネットワーク130を介してサーバシステム102および/または第2のサーバシステム140と通信することができる。ネットワーク130は、インターネット、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、スイッチまたはハブ接続などのうち、1つ以上を含む任意の種類の通信ネットワークであってもよい。いくつかの実装形態において、ネットワーク130は、例えば、ピアツーピアワイヤレスプロトコル(例えば、ブルートゥース(登録商標)、Wi-Fi(登録商標)ダイレクト)などを使用した装置間のピアツーピア通信を含むことができる。2つのクライアント装置120と122の間のピアツーピア通信の一例は、矢印132によって示されている。
【0029】
図示を容易にするために、図1は、サーバシステム102、サーバ装置104、データベース106、第2のサーバシステム140、および第2のサーバ装置142を各々1つのブロックとして示し、クライアント装置120、122、124、および126を4つのブロックとして示している。サーバブロック102、104、106、140および142は、複数のシステム、サーバ装置、およびネットワークデータベースを表してもよい。これらのブロックは、図示された構成とは異なる構成で設けられてもよい。例えば、サーバシステム102および/または第2のサーバシステム140は、ネットワーク130を介して他のサーバシステムと通信することができる複数のサーバシステムを表すことができる。いくつかの実装形態において、サーバシステム102および/または第2のサーバシステム140は、例えば、クラウドホスティングサーバを含むことができる。いくつかの例において、データベース106および/または他の記憶装置は、サーバ装置104とは別個のサーバシステムブロックに設けられてもよく、ネットワーク130を介してサーバ装置104および他のサーバシステムと通信することができる。
【0030】
また、クライアント装置は、任意の数であってもよい。各クライアント装置は、任意の種類の電子装置、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルまたはモバイル装置、携帯電話、スマートフォン、タブレットコンピュータ、テレビ、テレビセットトップボックスまたはエンターテイメント装置、ウェアラブル装置(例えば、ディスプレイグラスまたはゴーグル、腕時計、ヘッドセット、アームバンド、宝石類など)、携帯情報端末(PDA)、メディアプレーヤ、ゲーム装置などであってもよい。また、一部のクライアント装置は、データベース106と同様のローカルデータベースまたは他の記憶装置を含んでもよい。いくつかの実装形態において、ネットワーク環境100は、図示された構成要素の全てを含まなくてもよく、および/または本明細書に記載された要素の代わりにまたはそれらに加えて、他の種類の要素を含む他の要素を含んでもよい。
【0031】
様々な実装形態において、エンドユーザU1、U2、U3およびU4は、各々のクライアント装置120、122、124および126を使用して、サーバシステム102と通信することができ、および/または互いに通信することができる。いくつかの例において、ユーザU1、U2、U3およびU4は、各々のクライアント装置および/またはサーバシステム102もしくは第2のサーバシステム140上で実行されるアプリケーションを介して、および/またはサーバシステム102もしくは第2のサーバシステム140上で実装されるネットワークサービス、例えばソーシャルネットワークサービスまたは他の種類のネットワークサービスを介して、互いに対話することができる。例えば、各々のクライアント装置120、122、124および126は、1つ以上のサーバシステム(例えば、システム102、第2のサーバシステム140)とデータを交換することができる。
【0032】
いくつかの実装形態において、サーバシステム102および/または第2のサーバシステム140は、適切なデータをクライアント装置に提供することができる。これによって、各クライアント装置は、サーバシステム102または第2のサーバシステム140にアップロードされた通信コンテンツ、共有コンテンツおよび/またはネットワークサービスを受信することができる。いくつかの例において、ユーザU1~U4は、オーディオもしくはビデオ会議、音声、映像、テキストチャット、または他の通信モードもしくは通信アプリケーションを介して、対話することができる。
【0033】
サーバシステム102または第2のサーバシステム140によって実装されたネットワークサービスは、ユーザが、様々な通信を実行すること、リンクおよび関連付けを形成すること、共有コンテンツ、例えば画像、テキスト、映像、音声および他の種類のコンテンツをアップロードおよびポストすること、および/または他の機能を実行することを可能にするシステムを含むことができる。例えば、クライアント装置は、クライアント装置に送信またはストリーミングされたコンテンツポスト、サーバおよび/またはネットワークサービスを介して異なるクライアント装置から(または異なるクライアント装置から直接に)発信されたコンテンツポスト、またはサーバシステムおよび/またはネットワークサービスから発信されたコンテンツポストなどの受信データを表示することができる。いくつかの実装形態において、クライアント装置は、例えば、上述したクライアント装置間のピアツーピア通信を使用して互いに直接に通信することができる。いくつかの実装形態において、「ユーザ」は、1つ以上のプログラムまたは仮想エンティティを含むことができ、システムまたはネットワークとインターフェイスする人間を含むことができる。
【0034】
いくつかの実装形態において、クライアント装置120、122、124および/または126はいずれも、1つ以上のアプリケーションを提供することができる。例えば、図1に示すように、クライアント装置120は、画像アプリケーション156aおよび1つ以上の他のアプリケーション154を提供することができる。クライアント装置122~126も、同様のアプリケーションを提供することができる。画像アプリケーション156aは、クライアント装置120のハードウェアおよび/またはソフトウェアを用いて実装されてもよい。異なる実装形態において、画像アプリケーション156aは、例えば、クライアント装置120~124のいずれか上で実行されるスタンドアロンクライアントアプリケーションであってもよく、またはサーバシステム102上で提供される画像アプリケーション156bと共に動作することができる。画像アプリケーション156aおよび画像アプリケーション156bは、画像に関連する様々な機能を提供することができる。このような機能は、例えば、カメラを使用して画像を撮影すること、画像を分析して1つ以上のタグを関連付けること、画像を修正すること、画像をスキャンすること、グレースケール画像をカラー化することのうち、1つ以上を含むことができる。
【0035】
いくつかの実装形態において、画像アプリケーション156は、訓練済み機械学習モデルを含むことができる。例えば、カラー化器とも称される訓練済み機械学習モデルは、グレースケール画像をカラー化するように訓練されてもよい。いくつかの実装形態において、サーバ装置104は、モデル訓練アプリケーション158を含むことができる。いくつかの実装形態において、画像アプリケーション156および/またはモデル訓練アプリケーション158は、カラー化器の訓練を実行することができる。いくつかの実装形態において、訓練は、1つ以上の追加の機械学習モデル、例えば、識別器を用いて実行されてもよい。例えば、カラー化器および1つ以上の識別器は、訓練のために、敵対的生成ネットワーク構成に配置されてもよい。
【0036】
いくつかの実装形態において、クライアント装置120(または他のクライアント装置122~126のいずれか)は、画像アプリケーション156aおよび/または他のアプリケーション154の一部として、カラー化器(例えば、グレースケール画像をカラー化するように訓練された機械学習モデル)を含むことができる。いくつかの実装形態において、クライアント装置120(または他のクライアント装置122~126のいずれか)は、他の機械学習モデル(例えば、識別器)および訓練命令をさらに含むことができる。いくつかの実装形態において、クライアント装置120~126は、サーバ装置104から訓練済みモデルを受信してもよく、訓練命令および他の機械学習モデルを含まなくてもよい。
【0037】
いくつかの実装形態において、訓練命令および識別器は、サーバ装置104上で動作する別個のアプリケーション、例えば、モデル訓練アプリケーション158として提供されてもよい。これらの実装形態において、サーバ装置106は、訓練命令を実行することによって、カラー化器および1つ以上の識別器を含む敵対的生成ネットワーク構成を取得することができ、訓練を実行することができる。訓練が完了すると、モデル訓練アプリケーション158は、画像アプリケーション156において使用される訓練済みカラー化器を提供することができる。
【0038】
いくつかの実装形態において、クライアント装置120は、1つ以上の他のアプリケーション154を含むことができる。例えば、他のアプリケーション154は、様々な種類の機能、例えば、カレンダー、アドレス帳、電子メール、ウェブブラウザ、ショッピング、交通(例えば、タクシー、列車、航空会社の予約)、エンターテイメント(例えば、音楽プレーヤ、ビデオプレーヤ、ゲームアプリケーション)、ソーシャルネットワーキング(例えば、メッセージングまたはチャット、オーディオ/ビデオ通話、画像/映像の共有)などを提供するためのアプリケーションであってもよい。いくつかの実装形態において、1つ以上の他のアプリケーション154は、クライアント装置120上で実行されるスタンドアロンアプリケーションであってもよい。いくつかの実装形態において、1つ以上の他のアプリケーション154は、他のアプリケーション154のデータおよび/または機能を提供するサーバシステム、例えばサーバシステム102および/または第2のサーバシステム140にアクセスすることができる。例えば、第2のサーバシステム140によって提供されるものとして示されるアプリケーション144、146および148のいずれかは、1つ以上の他のアプリケーション154にデータおよび/またはコマンドを提供することができる。いくつかの実装形態において、サーバアプリケーション144~148は、例えば、ウェブブラウザまたは他のクライアント側プログラムを介して、クライアント装置によってアクセスされるスタンドアロンアプリケーションであってもよい。
【0039】
クライアント装置120、122、124および/または126上のユーザインターフェイスは、画像、映像、データ、他のコンテンツ、通信、プライバシ設定、通知、および他のデータを含むユーザコンテンツおよび他のコンテンツの表示を可能にすることができる。このようなユーザインターフェイスは、クライアント装置上のソフトウェア、サーバ装置上のソフトウェア、および/またはサーバ装置104および/または第2のサーバ装置142上で実行されるクライアントソフトウェアとサーバソフトウェアとの組み合わせ(例えば、サーバシステム102および/または第2のサーバ装置142と通信するアプリケーションソフトウェアまたはクライアントソフトウェア)を用いて、表示されてもよい。ユーザインターフェイスは、クライアント装置またはサーバ装置のディスプレイ装置(例えば、タッチスクリーンまたは他のディスプレイスクリーン、プロジェクタなど)によって表示されてもよい。いくつかの実装形態において、サーバシステム上で実行されるアプリケーションプログラムは、クライアント装置と通信することによって、クライアント装置でユーザ入力を受信することができ、クライアント装置で視覚データ、音声データなどのデータを出力することができる。
【0040】
本明細書に記載された特徴の他の実装形態は、任意の種類のシステムおよび/またはサービスを使用することができる。例えば、ソーシャルネットワーキングサービスの代わりにまたはそれに加えて、(例えば、インターネットに接続された)他のネットワークサービスを使用することができる。任意の種類の電子装置は、本明細書に記載された特徴を利用することができる。いくつかの実装形態は、コンピュータネットワークから切断されたまたは断続的に接続された1つ以上のクライアントまたはサーバ装置上で、本明細書に記載された1つ以上の特徴を提供することができる。いくつかの例において、ディスプレイ装置を含むまたはディスプレイ装置に接続されているクライアント装置は、例えば通信ネットワークを介して事前に受信され、クライアント装置のローカル記憶装置に記憶されたコンテンツポストを表示することができる。
【0041】
本明細書に言及された画像は、1つ以上のピクセル値(例えば、色値、輝度値など)を有するピクセルを有するデジタル画像を含むことができる。画像は、静止画像(例えば、静止画、単一フレームの画像など)、動的画像(例えば、動画、動画GIF、画像の一部分が動きを含むが他の部分が静止しているシネマグラフなど)、または映像(例えば、音声を含み得る一連の画像または画像フレーム)であってもよい。なお、本明細書の残りの部分は、画像を静止画像として言及するが、本明細書に記載された技術は、動的画像、映像などにも適用可能である。例えば、本明細書に記載された実装形態は、静止画像(例えば、写真または他の画像)、映像、または動的画像と共に使用されてもよい。
【0042】
図2は、画像をカラー化するための機械学習モデルを訓練するための例示的な敵対的生成ネットワーク(GAN)構成200を示すブロック図である。GAN構成は、1つ以上のプロセッサと、ソフトウェア命令を記憶するメモリとを含むコンピュータ上で実装されてもよい。いくつかの実装形態において、1つ以上のプロセッサは、汎用中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、機械学習プロセッサ(例えば、テンソルプロセッシングユニット(TPU)または他のプロセッサ)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または任意の他の種類のプロセッサのうち、1つ以上を含むことができる。
【0043】
GAN構成200は、複数の機械学習モデルを含むことができる。いくつかの実装形態において、GAN構成200は、カラー化器畳み込みニューラルネットワーク(CNN)210と、合成器(combiner)216と、特徴識別器(feature discriminator)218と、サイズ変更器(resizer)220と、ピクセル識別器222(pixel discriminator)とを含むことができる。いくつかの実装形態において、GAN構成200は、彩度増強器(saturation enhancer)224および/または肌色増強器(skin tone enhancer)226をさらに含むことができる。
【0044】
図2に示すように、実際のグレースケール画像202とグレースケール訓練画像204とを含むグレースケール画像は、入力としてカラー化器CNN210に提供される。実際のグレースケール画像202は、色データを含まない画像であってもよい。例えば、このような画像は、例えば、白黒フィルムを使用して撮影された古い写真、または他の白黒画像を含んでもよい。グレースケール訓練画像204は、色情報を除去するように修正された画像を含んでもよい。例えば、グレースケール訓練画像204は、正解カラー画像206から色情報を除去することによって、取得されてもよい。例えば、正解カラー画像は、例えば、カラーフィルム、デジタルカラーカメラ、または色情報を記録する他の画像撮影技術を使用して撮影されたカラー写真を含んでもよい。正解カラー画像は、画像が正解カラー画像である(カラー化されたものではない)ことを示す正解ラベルを有することができる。
【0045】
いくつかの実装形態において、カラー化器CNN210は、ラダーネットワークまたはUネットモデルであってもよい。いくつかの実装形態において、カラー化器CNN210は、完全な畳み込みCNNモデル、例えばスキップ接続を含むオートエンコーダであってもよい。カラー化器CNN210は、複数の層に編成されてもよい。各層は、複数のニューラルネットワークノードを含むことができる。いくつかの実装形態において、各層は、3つの畳み込みノード(残差畳み込みノード)を含むことができる。いくつかの実装形態において、特定の層中の1つ以上のノードは、直前の層中のノードおよび直前の次の層中のノードに接続されてもよい。いくつかの実装形態において、スキップ接続を用いて、非連続層間の1つ以上のノードを接続することができる。カラー化器CNN210の第1の層(入力層と呼ばれる)は、実際のグレースケール画像202およびグレースケール訓練画像210(併せてグレースケール入力画像として呼ぶ)を入力として受信することができる。
【0046】
さらに、実際のグレースケール画像202および正解カラー画像206は、各々1人以上の人物を写してもよい。カラー化器CNN210の訓練中に、1人以上の人物の各々の正解部位アノテーションは、訓練入力として提供されてもよい。正解部位アノテーションは、例えば任意の好適なセグメンテーション技術を用いて自動的に生成されてもよく、または、例えば注釈者によって手動で生成されてもよい。正解部位セグメンテーションの生成が画像の色とは無関係であるため、実際のグレースケール画像(例えば、過去の黒白写真)とグレースケール訓練画像またはカラー訓練画像(例えば、現代の写真)との両方の正解部位アノテーションを生成することができる。
【0047】
CNN210は、訓練入力として提供された正解部位アノテーションに一致する部位アノテーションを予測するように訓練されてもよい。したがって、訓練済みカラー化器CNN210は、入力画像のピクセルの予測色値と、入力画像に写されている1人以上の人物の部位アノテーションとの両方を含むネットワーク出力画像を生成する。
【0048】
カラー化器CNN210は、グレースケール入力画像を分析し、グレースケール入力画像の1つ以上の特徴を検出するように訓練される。具体的には、カラー化器CNN210は、グレースケール入力画像に写されている人物の1つ以上の部位を検出するように部位セグメンテーションを実行することができる。いくつかの実装形態において、検出される1つ以上の部位は、顔、胴体、右腕、左腕、左脚、および右脚を含むことができる。いくつかの実装形態において、検出される1つ以上の部位は、顔、胴、右上腕、右下腕、左上腕、左下腕、右手、左手、右上脚、右下脚、左上脚、左下脚、左足、および右足を含むことができる。さらに他の実装形態は、より多くの部位またはより少ない部位を検出することができる。
【0049】
いくつかの実装形態において、1つ以上の部位の検出は、部位アノテーションを生成することを含むことができる。例えば、部位アノテーションは、画像のピクセルが特定人物の特定部位に属しているか、またはピクセルが画像に写されている人物の部位に属していないかを示すことができる。また、入力画像に複数の人物が写されている場合に、入力画像に写されている各人物の部位を検出するように部位検出を実行してもよい。
【0050】
また、カラー化器CNN210は、入力画像の各ピクセルの色値(彩度)を生成するように訓練される。カラー化器CNN210の複数の層は、カラー化画像に対応する特徴ベクトルを生成するように配置されてもよい。例えば、図2に示すように、潜在層212および出力層214の各々は、グレースケール入力画像からカラー化画像を生成することができる。
【0051】
図2に示すように、潜在層212の出力は、中間カラー化画像230を含むことができる。いくつかの実装形態において、中間カラー化画像230は、潜在層212によって中間特徴ベクトルとして出力されてもよい。いくつかの実装形態において、中間カラー化画像230の解像度は、グレースケール入力画像の解像度よりも低くであってもよい。
【0052】
また、出力層214は、ネットワーク出力画像232を生成する。いくつかの実装形態において、残差ネットワーク(residual network)は、出力層214として使用されてもよい。残差ネットワークの使用は、カラー化器CNN210の訓練を加速することができる。いくつかの実装形態において、ネットワーク出力画像232の解像度は、グレースケール入力画像の解像度と同じであってもよい。いくつかの実装形態において、ネットワーク出力画像232は、出力層214によって特徴ベクトルとして出力されてもよい。
【0053】
図2は、カラー化器CNNを図示しているが、理解すべきことは、任意の他の種類の生成機械学習モデル、例えばオートエンコーダ、変分型オートエンコーダ、または他の種類のモデルを用いて、グレースケール入力画像をカラー化することができることである。
【0054】
いくつかの実装形態において、GAN構成200は、特徴識別器218をさらに含むことができる。特徴識別器218は、任意の種類の機械学習モデル、例えば、分類器ニューラルネットワークを用いて実装されてもよい。いくつかの実装形態において、勾配反転層を使用してもよい。例えば、勾配反転層は、特徴識別器の出力に基づいて、特徴識別器からのフィードバック、例えば、損失値をカラー化器CNN210に提供することができる。いくつかの実装形態において、中間カラー化画像230は、入力として特徴識別器218に提供される。
【0055】
特徴識別器218は、入力画像、例えば中間カラー化画像のいずれかが、正解カラー画像が存在する画像であるか否かを判断するように訓練されてもよい。例えば、特徴識別器218は、入力画像の特徴ベクトルを分析することによって、このような判断を行うことができる。特徴識別器218は、ラベル予測250を出力として生成することができる。いくつかの実装形態において、ラベル予測250は、入力画像が対応する正解カラー画像を有するか(Yes)または有しないか(No)を示すバイナリ値であってもよい。いくつかの実装形態において、ラベル予測250は、入力画像が対応する正解カラー画像を有することを示す尤度、例えば0~1の間の確率であってもよい。いくつかの実装形態において、ラベル予測250は、ワッサースタインメトリック(Wasserstein Metric)であってもよい。
【0056】
いくつかの実装形態において、GAN構成200は、サイズ変更器220をさらに含むことができる。サイズ変更器220は、中間カラー化画像230を入力として受信し、サイズ変更済み中間画像234を出力として生成することができる。例えば、サイズ変更器220は、中間カラー化画像を低解像度からより高い解像度に、例えば、正解カラー画像の解像度と同じ解像度にアップサンプリングすることができる。サイズ変更器220は、機械学習技術、画像アップスケーリングアルゴリズムなどを含む任意の種類の画像アップスケーリング技術を用いて実装されてもよい。
【0057】
いくつかの実装形態において、GAN構成200は、合成器216を含むことができる。合成器216は、カラー化器CNN210の出力層214によって出力されたネットワーク出力画像232、およびサイズ変更済み中間画像234を入力として受信することができ、カラー化画像236を出力として生成することができる。いくつかの実装形態において、ネットワーク出力画像232、サイズ変更済み中間画像234、およびカラー化画像236の各々は、(ピクセル位置および色値を含む)画像および部位アノテーションを表す特徴ベクトルとして表されてもよい。
【0058】
いくつかの実装形態において、GAN構成200は、ピクセル識別器222をさらに含むことができる。ピクセル識別器222は、任意の種類の機械学習モデル、例えば分類器ニューラルネットワークを用いて実装されてもよい。例えば、ピクセル識別器222は、カラー化画像から特徴を抽出し、特徴を実際のカラー画像または予測のカラー画像に属するものとして分類する畳み込みニューラルネットワークを用いて実装されてもよい。1次元出力、例えばラベル予測を生成する出力畳み込み層を使用することができる。
【0059】
ピクセル識別器222は、より小さい受容域を有するように実装されよく、画像テクスチャを翻訳することができる。正解カラー画像(例えば、カラーで撮影された現代のカラー写真)とカラー化画像(例えば、グレースケール古い写真から生成された写真)との両方の画像テクスチャは、類似する。いくつかの実装形態において、カラー化画像236および/または正解カラー画像206は、入力として特徴識別器218に提供される。
【0060】
ピクセル識別器222は、入力画像、例えば、カラー化画像222および/または正解カラー画像206のいずれかを分析することによって、画像が実際のカラー画像、例えば1つの正解カラー画像206であるか、または予測カラー画像、例えば1つのカラー化画像222であるかを判断するように訓練されてもよい。例えば、ピクセル識別器222は、入力画像の特徴ベクトルを分析することによって、このような判断を行うことができる。ピクセル識別器222は、出力としてラベル予測260を生成することができる。いくつかの実装形態において、ラベル予測260は、入力画像が実際のカラー画像であるか(Yes)または実際のカラー画像ではないか(No)を示すバイナリ値であってもよい。いくつかの実装形態において、ラベル予測260は、入力画像が実際のカラー画像であることを示す尤度、例えば0~1の間の確率であってもよい。
【0061】
GAN構成200は、特徴識別器218およびピクセル識別器220を敵対的ネットワークとして使用して、カラー化器CNN210(生成器ネットワーク)を訓練する。カラー化器CNN210の1つ以上のパラメータは、特徴識別器218からのラベル予測250およびピクセル識別器222からのラベル予測260に基づいて調整される。例えば、1つ以上のパラメータは、カラー化器CNN210の1つ以上の層の1つ以上のノードの重み、および/またはカラー化器CNN210の1つ以上のノード対の間の接続を含むことができる。特徴損失値は、ラベル予測250に基づいて決定され、訓練入力としてカラー化器CNN210に提供されてもよい。さらに、知覚損失値(perceptual loss value)は、ピクセル識別器によって決定され、訓練入力としてカラー化器CNN210に提供されてもよい。
【0062】
カラー化器CNN210の1つの目的は、中間カラー化画像を生成することである。この中間カラー化画像は、例えばラベル予測250が正しくないときに、特徴識別器218を停止させる。換言すれば、訓練済みカラー化器CNN210は、実際のグレースケール入力画像から、特徴識別器218によってグレースケール訓練画像から生成された中間カラー化画像(中間特徴ベクトル)から区別できない中間カラー化画像(中間特徴ベクトル)を生成するように構成される。
【0063】
カラー化器CNN210の別の目的は、ネットワーク出力画像を生成することである。このネットワーク出力画像は、サイズ変更済み中間画像と合成されると、カラー化画像を生成し、このカラー化画像は、例えばラベル予測260が正しくないときに、ピクセル識別器を停止させる。換言すれば、訓練済みカラー化器CNN210は、実際のグレースケール入力画像から、ピクセル識別器222によって正解カラー画像から区別できないカラー化画像(特徴ベクトル)を生成するように構成される。
【0064】
また、GAN構成200は、特徴識別器218を訓練するために利用される。訓練中、カラー化器CNN210からの中間カラー化画像230は、入力として特徴識別器218に提供され、ラベル予測250の精度を評価する。例えば、中間カラー化画像が1つのグレースケール訓練画像204から生成された場合、ラベル予測250は、中間カラー化画像の正解色が存在することを示すと精確であり、または同様に、中間カラー化画像が1つの実際のグレースケール画像202から生成された場合、ラベル予測250は、中間カラー化画像の正解色が存在しないことを示すと精確である。
【0065】
また、GAN構成200は、ピクセル識別器222を訓練するために利用される。訓練中、カラー化器CNN210からのカラー化画像236および正解カラー画像206は、入力としてピクセル識別器222に提供され、ラベル予測260の精度を評価する。例えば、入力画像が1つの正解カラー画像206である場合、ラベル予測260は、入力画像の色が真であることを示と精確であり、または同様に、入力画像がカラー化器CNN210によって生成された1つのカラー化画像236である場合、ラベル予測260は、入力画像の色が真ではないことを示すと精確である。
【0066】
いくつかの実装形態において、GAN構成200は、彩度増強器224を含むことができる。合成器216から得られたカラー化画像は、入力として彩度増強器224に提供されてもよい。
【0067】
彩度増強器224は、カラー化器CNN210を訓練するために使用される彩度損失262を生成するように構成されてもよい。グレースケール画像をカラー化するときの1つの技術課題は、得られた画像がしばしば不飽和になることである。多くのユーザは、より高い彩度を有する画像、例えば、カラーフィルムカメラ、デジタルカメラなどで撮影された現代の画像を好む。彩度損失262を用いてカラー化器CNN210を訓練することによって、訓練済みカラー化器CNN210は、充分な量の彩度を有するカラー化画像を生成することができる。
【0068】
いくつかの実装形態において、彩度増強器224は、HSV(色相、彩度、明度)色空間内の低い彩度にペナルティを課すように、彩度損失262を計算するように構成されてもよい。彩度損失262は、カラー化器CNNを訓練するために使用されるヒューリスティック損失であってもよい。カラー化器CNN210によって生成されたカラー化画像236は、入力として彩度増強器224に提供される。例えば、カラー化画像236は、sRGB(標準的な赤、緑、青)画像であり、カラー化画像の各ピクセルの予測色値を含むことができる。以下の式で示されたように、彩度増強器224は、RGBをHSVに変換するための変換関数RGB_to_HSVを使用して、ピクセル値をHSV色空間に変換するように構成される。
【0069】
いくつかの実装形態において、彩度増強器224は、以下の式を用いて、(上記の式から得られた)カラー化画像の各ピクセルの「彩度」および「明度」から、彩度損失262を計算することができる。
【0070】
彩度損失=(1-彩度)×pow(明度、重み)
式中、powは、冪関数を表し、明度は、基数であり、重みは、指数である。pow関数は、明度に基づいて、可変量のペナルティを異なるピクセルに適用することができ、例えば、画像の明るいピクセルよりも少ないペナルティを画像の暗いピクセルに適用することができる。
【0071】
いくつかの実装形態において、明度は、カラー化画像の明るさを表することができる。いくつかの実装形態において、重みは、0.5に設定されてもよい。いくつかの実装形態において、重みは、明度の明るさに基づいて調整されてもよい。重みは、明度の明るさに対する彩度損失計算値の感度を制御する。
【0072】
いくつかの実装形態において、彩度増強器224は、カラー化画像の一部のピクセルの彩度損失262を計算することができる。例えば、カラー化画像の背景領域のみの彩度損失262を計算することができる。これらの実装形態において、カラー化器CNN210によって生成された部位アノテーションを用いて、背景領域、例えばカラー化画像の前景領域および背景領域を識別するための画像マスクを識別することができる。例えば、背景領域は、画像に写されている人物の一部であるとして注釈されていないカラー化画像のピクセルに対応する。換言すれば、彩度損失262を計算するときに、画像に写されている人物の一部であるカラー化画像のピクセルを除外することができる。
【0073】
カラー化器CNN210の1つ以上のパラメータは、彩度増強器224によって生成された彩度損失262に基づいて調整される。例えば、1つ以上のパラメータは、カラー化器CNN210の1つ以上の層の1つ以上のノードの重み、および/またはカラー化器CNN210の1つ以上のノード対の間の接続を含むことができる。
【0074】
いくつかの実装形態において、GAN構成200は、肌色増強器224を含むことができる。合成器216から得られたカラー化画像は、入力として肌色増強器226に提供されてもよい。グレースケール画像からカラー化画像を生成するときの課題は、時には、人間の肌色に対応する色範囲ではない色をカラー化画像内の皮膚ピクセルに割り当ててしまうことである。例えば、カラー化画像は、紫色の皮膚ピクセルまたは温かい肌色ではない皮膚ピクセルを含む場合がある。皮膚ピクセルに割り当てられた色が不精確であるため、このようなカラー化画像は、不合格である。
【0075】
いくつかの実装形態において、肌色増強器226は、肌色損失270を計算するように構成されてもよい。この肌色損失270を用いて、カラー化器CNN210を訓練することによって、カラー化器CNN210によって生成されたカラー化画像の間違ったまたは不適切な色を有するスキンピクセルを排除または低減する。肌色損失270は、カラー化器CNNを訓練するために使用されるヒューリスティック損失であってもよい。いくつかの実装形態において、特定の色相値、例えば色相=20をデフォルト肌色値として設定することができる。次いで、この値に基づいて、肌色損失270を計算する。
【0076】
彩度増強器224を参照して上述したように、まず、カラー化器CNN210によって生成されたカラー化画像236をHSV色空間に変換することができる。以下の式を用いて、カラー化画像の各ピクセルの肌色損失270を計算することができる。
【0077】
肌色損失=(色相-20)/20×シルエット×is_gray
式中、色相は、カラー化画像のピクセルの色相を表し、シルエットは、ピクセルが人物を描いているか否かを示すバイナリ値であり、is_grayは、カラー化画像のソース画像がグレースケール訓練画像(例えば、グレースケール訓練画像204のいずれか)であったか否かを示す。このような肌色損失の計算は、予測色、例えばカラー化器CNN210によって生成されたピクセルの色値と、正解カラー画像206のうち、対応する正解カラー画像から得られたピクセルの正解カラー値との比較によって、教師ありの方法でカラー化器CNN210を訓練することができる。
【0078】
カラー化器CNN210によって生成された部位アノテーションを用いて、シルエット値を取得することができる。例えば、人物の部位(例えば、頭部、胴体、腕、脚など)として注釈されたカラー化画像のピクセルは、シルエット内にある(シルエット=1)として識別されてもよく、他のピクセルは、シルエット外にある(シルエット=0)として識別されてもよい。換言すれば、肌色損失270を計算するときに、カラー化画像に写されている人物の部位のピクセルを計算に入れるが、他のピクセルを除外する。
【0079】
カラー化器CNN210の1つ以上のパラメータは、肌色増強器226によって生成される肌色損失270に基づいて調整される。例えば、1つ以上のパラメータは、カラー化器CNN210の1つ以上の層の1つ以上のノードの重み、および/またはカラー化器CNN210の1つ以上のノード対の間の接続を含むことができる。
【0080】
図3、4および5を参照して、特徴識別器218、ピクセル識別器222およびカラー化器CNN210を訓練するための例示的な方法を各々説明する。
【0081】
図3は、いくつかの実装形態に従って、特徴識別器、例えば特徴識別器218を訓練するための例示的な方法300を示すフロー図である。いくつかの実装形態において、方法300は、例えば図1に示されたサーバシステム102上で実装されてもよい。いくつかの実装形態において、方法300の一部または全ては、図1に示された1つ以上のクライアント装置120、122、124または126上で、1つ以上のサーバ装置上で、および/またはサーバ装置とクライアント装置との両方の上で実装されてもよい。記載された例において、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(プロセッサ)と、1つ以上の記憶装置(例えば、データベース106または他の記憶装置)とを含む。いくつかの実装形態において、1つ以上のサーバおよび/またはクライアントの異なる構成要素は、方法300の異なるブロックまたは他のブロックを実行することができる。いくつかの例において、第1の装置は、方法300のブロックを実行するものとして説明される。いくつかの実装形態において、1つ以上の他の装置(例えば、他のクライアント装置またはサーバ装置)は、方法300の1つ以上のブロックを実行することができ、結果またはデータを第1の装置に送信することができる。
【0082】
いくつかの実装形態において、システムは、方法300または方法の一部を自動的に開始することができる。いくつかの実装形態において、実装システムは、第1の装置である。例えば、この方法(またはその一部)は、周期的に実行されてもよく、または1つ以上の特定のイベントもしくは条件に基づいて、例えば、ラベル予測精度が閾値を下回るときに、方法300の前回の実行から所定の時間が経過したときに、および/またはこの方法によって読み取られる設定に指定され得る1つ以上の他の条件が生じたときに実行されてもよい。
【0083】
方法300は、ブロック302から開始することができる。ブロック302において、カラー化画像、例えばカラー化画像を表す特徴ベクトルを取得する。中間カラー化画像230は、例えば、カラー化器CNN210から取得され、入力として提供されてもよい。ブロック302の次に、ブロック304を実行することができる。
【0084】
ブロック304において、特徴識別器、例えば特徴識別器218を適用することによって、ラベル予測、例えばラベル予測250を生成する。ブロック304の次に、ブロック306を実行することができる。
【0085】
ブロック306において、ラベル予測を評価する。例えば、各中間カラー化画像のラベル予測の精度を決定する。ラベル予測の精度は、例えば、特徴識別器が、正解カラーを利用できる中間カラー化画像、例えばグレースケール訓練画像204から生成された中間カラー化画像と、正解カラーを利用できない中間カラー化画像、例えば実際のグレースケール画像202から生成された中間カラー化画像とをうまく区別したか否かに基づいて評価される。ラベル予測の精度に基づいて、損失値を決定する。ブロック306の次に、ブロック308を実行することができる。
【0086】
ブロック308において、損失値を用いて、特徴識別器の1つ以上のパラメータを調整する。例えば、特徴識別器がニューラルネットワークを用いて実装された場合、損失値に基づいて、ニューラルネットワークの1つ以上のノードに関連する重みおよび/またはニューラルネットワークの1つ以上のノード対の間の接続を調整することができる。
【0087】
追加の入力を用いて、方法300またはその一部を任意の回数に繰り返して実行することができる。例えば、ラベル予測精度の閾値レベルに達するまで、方法300を繰り返して実行することができる。
【0088】
図4は、特許請求の範囲の全体によって完全に保護されていないいくつかの実装形態に従って、ピクセル識別器、例えばピクセル識別器222を訓練するための例示的な方法400を示すフロー図である。いくつかの実装形態において、方法400は、例えば図1に示されたサーバシステム102上で実装されてもよい。いくつかの実装形態において、方法400の一部または全ては、図1に示された1つ以上のクライアント装置120、122、124または126上で、1つ以上のサーバ装置上で、および/またはサーバ装置とクライアント装置との両方の上で実装されてもよい。記載された例において、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(プロセッサ)と、1つ以上の記憶装置(例えば、データベース106または他の記憶装置)とを含む。いくつかの実装形態において、1つ以上のサーバおよび/またはクライアントの異なる構成要素は、方法400の異なるブロックまたは他のブロックを実行することができる。いくつかの例において、第1の装置は、方法400のブロックを実行するものとして説明される。いくつかの実装形態において、1つ以上の他の装置(例えば、他のクライアント装置またはサーバ装置)は、方法400の1つ以上のブロックを実行することができ、結果またはデータを第1の装置に送信することができる。
【0089】
いくつかの実装形態において、システムは、方法400または方法の一部を自動的に開始することができる。いくつかの実装形態において、実装システムは、第1の装置である。例えば、この方法(またはその一部)は、周期的に実行されてもよく、または1つ以上の特定のイベントもしくは条件に基づいて、例えば、ラベル予測精度が閾値を下回るときに、方法400の前回の実行から所定の時間が経過したときに、および/またはこの方法によって読み取られる設定に指定され得る1つ以上の他の条件が生じたときに実行されてもよい。
【0090】
方法400は、ブロック402から開始することができる。ブロック402において、正解カラー画像を入力としてピクセル識別器、例えばピクセル識別器222に提供する。ブロック402の次に、ブロック404を実行することができる。
【0091】
ブロック404において、正解カラー画像の特徴を学習する。例えば、ピクセル識別器は、正解カラー画像から決定された分布またはパターンを表す埋め込み、例えば1組の数値を学習することができる。ブロック404の次に、ブロック406を実行することができる。
【0092】
ブロック406において、カラー化画像を取得する。例えば、正解カラー画像206および/またはラーライザCNN210によって生成されたカラー化画像236から、追加の画像を取得することができる。ブロック406の次に、ブロック408を実行することができる。
【0093】
ブロック408において、ピクセル識別器をカラー化画像に適用することによって、カラー化画像内の各画像が実際の色(例えば、画像が正解カラー画像である)または予測色(例えば、画像がカラー化画像である)を有するか否かを示すラベル予測を生成する。いくつかの実装形態において、入力として提供されるカラー化される画像は、sRGB(標準的な赤、緑、青)画像、例えば3つのチャネルを有する画像であってもよい。
【0094】
いくつかの実装形態において、カラー化画像から検出された1つ以上の顔に基づいたヒートマップを、入力としてピクセル識別器に提供することができる。例えば、ヒートマップは、カラー化画像の(上半身または身体の他の部分を含むまたは除外する)人間の顔の一部のピクセルを示す単一のチャネルであってもよい。例えば、顔検出技術を用いて、ヒートマップを生成することができ、その後、カラー化画像から検出された各顔のガウスヒートマップを生成することができる。いくつかの実装形態において、ピクセル識別器は、カラー化画像(sRGB)およびヒートマップに基づいて、セグメンテーションマスクを生成することができる。セグメンテーションマスクは、画像に写された1人以上の人物を含むことができ、画像の背景領域から画像内の人体(シルエット)を区別することができる。ブロック408の次に、ブロック410を実行することができる。
【0095】
ブロック410において、ラベル予測を評価する。例えば、各中間カラー化画像のラベル予測の精度を決定する。ラベル予測の精度は、例えば、ピクセル識別器が、(例えば、カラー化器CNN210によって生成された)カラー化画像と、正解カラー画像(例えば、正解カラー画像206)とをうまく区別したか否かに基づいて評価される。ベル予測の精度に基づいて、損失値を決定する。ブロック410の次に、ブロック412を実行することができる。
【0096】
ブロック412において、損失値を用いて、ピクセル識別器の1つ以上のパラメータを調整する。例えば、特徴識別器がニューラルネットワークを用いて実装された場合、損失値に基づいて、ニューラルネットワークの1つ以上のノードに関連する重みおよび/またはニューラルネットワークの1つ以上のノード対の間の接続を調整することができる。
【0097】
いくつかの実装形態において、1つ以上の追加の入力をピクセル識別器に提供することができる。例えば、画像分類器を用いて、グレースケール入力画像に基づいて、特徴ベクトルを生成することができる。いくつかの実装形態において、分類器は、機械学習分類器であってもよい。いくつかの実装形態において、特徴ベクトルは、画像に固有の1組の数値、例えば浮動小数点数であってもよい。画像の特徴ベクトルは、当該画像と1つ以上の他の画像との類似性を示することができる。例えば、分類器は、意味的および/または視覚的に類似する画像を互いに近いセットに割り当てるように特徴ベクトル(例えば、1組の数値)を生成することができる。したがって、特徴ベクトルを用いて、画像に類似する画像を識別することができる。
【0098】
追加の入力を用いて、方法400またはその一部を任意の回数に繰り返して実行することができる。例えば、複数組の正解カラー画像を用いて、ブロック402および404を繰り返して実行することができる。別の例において、追加の正解画像および/または追加のカラー化画像を用いて、ブロック406~412を繰り返して実行することができる。ラベル予測精度の閾値レベルに達するまで、方法400を繰り返して実行することができる。
【0099】
図5は、いくつかの実装形態に従って、カラー化器、例えば、カラー化器CNN210を訓練するための例示的な方法500を示すフロー図である。いくつかの実装形態において、方法500は、例えば図1に示されたサーバシステム102上で実装されてもよい。いくつかの実装形態において、方法500の一部または全ては、図1に示された1つ以上のクライアント装置120、122、124または126上で、1つ以上のサーバ装置上で、および/またはサーバ装置とクライアント装置との両方の上で実装されてもよい。記載された例において、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(プロセッサ)と、1つ以上の記憶装置(例えば、データベース106または他の記憶装置)とを含む。いくつかの実装形態において、1つ以上のサーバおよび/またはクライアントの異なる構成要素は、方法500の異なるブロックまたは他のブロックを実行することができる。いくつかの例において、第1の装置は、方法500のブロックを実行するものとして説明される。いくつかの実装形態において、1つ以上の他の装置(例えば、他のクライアント装置またはサーバ装置)は、方法500の1つ以上のブロックを実行することができ、結果またはデータを第1の装置に送信することができる。
【0100】
いくつかの実装形態において、システムは、方法500または方法の一部を自動的に開始することができる。いくつかの実装形態において、実装システムは、第1の装置である。例えば、この方法(またはその一部)は、周期的に実行されてもよく、または1つ以上の特定のイベントもしくは条件に基づいて、例えば、ラベル予測精度が閾値を下回るときに、方法500の前回の実行から所定の時間が経過したときに、および/またはこの方法によって読み取られる設定に指定され得る1つ以上の他の条件が生じたときに実行されてもよい。
【0101】
方法500は、ブロック502から開始することができる。ブロック502において、グレースケール画像を入力としてカラー化器、例えばカラー化器CNN210に提供する。グレースケール画像は、実際のグレースケール画像202および/またはグレースケール訓練画像204を含んでもよい。グレースケール画像は、1人以上の人物を写している画像を含んでもよい。ブロック502の次に、ブロック504を実行することができる。
【0102】
ブロック504において、中間カラー化画像および対応する部位アノテーションを生成する。いくつかの実装形態において、中間カラー化画像および対応する部位アノテーションは、潜在層、例えばカラー化器CNN210の潜在層212によって生成された中間特徴ベクトルによって表されてもよい。部位アノテーションは、グレースケール画像に写されている1つ以上の人物の部位セグメンテーションを示すことができ、例えば入力画像の各ピクセルを、人物を写していないピクセル、または人物の特定の部分、例えば頭部、胴体、腕、脚などを写しているピクセルに分類することができる。中間特徴ベクトルは、入力として特徴識別器、例えば特徴識別器218に提供される。ブロック504の次に、ブロック506を実行することができる。
【0103】
ブロック506において、ネットワーク出力カラー化画像および対応する部位アノテーションを生成する。いくつかの実装形態において、ネットワーク出力カラー化画像および対応する部位アノテーションは、出力層、例えばカラー化器CNN210の出力層214によって生成された特徴ベクトルによって表されてもよい。ブロック506の次に、ブロック508を実行することができる。
【0104】
ブロック508において、ブロック506で生成された中間カラー化画像をサイズ変更する。例えば、ブロック506で生成された中間カラー化画像をアップサンプリング(またはアップコンバート)することによって、ブロック508で生成されたネットワーク出力画像と同じ解像度を有するサイズ変更済み中間カラー化画像を取得することができる。いくつかの実装形態において、サイズ変更済み中間カラー化画像およびネットワーク出力画像の解像度は、正解カラー画像の解像度と同じであってもよい。ブロック508の次に、ブロック510を実行することができる。
【0105】
ブロック510において、サイズ変更済み中間カラー化画像とネットワーク出力画像とを合成することによって、カラー化画像を取得する。ブロック510の次に、ブロック512を実行することができる。
【0106】
ブロック512において、ブロック510で取得されたカラー化画像および対応する部位アノテーションを、入力としてピクセル識別器、例えばピクセル識別器222に提供する。ブロック512の次に、ブロック514を実行することができる。
【0107】
ブロック514において、特徴識別器およびピクセル識別器からラベル予測を取得する。いくつかの実装形態において、各々の損失値は、各々のラベル予測に基づいて、特徴識別器およびピクセル識別器から取得されてもよい。例えば、特徴損失値は、特徴識別器から取得されてもよく、知覚損失値は、ピクセル識別器から取得されてもよい。
【0108】
いくつかの実装形態において、勾配反転層を使用してもよい。例えば、勾配反転層は、特徴識別器からのフィードバックをカラー化器CNN210に提供することができる。いくつかの実装形態において、特徴識別器によって出力された損失値は、勾配反転層を介してカラー化器CNNに提供されてもよい。
【0109】
いくつかの実装形態において、知覚損失値は、正解カラー画像と、カラー化器CNN210によって生成された対応するカラー化画像との間の差に基づくことができる。知覚損失は、画像対の比較に基づいて知覚損失を決定する訓練済みニューラルネットワークを用いて取得されてもよい。いくつかの実装形態において、例えば、ピクセル識別器が多層ニューラルネットワークを用いて実装された場合、ピクセル識別器の出力層は、知覚損失値を、正解画像とカラー化器CNN210によって生成された対応するカラー化画像との間のL2損失として生成することができる。いくつかの実装形態において、ピクセル識別器は、知覚損失値に基づいて、ラベル予測を生成することができる。
【0110】
ラベル予測または損失値を用いて、カラー化器、例えば、カラー化器CNN210を訓練する。いくつかの実装形態において、損失値は、L1損失値であってもよい。例えば、カラー化器がラダーCNNkとして実装された場合、ニューラルネットワークの1つ以上のノードに関連する重みおよび/またはニューラルネットワークの1つ以上のノード対または層対の間の接続は、損失値に基づいて調整することができる。
【0111】
いくつかの実装形態において、例えば、ネットワーク出力画像232および/またはカラー化画像236からの逆伝播は、潜在層212に直接に送信されてもよい。このような逆伝播は、カラー化器CNN210の訓練を加速することができる。
【0112】
例えば、訓練されているカラー化器がカラー化画像を生成し且つ特徴識別器および/またはピクセル識別器によって生成されたラベル予測が不精確閾値レベルを満たすまで、方法500またはその一部を任意の回数に繰り返して実行することができる。
【0113】
したがって、方法500を用いて、カラー化器を訓練することができる。この訓練済みカラー化器は、グレースケール画像を入力として取り込み、グレースケール画像に色(彩度)を追加し、グレースケール画像に写されている1人以上の人物に部位アノテーションを追加したカラー化画像を出力として生成することができる。訓練のために特徴識別器を使用することによって、訓練済みカラー化器によって生成されたカラー化画像は、正解カラー画像に類似する構造を有することができる。カラー化器の潜在層の出力を入力として受信する特徴識別器を使用することによって、カラー化器は、実際のグレースケール画像およびグレースケール訓練画像の両方に同様の特徴ベクトルを生成することができる。例えば、実際のグレースケール画像は、色データが利用できない過去の白黒写真を含んでもよい。また、訓練のためにピクセル識別器を使用することによって、訓練済みカラー化器によって生成されたカラー化画像は、正解カラー画像に類似するテクスチャを有することができる。
【0114】
上述した方法500を用いて訓練されたカラー化器CNN210は、画像をカラー化するために利用され得る訓練済み機械学習モデルとして提供されてもよい。したがって、訓練済みカラー化器CNN210は、図2を参照して説明された他のブロック、例えば合成器216、特徴識別器218、サイズ変更器220、および/またはピクセル識別器222を含まないように提供されてもよい。例えば、訓練済みカラー化器CNN210は、任意の装置上で画像のカラー化を実行するように提供されてもよい。例えば、訓練済みカラー化器CNN210は、クライアント装置120~126の画像アプリケーション156aの一部として、他のアプリケーション154の一部として、またはオペレーティングシステムの一部として、クライアント装置120~126のいずれかの上で提供されてもよい。
【0115】
いくつかの実装形態において、例えば、装置上でカラー化器CNN210を訓練(または再訓練)する場合、GAN構成200の1つ以上の追加のブロックまたはGAN構成200の全体は、当該装置上に設けられてもよい。例えば、サーバ装置104は、GAN構成200を画像アプリケーション156bおよび/またはモデル訓練アプリケーション158に実装することができる。
【0116】
図6は、いくつかの実装形態に従って、訓練済み畳み込みニューラルネットワークを用いて画像をカラー化するための例示的な方法600を示すフロー図である。例えば、訓練済み畳み込みニューラルネットワークは、図5を参照して上述した技術を用いて訓練されたカラー化器CNN210であってもよい。
【0117】
いくつかの実装形態において、方法600は、例えば、図1に示されたサーバシステム102上で実装されてもよい。いくつかの実装形態において、方法600の一部または全ては、図1に示された1つ以上のクライアント装置120、122、124または126上で、1つ以上のサーバ装置上で、および/またはサーバ装置とクライアント装置の両方の上で実装されてもよい。記載された例において、実装システムは、1つ以上のデジタルプロセッサまたは処理回路(プロセッサ)と、1つ以上の記憶装置(例えば、データベース106または他の記憶装置)とを含む。いくつかの実装形態において、1つ以上のサーバおよび/またはクライアントの異なる構成要素は、方法600の異なるブロックまたは他のブロックを実行することができる。いくつかの例において、第1の装置は、方法600のブロックを実行するものとして説明される。いくつかの実装形態において、1つ以上の他の装置(例えば、他のクライアント装置またはサーバ装置)は、方法600の1つ以上のブロックを実行することができ、結果またはデータを第1の装置に送信することができる。
【0118】
いくつかの実装形態において、システムは、方法600または方法の一部を自動的に開始することができる。いくつかの実装形態において、実装システムは、第1の装置である。例えば、この方法(またはその一部)は、周期的に実行されてもよく、または1つ以上の特定のイベントもしくは条件に基づいて、例えば、ラベル予測精度が閾値を下回るときに、方法400の前回の実行から所定の時間が経過したときに、および/またはこの方法によって読み取られる設定に指定され得る1つ以上の他の条件が生じたときに実行されてもよい。
【0119】
方法600は、ブロック602から開始することができる。ブロック602において、グレースケール画像を受信する。例えば、グレースケール画像は、1人以上の人物を写している古い白黒写真、例えばスキャンされた写真であってもよい。例えば、グレースケール画像は、例えば、ユーザがユーザインターフェイス上に表示されるユーザインターフェイスオプションを選択することによってソフトウェアアプリケーションの画像カラー化機能を起動するときに、ユーザ入力として受信されてもよい。例えば、ユーザは、ユーザインターフェイスをクリックまたはタップすることによって、または音声コマンドによって、ユーザインターフェイスオプションを起動することができる。
【0120】
別の実施例において、例えば、カラー化機能がアプリケーションプログラミングインターフェイス(API)を介して提供される場合またはサービスとして提供される場合、グレースケール画像は、APIへのプログラムコールを介して受信され、画像カラー化サービスにアップロードされてもよい。APIは、例えば、スマートフォン、デジタルカメラ、タブレット、または画像撮影機能を有する任意の他の装置のオペレーティングシステムAPIとして提供されてもよい。例えば、装置上で実行されるアプリケーションは、このAPIを利用して、画像のカラー化を要求することができる。
【0121】
いくつかの実装形態において、グレースケール画像は、デジタルカメラを用いて撮影された画像であってもよい。例えば、デジタルカメラは、撮影されているシーンが暗いときにグレースケール画像を撮影することができる。このような撮影は、例えば、赤外線光でシーンを照明し、赤外線対応センサで画像を撮影することによって行われてもよい。このような撮影の場合、カメラを起動する人物およびシーン内の人物は、可視光範囲外にある照明光(赤外線)を見えないが、デジタルカメラの赤外線対応撮像センサは、白黒写真を撮影することができる。例えば、デジタルカメラは、スマートフォンのカメラであってもよい。別の例において、デジタルカメラは、赤外線エミッタおよび赤外線対応センサを備える防犯カメラであってもよい。
【0122】
なお、上記では特定のグレースケール画像を参照して説明したが、任意のグレースケール画像、例えば、彩度または色情報を有しないデジタル画像を利用することができる。ブロック602の次に、ブロック604を実行することができる。
【0123】
ブロック604において、グレースケール画像をダウンサンプリングする。グレースケール画像をダウンサンプリングすることは、画像の解像度を低減することを含んでもよい。例えば、画像の解像度は、256×256ピクセル、352×352ピクセル、または他の好適な解像度に変更されてもよく、受信されたグレースケール画像は、より高い解像度、例えば、1024×1024ピクセル、2048×2048ピクセル、または任意の他の解像度であってもよい。画像のダウンサンプリングは、画像をカラー化するための計算負荷を低減することができる。例えば、ダウンサンプリングされた画像のカラー化は、より少ないプロセッサリソース、より少ないメモリなどを必要とする。計算負荷を低減することによって、比較的低い計算能力を有する装置、例えばスマートフォン、タブレット、デジタルカメラなどを用いて、カラー化を実行することができる。いくつかの実装形態において、ダウンサンプリング後に達成される目標解像度は、画像をカラー化するために使用されるカラー化器畳み込みニューラルネットワーク(例えば、カラー化器CNN210)の構成に基づいて選択されてもよい。ブロック604の次に、ブロック606を実行することができる。
【0124】
ブロック606において、例えば図5を参照して上述したように、グレースケール画像をカラー化するように訓練されたカラー化器CNN、例えばカラー化器CNN210の潜在層から、グレースケール画像に基づいた中間カラー化画像を取得する。いくつかの実装形態において、中間カラー化画像の解像度は、グレースケール入力画像またはダウンサンプリングされたグレースケール画像の解像度より低くてもよい。例えば、中間カラー化画像は、16×16ピクセル、32×32ピクセル、64×64ピクセルなどの解像度を有してもよい。いくつかの実装形態において、中間カラー化画像の解像度は、当該中間カラー化画像を生成したカラー化器CNNの特定の潜在層に依存してもよい。ブロック606の次に、ブロック608を実行することができる。
【0125】
ブロック608において、中間カラー化画像をサイズ変更する。例えば、中間カラー化画像は、グレースケール画像またはダウンサンプリングされたグレースケール画像と同じ解像度にサイズ変更(アップサンプリング)されてもよい。ブロック608の次に、ブロック610を実行することができる。
【0126】
ブロック610において、カラー化器CNN、例えばカラー化器CNN210の出力層から、グレースケール画像に基づいたネットワーク出力画像を取得する。いくつかの実装形態において、ネットワーク出力画像の解像度は、グレースケール画像またはダウンサンプリングされたグレースケール画像と同じであってもよい。ブロック610の次に、ブロック612を実行することができる。
【0127】
ブロック612において、サイズ変更済み中間カラー化画像とネットワーク出力画像とを合成することによって、カラー化画像を取得する。ブロック612の次に、ブロック614を実行することができる。
【0128】
ブロック614において、カラー化画像をアップサンプリングする。例えば、カラー化画像は、グレースケール画像と同じサイズにアップサンプリングされてもよい。さらに、カラー化画像は、グレースケール画像、例えば、グレースケール画像またはダウンサンプリングされたグレースケール画像と合成される。その結果、出力画像が得られる。出力画像は、ブロック602で受信したグレースケール画像と同じ解像度を有してもよい。
【0129】
方法600を用いて、任意のグレースケール画像をカラー化することができる。例えば、方法600を用いて、1人以上の人物を写しているグレースケール画像をカラー化することができる。例えば、方法600を用いて、白黒写真、例えばデジタルカメラを用いて撮影された写真をカラー化することができる。いくつかの実装形態において、出力画像を含むユーザインターフェイスを表示することができる。いくつかの実装形態において、ユーザは、ユーザインターフェイスを用いて、出力画像を閲覧および編集することができ、彩度、輝度、ホワイトバランスなどを調節することができる。いくつかの実装形態において、ユーザインターフェイスは、例えば、並列でまたは他の構成で、出力画像およびグレースケール入力画像を表示することができる。いくつかの実装形態において、ユーザインターフェイスは、ユーザが出力画像およびグレースケール入力画像の表示を切り替えることを可能にするオプション、出力画像を記憶装置に保存することを可能にするオプション、出力画像を印刷することを可能にするオプション、出力画像を画像ライブラリまたは画像共有サービスにアップロードすることを可能にするオプション、またはメッセージングアプリケーションを介して出力画像を他のユーザに送信することを可能にするオプションを含んでもよい。
【0130】
方法600は、任意の数のグレースケール画像に対して繰り返して実行されてもよい。いくつかの実装形態において、方法600の1つ以上のブロックは、省略されてよく、または他のブロックに合併されてよい。いくつかの実装形態において、例えば、カラー化器CNNがグレースケール画像を直接に処理することができる場合(例えば、方法600が高い計算能力を有するコンピューティング装置、例えばサーバ上で実装された場合、またはカラー化器CNNが高解像度入力を受け入れることができる場合)、ブロック604を省略してもよい。いくつかの実装形態において、例えば、カラー化器CNNによって生成されたカラー化された画像がグレースケール画像と同じまたは同様の解像度を有する場合、最初にカラー化画像をアップサンプリングすることなく、カラー化画像とグレースケール画像とを合成するように、ブロック614を実行してもよい。
【0131】
いくつかの実装形態において、例えば、追加の訓練データを用いて、訓練済みモデル、例えば、カラー化器CNN210、特徴識別器218、またはピクセル識別器222を更新することができる。追加の訓練は、モデルの精度および/または速度を改善することができる。いくつかの実装形態において、例えば、ユーザがユーザデータを用いて訓練済みモデルを更新することに同意した場合、ユーザ活動または応答に基づいて、特定のクライアント装置上で訓練済みモデルをローカル的に更新することができる。例えば、このようなユーザデータは、1つ以上の画像、例えば、カラー化画像またはグレースケール画像を含んでもよい。これらの実装形態において、ユーザデータは、送信されないまたは共有されない。また、ユーザが同意した場合、訓練済みモデルに対する更新は、ネットワーク130を介して、例えばサーバ装置104または1つ以上の他のクライアント装置に提供されてもよい。
【0132】
いくつかの実装形態において、装置(例えば、クライアント装置120~124)に基づいて、訓練済みモデルをカスタマイズしてもよい。例えば、異なるクライアント装置は、シングルコアプロセッサ、マルチコアプロセッサ、1つ以上の並列プロセッサ、複数のグラフィックス処理ユニット(GPU)を備えるグラフィックスプロセッサ、再構成可能プロセッサ(例えば、FPGA)、ニューラルネットワークプロセッサなどの利用可能なハードウェアに基づいて、異なる処理能力有することができる。さらに、異なるクライアント装置は、異なるレベルの可用な他のリソース、例えば、メモリ、バッテリ容量、ネットワーク帯域幅を有することができる。
【0133】
例えば、より高い複雑性を有する訓練済みモデルは、例えば推論エンジンが利用する並列処理のために最適化されたニューラルネットワークプロセッサまたはGPUを有する装置(例えば、クライアント装置120~124のいずれかまたはサーバ装置104)に設けられてもよい。この例において、より高い処理能力のクライアント装置を利用して、訓練済みモデルを実装する。
【0134】
別の例において、(例えば、より少ないニューラルネットワークノードまたは層を有する)簡略化された訓練済みモデルは、より大きなリソース制約を有するクライアント装置、例えば能力が制限されたシングルコアプロセッサに設けられてもよい。いくつかの実装形態において、クライアント装置上で複数の訓練済みモデルを設けてもよい。呼び出す時に、例えば、画像をカラー化するときまたはローカル分類器を適用するときに、例えばネットワーク接続性、利用可能なバッテリ容量、利用可能なメモリなどのコンテキスト要素に基づいて、適切な訓練済みモデルを利用することができる。
【0135】
グレースケール画像を自動的にカラー化するときの課題は、生成された出力画像に正確なホワイトバランスを達成することが困難であることである。本明細書に記載された実装形態は、適切なホワイトバランスで画像をカラー化することができる。正解カラー画像で訓練されたカラー化器CNNは、適切なホワイトバランスでピクセル値を有するカラー化画像を生成することができる。
【0136】
グレースケール画像を自動的にカラー化するときの別の課題は、カラー化画像が適切且つ多様な色を有することを保証することである。例えば、グレースケール画像が複数の人物を写している白黒写真である場合、類似色で異なる人物を描写しない、例えば全ての衣服を類似色合いにしないことが有用である。本開示の技術は、入力グレーピクセルのピクセル値とカラー化画像のピクセルの値との間に1:1のマッチングを有しないことを確実にすることによって、多様な色を生成することができる。
【0137】
グレースケール画像が、例えば、古い時代に撮影された1つ以上の人物を写している古い画像または異なる文化からの対象を撮影する古い画像であるときに、さらに別の課題が生じる。この場合、同様の時代または文化からの正解訓練画像が利用できないことがある。現代の写真または異なる文化からの写真を用いて訓練された機械学習モデルは、このような画像に適応できない可能性がある。古い時代の人物は、典型的には、現代の写真内の人物とは異なるスタイルおよび異なる色合いの服を着用する。古い時代からの訓練画像の数が足りない場合、訓練された機械学習モデルによって生成されたカラー化画像には様々な誤差が生じる可能性がある。例えば、皮膚領域の着色不整合エラー、例えば顔と手が異なる色に着色されたエラー、肌が衣服と同じ色に割り当てられたエラーが生じる可能性がある。これは、ドメイン適応課題と呼ばれる。
【0138】
本明細書に記載されたいくつかの実装形態は、これらの技術課題に対処し、良好なホワイトバランスおよび多様な色を有するカラー化画像を生成することができ、入力画像の異なるドメインに適応することができる。具体的には、本明細書に記載されているように、部位セグメンテーションおよびカラー化の両方を実行するように機械学習モデルを訓練することによって、上述した課題を克服する訓練済みモデルを提供することができる。また、本明細書に記載された実装形態は、異なるラベル予測および/または損失値を生成する2つの敵対的識別器ネットワークを含む敵対的生成ネットワーク(GAN)構成を使用する。2つの損失値を用いて機械学習モデルを訓練することによって、訓練された機械学習モデルは、異なる種類のグレースケール入力画像に対してロバストであり、画像構造と画像テクスチャの両方に基づいてカラー化画像を確実に生成することができる。
【0139】
パートセグメンテーションおよび画像カラー化の両方を実行するように訓練された機械学習モデルを使用することは、いくつかの技術利点を有する。例えば、訓練されたモデルは、生成された部位セグメンテーション情報を用いて、入力画像に写された1人以上の人物が着用した衣服に対応する入力画像の部分を識別し、当該モデルを訓練するために使用されたカラー化画像に基づいて衣服の色を生成する。
【0140】
別の利点は、訓練されたモデルが、部位アノテーションに基づいて皮膚領域をより精確に識別することができ、入力画像に写されている人物の全ての皮膚領域をカラー化することができることである。肌色損失を使用することによって、皮膚の色ではない色で皮膚領域をカラー化しないことを保証することができる。
【0141】
また、彩度損失を使用することによって、彩度の良い出力画像を生成することができる。さらに、いくつかの実装形態において、彩度損失の使用は、人物に対応しない領域、例えば部位アノテーションに特定されていない入力画像の領域に限定される。このように彩度損失の使用を制限することによって、入力画像に写されている人物の肌領域の彩度を過剰にすることを防止することができる。
【0142】
前述の説明は、部位セグメンテーションおよびカラー化を実行するカラー化器CNNを参照して説明したが、人物を写している画像をカラー化するように他のモデルを訓練することもできる。例えば、モデルは、画像に写されている人物の姿勢を検出し、カラー化を実行するように訓練されてもよい。姿勢の検出は、例えば、人物の複数のキーポイントを検出することを含んでもよい。例えば、キーポイントは、画像に写されている人物の頭部、肩、肘、手首、臀部、膝、および足首のうち、1つ以上に対応する画像ピクセルを含んでもよい。また、姿勢の検出は、これらのポイント間の接続、例えば骨格接続を検出することを含んでもよい。
【0143】
さらに、異なるデータセットが異なる分布を有する場合、例えば帽子などの特定の種類のヘッドギアを着用している人を写す頻度を有する場合、訓練中にデータセット分類器を使用することによって、カラー化画像を生成するカラー化器CNNが入力データセットの特定の特徴に基づいて画像をカラー化しないまたは入力画像に存在しない訓練データセットから特徴を学習しないことを保証することができる。例えば、識別器(例えば、ピクセル識別器)は、一種類のデータセットを入力として受信することができ、このデータセットを利用して、生成モデルがこのような特徴を学習する可能性を低減するための訓練フィードバックを生成することによって、生成モデルにペナルティを課すことができる。
【0144】
さらに、知覚損失値の代わりにまたはそれに加えて、各ピクセルの平均二乗誤差の計算に基づいて、カラー化画像の1つ以上のピクセルの隣接色損失または彩度損失を計算することができる。例えば、隣接色損失を計算した各ピクセルに対して、画像の他のピクセル、例えば同様のピクセル色を有する隣接ピクセルを識別するように、マスクを作成することができる。カラー化器CNNによって生成されたカラー化画像と、正解画像との両方に対してマスクを作成することができる。各々のマスクの平均二乗誤差を比較することによって、隣接色損失を得ることができる。隣接色損失をフィードバックとしてカラー化器CNNに提供することによって、カラー化器CNNによって出力されたカラー化画像が適切なホワイトバランスおよび多様な色を有することを保証することができる。
【0145】
図7は、本明細書に記載された1つ以上の特徴を実装するために使用され得る例示的な装置700を示すブロック図である。一例において、装置700を用いて、クライアント装置、例えば図1に示されたクライアント装置115のいずれかを実装することができる。代替的に、装置700は、サーバ装置、例えばサーバ101を実装することができる。いくつかの実装形態において、装置700を用いて、クライアント装置、サーバ装置、またはクライアント装置とサーバ装置の両方を実装することができる。上述したように、装置700は、任意の好適なコンピュータシステム、サーバ、または他の電子装置もしくはハードウェア装置であってもよい。
【0146】
本明細書に記載された1つ以上の方法は、任意の種類のコンピューティング装置上で実行されるスタンドアロンプログラム、ウェブブラウザ上で実行されるプログラム、モバイルコンピューティング装置(例えば、携帯電話、スマートフォン、タブレットコンピュータ、ウェアラブル装置(例えば、腕時計、アームバンド、宝飾品、ヘッドウェア、仮想現実ゴーグルまたはメガネ、拡張現実ゴーグルまたはメガネ、ヘッドマウントディスプレイ)、ラップトップコンピュータ)上で実行されるモバイルアプリケーション(アプリ)として実行することができる。一例において、クライアント/サーバ構成を使用することができる。例えば、モバイルコンピューティング装置(クライアント装置)は、ユーザからの入力データをサーバ装置に送信し、最終の出力データをサーバから受信して出力する(例えば、表示する)。別の例において、モバイルコンピューティング装置上のモバイルアプリ(および/または他のアプリ)で全ての計算を実行することができる。別の例において、計算をモバイルコンピューティング装置と1つ以上のサーバ装置との間でセグメンテーションすることができる。
【0147】
いくつかの実装形態において、装置700は、プロセッサ702と、メモリ704と、入力/出力(I/O)インターフェイス706とを含む。プロセッサ702は、プログラムコードを実行し、装置700の基本動作を制御するための1つ以上のプロセッサおよび/または処理回路であってもよい。「プロセッサ」は、データ、信号または他の情報を処理するための任意の適切なハードウェアシステム、メカニズムまたはコンポーネントを含む。プロセッサは、1つ以上のコア(例えば、シングルコア、デュアルコア、またはマルチコア構成)を有する汎用中央処理ユニット(CPU)、(例えば、マルチプロセッサ構成を有する)複数の処理ユニット、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、複雑なプログラマブルロジック装置(CPLD)、機能性を達成するための専用回路、ニューラルネットワークモデルベース処理を実行するための専用プロセッサ、ニューラル回路、行列計算(例えば、行列乗算)を行うために最適化されたプロセッサを有するシステム、または他のシステムを含むことができる。いくつかの実装形態において、プロセッサ702は、ニューラルネットワーク処理を実行するための1つ以上のコプロセッサを含むことができる。いくつかの実装形態において、プロセッサ702は、データを処理することによって確率的出力を生成するプロセッサであってよい。例えば、プロセッサ702によって生成された出力は、不正確であってもよく、または出力期待値の範囲内に正確であってもよい。処理は、特定の地理位置に制限される必要がなく、時間的に制限される必要もない。例えば、プロセッサは、「リアルタイム」、「オフライン」、「バッチモード」で機能を実行することができる。処理の一部は、異なる時間および異なる位置で、異なる(または同じ)処理システムによって実行されてもよい。コンピュータは、メモリと通信する任意のプロセッサであってもよい。
【0148】
メモリ704は、典型的には、プロセッサ702によって利用されるように装置700内に設けられ、プロセッサ702によって実行される命令を記憶するための任意の好適なプロセッサ可読記憶媒体、例えば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気消去可能な読取り専用メモリ(EEPROM)、フラッシュメモリであってもよい。メモリ704は、プロセッサ702とは別に配置されてもよく、および/またはそれに一体化されてもよい。メモリ704は、オペレーティングシステム708、プロセッサ702によってサーバ装置700上で実行されるソフトウェア、例えば、機械学習アプリケーション730、他のアプリケーション712、およびアプリケーションデータ714を記憶することができる。他のアプリケーション712は、データ表示エンジン、ウェブホスティングエンジン、画像表示エンジン、通知エンジン、ソーシャルネットワーキングエンジンなどのアプリケーションを含むことができる。いくつかの実装形態において、機械学習アプリケーション730および他のアプリケーション712はそれぞれ、プロセッサ702が本明細書に記載された機能、例えば図2、3、4および7の方法の一部かまたは全てを実行することを可能にする命令を含むことができる。
【0149】
他のアプリケーション712は、例えば、画像編集アプリケーション、メディア表示アプリケーション、通信アプリケーション、ウェブホスティングエンジンまたはアプリケーション、マッピングアプリケーション、メディア共有アプリケーションなどを含むことができる。本明細書に開示された1つ以上の方法は、例えば、任意の種類のコンピューティング装置上で実行できるスタンドアロンコンピュータプログラムとして、ウェブページを有するウェブアプリケーションとして、モバイルコンピューティング装置上で実行されるモバイルアプリケーション(app)として、いくつかの環境およびプラットフォームに動作することができる。
【0150】
様々な実装形態において、機械学習アプリケーションは、ベイズ分類器、サポートベクトルマシン、ニューラルネットワーク、または他の学習技術を利用することができる。いくつかの実装形態において、機械学習アプリケーション730は、訓練済みモデル734と、推論エンジン736と、データ732とを含むことができる。いくつかの実装形態において、データ732は、訓練データ、例えば訓練済みモデル734を生成するために使用されるデータを含んでもよい。例えば、訓練データは、文字、画像、音声、映像などの任意の種類のデータを含むことができる。訓練済みモデル734がカラー化器、例えばカラー化器CNN210、または他の種類のカラー化器モデルである場合、訓練データは、正解カラー画像206を含んでもよい。
【0151】
訓練データは、任意のソース、例えば、訓練用に明記されたデータリポジトリ、機械学習の訓練データとして使用するための許可が与えられたデータから取得されてもよい。1人以上のユーザが機械学習モデル、例えば訓練済みモデル734を訓練するために各ユーザのデータの使用を許可する実装形態において、訓練データは、これらのユーザデータを含んでもよい。1人以上のユーザが各ユーザのデータの使用を許可する実装形態において、データ732は、画像(例えば、写真または他のユーザ生成画像)などの許可データを含むことができる。
【0152】
いくつかの実装形態において、訓練データは、訓練の目的で生成された合成データ、例えば訓練されている状況におけるユーザ入力または活動に基づいていないデータ、模擬写真またはコンピュータによって生成された他の画像から得られたデータを含んでもよい。いくつかの実装形態において、機械学習アプリケーション730は、データ732を除外する。例えば、これらの実装形態において、訓練済みモデル734は、例えば、異なる装置上で生成されてもよく、機械学習アプリケーション730の一部として提供されてもよい。様々な実装形態において、訓練済みモデル734は、モデル構造または形態および関連する重みを含むデータファイルとして提供されてもよい。推論エンジン736は、訓練済みモデル734用のデータファイルを読み取ることができ、訓練済みモデル734において指定されるモデル構造または形態に基づいて、ノード接続性、層および重みを有するニューラルネットワークを実装することができる。
【0153】
いくつかの実装形態において、訓練済みモデル734は、1つ以上のモデル形態または構造を含んでもよい。例えば、モデル形態または構造は、任意の種類のニューラルネットワーク、例えば、線形ネットワーク、複数の層(例えば、入力層と出力層との間の「隠れ層」。各層は、線形ネットワークである)を実装する深層ニューラルネットワーク、畳み込みニューラルネットワーク(例えば、入力データを複数の部分またはタイルに分割または区画し、1つ以上のニューラルネットワーク層を用いて各タイルを別々に処理し、各タイルの処理から得られた結果を集約するネットワーク)、シーケンス間(sequence-to-sequence)ニューラルネットワーク(例えば、1文中の単語、1本の動画中のフレームなどのシーケンシャルデータを入力として受信し、結果シーケンスを出力として生成するネットワーク)を含むことができる。モデル形態または構造は、様々なノード間の接続および層に編成されたノードの編成を指定することができる。
【0154】
例えば、最初の層(例えば、入力層)のノードは、データを入力データ732またはアプリケーションデータ714として受信することができる。例えば、訓練済みモデル734がカラー化器である場合、入力データは、グレースケール画像、例えば、実際のグレースケール画像202および/またはグレースケール訓練画像204を含んでもよい。例えば、訓練済みモデルが画像分析または画像生成のために使用される場合、入力データは、例えば、ノードあたり1つ以上のピクセルを含むことができる。後続の中間層は、モデル形式または構造において指定された接続に従って、前の層のノードの出力を入力として受信ことができる。これらの層は、隠れ層または潜在層とも呼ばれる。
【0155】
最後の層(例えば、出力層)は、機械学習アプリケーションの出力を生成する。例えば、この出力は、画像に写されている人物の1つ以上の部位を識別する部位アノテーションを含むカラー化画像であってもよい。また、いくつかの実装形態において、モデル形態または構造は、各層中のノードの数および/または種類を指定する。
【0156】
異なる実装形態において、訓練済みモデル734は、各モデル構造または形態の層に配置された複数のノードを含むことができる。いくつかの実装形態において、ノードは、例えば、1単位の入力を処理して1単位の出力を生成するように構成された、メモリを有しない計算ノードであってもよい。ノードによって実行される計算は、例えば、複数のノード入力の各々に重みを乗算するステップと、加重和を取得するステップと、バイアス値または切片値を用いて加重和を調整することによってノード出力を生成するステップとを含んでもよい。また、いくつかの実装形態において、ノードによって実行される計算は、調整された加重和にステップ/活性化関数を適用するステップを含んでもよい。いくつかの実装形態において、ステップ/活性化関数は、非線形関数であってもよい。様々な実装形態において、このような計算は、行列乗算などの演算を含んでもよい。いくつかの実装形態において、例えば、マルチコアプロセッサの複数のプロセッサコアを用いて、またはGPUもしくは専用ニューラル回路の個々の処理ユニットを用いて、複数のノードの計算を並列に実行することができる。いくつかの実装形態において、ノードは、メモリを含んでもよく、例えば、1つ以上の前の入力を記憶し、後続の入力を処理する際に1つ以上の前の入力を使用してもよい。例えば、メモリを有するノードは、ロングショートタームメモリ(LSTM)ノードを含むことができる。LSTMノードは、メモリを用いて、ノードが有限状態マシン(FSM)のように動作することを可能にする「状態」を維持することができる。このようなノードを有するモデルは、連続データ(sequential data)、例えば、1文または1段落に含まれる複数の単語、1本の動画に含まれる複数のフレーム、会話またはその他の音声などを処理する際に有用であろう。
【0157】
いくつかの実装形態において、訓練済みモデル734は、個々のノードの埋め込みまたは重みを含んでもよい。例えば、モデルは、モデル形態または構造によって指定されるように、層に編成された複数のノードとして初期化されてもよい。初期化の時に、モデル形態に従って接続された各ノード対、例えば、ニューラルネットワークの連続層の各ノード対の間の接続に、各々の重みを適用してもよい。例えば、各々の重みは、ランダムに割り当てられてもよく、またはデフォルト値に初期化されてもよい。その後、例えば、データ732を用いてモデルを訓練して、結果を生成することができる。
【0158】
例えば、訓練ステップは、教師あり学習技術を適用することを含むことができる。教師あり学習において、訓練データは、複数の入力(例えば、1組のグレースケール画像)と、各入力に対応する期待出力(例えば、グレースケール画像に対応する1組の正解画像または他のカラー化画像)とを含むことができる。例えば、同様の入力が与えられたときにモデルが期待出力を生成する確率を高めるように、重みの値は、モデルの出力と期待出力との比較に基づいて自動的に調整される。
【0159】
いくつかの実装形態において、訓練ステップは、教師なし学習技術を適用することを含んでもよい。教師なし学習において、入力データのみが提供されてもよく、モデルは、データを区別するように、例えば、入力データを複数のグループにクラスタリングするように訓練されてもよい。各グループは、何らかの形で類似する入力データを含む。例えば、モデルは、画像を区別するように訓練されてもよい。したがって、モデルは、例えば、カラー化器を用いてグレースケール入力画像から生成されたカラー化画像と、正解カラー画像などのカラー画像とを区別することができる。図2、3および4を参照して上述したように、特徴識別器218および/またはピクセル識別器222は、データを区別するように訓練されてもよい。
【0160】
いくつかの実装形態において、教師なし学習を用いて、例えば、機械学習アプリケーション730によって使用され得る知識表現を生成することができる。例えば、図2および4を参照して上述したように、教師なし学習を用いて、ピクセル識別器222によって利用される埋め込みを生成することができる。様々な実装形態において、訓練済みモデルは、モデル構造に対応する1組の重みまたは埋め込みを含む。データ732を省略した実装形態において、機械学習アプリケーション730は、例えば、機械学習アプリケーション730の開発者または第三者による事前の訓練に基づいて訓練されたモデル734を含むことができる。いくつかの実装形態において、訓練済みモデル734は、例えば、重みを提供するサーバからダウンロードされた1組の固定の重みを含んでもよい。
【0161】
また、機械学習アプリケーション730は、推論エンジン736を含む。推論エンジン736は、訓練済みモデル734をアプリケーションデータ714などのデータに適用することによって推論を提供するように構成される。いくつかの実装形態において、推論エンジン736は、プロセッサ702によって実行されるソフトウェアコードを含むことができる。いくつかの実装形態において、推論エンジン736は、プロセッサ702が訓練済みモデルを適用することを可能にする(例えば、プログラマブルプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)の)回路構成を指定することができる。いくつかの実装形態において、推論エンジン736は、ソフトウェア命令、ハードウェア命令、またはその組み合わせを含んでもよい。いくつかの実装形態において、推論エンジン736は、アプリケーションプログラミングインターフェイス(API)を提供することができる。オペレーティングシステム708および/または他のアプリケーション712は、このAPIを利用して、推論エンジン736を呼び出し、例えば訓練済みモデル734をアプリケーションデータ714に適用することによって、推論を生成することができる。例えば、図2~5を参照して上述したように、カラー化器モデルの推論は、カラー化画像であってもよく、特徴識別器またはピクセル識別器の推論は、ラベル予測であってもよい。
【0162】
機械学習アプリケーション730は、いくつかの技術利点を提供することができる。例えば、訓練済みモデル734が教師なし学習に基づいて生成された場合、推論エンジン736は、訓練済みモデル734を適用して、入力データ、例えばアプリケーションデータ714から知識表現(例えば、数値表現)を生成することができる。例えば、画像分析用に訓練されたモデルは、入力画像(例えば、10MB)よりも小さいデータサイズの画像表現(例えば、1KB)を生成することができる。いくつかの実装形態において、このような表現は、出力(例えば、ラベル、分類、画像の記述文、グレースケール画像から得られたカラー化画像)を生成するための処理コスト(例えば、計算コスト、メモリ使用量など)を低減するのに有用である。
【0163】
いくつかの実装形態において、このような表現は、入力として、推論エンジン736の出力から出力を生成する異なる機械学習アプリケーションに提供されてもよい。いくつかの実装形態において、機械学習アプリケーション730によって生成された知識表現は、例えばネットワークを介して、さらなる処理を行う異なる装置に提供されてもよい。このような実装形態において、画像ではなく知識表現を提供することは、例えば、低いコストでより速いデータ送信を可能にするという技術利益を提供することができる。別の例において、文書をクラスタ化するために訓練されたモデルは、入力文書から文書クラスタを生成することができる。文書クラスタは、元の文書にアクセスする必要なく、さらなる処理(例えば、文書がトピックに関連するか否かを判定すること、文書の分類カテゴリを判定すること)を行うために好適であるため、計算コストを節約することができる。
【0164】
いくつかの実装形態において、機械学習アプリケーション730は、オフラインで実装されてもよい。これらの実装形態において、訓練済みモデル734は、第1の段階で生成され、機械学習アプリケーション730の一部として提供されてもよい。いくつかの実装形態において、機械学習アプリケーション730は、オンラインで実装されてもよい。例えば、このような実装形態において、機械学習アプリケーション730(例えば、オペレーティングシステム708、1つ以上の他のアプリケーション712)を呼び出すアプリケーションは、機械学習アプリケーション730によって生成された推論を利用することができ(例えば、推論をユーザに提供することができ)、システムログ(例えば、ユーザによって許可される場合、推論に基づいてユーザがとる行動、またはさらなる処理の入力として利用される場合、さらなる処理の結果)を生成することができる。システムログは、定期的に、例えば、1時間ごとに、1ヵ月ごとにまたは3ヵ月ごとに生成されてもよく、ユーザによって許可された場合、訓練済みモデル734を更新するために、例えば訓練済みモデル734の埋め込みを更新するために使用されてもよい。
【0165】
いくつかの実装形態において、機械学習アプリケーション730が実行される装置700の特定の構成に適応できるように、機械学習アプリケーション730を実装してもよい。例えば、機械学習アプリケーション730は、使用可能な計算リソース、例えば、プロセッサ702を利用する計算グラフを決定することができる。例えば、機械学習アプリケーション730は、複数の装置上の分散アプリケーションとして実装された場合、計算を最適化するように、個々の装置上で実行される計算を決定することができる。別の例では、機械学習アプリケーション730は、プロセッサ702が特定の数(例えば、1000個)のGPUコアを有するGPUを含んでいると判断した場合、推論エンジンを(例えば、1000個の個別のプロセスまたはスレッドとして)実装することができる。
【0166】
いくつかの実装形態において、機械学習アプリケーション730は、1組の訓練済みモデルを実装することができる。例えば、訓練済みモデル734は、同じ入力データに各々適用可能である複数の訓練済みモデルを含むことができる。これらの実装形態において、機械学習アプリケーション730は、例えば、利用可能な計算リソース、以前の推論を使用した場合の成功率などに基づいて、特定の訓練済みモデルを選択することができる。いくつかの実装形態において、機械学習アプリケーション730は、複数の訓練済みモデルを適用するように、推論エンジン736を実行することができる。これらの実装形態において、機械学習アプリケーション730は、例えば、各訓練済みモデルを適用することによって得られた出力にスコアを付ける多数決を用いて、または1つ以上の特定の出力を選択することによって、出力を合成することができる。さらに、これらの実装形態において、機械学習アプリケーションは、個々の訓練済みモデルを適用するための時間閾値(例えば、0.5ms)を適用し、時間閾値内で利用可能な個々の出力のみを利用することができる。時間閾値内に受信されていない出力は、利用されなくてもよく、例えば破棄されてもよい。例えば、このような手法は、例えばオペレーティングシステム708または1つ以上のアプリケーション712によって機械学習アプリケーションを呼び出す間に指定された時間制限があるときに適切であろう。
【0167】
異なる実装形態において、機械学習アプリケーション730は、異なる種類の出力を生成することができる。例えば、機械学習アプリケーション730は、表現またはクラスタ(例えば、入力データの数値表現)、(例えば、画像、文書などを含む入力データの)ラベル、(例えば、入力文章に対する応答として使用され、画像または映像を適切に表現する)語句または文章、画像(例えば、入力画像、例えばグレースケール画像に応答して、機械学習アプリケーションによって生成されたカラー化画像または他の様式の画像)、音声または映像を提供することができる。例えば、機械学習アプリケーション730は、入力映像に応答して、特定の効果を適用した出力映像を生成することができる。例えば、訓練済みモデル734がコミックブックまたは特定のアーティストからの訓練データを用いて訓練された場合、この出力映像は、例えばコミックブックまたは特定のアーティストのスタイルでレンダリングされる。いくつかの実装形態において、呼び出されているアプリケーションは、別の機械学習アプリケーションであってもよい。このような構成は、例えば、呼び出されている機械学習アプリケーションが機械学習アプリケーション630からの出力を用いて訓練される、または機械学習アプリケーション630が呼び出されている機械学習アプリケーションからの出力を用いて訓練される敵対的生成ネットワークに使用されてもよい。
【0168】
代替的に、メモリ704内のソフトウェアのいずれも、任意の他の好適な記憶場所またはコンピュータ可読媒体上に格納されてもよい。また、メモリ704(および/または接続された他の記憶装置)は、1つ以上のメッセージ、1つ以上の分類基準、電子百科事典、辞書、類語辞典、知識ベース、メッセージデータ、文法、ユーザ設定、および/または本明細書に記載されている特徴において使用される他の命令およびデータを格納することができる。メモリ704および任意の他の種類のストレージ(例えば、磁気ディスク、光ディスク、磁気テープ、または他の有形媒体)は、「ストレージ」または「記憶装置」と見なすことができる。
【0169】
I/Oインターフェイス706は、サーバ装置700を他のシステムおよび装置に接続することを可能にする機能を提供することができる。接続された装置は、装置700の一部として含まれてもよく、または装置700から離れており、装置700と通信することができる。例えば、ネットワーク通信装置、記憶装置(例えば、メモリおよび/またはデータベース106)および入力/出力装置は、I/Oインターフェイス706を介して通信することができる。いくつかの実装形態において、I/Oインターフェイスは、入力装置(キーボード、ポインティング装置、タッチスクリーン、マイクロフォン、カメラ、スキャナ、センサなど)および/または出力装置(ディスプレイ装置、スピーカ装置、プリンタ、モータなど)などのインターフェイス装置に接続することができる。
【0170】
I/Oインターフェイス706に接続することができる装置のいくつかの例は、1つ以上のディスプレイ装置720を含むことができる。ディスプレイ装置720を用いて、コンテンツ、例えば画像、映像、および/または本明細書に記載されている出力アプリケーションのユーザインターフェイスを表示することができる。ディスプレイ装置720は、ローカル接続(例えば、ディスプレイバス)を介しておよび/またはネットワーク接続を介して、装置700に接続されてもよく、任意の好適なディスプレイ装置であってもよい。ディスプレイ装置720は、任意の好適なディスプレイ装置、例えばLCD、LED、プラズマディスプレイスクリーン、CRT、テレビ、モニタ、タッチスクリーン、3Dディスプレイスクリーン、または他の視覚ディスプレイ装置を含むことができる。例えば、ディスプレイ装置720は、モバイル装置上に設けられたフラットディスプレイスクリーン、ゴーグル、ヘッドセット装置に設けられた複数のディスプレイスクリーン、またはコンピュータ装置用のモニタスクリーンであってもよい。
【0171】
I/Oインターフェイス706は、他の入力装置および出力装置に接続することができる。いくつかの例は、画像を撮影することができる1つ以上のカメラを含む。いくつかの実装形態は、音声を(例えば、撮影された画像、音声コマンドなどの一部として)捕捉するためのマイクロフォン、音声を出力するためのオーディオスピーカ装置、または他の入出力装置を提供することができる。
【0172】
図示を容易にするために、図7は、1つのブロックを用いて、各々のプロセッサ702、メモリ704、I/Oインターフェイス706、およびソフトウェアブロック708、712および730を示す。これらのブロックは、1つ以上のプロセッサまたは処理回路、オペレーティングシステム、メモリ、I/Oインターフェイス、アプリケーション、および/またはソフトウェアモジュールを表することができる。他の実装形態において、装置700は、図示されている構成要素の全てを有しなくてもよく、および/または本明細書に記載されている要素の代わりにそれらに加えて、他の種類の要素を含む他の要素を有してもよい。いくつかの構成要素は、本明細書のいくつかの実装形態に記載されているブロックおよび動作を実行するものとして説明されているが、環境100、装置700、同様のシステム、またはこのようなシステムに関連する任意の適切なプロセッサの任意の適切な構成要素または構成要素の組み合わせが、本明細書に記載されているブロックおよび動作を実行することができる。
【0173】
本明細書に記載された方法は、コンピュータ上で実行可能なコンピュータプログラム命令またはコードによって実装されてもよい。例えば、このコードは、1つ以上のデジタルプロセッサ(例えば、マイクロプロセッサまたは他の処理回路)によって実装されよく、コンピュータプログラム製品上に記憶されてもよい。コンピュータプログラム製品は、磁気記憶媒体、光記憶媒体、電磁記憶媒体、半導体またはソリッドステートメモリを含む半導体記憶媒体、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、フラッシュメモリ、剛性磁気ディスク、光ディスク、ソリッドステートメモリドライブなどを含む。また、プログラム命令は、例えば、サーバ(例えば、分散システムおよび/またはクラウドコンピューティングシステム)から配信されたSaaS(software as a service)形式の電子信号に収容され、電子信号として提供されてもよい。代替的に、1つ以上の方法は、ハードウェア(例えば、ロジックゲート)で実装されてもよく、またはハードウェアとソフトウェアとの組み合わせで実装されてもよい。例示的なハードウェアは、プログラマブルプロセッサ(例えば、フィールドプログラマブルゲートアレイ(FPGA)、複雑なプログラマブルロジック装置)、汎用プロセッサ、グラフィックプロセッサ、特定用途向け集積回路(ASIC)などであってもよい。1つ以上の方法は、システム上で実行されるアプリケーションの一部もしくは構成要素として、または他のアプリケーションおよびオペレーティングシステムと共に実行されるアプリケーションもしくはソフトウェアとして実行することができる。
【0174】
特定の実装形態を参照して本開示を説明したが、これらの特定の実装形態は、例示に過ぎず、限定的なものではない。これらの例に示されている概念は、他の例および実装形態に適用されてもよい。
【0175】
本明細書に記載されたいくつかの実装形態は、ユーザの個人情報(例えば、ユーザデータ、ユーザのソーシャルネットワークに関する情報、ユーザの場所および当該場所にいる時間、ユーザのバイオメトリック情報、ユーザの行動および人口統計情報)を収集または使用する場合、情報を収集するか、個人情報を記憶するか、個人情報を使用するか、およびユーザの情報をどのように収集する、記憶するまたは使用するかを制御する1つ以上の機会をユーザに与えられる。すなわち、本明細書に記載されているシステムおよび方法は、特にユーザ個人情報を収集、格納および/または使用するための明確な承認を関連ユーザから受信すると、ユーザ個人情報を収集、記憶および/または使用する。例えば、プログラムまたは特徴は、特定のユーザまたは当該プログラムまたは特徴に関連する他のユーザのユーザ情報を収集するか否かに対する制御をユーザに提供する。個人情報が収集された各ユーザには、そのユーザに関連する情報の収集を制御するための1つ以上のオプション、または情報を収集するかおよびどの部分の情報を収集するかに関する許可または認可を提供するための1つ以上のオプションが与えられる。例えば、1つ以上の制御オプションは、通信ネットワークを介して、ユーザに提供されてもよい。さらに、特定のデータは、記憶または使用される前に、個人識別情報を取り除くように1つ以上の方法で処理されてもよい。一例として、ユーザの身元は、ユーザの個人識別情報を識別できないように処理されてもよい。別の例として、ユーザ装置の地理位置は、ユーザの位置を識別できないようにより大きな領域に一般化されてもよい。
【0176】
なお、当業者に公知であるように、本開示に記載されている機能ブロック、動作、特徴、方法、装置、およびシステムは、システム、装置、および機能ブロックの異なる組み合わせに統合されてもよく、または分割されてもよい。任意の好適なプログラミング言語およびプログラミング技術を、特定の実装形態のルーチンを実装することができる。異なるプログラミング技術(例えば、手続き型またはオブジェクト指向プログラミング技術)が採用されてもよい。ルーチンは、単一の処理装置上で実行されてもよく、または複数のプロセッサ上で実行されてもよい。ステップ、動作または計算は、特定の順序で示されているが、この順序は、異なる特定の実装形態において変更されてもよい。いくつかの実装形態において、本明細書において連続的ものとして示された複数のステップまたは動作は、同時に実行されてもよい。
図1
図2
図3
図4
図5
図6
図7