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

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

▶ キヤノン株式会社の特許一覧

特許7443030学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法
<>
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図1
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図2
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図3
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図4
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図5
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図6
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図7
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図8
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図9
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図10
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図11
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図12
  • 特許-学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法
(51)【国際特許分類】
   G06N 3/094 20230101AFI20240227BHJP
   G06N 20/00 20190101ALI20240227BHJP
【FI】
G06N3/094
G06N20/00 130
【請求項の数】 13
(21)【出願番号】P 2019210422
(22)【出願日】2019-11-21
(65)【公開番号】P2021082118
(43)【公開日】2021-05-27
【審査請求日】2022-11-08
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100110412
【弁理士】
【氏名又は名称】藤元 亮輔
(74)【代理人】
【識別番号】100104628
【弁理士】
【氏名又は名称】水本 敦也
(74)【代理人】
【識別番号】100121614
【弁理士】
【氏名又は名称】平山 倫也
(72)【発明者】
【氏名】日浅 法人
【審査官】牛丸 太希
(56)【参考文献】
【文献】国際公開第2009/151002(WO,A1)
【文献】特開2018-124937(JP,A)
【文献】特開2019-158498(JP,A)
【文献】特開2019-028839(JP,A)
【文献】米国特許出願公開第2019/0197368(US,A1)
【文献】Alexia Jolicoeur-Martineau,The relativistic discriminator: a key element missing from standard GAN,arxiv.org,2018年09月10日,https://arxiv.org/abs/1807.00734
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
複数の第1の入力データと、複数の実データと、を取得する取得工程と、
生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成工程と
複数の実データに含まれる一つの実データまたは前記複数の偽データに含まれる一つの偽データ識別器に入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別工程と、
第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習工程とを有し、
前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定されることを特徴とする学習方法。
【請求項2】
前記第1の値は、前記第1の実データの識別出力と、前記複数の実データそれぞれの識別出力に基づく値との比較か、または前記第1の偽データの識別出力と、前記複数の偽データそれぞれの識別出力に基づく値との比較か、に基づいて決定されることを特徴とする請求項に記載の学習方法。
【請求項3】
前記学習工程において、第2の値に基づいて前記生成器または前記識別器のウエイトを更新し、
前記第2の値は、前記実データの識別出力と、前記複数の偽データそれぞれの識別出力に基づく値との比較か、または前記偽データの識別出力と、前記複数の実データそれぞれの識別出力に基づく値との比較か、に基づいて決定されることを特徴とする請求項またはに記載の学習方法。
【請求項4】
前記第1の値は、前記複数の実データまたは前記複数の偽データそれぞれの識別出力の分位値であることを特徴とする請求項乃至のいずれか一項に記載の学習方法。
【請求項5】
前記第1の値は、前記複数の実データまたは前記複数の偽データそれぞれの識別出力の、重み付き平均または一部における代表値であることを特徴とする請求項1乃至のいずれか一項に記載の学習方法。
【請求項6】
前記重み付き平均の重みは、前記複数の実データまたは前記複数の偽データそれぞれの識別出力に基づいて決定されることを特徴とする請求項に記載の学習方法。
【請求項7】
前記代表値は、前記複数の実データまたは前記複数の偽データそれぞれの識別出力のうち外れ値を除外した一部に基づいて決定されることを特徴とする請求項に記載の学習方法。
【請求項8】
前記第1の値は、前記第1の実データの識別出力と、前記複数の実データそれぞれの識別出力に基づく代表値との比較か、または、前記第1の偽データの前記識別出力と、前記複数の偽データそれぞれの識別出力に基づく代表値との比較か、に基づいて決定されることを特徴とする請求項乃至のいずれか一項に記載の学習方法。
【請求項9】
前記損失関数は、前記複数の実データと前記複数の偽データのそれぞれにおける識別出力の平均値に対する該識別出力の分布の偏りを表すことを特徴とする請求項1乃至のいずれか一項に記載の学習方法。
【請求項10】
前記損失関数は、前記複数の実データまたは前記複数の偽データの前記識別出力の外れ値を除外した部分集合または外れ値の重みを小さくした部分集合の平均を用いて表されることを特徴とする請求項1乃至のいずれか一項に記載の学習方法。
【請求項11】
請求項1乃至1のいずれか一項に記載の学習方法をコンピュータに実行させることを特徴とするプログラム。
【請求項12】
複数の第1の入力データと、複数の実データと、を取得する取得手段と、
生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成手段と、
識別器に前記実データまたは前記偽データを入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別手段と、
第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習手段とをし、
前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定されることを特徴とする学習装置。
【請求項13】
コンピュータを用いて実行される製造方法であって、
複数の第1の入力データと、複数の実データと、を取得する取得工程と、
生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成工程と、
識別器に前記実データまたは前記偽データを入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別工程と、
第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習工程とをし、
前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定されることを特徴とする学習済みウエイトの製造方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、敵対的生成ネットワーク(GAN:Generative Adversarial Network)などの機械学習モデルの学習方法に関する。
【背景技術】
【0002】
非特許文献1には、GANの学習を安定化する方法として、RaGAN(Relativistic average GAN)と呼ばれる手法が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】A.Jolicoeur-Martineau,The relativistic discriminator:a key element missing from standard GAN,https://arxiv.org/abs/1807.00734
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、非特許文献1に開示されたRaGANは、学習が正しく機能せず、生成された偽データが低品質になる(実データと乖離した性質を有する)場合がある。
【0005】
そこで本発明の目的は、高品質な(実データに近い)偽データを安定して生成可能な機械学習モデルの学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法を提供することである。
【課題を解決するための手段】
【0006】
本発明の一側面としての学習方法は、複数の第1の入力データと、複数の実データとを取得する取得工程と、生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成工程と、前複数の実データに含まれる一つの実データまたは前記複数の偽データに含まれる一つの偽データ識別器に入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別工程と、
第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習工程とを有し、前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定される学習工程とを有する。
【0007】
本発明の他の側面としてのプログラムは、前記学習方法をコンピュータに実行させる。
【0008】
本発明の他の側面としての学習装置は、複数の第1の入力データと、複数の実データとを取得する取得手段と、生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成手段と、識別器に前記実データまたは前記偽データを入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別手段と、第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習手段とをし、前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定される学習手段とを有する。
【0009】
本発明の他の側面としての学習済みウエイトの製造方法は、コンピュータを用いて実行される製造方法であって、複数の第1の入力データと、複数の実データとを取得する取得工程と、生成器に複数の前記第1の入力データそれぞれを入力することで、複数の偽データを生成する生成工程と、識別器に前記実データまたは前記偽データを入力することで、入力されたデータが前記生成器によって生成されたデータであるかを識別した識別出力を生成する識別工程と、第1の値を含む損失関数に基づいて前記生成器または前記識別器のウエイトを更新する学習工程とをし、前記第1の値は、前記複数の実データに含まれる第1の実データと第2の実データそれぞれの識別出力に基づく値の比較か、または前記複数の偽データに含まれる第1の偽データと第2の偽データそれぞれの識別出力に基づく値の比較か、に基づいて決定される学習工程とを有する。
【0010】
本発明の他の目的及び特徴は、以下の実施例において説明される。
【発明の効果】
【0011】
本発明によれば、高品質な(実データに近い)偽データを安定して生成可能な機械学習モデルの学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法を提供することができる。
【図面の簡単な説明】
【0012】
図1】各実施例における効果の説明図である。
図2】実施例1における画像処理システムのブロック図である。
図3】実施例1における画像処理システムの外観図である。
図4】実施例1におけるウエイトの学習に関するフローチャートである。
図5】各実施例における機械学習モデルの構成を示す図である。
図6】実施例1における偽画像の生成に関するフローチャートである。
図7】実施例2における画像処理システムのブロック図である。
図8】実施例2における画像処理システムの外観図である。
図9】実施例2および実施例3におけるウエイトの学習に関するフローチャートである。
図10】実施例2における偽画像の生成に関するフローチャートである。
図11】実施例3における画像処理システムのブロック図である。
図12】実施例3における画像処理システムの外観図である。
図13】実施例3における偽画像の生成に関するフローチャートである。
【発明を実施するための形態】
【0013】
以下、本発明の実施例について、図面を参照しながら詳細に説明する。各図において、同一の部材については同一の参照符号を付し、重複する説明は省略する。
【0014】
GAN(敵対的生成ネットワーク)は、生成器と識別器を有する機械学習モデルである。生成器は、入力された生成器の入力データ(生成入力データ、第1の入力データ)zに基づいて、偽データx=G(z)を生成する。識別器には、識別器の入力データ(識別入力データ)として、実データxか偽データxが入力される。識別器は、識別入力データが偽データ(生成器によって生成されたデータ)か否かの識別出力C(x)を生成する。ここで、j=r,fである。一般的に識別出力C(x)は、シグモイド関数σなどの変換関数hに入力され、識別ラベルD(x)=h(C(x))に変換される。GANの学習では、生成器は識別器が偽データを実データと識別するようにウエイト(バイアスも含む)を学習し、識別器は偽データと実データを正しく識別できるようにウエイトを学習する。このようにGANでは、生成器と識別器が互いに精度を敵対的に向上させて学習を行うことで、高品質な(実データに近い性質を有する)偽データを生成できるようになる。
【0015】
非特許文献1のRaGANは、学習時に最小化するロス関数をGANから変更することによって、学習の安定性を向上している。RaGANの識別器におけるロス関数Lは以下の式(1)、生成器のロス関数Lは以下の式(2)で表される。
【0016】
【数1】
【0017】
ここで、Eは平均を表す。ここで、実データの正解ラベル(ground truth label)を1、偽データの正解ラベルを0とした。g(k=0,1)は、例えば以下の式(3)で表されるシグモイドクロスエントロピーなどである。
【0018】
【数2】
【0019】
ここで、シグモイド関数σは以下の式(4)で表される。
【0020】
【数3】
【0021】
式(1)及び(2)のように、実データの識別出力と偽データの識別出力の平均との差分を取ることで、実データが偽データの集合と比べて、より本物らしいか否かという相対的な観点で学習が行える。実データと偽データを入れ替えた、逆の関係でも同様である。これにより、従来のGANで起こり得る問題(実データを無視して、偽データのみから本物らしさを学習しようとする問題)を回避でき、学習の安定性が向上する。
しかし、非特許文献1に開示されたRaGANは、学習が正しく機能せず、生成された偽データが低品質になる(実データと乖離した性質を有する)場合がある。この理由に関して、詳細に説明する。ここで、実データの正解ラベル(ground truth label)を1、偽データの正解ラベルを0、gを式(3)のシグモイドクロスエントロピーとして説明するが、他の場合でも同様である。
【0022】
図1は、本実施例における効果の説明図である。式(1)のロス関数Lで学習された識別器は、識別器単体で考えると、理想的には図1(A)のような識別出力の分布となることが望ましい。図1(A)は、ミニバッチ内の実データと偽データに対する識別出力のヒストグラムである。図1(A)において、縦軸は頻度、横軸は識別出力C(x)をそれぞれ示す。ここで、ミニバッチとは、学習においてウエイトを1回更新する際に使用する複数の実データと偽データの集合である。横軸は識別出力C(x)、縦軸は頻度である。分かりやすくするため、図1(A)では実データの識別出力C(x)の集合001と、偽データの識別出力C(x)の集合002と、を分けて描画している。破線が各横軸での同じ値を示す。実データと偽データの識別出力の集合001及び002は、互いに重なっていないため、完全に両者が識別されている。実データの識別出力の集合001は全て、偽データの識別出力の平均012よりも正方向に存在するため、識別ラベルD(x)=σ(C(x)-E[C(x)])は全て0.5よりも大きく、正解ラベルである1に近い値をとる。同様に、偽データの識別出力の集合002は全て、実データの識別出力の平均011より負方向に存在するため、識別ラベルD(x)=σ(C(x)-E[C(x)])は全て0.5よりも小さく、正解ラベルである0に近い値をとる。
【0023】
しかし、式(1)のロス関数Lを最小化しても、必ずしも図1(A)に示した分布になるわけではなく、図1(B)のような分布になることがある。図1(B)でも同様に、実データの識別ラベルσ(C(x)-E[C(x)])は全て、正解ラベルである1に近い値となり、偽データの識別ラベルσ(C(x)-E[C(x)])も0に近い値をとる。故に、式(1)で示されるロス関数は非常に小さい値となる。しかし、図1(B)の実データと偽データの識別出力の集合001及び002は、殆どが重なっている。つまり、図1(B)の識別器は実データと偽データを識別できない。実際、実データの識別ラベルの式に対して、敢えて偽データを入力すると、σ(C(x)-E[C(x)])の値は殆どが実データの正解ラベルである1に近い値をとることが、図1(B)から読み取れる。逆も同様である。つまり、どのようなデータが入力されようと、差分をとる平均E[C(x)]と逆のデータと識別する。故に、図1(B)の識別器は、識別器としての機能を果たしていないため、データの本物らしさを抽出することもできない。故に、この識別器を用いて学習を行っても、生成器はデータの本物らしさを学習することができず、生成した偽データの低品質化(実データとの乖離)が発生する。
【0024】
そこで本発明は、高品質な(実データに近い)偽データを安定して生成可能なGANの学習方法、学習装置、および、学習済みウエイトの製造方法を提供することを目的とする。
【0025】
本実施例の具体的な説明を行う前に、本発明の要旨を説明する。本発明は、実データと偽データの両者からデータの本物らしさを学習し、かつ図1(B)を用いて説明した問題を回避することで、高品質な(実データに近い)偽データの生成を安定して可能とする。図1(B)で示される識別器は、入力されたデータの構造に関係なく、殆ど同程度の識別出力を生成する。しかし、ミニバッチ内に稀に出現する構造のデータ(出現頻度の低いデータ)に対して反応し、前記の同程度の識別出力とは乖離した値の識別出力を生成することがある。図1(B)の実データの識別出力の外れ値001aと、偽データの識別出力の外れ値002aがこれに該当する。実データの識別出力の外れ値001aは、実データの識別出力の集合001から正方向に、偽データの識別出力の外れ値002aは、偽データの識別出力の集合002から負方向に、乖離した値となる。これによって、実データと偽データの識別出力の平均011及び012はそれぞれ、重なり合った識別出力の集合001及び002の正方向と負方向にずれる。このヒストグラムの分布となることで、式(1)で示されるロス関数の値は非常に小さいにもかかわらず、実データと偽データを識別できない識別器となる。
【0026】
問題は、識別器が実データと偽データを識別できない(両者の識別出力のヒストグラムが殆ど重なる)ことである。そして、この問題は、識別出力の外れ値によって発生する。故に、問題の対策として、以下の2つの方法がある。1つ目は、実データと偽データの識別出力における外れ値の、ロス関数に対する影響を弱める方法である。2つ目は、実データと偽データの識別出力の集合における重なりを減らす効果を、ロス関数に与える方法である。
【0027】
上記どちらの方法においても、以下の特徴を有する第1の値に基づいて、識別器または生成器のウエイトを学習する。第1の値は、ミニバッチ内の第1の実データの識別出力に基づく値と、第1の実データとは異なる第2の実データの識別出力に基づく値との比較によって決定される。または、第1の値は、ミニバッチ内の第1の偽データの識別出力に基づく値と、第1の偽データとは異なる第2の偽データの識別出力に基づく値の比較によって決定される。この詳細に関しては、後述の各実施例で説明する。本発明の学習方法を用いることで、識別器が正しく識別できるように学習され、その結果、GANで生成される偽データが高品質となる(実データに近くなる)。
【0028】
なお、本発明でデータと呼ぶ対象は、数値の配列で表現される情報を指し、画像(写真や絵画など)、動画、音響、テキスト、試料のスペクトル、移動体(生物や物体など)の軌跡などが含まれる。偽データとは生成器によって生成されたデータを指し、実データは生成器によって再現したいデータを指す。画像の場合、例えば実データは、現実の被写体を撮像した写真や人間によって描かれた絵画などである。音響の場合、実データは人間の発話や作曲された音楽などの音声データである。テキストの場合、実データは人間が作成した文章や対訳などである。
【0029】
以下の各実施例では、機械学習モデルのウエイトを学習する段階のことを学習フェーズとし、学習済みのウエイトを用いた偽データの生成を行う段階のことを推定フェーズとする。
【実施例1】
【0030】
本発明の実施例1における画像処理システムに関して説明する。本実施例では、実データと偽データの識別出力の集合における重なりを減らす効果をロス関数に追加することで、安定した高品質な偽データの生成を実現する。
【0031】
まず、図2および図3を参照して、本実施例における画像処理システム100の構成について説明する。図2は、画像処理システム100のブロック図である。図3は、画像処理システム100の外観図である。画像処理システム100は、学習装置101、画像生成装置102、表示装置103、記録媒体104、および、出力装置105を有する。学習装置101は、記憶部101a、取得部101b、演算部101c、および、更新部101dを有し、偽画像(偽データ)を生成する生成器と、偽画像と実画像(実データ)を識別する識別器のウエイトを学習する。なお、ウエイトの学習、および学習済みのウエイトを用いた推定(偽画像の生成)に関する詳細は後述する。
【0032】
画像生成装置102は、記憶部102a、取得部102b、および、生成部102cを有する。画像生成装置102は、生成器に入力された潜在変数(生成入力データ、第1の入力データ)に対応する偽画像を生成する。学習装置101と画像生成装置102は、無線(または有線)によって接続されており、画像生成装置102は推定フェーズの実行時または事前に、学習済みのウエイトの情報を学習装置101から読み出す。生成された偽画像は、表示装置103、記録媒体104、または、出力装置105の少なくとも一つに出力される。
【0033】
表示装置103は、例えば液晶ディスプレイやプロジェクタなどである。ユーザは表示装置103を介して、生成された偽画像を確認しながら潜在変数を調整することで、所望の偽画像を生成することができる。記録媒体104は、例えば半導体メモリ、ハードディスク、ネットワーク上のサーバ等である。出力装置105は、プリンタなどである。生成された偽画像は、例えば、著作権や肖像権のない建物や人物の画像として、広告などに商業利用することができる。或いは、他の機械学習モデルの学習用画像として追加すること(Data Augmentation)もできる。
【0034】
次に、図4を参照して、学習装置101で実行されるウエイトの学習(学習フェーズ)に関して説明する。図4は、ウエイトの学習に関するフローチャートである。まずステップS101において、取得部(取得手段)101bは、複数の潜在変数(生成入力データ、第1の入力データ)を取得する。本実施例において、潜在変数は2次元の数値配列であり、各要素の値は乱数から決定する。ただし、生成入力データの次元数や取得方法はこれに限定されるものではない。なお生成入力データは、画像(撮像画像)に関するデータに限定されるものではなく、贋作、絵、ベクトルなどに関するデータであってもよい。
【0035】
続いてステップS102において、演算部(生成手段)101cは、複数の潜在変数それぞれを生成器に入力し、複数の偽画像を生成する。ここで、図5を参照して、本実施例におけるGANのネットワーク構成を説明する。図5は、GANのネットワーク構成(機械学習モデルの構成)を示す図である。複数の潜在変数201(生成入力データ)それぞれを生成器202へ入力し、複数の偽画像203を生成する。生成器202は、1層以上の畳み込み層またはフルコネクション層を有する。畳み込み層またはフルコネクション層のウエイト(バイアス含む)の初期値は、乱数で決定する。また、1層以上の畳み込み層またはフルコネクション層の後に、非線形変換を行う活性化関数を有する。
【0036】
続いて、図4のステップS103において、取得部101bは、複数の実画像を取得する。取得部101bは、記憶部101aから複数の実画像を読み込んで取得する。取得する実画像の枚数は、ステップS102で生成した偽画像の枚数と同一である。この枚数がミニバッチ数に相当する。ただし、偽画像と異なる枚数の実画像を取得してもよい。なお、ステップS103は、ステップS104の前であれば、いつ実行してもよい。
【0037】
続いてステップS104において、演算部(識別手段)101cは、複数の実画像と偽画像それぞれ(識別入力データ)を識別器に入力し、複数の識別出力を生成する。図5に示されるように、複数の実画像204または複数の偽画像203のそれぞれ(識別入力データ)を、識別器205へ入力し、複数の識別出力206を生成する。識別器205は、1層以上の畳み込み層またはフルコネクション層を有する。畳み込み層またはフルコネクション層のウエイト(バイアス含む)の初期値は、乱数で決定する。また、1層以上の畳み込み層またはフルコネクション層の後に、非線形変換を行う活性化関数を有する。また、畳み込み層でバッチ正則化やスペクトラル正則化などを併用することで、学習の安定化や識別精度の向上を行うこともできる。
【0038】
続いてステップS105において、更新部(学習手段)101dは、複数の識別出力と正解ラベルに基づいて、識別器のウエイトを更新する。本実施例において、識別器のロス関数(損失関数)Lは、以下の式(5)乃至式(7)を用いる。
【0039】
【数4】
【0040】
ここで、λは重みである。式(6)および式(7)の第2項(第1の値)は、第1の実画像(または偽画像)の識別出力C(x)と、複数の実画像(または偽画像)の識別出力の平均E[C(x)]の比較に基づいて、決定される。複数の実画像(または偽画像)の識別出力の平均の算出には、複数の実画像(または偽画像)に含まれ、かつ第1の実画像(または偽画像)と異なる、第2の実画像(または偽画像)の識別出力が用いられる。故に、複数の実画像(または偽画像)の識別出力の平均E[C(x)]は、第2の実画像(または偽画像)の識別出力に基づく値である。なお、平均の代わりに、重み付き平均や最頻値など、その他の代表値を用いてもよい。
【0041】
式(6)および式(7)の第2項は、複数の実画像(または偽画像)の識別出力が、その平均値の前後へ均等に散らばって分布する(或いは全て平均値と一致する)ほど、0に近付く。そのため、図1(B)のような、平均値に対する識別出力の分布の偏りを軽減する。これにより、実画像と偽画像の識別出力の集合における重なりが減少し、図1(A)の分布に近付けることができる。ここで、式(6)および式(7)の第2項は、どちらか一方のみでもよい。また本実施例は、式(6)および式(7)に限定されるものではなく、平均値に対する識別出力の分布の偏りを軽減する効果を有すれば、他のロス関数でもよい。その例に関しては、後述する。また、ここでは実画像の正解ラベルを1、偽画像の正解ラベルを0としているが、本実施例はこれに限定されるものではない。求めたロス関数の値に基づいて、誤差逆伝搬法(back propagation)などを用いて識別器のウエイトを更新する。
【0042】
続いてステップS106において、演算部101cは、複数の実画像と偽画像それぞれを識別器に入力し、複数の識別出力を生成する。識別器には、ステップS105で更新されたウエイトを使用する。
【0043】
続いてステップS107において、更新部101dは、複数の識別出力と正解ラベルに基づいて、生成器のウエイトを更新する。本実施例において、生成器のロス関数Lは、以下の式(8)乃至式(10)を用いる。
【0044】
【数5】
【0045】
式(9)および式(10)は、式(6)および式(7)とg(k=0,1)の添字が入れ替わっている。つまり、実画像を0(Fake)ラベル、偽画像を1(Real)ラベルと識別器が識別するように、生成器のウエイトが更新される。なお、式(9)および式(10)は生成器のウエイトを更新するためのロス関数であるため、第2項(実画像と偽画像の識別出力の集合における重なりを減少させる項)を削除してもよい。
【0046】
続いてステップS108において、更新部101dは、ウエイトの学習が完了したか否かを判定する。学習の完了は、学習(ウエイトの更新)の反復回数が規定の回数に達したかや、更新時のウエイトの変化量が規定値より小さいか、などによって判定することができる。学習が未完と判定された場合、ステップS101へ戻り、新たな生成入力データを取得する。一方、学習が完了と判定された場合、学習を終了し、ウエイトの情報を記憶部101aに保存する。なお、推定フェーズでは生成器のみを使用するため、生成器のウエイトのみを保存してもよい。
【0047】
次に、図6を参照して、画像生成装置102で実行される学習済みウエイトを用いた偽画像の生成(推定フェーズ)に関して説明する。図6は、偽画像の生成に関するフローチャートである。
【0048】
まずステップS201において、取得部102bは、学習済みの生成器におけるウエイトの情報を取得する。ウエイトの情報は、予め記憶部101aから読み出されて、記憶部102aに保存されている。続いてステップS202において、取得部102bは、潜在変数(生成入力データ、第1の入力データ)を取得する。生成入力データの値は乱数によって決定してもよいし、ユーザによって指定された値を取得してもよい。続いてステップS203において、生成部102cは、生成器で偽画像(偽データ)を生成する。偽画像は、学習済みのウエイトを用いた生成器に、潜在変数を入力することによって生成される。ユーザは生成された偽画像を表示装置103で確認し、必要に応じて潜在変数の調整を行う。
【0049】
次に、ロス関数(損失関数)の他の例を挙げる。例えば、式(6)、(7)、(9)、(10)において、シグモイド関数σの代わりに、以下の式(11)で示される変換関数hを用いてもよい。
【0050】
【数6】
【0051】
また、識別器と生成器のロス関数として、以下の式(12)および式(13)を用いてもよい。
【0052】
【数7】
【0053】
式(12)は、偽画像の識別出力が、複数の実画像の識別出力の平均より負側に存在し、かつ実画像の識別出力が、複数の実画像の識別出力の平均より正側に存在するほど、値が小さくなる。式(13)は、その逆である。式(12)および式(13)は、実画像と偽画像の識別出力がそれぞれ、複数の実画像の識別出力の平均を挟んで、正負のどちらか一方ずつに分布する効果を有する。故に、実画像と偽画像の識別出力の集合における重なりが減少する。式(12)および式(13)における第1項(第1の値)は、第1の実画像の識別出力C(x)と、複数の実画像の識別出力の平均E[C(x)]の比較に基づいて、決定される。複数の実画像の識別出力の平均の算出には、複数の実画像に含まれ、かつ第1の実画像と異なる、第2の実画像の識別出力が用いられる。故に、複数の実画像の識別出力の平均E[C(x)]は、第2の実画像の識別出力に基づく値である。
【0054】
同様に、識別器と生成器のロス関数として、以下の式(14)および式(15)を用いてもよい。
【0055】
【数8】
【0056】
式(14)および式(15)は、差分を取る平均を実画像でなく偽画像としていることが、式(12)および式(13)との違いである。式(14)および式(15)では、第2項(第1の値)が、第1の偽画像の識別出力C(x)と、複数の偽画像の識別出力の平均E[C(x)]の比較に基づいて、決定される。複数の偽画像の識別出力の平均E[C(x)]は、第2の偽画像の識別出力に基づく値である。
【0057】
式(6)、(7)、(9)、(10)、(12)乃至(15)はいずれも、識別器または生成器のウエイトが、第2の値に基づいて更新される。第2の値は、実画像の識別出力と、複数の偽画像それぞれの識別出力に基づく値と、の比較に基づいて決定される値である。または、第2の値は、偽画像の識別出力と、複数の実画像それぞれの識別出力に基づく値と、の比較に基づいて決定される値である。式(6)、(7)、(9)、(10)では、第1項が第2の値である。実画像(または偽画像)の識別出力C(x)と、複数の偽画像(または実画像)それぞれの識別出力に基づく平均E[C(xi≠j)]と、の比較に基づいて、第2の値が決定される。同様に、式(12)および式(13)では第2項が、式(14)および式(15)では第1項が、第2の値である。第2の値によって、実画像が偽画像の集合と比べて、より本物らしいか否か(またはその逆)を相対的な観点で学習できるため、学習の安定性が増す。実施例2以降に示すロス関数も、同様に第2の値を有する。
【0058】
また、もしGANで学習された識別器を未知の画像の識別に用いたい場合、以下のように使用するとよい。例えば、式(9)および式(10)を用いて学習された識別器の識別ラベルは、D(x)=σ(C(x)-E[C(xi≠j)])で表される。故に、E[C(xi≠j)]の値が必要となる。この値は、GANの最後のウエイトの更新で求められた値を使用すればよい。
【0059】
次に、識別入力データxである未知の画像は、正解となるラベルも未知のため、E[C(x)]とE[C(x)]のどちらを減算すればよいのか分からない。そのため、それぞれを減算して2つの識別出力を求める。両者の符号がどちらも正ならば、σ(C(x)-E[C(x)])を識別ラベルとし、負ならば、σ(C(x)-E[C(x)])を識別ラベルとする。両者が異符号の場合、未知の画像1枚のみでは判定が困難なため、例えば識別ラベルを中間の0.5とする。未知の画像が複数ある(全て実データか、全て偽データのどちらか)場合、E[C(x)]とE[C(x)]それぞれを減算して求めた識別ラベルのばらつきが少ない方の識別ラベルを採用する。この際、データオーギュメンテーション(回転、シフト、トリミング、明るさやコントラストの変更などによる数増し)によって、未知の画像の枚数を増やしてもよい。
【0060】
なお本実施例において、実データおよび偽データは画像としたが、動画、音響、テキスト、試料のスペクトル、移動体(生物や物体など)の軌跡など、その他に置き換えることが可能である。この点は、後述の実施例2および実施例3においても、同様である。また、生成入力データをテキストとし、テキストの内容に合致する偽画像を生成するtext-to-imageのタスクに本実施例を適用してもよい。
【0061】
以上の構成により、高品質な(実データに近い)偽データを安定して生成可能な画像処理システムを提供することができる。
【実施例2】
【0062】
本発明の実施例2における画像処理システムに関して説明する。本実施例では、実データと偽データの識別出力における外れ値の、ロス関数に対する影響を弱めることで、安定した高品質な偽データの生成を実現する。
【0063】
まず、図7および図8を参照して、本実施例における画像処理システムの構成について説明する。図7は、画像処理システム300のブロック図である。図8は、画像処理システム300の外観図である。画像処理システム300は、学習装置301、画像推定装置302、および、撮像装置303を有する。学習装置301および画像推定装置302は、例えばサーバである。撮像装置303は、カメラ機能の搭載されたモバイル端末などである。画像処理システム300は、機械学習モデルを用いて撮像装置303で撮像された撮像画像のノイズを低減するデノイズを行う。
【0064】
学習装置301は、記憶部301a、取得部301b、演算部301c、および、更新部301dを有し、デノイズに用いる機械学習モデルのウエイトをGANによって学習する。なお、学習の詳細に関しては、後述する。GANによるデノイズは、CNN単体のデノイズよりも被写体の高周波成分の低下を抑制できる。これは、CNN単体では入力に対してあり得る複数の正解の平均解を出力するため、出力がぼけるのに対し、GANではあり得る解の1つを採用することでぼけが発生しにくいことに起因する。学習されたウエイトの情報は、記憶部301aに保存される。撮像装置303は、光学系304によって被写体空間の光学像を形成し、撮像素子305で光学像を光電変換することで、撮像画像を取得する。撮像素子305は、例えばCCD(Charge Coupled Device)センサや、CMOS(Complementary Metal-Oxide Semiconductor)センサなどである。撮像画像は、記憶部307に保存される。通信部309は、撮像画像とデノイズの実行に関する要求とを画像推定装置302へ送信する。
【0065】
画像推定装置302は、記憶部302a、通信部302b、取得部302c、および、デノイズ部302dを有し、撮像画像に対して学習済みのウエイトを用いた機械学習モデルによるデノイズを実行する。なお、デノイズの詳細に関しては、後述する。撮像画像をデノイズしたデノイズ画像(偽画像、偽データ)は、再び撮像装置303へ送信される。デノイズ画像は、画像処理部306で必要に応じて現像処理や歪曲収差補正などを施され、記憶部307に保存、表示部308に表示される。撮像装置303の制御は、システムコントローラ310によって行われる。
【0066】
次に、図9を参照して、学習装置301によって実行されるウエイトの学習(学習フェーズ)に関して説明する。図9は、ウエイトの学習に関するフローチャートである。なお、GANは、図5に示される構成と同様である。
【0067】
まずステップS301において、取得部301bは、1組以上の実データと生成入力データ(第1の入力データ)を取得する。本実施例において、実データはノイズのない正解画像(ground truth image)であり、生成入力データは正解画像と同一の被写体が存在し、ノイズのある画像(訓練画像)である。取得部301bは、記憶部301aから正解画像と訓練画像の組を読み込んで取得する。
【0068】
正解画像と訓練画像の生成方法に関して、例を挙げる。第一の方法は、シミュレーションによって生成する方法である。充分にノイズの小さい実写画像またはCG(Computer Graphics)である原画像を1枚以上用意する。原画像に対して、撮像素子305で発生するノイズを付与することで、訓練画像を生成する。正解画像は、原画像をそのまま使用するとよい。第二の方法は、実写によって生成する方法である。撮像素子305で撮像した画像を訓練画像とし、同一の被写体をよりS/N比の高い条件(撮像素子305のISO感度の変更や、より高感度な撮像素子の使用)で撮像した画像を正解画像とする。
【0069】
機械学習モデルは、学習していないデータに対して精度が低下する可能性がある。故に、様々な被写体に対して高精度なデノイズを実現するため、訓練画像と正解画像には様々な明るさや空間周波数が含まれていることが望ましい。例えば、様々な向きと強さのエッジ、グラデーション、平坦部などである。また、ISO感度の変更などによって撮像素子305で発生するノイズの強さが変化する場合、撮像素子305で発生しうる様々なノイズ量の訓練画像と正解画像の組を生成することが望ましい。なお、上記の方法で生成した訓練画像と正解画像から、既定の画素数の部分領域を抽出して学習に用いてもよい。
【0070】
また、学習フェーズと推定フェーズの入力を合わせるため、訓練画像は撮像画像と同じ形式の画像である。例えば、撮像画像が未現像のRAW画像である場合、訓練画像もRAW画像である。逆に、撮像画像が現像後の画像であれば、訓練画像も現像後の画像である。正解画像は、訓練画像と同じ形式でもよいし、異なる形式でもよい。例えば、訓練画像がRAW画像で正解画像が現像後の画像の場合、生成器はデノイズと同時に現像処理も学習する。
【0071】
続いてステップS302において、演算部(生成手段)301cは、訓練画像(生成入力データ)を生成器へ入力し、偽画像(偽データ)を生成する。偽画像は、訓練画像に対して推定したデノイズ画像である。
【0072】
続いてステップS303において、更新部301dは、正解画像(実画像。実データ)と偽画像(偽データ)との誤差に基づいて、生成器のウエイトを更新する。GANではない第1の学習において、正解画像と偽画像の各画素における信号値の平均二乗誤差をロス関数とする。ただし本実施例は、これに限定されるものではなく、L1ノルムなどその他のロス関数を用いてもよい。
【0073】
続いてステップS304において、更新部301dは、第1の学習が完了したか否かを判定する。第1の学習とは、識別器を用いない生成器のみの学習である。学習が未完と判定された場合、ステップS301へ戻り、1組以上の新たな正解画像と訓練画像を取得する。一方、学習が完了したと判定された場合はステップS305へ進み、GANによる第2の学習を開始する。なお、第1の学習を行わずに、第2の学習から始めてもよい。
【0074】
ステップS305において、取得部301bは、複数の正解画像と訓練画像を取得する。続いてステップS306において、演算部301cは、複数の訓練画像それぞれを生成器に入力し、デノイズされた複数の偽画像を生成する。続いてステップS307において、演算部301cは、複数の正解画像と偽画像それぞれ(識別入力データ)を識別器に入力し、複数の識別出力を生成する。
【0075】
続いてステップS308において、更新部301dは、複数の識別出力と正解ラベルに基づいて、識別器のウエイトを更新する。ここで、正解ラベルは、正解画像が1、偽画像が0とする。本実施例では、正解画像と偽画像の識別出力における外れ値の影響を低減したロス関数を用いることで、安定した学習を実現する。本実施例では、以下の式(16)をロス関数として使用する。
【0076】
【数9】
【0077】
ここで、Esubsetは、複数の識別出力C(x)のうち外れ値を除外した一部(部分集合)の平均を指す。Esubsetは、例えば、刈り込み平均(trimmed mean)や中央平均などである。刈り込み平均では、例えば、両端から3%ずつ切り捨てる。さらに外れ値の影響を減らしたい場合は、5%、10%、15%のように切り捨てる割合を上げるとよい。或いは、各識別出力の偏差などに対して閾値を設定し、外れ値を検出することで平均をとる部分集合を決定してもよい。識別器は、第1の値(部分集合の平均Esubset[C(x)])に基づいて、ウエイトが更新される。
【0078】
部分集合の平均が、刈り込み平均や中央平均などの場合、値を算出する際、複数の識別出力C(x)を大きさに基づいて順番に並べる必要がある。順番に並べるためには、各識別出力C(x)の値を比較する必要がある。故に、第1の値は、第1の実画像(または偽画像)と第2の実画像(または偽画像)それぞれの識別出力に基づく値(識別出力そのもの)の比較によって決定される。また、識別出力の外れ値を検知する場合、例えば、偏差C(x)-E[C(x)]などを算出する必要がある。偏差は、第1の実画像(または偽画像)の識別出力C(x)と、平均E[C(x)]の比較である。さらに、平均E[C(x)]は、第2の実画像(または偽画像)の識別出力に基づく値である。故に、第1の値は、第1の実画像(または偽画像)と第2の実画像(または偽画像)それぞれの識別出力に基づく値の比較によって決定される。なお、外れ値を除外した部分集合に対して、平均以外の代表値を用いてもよい。
【0079】
なお本実施例では、外れ値を除外した部分集合に対して平均をとったが、平均の重みを調整することで、外れ値の影響を低減してもよい。平均の重みは、識別出力の値に基づいて決定される。具体的には、複数の識別出力C(x)における外れ値の重みを、それ以外に対して小さくし、重み付き平均をとることで外れ値の影響を低減できる。この際も、外れ値の検出において、大きさに基づく並び替えや偏差などを用いる。故に、第1の実画像(または偽画像)と第2の実画像(または偽画像)それぞれの識別出力に基づく値の比較によって決定される第1の値に基づいて、識別器のウエイトが更新される。
【0080】
続いてステップS309において、演算部301cは、複数の正解画像と偽画像それぞれをウエイトが更新された識別器に入力し、複数の識別出力を生成する。続いてステップS310において、更新部301dは、複数の正解画像と偽画像の誤差と、複数の識別出力と正解ラベルと、に基づいて、生成器のウエイトを更新する。以下の式(17)で示されるロス関数を用いて、生成器のウエイトを更新する。
【0081】
【数10】
【0082】
Fidは、デノイズした偽画像とノイズのない正解画像の誤差を表すフィデリティ項であり、LAdvは、偽画像の識別出力と実画像の正解ラベルの誤差を表すアドバーサリアル項である。εは重みである。LFidとLAdvは、例えば以下の式(18)及び(19)を用いる。
【0083】
【数11】
【0084】
式(19)から、式(16)と同様に、生成器のウエイトは、第1の値(部分集合の平均Esubset[C(x)])に基づいて決定される。第1の値は、第1の実画像(または偽画像)と第2の実画像(または偽画像)それぞれの識別出力に基づく値の比較によって決定される。
【0085】
続いてステップS311において、更新部301dは、第2の学習が完了したか否かを判定する。ステップS304と同様に、学習が未完の場合、ステップS305へ戻る。一方、学習が完了した場合、学習済みの生成器のウエイトの情報を記憶部301aに保存する。なお、式(16)および式(19)における第2の値は、第1項と第2項の両方である。実画像(または偽画像)の識別出力C(x)と、複数の偽画像(または実画像)それぞれの識別出力に基づく平均Esubset[C(xi≠j)]と、の比較で第2の値が決定される。
【0086】
次に、図10を参照して、撮像装置303と画像推定装置302とで実行されるデノイズ(推定フェーズ)に関して説明する。図10は、本実施例における偽画像の生成に関するフローチャートである。
【0087】
まずステップS401において、通信部309は、画像推定装置302へ撮像画像とデノイズの実行に関する要求を送信する。続いてステップS501において、通信部302bは、送られてきた撮像画像とデノイズの要求を受信し、取得する。続いてステップS502において、取得部302cは、学習済みのウエイトの情報を記憶部302aから取得する。該ウエイトの情報は、予め記憶部301aから読み出され、記憶部302aに記憶されている。続いてステップS503において、デノイズ部302dは、撮像画像を生成器に入力し、デノイズされた偽画像を生成する。生成器には、ウエイトの情報が使用される。続いてステップS504において、通信部302bは、偽画像を撮像装置303へ送信する。続いてステップS402において、通信部309は、偽画像を取得する。
【0088】
以上の構成によって、高品質な(実データに近い)偽データを安定して生成可能な画像処理システムを提供することができる。なお本実施例の構成は、画像以外の音響などのデータに対するデノイズにも適用が可能である。
【実施例3】
【0089】
次に、本発明の実施例3における画像処理システムに関して説明する。本実施例では、実データと偽データの識別出力における外れ値の、ロス関数に対する影響を弱めることで、安定した高品質な偽データの生成を実現する。
【0090】
まず、図11および図12を参照して、本実施例における画像処理システムの構成について説明する。図11は、画像処理システム400のブロック図である。図12は、画像処理システム400の外観図である。画像処理システム400は、学習装置401、画像推定装置(第2の装置)402、制御装置(第1の装置)403、撮像装置404、および、レンズ装置405を有する。学習装置401および画像推定装置402は、例えばサーバである。制御装置403は、パーソナルコンピュータやモバイル端末などのユーザが操作する機器である。
【0091】
学習装置401は、記憶部401a、取得部401b、演算部401c、および、更新部401dを有し、レンズ装置405と撮像装置404を用いて撮像された撮像画像のぼけを鮮鋭化する機械学習モデルのウエイトを学習する。なお、学習に関する詳細は、後述する。本実施例では、実施例2と同様に、GANによるぼけ鮮鋭化を行うことで、CNN単体よりも高周波成分を有するぼけ鮮鋭化画像(偽画像)を生成することができる。撮像装置404は撮像素子404aを有し、撮像素子404aがレンズ装置405の形成した光学像を光電変換して撮像画像を取得する。レンズ装置405と撮像装置404は着脱可能であり、互いに複数種類と組み合わることが可能である。制御装置403は、記憶部403a、通信部403b、および、表示部403cを有し、有線または無線で接続された撮像装置404から取得した撮像画像に対して、実行する処理をユーザの操作に従って制御する。或いは、撮像装置404で撮像した撮像画像を予め記憶部403aに記憶しておき、この撮像画像を読み出してもよい。
【0092】
画像推定装置402は、記憶部402a、通信部402b、取得部402c、および、鮮鋭化部402dを有する。画像推定装置402は、ネットワーク等を介して接続された制御装置403の要求によって、撮像画像のぼけ鮮鋭化を実行する。画像推定装置402は、ネットワーク等を介して接続された学習装置401から、学習済みのウエイトの情報を鮮鋭化時または予め取得し、撮像画像の鮮鋭化に用いる。撮像画像が鮮鋭化された偽画像は、再び制御装置403へ伝送されて、記憶部403aに記憶され、表示部403cに表示される。
【0093】
次に、図9を参照して、学習装置401によって実行されるウエイトの学習(学習フェーズ)に関して説明する。図9は、本実施例におけるウエイトの学習に関するフローチャートである。なおGANは、図5に示される構成と同様である。
【0094】
まずステップS301において、取得部401bは、1組以上の実データと生成入力データ(第1の入力データ)を取得する。本実施例において、実データはぼけのない正解画像であり、生成入力データは正解画像と同一の被写体が存在し、収差と回折によるぼけが作用した画像(訓練画像)である。ぼけは、レンズ装置405で発生する収差及び回折と、撮像素子404aの光学ローパスフィルタや画素開口による劣化を合わせたぼけである。取得部401bは、記憶部401aから正解画像と訓練画像の組を読み込んで取得する。本実施例では、ぼけ鮮鋭化のウエイトの学習を、レンズ装置405の種類ごとに一括で行う。このため、まずウエイトを学習するレンズ装置405の種類を決定し、それに対応する訓練画像の集合から、訓練画像を取得する。ある種類のレンズ装置405に対応する訓練画像の集合はそれぞれ、ズーム、絞り、フォーカス距離、像高とアジムス、光学ローパスフィルタ、画素ピッチなどが異なるぼけの作用した画像の集合である。
【0095】
正解画像と訓練画像の生成方法に関して、以下に例を示す。第一の方法は、原画像を被写体として、撮像シミュレーションを行う方法である。正解画像は、原画像にぼけを作用させずに撮像シミュレーションを行った画像である。訓練画像は、レンズ装置405および撮像素子404aで発生するぼけを原画像に作用させて、撮像シミュレーションを行った画像である。本実施例では、レンズ装置405の状態(Z,F,D)で発生する収差と回折、撮像素子404aの光学ローパスフィルタ及び画素開口による劣化を作用させる。ここで、Zはズーム、Fは絞り、Dはフォーカス距離の状態を示す。撮像素子404aが複数の色成分を取得する場合、各色成分のぼけを原画像に作用させる。ぼけの作用は、原画像に対してPSF(Point Spread Function)を畳み込むか、または原画像の周波数特性とOTF(Optical Transfer Function)の積をとることで実行できる。1枚以上の原画像に対し、複数の異なる(Z,F,D)のぼけを作用させ、複数組の正解画像と訓練画像を生成する。
【0096】
本実施例では、レンズ装置405で発生するぼけ全てに対する補正を、一括で学習する。故に、(Z,F,D)をレンズ装置405が取り得る範囲で変化させ、複数組の正解画像と訓練画像を生成する。また、同一の(Z,F,D)においても、像高とアジムスに依存して複数のぼけが存在するため、異なる像高とアジムスごとにも正解画像と訓練画像の組を生成する。また同様に、レンズ装置405と組み合わせ可能な撮像素子404aが取り得る光学ローパスフィルタと画素ピッチごとにも、正解画像と訓練画像の組を生成する。光学ローパスフィルタは、存在の有無、分離方式(4点分離、垂直または水平2点分離)、カットオフ周波数などが撮像素子404aの種類によって異なる。画素ピッチが変化すると、画素に対するぼけの大きさが相対的に変化する。
【0097】
好ましくは、原画像は、撮像素子404aの輝度飽和値よりも高い信号値を有しているとよい。これは、実際の被写体においても、特定の露出条件で撮像装置404により撮像を行った際、輝度飽和値に収まらない被写体が存在するためである。正解画像は、原画像を撮像素子404aの輝度飽和値で信号をクリップすることによって生成する。訓練画像は、ぼけを作用させた後、輝度飽和値によってクリップすることで生成する。
【0098】
また、正解画像と訓練画像の生成時に、原画像の縮小処理を実行してもよい。原画像として実写画像を使用する場合、既に収差や回折によってぼけが発生しているため、縮小することでぼけの影響を小さくし、高解像な正解画像を生成することができる。この場合、正解画像とスケールを合わせるために、訓練画像も同様に縮小する。縮小とぼけの作用の順序は、どちらが先でもよい。ぼけの作用を先に行う場合、縮小を考慮して、ぼけのサンプリングレートを細かくする必要がある。PSFならば空間のサンプリング点を細かくし、OTFならば最大周波数を大きくすればよい。なお、原画像に高周波成分が充分に含まれている場合、高精度な鮮鋭化が可能となるため、縮小は行わなくてもよい。
【0099】
また、訓練画像の生成で作用させるぼけには、歪曲収差を含めない。歪曲収差が大きいと、被写体の位置が変化し、正解画像と訓練画像それぞれの画像内に収まった被写体が異なる可能性があるためである。このため、本実施例で学習するGANは、歪曲収差を補正しない。推定フェーズにおいて、歪曲収差はバイリニア補間やバイキュービック補間などを用いて、ぼけ鮮鋭化後に補正する。同様に、訓練画像の生成で作用させるぼけには、倍率色収差を含めない。推定フェーズにおいて、倍率色収差は各色成分のシフトなどを用いて、ぼけ鮮鋭化の前に補正する。
【0100】
第二の方法としての正解画像と訓練入力データの生成方法は、レンズ装置405と撮像装置404による実写画像を使用する方法である。結像性能の優劣が異なる種類のレンズ装置405で同一の被写体を撮像することで、正解画像と訓練画像の組を得る。なお、上記2つの方法で生成した訓練画像と正解画像から、既定の画素数の部分領域を抽出して学習に用いてもよい。また、正解画像と訓練画像は、未現像のRAW画像でも現像後の画像でもよい。
【0101】
続いてステップS302において、演算部401cは、訓練画像を生成器へ入力し、ぼけが鮮鋭化された偽画像(偽データ)を生成する。続いてステップS303において、更新部401dは、正解画像と偽画像の誤差に基づいて、生成器のウエイトを更新する。続いてステップS304において、更新部401dは、識別器を用いない第1の学習が完了したか否かを判定する。学習が未完と判定された場合、ステップS301へ戻り、1組以上の新たな正解画像と訓練画像を取得する。一方、学習が完了と判定された場合、ステップS305へ進み、GANによる第2の学習を開始する。
【0102】
ステップS305において、取得部401bは、複数の正解画像と訓練画像を取得する。続いてステップS306において、演算部401cは、複数の訓練画像それぞれを生成器に入力し、複数の偽画像を生成する。続いてステップS307において、演算部401cは、複数の正解画像と偽画像それぞれを識別器に入力し、複数の識別出力を生成する。続いてステップS308において、更新部401dは、複数の識別出力と正解ラベルに基づいて、識別器のウエイトを更新する。本実施例では、正解画像と偽画像の識別出力における外れ値の影響を低減したロス関数を用いることで、安定した学習を実現する。本実施例では、以下の式(20)をロス関数として使用する。
【0103】
【数12】
【0104】
ここで、Qはq分位値(q-quantile)であり、q分位値とは分布をq:1-qに分割する値(ここで、q∈[0,1])を指す。特にq=0.5におけるq分位値は、メディアンである。分位値は、複数の識別出力C(x-)を大きさの順に並べ、qで表される割合の位置での識別出力を採用する。故に、平均よりも外れ値の影響を受けにくい。そのため、識別出力のヒストグラムが図1(B)になりにくく、図1(A)に近付く。なお、式(20)の第1項と第2項で、異なるqの値を使用してもよい。図1(A)のように、実データと偽データの識別出力が完全に分離されている場合、第1項でq=1、第2項でq=0となる。しかし、複雑なタスクにおいて、完全に識別出力を分離することは難しいため、例えば、第1項では0.4≦q≦1.0とし、第2項では0.0≦q≦0.6などとするとよい。
【0105】
識別器のウエイトは、第1の値(q分位値Q[C(x)])に基づいて、更新される。実施例2と同様に、分位値の決定には、複数の識別出力C(x)を大きさに基づいて順番に並べることから、各識別出力C(x)の値を比較する必要がある。故に、第1の値は、第1の正解画像(または偽画像)の識別出力と、第2の正解画像(または偽画像)の識別出力に基づく値(識別出力そのもの)と、の比較によって決定される。
【0106】
続いてステップS309において、演算部401cは、複数の正解画像と偽画像それぞれをウエイトが更新された識別器に入力し、複数の識別出力を生成する。続いてステップS310において、更新部401dは、複数の正解画像と偽画像の誤差と、複数の識別出力と正解ラベルと、に基づいて、生成器のウエイトを更新する。生成器のウエイトは、式(17)に式(18)と以下の式(21)を代入したロス関数を用いて更新する。
【0107】
【数13】
【0108】
同様に、生成器のウエイトも、第1の値(q分位値Q[C(x)])に基づいて、更新される。第1の値は、第1の正解画像(または偽画像)の識別出力と、第2の正解画像(または偽画像)の識別出力に基づく値(識別出力そのもの)と、の比較によって決定される。
【0109】
続いてステップS311において、更新部401dは、第2の学習が完了したか否かを判定する。ステップS304と同様に、学習が未完の場合、ステップS305へ戻る。一方、学習が完了した場合、学習済みの生成器のウエイトの情報を記憶部401aに記憶する。
【0110】
次に、図13を参照して、制御装置403と画像推定装置402で実行されるぼけ鮮鋭化(推定フェーズ)に関して説明する。図13は、本実施例における偽画像の生成に関するフローチャートである。
【0111】
まずステップS601において、通信部403bは、画像推定装置402へ撮像画像(生成入力データ、第1の入力データ)、ウエイト指定情報、ぼけ鮮鋭化の実行に関する要求を送信する。撮像画像は、レンズ装置405の収差と回折、撮像素子404aの光学ローパスフィルタ及び画素開口による劣化のため、ぼけが発生している。ぼけ鮮鋭化のウエイトは、レンズ装置405の種類ごとに学習されているため、撮像画像の撮像に用いたレンズ装置405の種類を特定できる情報をウエイト指定情報として送信する。
【0112】
続いてステップS701において、通信部402bは、送られてきた撮像画像、ウエイト指定情報、ぼけ鮮鋭化の要求を受信し、取得する。続いてステップS702において、取得部402cは、ウエイト指定情報に基づいて、学習済みのウエイトの情報を記憶部402aから取得する。ウエイトの情報は、予め記憶部401aから読み出され、記憶部402aに記憶されている。撮像画像を撮像したレンズ装置405の種類に対応するウエイトの情報が、取得される。続いてステップS703において、鮮鋭化部402dは、撮像画像を生成器に入力し、ぼけ鮮鋭化された偽画像を生成する。生成器には、取得されたウエイトの情報が使用される。続いてステップS704において、通信部402bは、偽画像を制御装置403へ送信する。続いてステップS602において、通信部403bは、偽画像を取得する。
【0113】
以上の構成により、高品質な(実データに近い)偽データを安定して生成可能な画像処理システムを提供することができる。なお本実施例の構成は、画像以外の音響などのデータに対するぼけ鮮鋭化にも適用が可能である。また、実施例2および本実施例の構成は、アップサンプリングや高コントラスト化、高階調化、高フレームレート化などその他の処理に関しても適用が可能である。
【0114】
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0115】
以上のように、各実施例の学習方法は、取得工程(S101、S305)、生成工程(S102、S306)、識別工程(S104、S106、S307、S309)、および、学習工程(S105、S107、S308、S310)を有する。取得工程では、複数の第1の入力データと、複数の実データと、を取得する。生成工程では、生成器に複数の第1の入力データそれぞれを入力することで、複数の偽データを生成する。識別工程では、識別器に実データまたは偽データを入力することで、入力されたデータが生成器によって生成されたデータであるかを識別した識別出力を生成する。学習工程では、生成器または識別器のウエイトを、実データに基づく識別出力と偽データに基づく識別出力との比較に基づく損失関数を用いて更新する。ここで損失関数は、複数の実データと複数の偽データのそれぞれの識別出力の分布の重なりか、複数の実データまたは複数の偽データの識別出力の外れ値による影響か、が低減されるように定義された関数である。
【0116】
各実施例によれば、高品質な(実データに近い)偽データを安定して生成可能な機械学習モデルの学習方法、プログラム、学習装置、および、学習済みウエイトの製造方法を提供することができる。
【0117】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【0118】
101 学習装置
101b 取得部(取得手段)
101c 演算部(生成手段、識別手段)
101d 更新部(学習手段)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13