以下、本発明の各実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の各実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は各実施形態に記載されている構成によって限定されることはない。
以下、各実施形態に共通する構成について説明する。図1は、画像処理装置を含むシステム構成の一例を示す図である。図1のシステム構成において、画像処理装置100は、撮像装置120、表示装置130およびストレージ装置140と接続される。システム構成は、図1の例には限定されない。例えば、画像処理装置100は、表示装置130とストレージ装置140とのうち何れかまたは両方を含んで構成されてもよい。また、画像処理装置100は、撮像装置120に組み込まれていてもよい。画像処理装置100は、エッジコンピュータや、ローカルサーバ、クラウドサーバ等であってもよい。
画像処理装置100は、各種の画像処理を行うとともに、学習処理および推論処理を行う。以下、学習処理は、ディープラーニングによる処理であるものとして説明する。ただし、画像処理装置100は、ディープラーニング以外の機械学習手法を用いて、機械学習を行ってもよい。例えば、画像処理装置100は、サポートベクターマシンや決定木、ロジスティクス回帰等の任意の機械学習手法を用いて、学習処理を行ってもよい。
学習処理では、訓練画像と教師画像とがペアになった学習セットがニューラルネットワークに入力され、ニューラルネットワークの重みやバイアス等のネットワークパラメータ(以下、パラメータ)が調整される。多くの学習セットがニューラルネットワークに入力されて機械学習がされることで、ニューラルネットワークが出力する画像の特徴分布が教師画像の特徴分布に近づくように、パラメータが最適化される。学習済みのパラメータが設定されたニューラルネットワークに対して未知の画像が入力されると、ニューラルネットワークから推論結果(推論画像)が出力される。
撮像装置120について説明する。撮像装置120は、レンズユニット121、撮像素子122およびカメラ制御回路123を有する。撮像装置120は、他の要素を含んでもよい。レンズユニット121は、絞りや光学レンズ、モータ等を含んで構成される。モータは、絞りや光学レンズを駆動させる。レンズユニット121は、複数枚の光学レンズを含んで構成されてもよい。レンズユニット121は、カメラ制御回路123が出力した制御信号に基づいて動作し、光学的に映像の拡大・縮小、焦点距離の調整等を行うことができる。レンズユニット121の絞りは、開口面積を制御することができる。これにより、絞り値(F値)が制御され、入射光量の調整を行うことができる。
レンズユニット121を透過した光は、撮像素子122に結像される。撮像素子122は、CCDセンサやCMOSセンサ等のように、入射した光を電気信号に変換する。撮像素子122は、カメラ制御回路123からの制御信号に基づいて駆動される。撮像素子122は、各画素内の電荷のリセットや、読み出しのタイミング制御、読み出された信号に対して施すゲイン処理、アナログ信号からデジタル信号への変換等を行う機能を有する。撮像装置120は、撮像素子122が出力したデジタルの画像信号を、画像処理装置100の画像信号受信回路101に送信する。図1の例では、撮像装置120と画像処理装置100とは、無線または有線で通信可能に接続されており、画像処理装置100は、撮像装置120が送信した画像信号を受信する。カメラ制御回路123は、画像処理装置100のカメラ通信接続回路102から受信した駆動制御信号に基づいて、レンズユニット121および撮像素子122の駆動制御を行う。
次に、画像処理装置100について説明する。画像信号受信回路101は、撮像装置120から画像信号を受信する。カメラ通信接続回路102は、レンズユニット121および撮像素子122を駆動する駆動制御信号を撮像装置120に送信する。画像処理回路103は、画像信号受信回路101が受信した画像信号に対して、画像処理を施す。この画像処理は、CPU105により行われてもよい。また、画像処理回路103は、ニューラルネットワークを用いたノイズ低減処理を行う機能を有している。画像処理回路103は、画像処理を行うマイクロプロセッサ、DSP、FPGA、ASICなどの回路により実現されてもよいし、CPU105により実現されてもよい。
フレームメモリ104は、画像信号を一時的に記憶するメモリである。フレームメモリ104は、画像信号を一時的に記憶し、記憶した画像信号を高速に読み出すことが可能な素子である。画像信号のデータ量が多くなると、高速且つ大容量のメモリが、フレームメモリ104に適用されることが好ましい。例えば、フレームメモリ104としては、DDR3-SDRAM(Dual Data Rate 3 - Synchronous Dynamic RAM)等を適用することができる。DDR3-SDRAMがフレームメモリ104に適用された場合、様々な処理が可能になる。例えば、DDR3-SDRAMは、時間的に異なる画像の合成や必要な領域の切り出し等の画像処理を行う際に好適な素子である。ただし、フレームメモリ104は、DDR3-SDRAMには限定されない。
CPU105は、ROM106に記憶されている制御プログラムや各種パラメータを読み出して、RAM107に展開する。CPU105がRAM107に展開されたプログラムを実行することで、各実施形態の処理が実現される。メタデータ抽出回路108は、レンズ駆動条件やセンサ駆動条件等のメタデータを抽出する。GPU109は、グラフィックス・プロセッシング・ユニットであり、高速に演算処理が可能なプロセッサである。GPU109は、表示装置130に表示させる画面を生成するために用いられるが、ディープラーニングの演算処理にも好適に使用される。GPU109により生成された画像は、表示駆動回路110および表示装置接続回路111を介して、表示装置130に出力される。これにより、表示装置130に画像が表示される。
ストレージ駆動回路112は、ストレージ接続回路113を介して、ストレージ装置140を駆動させる。ストレージ装置140は、多くの画像データを記憶する。ストレージ装置140が記憶する画像データとしては、訓練画像(学習用画像)および訓練画像に対応する教師画像(正解画像)がある。訓練画像と教師画像とは1つのペア(学習セット)を構成する。ストレージ装置140には、複数の学習セットが記憶される。ストレージ装置140は、学習処理により生成された学習済みのパラメータを記憶してもよい。以下、CPU105の制御により学習処理が行われる際には、ストレージ装置140に予め記憶された画像データが用いられ、推論処理が行われる際には、撮像装置120から取得した画像信号が使用されるものとして説明する。ただし、上記の例には限定されない。例えば、推論処理が行われる際に、ストレージ装置140や外部の記憶装置等に記憶された画像信号が使用されてもよい。
学習処理で使用される訓練画像は、ベイヤー配列の画像や、三板式の撮像センサで撮影された画像、垂直色分離方式の撮像センサ等で撮影された画像であってもよい。また、訓練画像は、ベイヤー配列以外の配列(ハニカム構造や周期性の低いカラーフィルタ配列等)の画像であってもよい。また、訓練画像がベイヤー配列の画像である場合、ベイヤー配列の1chの画像であってもよいし、カラーチャネルごとに分離された画像であってもよい。教師画像も同様である。訓練画像および教師画像は、上述した例には限定されない。
次に、学習処理について説明する。図2(A)および(B)は、画像処理装置100の学習処理の機能を示すブロック図である。まず、図2(A)について説明する。訓練画像保持部202は、ストレージ装置201から取得された訓練画像を保持する。教師画像保持部203は、ストレージ装置201から取得された教師画像を保持する。訓練画像保持部202および教師画像保持部203は、例えば、RAM107等により実現されてもよい。
教師画像と訓練画像とは同一の被写体が写っている画像である。訓練画像はノイズを含む画像であり、教師画像はノイズを含まない正解画像である。ただし、教師画像は若干のノイズを含んでいてもよい。例えば、CPU105や画像処理回路103が、教師画像に対してノイズを付加することで、訓練画像が生成されてもよい。また、訓練画像は、正解画像と同一の被写体をノイズが発生し得る状況で撮影された画像(例えば、高感度の設定で撮影された画像)であってもよい。訓練画像は低照度で撮影された画像に対して教師画像と同程度に感度補正が施された画像であってもよい。また、教師画像は低感度(訓練画像よりも低い感度)で撮影された画像であってもよい。
ニューラルネットワーク204は、多層構造のニューラルネットワークである。詳細は後述する。ニューラルネットワーク204に対する学習(ディープラーニング)が行われる際には、推論精度の向上を図るために、多様なノイズパターンや被写体が含まれる訓練画像が用いられることが好ましい。多様なノイズパターンや被写体が含まれる訓練画像を用いて、ニューラルネットワーク204の学習が行われることで、訓練画像に含まれていないノイズパターンや被写体を含む未知の画像を入力としたときの推論処理の精度が向上する。ニューラルネットワーク204のディープラーニングに用いられる訓練画像の枚数が不足している場合、例えば、切り取りや回転、反転等の水増し処理が訓練画像に施されてもよい。この場合、教師画像に対しても同一の水増し処理が行われる。また、訓練画像と教師画像とはそれぞれ、信号の上限値(飽和輝度値)で除算され、正規化されることが好ましい。ニューラルネットワーク204は、訓練画像を入力すると、出力画像を生成し、出力する。
画像処理部205は、ニューラルネットワーク204の出力画像と教師画像とに対して、画像処理を行う。画像処理の例としては、ISO感度補正、F値補正、色抑圧処理、色曲がり補正、カラーバランス補正、周辺光量落ち補正、チャネル間ゲイン補正、フリッカ補正、および、圧縮および伸張処理などがある。ニューラルネットワーク204の学習処理が完了すると、学習済みのパラメータが生成される。これにより、学習済みのパラメータをニューラルネットワーク204に適用した推論処理を行うことができる。画像処理部205は、学習処理で行う補正の条件と推論処理で行う補正の条件とを合わせることが好ましい。これにより、推論処理が行われる際の推論精度が向上する。図2(A)では、画像処理部205はニューラルネットワーク204の出力側にあるが、図2(B)に示されるように、画像処理部205はニューラルネットワーク204の入力側にあってもよい。画像処理部205は、例えば、画像処理回路103やCPU105等により実現される。
誤差評価部206は、画像処理部205が補正した出力画像と教師画像との誤差を算出する。教師画像と訓練画像とは、同じ並びの色成分の配列となっている。誤差評価部206は、例えば、各画素についての平均二乗誤差や、各画素の差分の絶対値の総和を用いて、誤差(損失誤差)を算出してもよい。また、誤差評価部206は、決定係数等の他の指標を用いて、誤差を算出することにより、誤差の評価を行ってもよい。パラメータ調整部207は、誤差評価部206が算出した誤差が小さくなるようにニューラルネットワーク204の各パラメータを更新する。誤差評価部206およびパラメータ調整部207は、例えば、CPU105により実現されてもよいし、GPU109により実現されてもよいし、CPU105とGPU109との協働動作により実現されてもよい。誤差評価部206およびパラメータ調整部207は、学習手段に対応する。
パラメータ調整部207は、例えば、誤差逆伝搬法を用いて、ニューラルネットワーク204の各パラメータを更新してもよい。パラメータ調整部207は、他の手法を用いて、ニューラルネットワーク204の各パラメータを更新してもよい。このとき、パラメータ調整部207は、ニューラルネットワーク204の各パラメータの更新量を固定してもよいし、変動させてもよい。以上のように、画像処理部205により画像処理がされた出力画像と教師画像との誤差が小さくなるようにニューラルネットワーク204の各パラメータが更新される。これにより、ニューラルネットワーク204に未知の画像が入力されたときの推論精度が向上する。
パラメータ保存領域208-1~208-n(nは2以上の整数)は、更新されたパラメータを保存する領域である。パラメータ保存領域208-1~208-n(以下、パラメータ保存領域208と総称する)は、画像処理の補正条件に応じて学習処理がされたニューラルネットワーク204のパラメータを保存するための領域である。つまり、各パラメータ保存領域208には、それぞれ異なる画像処理の補正条件で学習処理がされた学習済みのパラメータが、それぞれの画像処理の補正条件に対応付けて保存される。パラメータ保存領域208は、RAM107の一部の記憶領域であってもよいし、ストレージ装置201の一部の記憶領域であってもよい。制御部209は、学習処理に関する各種の制御を行う。制御部209は、CPU105により実現される。
次に、学習処理の流れについて説明する。図3は、学習処理の流れの一例を示すフローチャートである。図3では、ステップをSと記載しており、これは他のフローチャートの図でも同様である。S301で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S302で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。訓練画像のノイズ量やノイズパターンは、他の訓練画像のノイズ量やノイズパターンと異なっている場合もあり、同じ場合もある。
S303で、画像処理部205は、ニューラルネットワーク304からの出力画像と教師画像とに対して、画像処理を施す。上述したように、画像処理部205は、ニューラルネットワーク204の入力側にあってもよいし、出力側にあってもよい。つまり、S303の処理は、S302の処理より前に行われてもよい。
S304で、誤差評価部206は、画像処理が施された出力画像と教師画像との誤差を算出する。S305で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S306で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、学習回数が規定回数に達した場合に、所定の終了条件を満たしたと判定してもよい。また、制御部209は、算出された誤差が所定値以下となった場合に、所定の終了条件を満たしたと判定してもよい。また、制御部209は、上記の誤差の減少度合いが所定度合い以下となった場合やユーザによる終了指示があった場合に、所定の終了条件を満たしたと判定してもよい。制御部209は、S306でNOと判定した場合、フローをS301に戻す。この場合、新たな訓練画像と正解画像との学習セットを用いて、S301~S305の処理が行われる。一方、制御部209は、S306でYESと判定した場合、フローをS307に進める。
S307で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、画像処理の条件ごとに異なるパラメータ保存領域208に保存する。このとき、制御部209は、学習処理により更新されたパラメータだけでなく、パラメータに関連付けてニューラルネットワーク204のモデル構造等に関する情報をパラメータ保存領域208に保存してもよい。S308で、制御部209は、全ての画像処理の補正条件についてのパラメータを取得したかを判定する。制御部209は、S308でYESと判定した場合、図3のフローチャートの処理を終了させる。一方、制御部209は、S308でNOと判定した場合、フローをS309に進める。S309で、制御部209は、画像処理の補正条件を変更する。そして、制御部209は、フローをS301に戻す。これにより、画像処理の条件を変更した学習処理が新たに行われる。
次に、ニューラルネットワーク204について説明する。図4は、ニューラルネットワーク204の一例を示す図である。各実施形態のニューラルネットワーク204は、畳み込みニューラルネットワーク(CNN)であるものとして説明する。ただし、ニューラルネットワーク204は、CNNには限定されない。例えば、ニューラルネットワーク204は、GAN(Generative Adversarial Network)やスキップコネクション、RNN(Recurrent Neural Network)等であってもよい。また、ニューラルネットワーク204の代わりに、他の機械学習手法により機械学習された学習モデルが用いられてもよい。学習モデルとしては、例えば、上述したサポートベクターマシンや決定木等を適用できる。
ニューラルネットワーク204に対して、入力画像401が入力されると、畳み込み演算402が実施される。入力画像401は、画像データであってもよいし、画像データの特徴マップを表すデータであってもよい。畳み込み行列403は、入力画像401に対して畳み込み演算を行うフィルタである。入力画像401と畳み込み行列403との畳み込み演算によって出力された結果に、バイアス404が加算される。特徴マップ405は、バイアス404を加算した畳み込み演算の演算結果である。ニューラルネットワーク204の中間層の層数やニューロン数、結合係数、重み等は、任意の値であってよい。また、FPGA等のプログラミング回路にニューラルネットワーク204が実装される場合、ニューロン間の結合や重みは削減されてもよい。この点は、GPU109が、ニューラルネットワーク204の処理を行う場合も同様である。また、学習処理および推論処理は、複数のカラーチャネルを纏めて実行されてもよいし、複数の色のそれぞれについて個別に実行されてもよい。
CNNでは、入力画像に対してフィルタによる畳み込み演算が実行されることで、入力画像の特徴マップが抽出される。フィルタのサイズは、任意のサイズであってよい。後段の層において、前段の層で抽出された特徴マップに別のフィルタによる畳み込み演算が実行されることで、順次異なる特徴マップが抽出される。中間層の各層では、入力信号に対して接続の強度を表すフィルタの重みが乗算されて、さらにバイアスが加算される。この演算結果に対して活性化関数が適用されることで、各ニューロンにおける出力信号が得られる。各層における重みおよびバイアスがパラメータ(ネットワークパラメータ)であり、パラメータの値が学習処理により更新される。機械学習により更新されたパラメータが、学習済みのパラメータである。活性化関数としては、シグモイド関数やReLU関数等の任意の関数を適用することができる。各実施形態で適用される活性化関数は、以下の式1で表されるLeaky ReLU関数であるものとして説明する。ただし、活性化関数としては、シグモイド関数やtanh関数等、任意の活性化関数が適用されてもよい。
以上の式(1)において、maxは、引数のうち最大値を出力する関数を表す。
上述したように、パラメータ保存領域208-1~208-nには、画像処理の補正条件ごとに、学習処理により更新されたパラメータ(学習済みのパラメータ)を保存される。推論処理が行われる際には、画像処理の補正条件の応じたパラメータがパラメータ保存領域208-1~208-nのうち何れかから取得される。そして、取得されたパラメータがニューラルネットワーク204に適用されて、推論処理が行われる。これにより、補正条件が異なる画像処理を行う場合の推論精度を向上させることができる。
上述した例では、ニューラルネットワーク204の学習処理は、ノイズを含む訓練画像と、ノイズを含まない、あるいは、ノイズが小さい教師画像とを用いて行われる。これにより、機械学習がされたニューラルネットワーク204に未知のノイズを含む画像が入力されたときに、ニューラルネットワーク204による推論処理により、ノイズを低減した画像を推論することができる。上述した例は、ノイズ低減の処理についての学習処理であるが、ノイズ低減以外の処理についての学習処理にも適用可能である。例えば、ニューラルネットワークにより超解像の推論処理が行われる場合、教師画像をダウンサンプリングした訓練画像と教師画像とを用いて、学習処理を行うことができる。このとき、訓練画像と教師画像とはサイズ合わせが行われてもよい。
次に、推論処理について説明する。図5は、画像処理装置100の推論処理の機能を示すブロック図である。取得部501は、撮像装置120から、撮像画像およびパラメータ選択の際に用いられる情報を取得する。パラメータ選択の際に用いられる情報は、パラメータ保存領域208-1~208-nに保存されている各パラメータのうち選択するパラメータを特定するために用いられる。パラメータ選択の際に用いられる情報は、メタデータであってもよい。メタデータは、撮像画像に付加された情報(レンズユニット121や撮像装置120等の設定条件の情報)であってもよいし、メタデータ抽出回路108から抽出された情報であってもよい。ここでは、パラメータ選択の際に用いられる情報は、画像処理に関する情報である。パラメータ選択の際に用いられる情報が上記のメタデータである場合、取得部501は、パラメータ選択の際に用いられる情報を別個に取得しなくてもよい。
選択手段としてのパラメータ選択部502は、取得されたパラメータ選択の際に用いられる情報に対応するパラメータを、パラメータ保存領域208-1~208-nのうち何れかから取得する。パラメータ保存領域208―1~208-nに保存される各パラメータは、上述した学習処理により生成されるパラメータであるが、画像処理装置100以外の外部装置で学習処理されたパラメータであってもよい。この場合、外部装置は、ニューラルネットワーク204と同じネットワーク構造を有するニューラルネットワークで、上述した学習処理を行う。そして、画像処理装置100は、学習処理により生成されたパラメータを取得し、パラメータ保存領域208―1~208-nに保存してもよい。
パラメータ選択部502により選択された学習済みのパラメータは、ニューラルネットワーク204に適用される。そして、ニューラルネットワーク204には、撮像装置120から取得された撮像画像が入力される。推論手段としてのニューラルネットワーク204は、撮像画像が入力されると、推論処理を行い、推論結果として推論画像を生成する。推論画像出力部503は、ストレージ装置201に、生成された推論画像を出力する。制御部504は、推論処理に関する各種の制御を行う。取得部501、パラメータ選択部502、推論画像出力部503および制御部504は、例えば、CPU105により実現される。
図6は、本実施形態の推論処理の流れの一例を示すフローチャートである。S601で、取得部501は、パラメータ選択の際に用いられる情報を取得する。S602で、パラメータ選択部502は、取得した情報に対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。パラメータ保存領域208-1~208-nに保存されている各パラメータは、それぞれ異なる画像処理の補正条件で更新されたパラメータである。取得されたパラメータ選択の際に用いられる情報は、画像処理の補正条件に関する情報である。パラメータ選択部502は、取得したパラメータ選択の際に用いられる情報が表す画像処理の補正条件と同じであるか、または画像処理の補正条件が近いパラメータを取得する。
S603で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。取得部501は、撮像装置120から、撮像画像を取得する。S604で取得される撮像画像は、RAW画像であるものとする。RAW画像に符号化処理が施されている場合、CPU105または画像処理回路103は、復号処理を行う。取得部501は、ストレージ装置140やROM106、RAM107等から、RAW画像を取得してもよい。
S605で、制御部504は、取得した撮像画像をニューラルネットワーク204に入力する。このとき、制御部504は、取得した撮像画像をニューラルネットワーク204に入力するための入力画像に変換してもよい。推論処理を行う際にニューラルネットワーク204に入力する撮像画像のサイズと、学習処理を行った際にニューラルネットワーク204に入力した訓練画像のサイズとは同じであってもよいし、異なっていてもよい。制御部504は、撮像画像を入力画像に変換する際に、信号の規格化や色成分ごとの分離等を行ってもよい。
S606で、ニューラルネットワーク204は、推論処理を行う。ニューラルネットワーク204による推論処理は、GPU109により実行されてもよいし、CPU105により実行されてもよいし、CPU105とGPU109との協働動作により実行されてもよい。S606の推論処理により、ニューラルネットワーク204の推論結果として推論画像が生成される。S607で、推論画像出力部503は、生成された推論画像をストレージ装置140に出力する。推論画像出力部503は、生成された推論画像を、ROM106やRAM107、表示装置130等に出力してもよい。S604で、撮像画像から入力画像に変換している場合、制御部504は、推論画像に対して、S604で行った変換を元に戻す逆変換を行ってもよい。
他の撮像画像の推論処理が行われる場合、画像処理装置100は、S601~S607の各処理を実行する。上述したように、パラメータ保存領域208―1~208-nには、画像処理の補正条件ごとに学習処理されたニューラルネットワーク204のパラメータが保存される。そして、パラメータ選択部502は、画像処理の補正条件に基づいて、対応するパラメータを、パラメータ保存領域208―1~208-nから選択する。これにより、最適なパラメータを用いた、撮像画像の推論処理を行うことができる。その結果、ノイズを低減した画像を得ることができる。
以上において、画像処理装置100は、学習処理と推論処理との両方を行っている。この点、学習処理を行う画像処理装置と推論処理を行う画像処理装置とは別個の装置であってもよい。この場合、例えば、学習処理を行う画像処理装置(以下、学習装置)は、図2(A)または図2(B)の構成を有し、推論処理を行う画像処理装置(以下、推論装置)は、図5の構成を有する。この場合、学習処理を行う画像処理装置と推論処理を行う画像処理装置とは通信可能に接続される。
推論装置は、学習装置から学習済みの各パラメータを取得して、上述した制御部209と同様に、取得した各パラメータをそれぞれ異なるパラメータ保存領域208に保存する。そして、推論装置は、図6のフローチャートの各処理を行う。以上のように、学習処理を行う画像処理装置と推論処理を行う画像処理装置とは別個の装置であっても、学習処理を行う画像処理装置と推論処理を行う画像処理装置とが同一の装置である場合と、同様の効果を得ることができる。
(第1の実施形態)
第1の実施形態では、画像処理としてISO感度補正を例にあげ、複数のISO感度補正のそれぞれに対応する補正値でISO感度補正が施された教師画像と訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。また、第1の実施形態では、温度条件も加味して学習処理が行われた学習モデルのパラメータの具体例についても説明する。
第1の実施形態では、上述した実施形態で説明した構成が用いられる。まず、ISO感度補正について説明する。ISO感度補正は、列アンプとランプとの組み合わせで決定されるアナログゲインに対して、目標とするISOの明るさとなるように、列アンプとランプとの組み合わせごとに感度補正を施す補正処理である。目標とするISOの明るさは、国際標準化機構(International Organization for Standardization)で定められた感度の基準である。ここで、列アンプとランプとの組み合わせは複数あり、組み合わせごとに最適なISO感度の補正値は異なる。従って、ISO感度補正を推論処理により行う場合に、学習処理がされたパラメータが1種類しか保存されていないと、推論精度が低下する。そこで、画像処理装置100は、列アンプとランプとの組み合わせごとに学習処理がされたパラメータを保存する。
また、アナログゲインの最適な補正値は、温度によっても異なる。つまり、ISO感度補正を推論処理により行う場合には、温度によっても最適なパラメータが異なる。そこで、本実施形態では、画像処理装置100は、ISO感度と温度とに応じたパラメータを保存することもできる。
図7は、本実施形態の画像処理部205の機能を示すブロック図である。図7(A)は、画像処理部205の入力側にニューラルネットワーク204が設けられる場合の図である。図7(B)は、画像処理部205の出力側にニューラルネットワーク204が設けられる場合の図である。図7(A)の場合、画像処理部205には、教師画像保持部203から教師画像が入力され、ニューラルネットワーク204から出力画像が入力される。図7(B)の場合、画像処理部205には、訓練画像保持部202から訓練画像が入力され、教師画像保持部203から教師画像が入力される。図7(A)では、画像処理部205に、訓練画像を入力としてニューラルネットワーク204により処理された出力画像が入力される。一方、図7(B)では、ニューラルネットワーク204による処理がされていない訓練画像が入力される。以下の処理は、図7(A)と図7(B)とで同じである。図7(A)および(B)に示されるように、画像処理部205は、抽出部702、補正値取得部703および補正部704を有する。
抽出部702は、教師画像からメタデータを抽出する。メタデータは、教師画像に付加された情報であり、ISO感度についてのISO感度情報および温度についての温度情報を含む。本実施形態では、抽出部702は、教師画像のメタデータとしてISO感度情報および温度情報を抽出する。メタデータは、例えばEXIF(Exchange Image File Format)形式で画像に付加された情報であってもよい。ただし、メタデータは、EXIF形式のデータには限定されない。
補正値取得部703は、抽出したISO感度情報と温度情報とに対応したISO感度補正のデータをROM106から取得する。ROM106には、ISO感度と温度との組み合わせに対応する補正値のデータが記憶されている。ROM106には、上記の組み合わせではなく、ISO感度に対応する補正値のデータが記憶されていてもよい。補正部704は、補正値取得部703が取得したISO感度補正のデータを用いて、ニューラルネットワーク204が出力した出力画像および教師画像に対してISO感度補正を施す。ISO感度補正が施された出力画像および教師画像は、誤差評価部206に出力される。
次に、ISO感度補正の第1の例について説明する。図8は、アナログゲインの第1の例を示す図である。図8(A)は、理想的なアナログゲインの一例を示す図である。図8(B)は、実際のアナログゲインの一例を示す図である。アナログゲインは、列アンプとランプとの組み合わせにより決定される。図8(B)に示されるアナログゲインは、図8(A)のアナログゲインに対してばらつきが生じている。このため、補正部704は、アナログゲインを補正する。
例えば、ISO1に着目した場合、図8(A)の例に示されるように、列アンプが「0.6倍」であり、ランプが「0.85倍」である場合のアナログゲイン「0.51倍(=0.6×0.85)」が理想値である。一方、実際のアナログゲインは、図8(B)の例では、列アンプが「0.59倍」であり、ランプが「0.84倍」であるため、アナログゲインは、「0.50倍(=0.59×0.84)」である。従って、ISO1についてのISO感度補正の補正値は、「1.02倍(=0.51/0.50)」である。
ISO9に着目した場合、図8(A)の例に示されるように、列アンプが「8.0倍」であり、ランプが「1.00倍」である場合のアナログゲイン「8.00倍(=8.0×1.00)」が理想値である。一方、実際のアナログゲインは、図8(B)の例では、列アンプが「7.88倍」であり、ランプが「0.97倍」であるため、アナログゲインは、「7.64倍(=7.88×0.97)」である。従って、ISO1についてのISO感度補正の補正値は、「1.047倍(=8.00/7.64)」である。
以上のように、ISO感度ごとにISO感度補正の補正値が異なる。そこで、補正部704は、教師画像から抽出されたメタデータのISO感度情報に対応した補正値でISO感度補正を行う。ROM106には、ISO感度ごとのISO感度補正の補正値が記憶されている。ISO感度ごとのISO感度補正の補正値は、RAM107やストレージ装置140等に記憶されていてもよい。図8(B)の例では、実際のアナログゲインが理想的なアナログゲインよりも低い例を示しているが、実際のアナログゲインは理想的なアナログゲインよりも高くてもよい。
次に、ISO感度補正の第2の例について説明する。図9は、アナログゲインの第2の例を示す図である。図9に示されるアナログゲインは、温度により特性にばらつきがある。このため、ISO感度補正の補正値も温度により異なる。これは、チャンネルアンプの温度特性に起因している。そこで、ROM106は、各ISO感度と各温度との組み合わせごとに補正値を記憶してもよい。
ここで、ROM106が全ての温度についての補正値を記憶する場合、ROM106に記憶される補正値の数も多くなる。この場合、各ISO感度と各温度との組み合わせの数が多くなり、パラメータ保存領域208に保存されるパラメータの数も多くなる。その結果、パラメータ保存領域208のために使用されるデータ量が大きくなる。そこで、ROM106は、所定範囲ごとの温度の補正値を纏めて記憶してもよい。
例えば、ROM106は、第1温度範囲(0℃未満の低温)と第2温度範囲(0℃~40℃の温度)と第3温度範囲(40℃を超える高温)との3種類の温度範囲ごとに共通の補正値を記憶してもよい。上記のように各ISOのそれぞれについて3種類の温度範囲の補正値が用いられる場合、合計で33個(=11×3)の補正値がROM106に記憶される。これにより、複数の温度(例えば、0℃~40℃)については、共通の1つの補正値が用いられるため、パラメータ保存領域208に保存されるパラメータの数を削減でき、データ使用量を小さくすることができる。なお、温度範囲の設定方法や種類数等は上記の例には限定されない。例えば、温度範囲は、温度によるアナログゲインの変化の度合いに応じて、可変に設定されてもよい。この場合、上記の変化の度合いが所定度合い以上の区間では温度範囲が狭く設定され、所定度合い未満の区間では温度範囲が広く設定されてもよい。
次に、第1の実施形態における学習処理の流れの一例について説明する。図10は、第1の実施形態の学習処理の流れの一例を示すフローチャートである。図10のフローチャートは、図7(A)のブロック図に対応する。S1001で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S1001の処理は、図3のS301の処理に対応する。S1002で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。S1002の処理は、図3のS302の処理に対応する。
S1003で、画像処理部205の抽出部702は、教師画像からメタデータを抽出する。S1004で、補正値取得部703は、抽出されたメタデータのISO感度情報と温度情報との組み合わせに対応する補正値をROM106から取得する。S1005で、補正部704は、教師画像およびニューラルネットワーク204から出力された出力画像に対して、取得された補正値でISO感度補正を行う。ニューラルネットワーク204から出力された出力画像は、訓練画像に対してニューラルネットワーク204の処理が行われた画像である。
S1006で、誤差評価部206は、誤差評価部206は、画像処理がされた出力画像と教師画像との誤差を算出する。S1006の処理は、図3のS304の処理に対応する。S1007で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S1006の処理は、図3のS305の処理に対応する。S1008で、制御部209は、所定の終了条件を満たしたかを判定する。S1008の処理は、図3のS306の処理に対応する。制御部209は、S1008でNOと判定した場合、所定の終了条件を満たしていないため、フローをS1001に戻す。一方、制御部209は、S1008でYESと判定した場合、所定の終了条件を満たしたため、フローをS1009に進める。
S1009で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、ISO感度補正の補正条件ごとに異なるパラメータ保存領域208に保存する。本実施形態のISO感度補正の補正条件は、各ISO感度と各温度範囲との組み合わせに対応する補正値である。温度情報が用いられない場合、本実施形態のISO感度補正の補正条件は、各ISO感度に対応する補正値である。制御部209は、更新されたパラメータを、各ISO感度と各温度範囲との組み合わせごとに異なるパラメータ保存領域208に保存する。S1009の処理は、図3のS307に対応する。S1010で、制御部209は、全ての条件のパラメータを取得したかを判定する。このとき、制御部209は、各ISOと各温度範囲とについて全ての組み合わせを取得したかに基づいて、S1010の判定を行う。制御部209は、S1010でYESと判定した場合、図10のフローチャートの処理を終了させる。一方、制御部209は、S1010でNOと判定した場合、フローをS1011に進める。S1011で、制御部209は、ISOと温度範囲との組み合わせの条件を変更する。そして、制御部209は、フローをS1001に戻す。これにより、ISOと温度範囲との組み合わせを変更した学習処理が新たに行われる。
次に、第1の実施形態における処理の流れの他の例について説明する。図11は、第1の実施形態の学習処理の流れの他の例を示すフローチャートである。図11のフローチャートは、図7(B)のブロック図に対応する。図10のフローチャートの処理では、ニューラルネットワーク204から出力された出力画像に対してISO感度補正が行われて、学習処理が行われる。一方、図11のフローチャートの処理では、ニューラルネットワーク204に入力される訓練画像に対してISO感度補正が行われて、学習処理が行われる。
S1101の処理は、S1001の処理に対応する。S1102で、画像処理部205の抽出部702は、教師画像からメタデータを抽出する。S1103で、補正値取得部703は、抽出されたメタデータのISO感度情報と温度情報との組み合わせに対応する補正値をROM106から取得する。S1102の処理はS1003の処理に対応し、S1103の処理はS1004の処理に対応する。S1104で、補正部704は、教師画像および訓練画像に対してISO感度補正を行う。つまり、補正部704は、ニューラルネットワーク204の処理がされていない訓練画像に対してISO感度補正を行う。
S1105で、制御部209は、ISO感度補正がされた訓練画像をニューラルネットワーク204に入力する。ISO感度補正がされた訓練画像を入力として、ニューラルネットワーク204が行う処理により、出力画像が生成される。S1106で、誤差評価部206は、ISO感度補正がされた教師画像とS1105で生成された出力画像との誤差を算出する。S1107で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S1108~S1111の各処理は、図10のS1008~S1011の各処理と同様であるため、説明を省略する。
図10のフローチャートおよび図11のフローチャートは、第1の実施形態のISO感度情報と温度情報との組み合わせに関する学習処理の流れを示す。図10のS1004または図11のS1103で、補正値取得部703は、抽出されたメタデータのISO感度情報と温度情報との組み合わせに対応する補正値をROM106から取得している。このとき、補正値取得部703は、ROM106からISO感度情報を取得し、温度情報を取得しなくてもよい。例えば、ROM106にISO感度情報が記憶されていない場合、補正値取得部703は、ROM106からISO感度情報を取得し、温度情報を取得しない。この場合でも、各ISOのそれぞれの補正値を用いて、ISO感度補正を行うことができる。
次に、第1の実施形態の推論処理について説明する。図12は、第1の実施形態の推論処理の流れの一例を示すフローチャートである。S1201で、取得部501は、ISO感度情報および温度情報を取得する。取得部501は、撮像装置120からISO感度情報および温度情報を取得することができる。例えば、撮像装置120の設定条件に基づいて、取得部501はISO感度情報を取得することができる。また、撮像装置120がサーミスタのような温度測定機能を有している場合、取得部501は、撮像装置120のサーミスタが測定した温度から温度情報を取得することができる。取得部501は、ストレージ装置140に記憶されている画像データのメタデータからISO感度情報および温度情報を取得してもよい。
S1202で、パラメータ選択部502は、取得したISO感度情報と温度情報との組み合わせに対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。S1203で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。S1204~S1207の各処理は、図6のS604~S607と同じであるため、説明を省略する。
第1の実施形態では、パラメータ保存領域208―1~208-nに、各ISO感度のそれぞれに応じて学習処理がされたニューラルネットワーク204のパラメータが保存される。そして、パラメータ選択部502は、ISO感度の条件に基づいて、対応するパラメータを、パラメータ保存領域208―1~208-nから選択する。これにより、ISO感度の条件に合ったパラメータを用いた撮像画像の推論処理を行うことができるため、推論精度が向上する。その結果、ノイズを低減した画像を得ることができる。また、第1の実施形態では、温度条件も加味した学習処理が行われる。つまり、パラメータ保存領域208―1~208-nに、各ISOと各温度範囲との組み合わせのそれぞれに応じて学習処理がされたニューラルネットワーク204のパラメータが保存することもできる。そして、パラメータ選択部502は、ISO感度と温度との両者の条件に基づいて、対応するパラメータを、パラメータ保存領域208―1~208-nから選択する。これにより、ISO感度の特性と温度の特性とに合ったパラメータを用いた撮像画像の推論処理を行うことができるため、より推論精度を向上させることができる。その結果、画像のノイズの低減効果をさらに向上させることができる。
(第2の実施形態)
第2の実施形態では、画像処理としてF値補正を例にあげ、複数のF値補正のそれぞれに対応する補正値でF値補正が施された教師画像と訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。
F値補正は、絞り値であるF値と光量(輝度)との関係が線形とならない場合に、F値と光量(輝度)との関係が線形に近づくように画像にゲインを適用する補正である。図13は、第2の実施形態におけるF値と光量との関係、および、F値と補正値との関係の一例を示すグラフである。図13(A)は、F値と光量との関係を示すグラフである。横軸はF値であり、縦軸は撮像装置120の撮像素子122が受光した光量を示す。上述したように、F値補正は、レンズユニット121の絞り値(F値)に応じて、ゲインを施す処理である。ここで、絞りを小絞り側から開放側に変化させたとき、小絞り側ではF値と光量(輝度)との関係は線形な関係になるが、開放側ではF値と光量(輝度)との関係は非線形な関係になる。開放側ではF値と光量(輝度)との関係が非線形な関係になる要因の1つとしては、開放側では撮像素子122に対して斜めから入射する光を十分に取り込めないことがある。そこで、F値が開放側の区間では、理想的な線形に近づけるために画像信号にゲインを乗じるF値補正が施される。開放側の区間では、F値補正が施されるため、画像にノイズが生じる。
図13(A)では、F値が、Fx~Fsの区間におけるF値と光量との関係は、実線で表されるように線形に変化する。一方、Fe~Fxの区間におけるF値と光量との関係は、一点鎖線で表されるように非線形に変化する。そこで、上述したように、F値と光量との関係が非線形な区間でも線形となるように、Fe~Fxの区間(以下、非線形な区間)にノイズを除去するための補正値が乗じられる。非線形な区間における補正値は、図13(A)および図13(B)に示されるように一定の値ではない。一方、Fx~Fsの区間(以下、線形の区間)には、一定の値の補正値が乗じられる。つまり、非線形な区間の補正値は、F値と光量との関係が線形となるように、F値によって適正な値に変化させる必要がある。図13(B)では、非線形の区間の補正値が点線で示されている。
次に第2の実施形態における学習処理の流れの一例について説明する。図14は、第2の実施形態の学習処理の流れの一例を示すフローチャートである。図14のフローチャートは、図7(A)のブロック図に対応し、画像処理部205の補正部704がF値補正を行う。S1401で、制御部209は、学習処理を行う際のF値を新規に設定する。S1402で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S1403で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。訓練画像のノイズ量やノイズパターンは、他の訓練画像のノイズ量やノイズパターンと異なっている場合もあり、同じ場合もある。
S1404で、画像処理部205は、教師画像とニューラルネットワーク204からの出力画像とに対してF値補正を行う。このとき、画像処理部205は、S1401で設定されたF値に応じた補正値でF値補正を行う。上述したように、画像処理部205は、図2(A)に示すようにニューラルネットワーク204の出力側にあってもよいし、図2(B)に示すように入力側にあってもよい。つまり、S1401の処理は、S1403の処理より前に行われてもよい。なお、画像処理部205の抽出部702が、教師画像のメタデータからF値を取得する構成とすれば、S1401を省略することができる。S1405で、誤差評価部206は、F値補正がされた出力画像と教師画像との誤差を算出する。S1406で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S1407で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、S1407でNOと判定した場合、フローをS1402に戻す。この場合、新たな訓練画像と正解画像との学習セットを用いて、S1402~S1406の処理が行われる。一方、制御部209は、S1407でYESと判定した場合、フローをS1408に進める。
S1408で、制御部209は、S1401で設定したF値が線形な区間にあるかを判定する。線形な区間については後述する。制御部209は、S1408でYESと判定した場合、フローをS1409に進める。S1409で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を同じパラメータ保存領域208に保存する。一方、制御部209は、S1408でNOと判定した場合、フローをS1410に進める。S1410で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、S1401で設定されたF値に応じて、異なるパラメータ保存領域208に保存する。S1409およびS1410で、制御部209は、機械学習により更新されたパラメータやニューラルネットワーク204のモデル構造等に関する情報をS1401で設定したF値の条件と関連付けて、パラメータ保存領域208に保存してもよい。S1411で、制御部209は、全てのF値の条件についてのパラメータを取得したかを判定する。制御部209は、S1411でNOと判定した場合、フローをS1401に戻し、新規にF値の条件を設定する。制御部209は、S1411でYESと判定した場合、図14のフローチャートの処理を終了させる。
このように、制御部209は、補正するF値を変化させて、ニューラルネットワーク204の機械学習(ディープラーニング)を実施させる制御を行う。これにより、F値ごとの補正値を反映して機械学習がされ、パラメータが更新される。そして、図14のS1408で、制御部209は、機械学習を行う際に設定されたF値が線形の区間内であるかを判定する。制御部209は、例えば、設定されたF値が上述したFx以上であるかに基づいて、S1408の判定を行うことができる。Fxの値(所定の閾値)は任意の値に設定されてよいが、F値と光量との関係が線形から非線形に変化する境界に設定されることが好ましい。ただし、Fxの値は、境界から所定範囲内の値に設定されてもよい。
そして、制御部209は、S1408でYESと判定した場合、更新された学習済みのパラメータをパラメータ保存領域208-1~208-nのうち同じパラメータ保存領域208に保存する。制御部209は、異なるF値についての更新されたパラメータであっても、S1408でYESと判定した場合、同じパラメータ保存領域208-1に保存する。または、制御部209は、S1408でYESと判定した場合、更新されたパラメータを1度保存したのであれば、2回目以降は、S1409の処理を省略してもよい。一方、制御部209は、S1408でNOと判定した場合、異なるF値を設定して、更新された学習済みのパラメータをそれぞれ異なるパラメータ保存領域208に保存する。制御部209は、S1410の処理を実行するごとに、順次、異なるパラメータ保存領域208(例えば、パラメータ保存領域208-2~208-n)に保存する。
従って、F値と光量(輝度)とが非線形な関係になる区間においては、細かい粒度のF値に応じたニューラルネットワーク204のパラメータを用いて、推論処理を実行することができる。これにより、推論精度が向上する。一方、F値と光量(輝度)とが線形な区間においては、1つのニューラルネットワーク204のパラメータを用いて、推論処理が実行される。これにより、保存するパラメータの数を削減できることから、データの使用量を低減できるとともに、ストレージ装置140やRAM107等のハードウェア資源の使用量を低減できる。つまり、画像処理装置100は、F値に応じて、保存するパラメータの粒度を変更していることから、推論精度が低下することを抑制しつつ、データの使用量を削減することができる。
上述した例では、画像処理装置100は、非線形な区間では、F値ごとに、機械学習されたニューラルネットワーク204のパラメータを保存しているが、この例には限定されない。画像処理装置100は、例えば、非線形な区間では、撮像装置120のレンズユニット121に設けられた絞りの駆動分解能ごとに、学習済みのパラメータを保存してもよい。また、画像処理装置100は学習処理と推論処理との両方を行っている。この点、学習処理を行う画像処理装置と推論処理を行う画像処理装置とは別個の装置であってもよい。この点は、第1の実施形態と同様である。学習処理を行う画像処理装置と推論処理を行う画像処理装置とが別個の装置である例は、以下の各実施形態でも同様である。
この場合、推論装置は、線形な区間では1つの学習済みのパラメータを取得して保存し、非線形な区間では複数の絞り値のそれぞれに応じた学習済みのパラメータを取得して保存する。そして、推論装置は、図6のフローチャートの各処理を行う。以上のように、学習処理を行う画像処理装置と推論処理を行う画像処理装置とは別個の装置であっても、同様の効果を得ることができる。
次に、第2の実施形態の変形例について説明する。図15は、第2の実施形態の変形例におけるF値と補正値との関係の一例を示すグラフである。第1の実施形態では、F値がFx~Fsの区間における補正値は一定であったが、第2実施形態では、F値がFx~Fsの区間における補正値は線形に変化する。F値がFx~Fsの区間は、F値と光量(輝度)との関係が線形の区間である。第2実施形態では、制御部209は、F値をFxに設定して図14の処理を行って得られたパラメータ(第1パラメータ)とF値をFsに設定して図14の処理を行って得られたパラメータ(第2パラメータ)とを、パラメータ保存領域208に保存する。
そして、図15に示されるように、F値がFzの場合の撮像画像の推論処理が行われる場合には、制御部504は、第1パラメータを用いた推論画像と第2パラメータを用いた推論画像とを用いて補間する。これにより、補正値が線形に変化するFx~Fsの区間の任意のF値についての推論画像を得ることができる。この場合、Fx~Fsの区間の任意のF値についての推論画像を得るために保存されるパラメータ(機械学習されたパラメータ)は2つである。
ここで、制御部504は、補正値が線形に変化するFx~Fsの区間における任意の2つのF値を用いて、図14の処理を行い、第1パラメータおよび第2パラメータを保存してもよい。この場合でも、第1パラメータを用いた推論画像と第2パラメータを用いた推論画像とを用いて補間することにより、補正値が線形に変化するFx~Fsの区間の任意のF値についての推論画像を得ることができる。
図16は、第2の実施形態の変形における推論処理の流れの一例を示すフローチャートである。S1601で取得部501は、撮像装置120から、F値の情報を取得する。S1602で、制御部504は、S1601で取得された情報が示すF値が線形な区間内であるかを判定する。上述したように、制御部504は、S1601で取得された情報が示すF値がFx以上(所定の閾値以上)である場合には、S1602でNOと判定し、F値がFx未満(所定の閾値未満)である場合には、S1602でYESと判定してもよい。制御部504は、S1602でNOと判定した場合、S1603で、パラメータ選択部502は、取得したF値の情報に対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。パラメータ保存領域208-1~208-nに保存されている各パラメータは、それぞれ異なるF値の条件で更新されたパラメータである。パラメータ選択部502は、取得したF値の情報と同じであるF値についてのパラメータまたは最も値が近いF値についてのパラメータを取得する。
S1604で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。S1605で、取得部501は、撮像装置120から、撮像画像を取得する。この撮像画像は、RAW画像であるものとする。RAW画像に符号化処理が施されている場合、CPU105または画像処理回路103は、復号処理を行う。取得部501は、ストレージ装置140やROM106、RAM107等から、RAW画像を取得してもよい。
S1606で、制御部504は、取得した撮像画像をニューラルネットワーク204に入力する。S1607で、ニューラルネットワーク204は、推論処理を行う。ニューラルネットワーク204による推論処理は、GPU109により実行されてもよいし、CPU105により実行されてもよいし、CPU105とGPU109との協働動作により実行されてもよい。S1607の推論処理により、ニューラルネットワーク204の推論結果として推論画像が生成される。S1608で、推論画像出力部503は、生成された推論画像をストレージ装置140に出力する。推論画像出力部503は、生成された推論画像を、ROM106やRAM107、表示装置130等に出力してもよい。このとき、S1603で選択されるパラメータは、非線形な区間内のF値を用いて学習処理がされた学習済みのパラメータである。
制御部504は、S1602でNOと判定した場合、フローをS1609に進める。S1609で、パラメータ選択部502は、上述した第1パラメータを選択する。例えば、第1パラメータがパラメータ保存領域208-1に保存されている場合、パラメータ選択部502は、パラメータ保存領域208-1から第1パラメータを選択する。S1610で、ニューラルネットワーク204は、第1パラメータを適用した推論処理を実行する。S1610の処理は、S1604~S1607の処理に相当する。つまり、第1パラメータが適用されたニューラルネットワーク204に対して、撮像画像を入力とした推論処理が実行される。これにより、第1パラメータをニューラルネットワーク204に適用した推論処理による推論画像(第1推論画像)が生成される。
S1611で、パラメータ選択部502、上述した第2パラメータを選択する。例えば、第2パラメータがパラメータ保存領域208-2に保存されている場合、パラメータ選択部502は、パラメータ保存領域208-2から第2パラメータを取得する。そして、ニューラルネットワーク204は、第2パラメータを適用した推論処理を実行する。S1612の処理は、S1604~S1607の処理に相当する。つまり、第2パラメータが適用されたニューラルネットワーク204に対して、撮像画像を入力とした推論処理が実行される。これにより、第2パラメータをニューラルネットワーク204に適用した推論処理による推論画像(第2推論画像)が生成される。
S1613で、制御部504は、推論画像の補間処理を実行する。このとき、制御部504は、第1推論画像と第2推論画像とを合成して、補間処理を実行する。また、制御部504は、S1601で取得された情報が示すF値を基準として、第1推論画像と第2推論画像とに重み付けを行うことで、補間処理を実行する。例えば、S1601で取得された情報が示すF値が第1パラメータに対応するF値に近い場合には、制御部504は、第1推論画像の重みを重くして補間処理を実行してもよい。一方、S1601で取得された情報が示すF値が第2パラメータに対応するF値に近い場合には、制御部504は、第2推論画像の重みを重くして補間処理を実行してもよい。制御部504は、第1推論画像および第2推論画像を補間する際、画素ごとに補間してもよいし、画像全体を任意の範囲で分割したエリアごとに補間してもよい。そして、S1608で、制御部504は、補間処理が実行された推論画像を出力する。
このように、第2の実施形態では、補正値が線形な区間において、補正値が一定でなくても、第1の実施形態と同様の効果を得ることができる。第2の実施形態では、学習処理がされた第1パラメータと第2パラメータとの2つのパラメータが用いられる。学習処理が行われる際の第1パラメータに対応するF値と第2パラメータに対応するF値とは、補正値の線形性に応じて選択されてもよい。また、第2の実施形態において、制御部504は、F値と光量(輝度)とが線形な区間(Fx~Fsの区間)をさらに複数の区間に分割してもよい。この場合、制御部504は、分割された区間を1つの処理単位とし、処理単位ごとに2つのパラメータについて補間処理を実行してもよい。
(第3の実施形態)
第3の実施形態では、画像処理として色抑圧処理と色曲がり補正を例にあげ、複数の色抑圧処理、あるいは、複数の色曲がり補正のそれぞれに対応する補正値で画像処理が施された教師画像と訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。
撮像装置により高輝度の被写体を撮影した場合に、撮像素子から出力されるRGB信号の何れかが飽和した状態となる場合がある。この場合、RGB信号の比が、本来の被写体の色を表す値から変わることがある。この課題に対して、RGB信号の何れかが飽和している領域に対して彩度を下げる処理である色抑圧処理を適用することにより、信号の飽和によって生じる高輝度部の色の変化を緩和する方法が知られている。
また、撮像装置が低輝度で高彩度の被写体を撮影した場合に、RGB信号の何れかが下限である黒レベルに近づく場合がある。この場合、RGB信号に対して黒レベルでの立ち上がりが急峻なガンマ補正を適用すると、RGB信号に重畳しているノイズ成分が、ガンマ補正によって強調され、画質劣化を引き起こす。この課題に対して、RGB信号の何れかが下限に近い値を取る下限領域に対して色抑圧処理を適用することにより、RGB信号のうちの信号値が小さい信号の信号値を上げる方法が知られている。これにより、ガンマ補正によるノイズ成分の強調の度合いを低減することができる。
色抑圧処理は彩度を下げる処理であるため、処理が適用される領域のノイズは低減される。したがって、学習の際に色抑圧処理を行うことで、色抑圧処理により低減されるノイズを考慮したニューラルネットワークが得られる。また、色抑圧処理の特性はガンマ補正および色域変換の処理によって変わる。したがって、学習時に入力された出力形式と推論時に入力された画像の出力形式とが異なる場合には、色抑圧処理の特性も異なるため推論画像の推論精度が低下する。
また、ユーザが鑑賞する画像には、出力形式に合わせたガンマ補正および色域変換の処理が行われている。この際、被写体の色によっては、元の被写体とは異なる色が出力されてしまう。この色の変化を抑制するために、色毎にゲインをかけることで補正する処理を色曲がり補正と称する。色の変化の仕方は、ガンマ補正および色域変換の処理によって異なる。すなわち、出力形式によって色曲がり補正の特性は変化する。したがって、学習時に入力された出力形式と推論時に入力された画像の出力形式が異なる場合には、色曲がり補正の特性も異なるため推論画像の推論精度が低下する。
次に、第3の実施形態における学習処理の流れの一例について説明する。図17は、第3の実施形態の学習処理の流れの一例を示すフローチャートである。図17のフローチャートは、例えば、図2や図7(A)のブロック図を用いて実現することができる。画像処理部205の補正部704が後述する現像処理および色抑圧処理を行う。ここでは画像処理として色抑圧処理を例にあげて説明を行うが、色抑圧処理に代えて、色曲がり補正とした場合も同様である。
S1701で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S1702で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。S1703で、画像処理部205の抽出部702は、教師画像から、ガンマ、色域、又は、ガンマおよび色域に関するメタデータを抽出する。ガンマは、後にカラーグレーディングのような色調整を行うことを前提としたものでもよく、ユーザが鑑賞することを目的としたもの(PQ、HLGなど)でもよい。また、色域は、BT.2020、BT.709、DCI-P3でもよく、表示装置130の表示特性に合わせたもの(2.2,2.4など)でもよい。また、これらの組み合わせでもよい。
S1704で、補正値取得部703は、抽出されたメタデータのガンマ、色域、または、ガンマおよび色域の組み合わせに対応する補正値をROM106から取得する。S1705で、補正部704は、教師画像およびニューラルネットワーク204から出力された出力画像に対して、現像処理を行うことによりYCC又はICtCpのような輝度および色相に分けた色空間に変換する。なお、現像処理は、ベイヤー配列の画像に対して行うディベイヤ―処理を含んでいてもよい。さらに、補正部704は、現像処理を適用した教師画像および出力画像に対して、取得された補正値で色抑圧補正を行う。
S1706で、誤差評価部206は、誤差評価部206は、画像処理がされた出力画像と教師画像との誤差を算出する。S1707で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S1708で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、S1708でNOと判定した場合、所定の終了条件を満たしていないため、フローをS1701に戻す。一方、制御部209は、S1708でYESと判定した場合、所定の終了条件を満たしたため、フローをS1709に進める。
S1709で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、色抑圧処理の補正条件ごとに異なるパラメータ保存領域208に保存する。本実施形態の色抑圧処理の補正条件は、各ガンマと各色域との組み合わせに対応する補正値である。制御部209は、更新されたパラメータを、各ガンマと各色域との組み合わせごとに異なるパラメータ保存領域208に保存する。色域に変更がなければ、ガンマごとに異なるパラメータがパラメータ保存領域208に保存する。S1710で、制御部209は、全ての条件のパラメータを取得したかを判定する。このとき、制御部209は、各ガンマと各色域とについて全ての組み合わせを取得したかに基づいて、S1710の判定を行う。制御部209は、S1710でYESと判定した場合、図17のフローチャートの処理を終了させる。一方、制御部209は、S1710でNOと判定した場合、フローをS1711に進める。S1711で、制御部209は、ガンマと色域との組み合わせの条件を変更する。そして、制御部209は、フローをS1701に戻す。これにより、ガンマと色域との組み合わせを変更した学習処理が新たに行われる。なお、図17では、訓練画像をニューラルネットワーク204に入力し、ニューラルネットワーク204からの出力画像に対して現像処理と色抑圧処理を行っていたが、これに限られるものではない。訓練画像に現像処理と色抑圧処理を行ってから、これらの処理が行われた訓練画像をニューラルネットワーク204に入力するように構成してもよい。この場合、ニューラルネットワーク204からの出力画像と、現像処理と色抑圧処理が適用された教師画像が、誤差評価部206に入力される。
次に、第3の実施形態の推論処理について説明する。図18は、第3の実施形態の推論処理の流れの一例を示すフローチャートである。S1801で、取得部501は、ガンマおよび色域の情報を取得する。あるいは、S1804の撮像画像の取得を最初に行い、撮像画像のメタデータからガンマおよび色域の情報を取得しても良い。S1802で、パラメータ選択部502は、取得したガンマおよび色域の情報に対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。S1803で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。S1804~S1807の各処理は、図6のS604~S607と同じであるため、説明を省略する。
なお、ガンマ補正および色域変換の処理に加え、露出補正、ゲイン補正、および、彩度補正などを調整するカラーバランス補正においても、これらの補正値の組合せに応じた、ニューラルネットワークのためのパラメータを用意することで、同様の効果を得ることができる。
(第4の実施形態)
第4の実施形態では、画像処理として周辺光量落ち補正を例にあげ、複数の周辺光量落ち補正のそれぞれに対応する補正値で周辺光量落ち補正が施された教師画像と訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。
周辺光量落ち補正は、レンズの中心から周辺に向けて光量が徐々に落ちるレンズ特性を補正するように、画像にゲインを掛ける補正であり、ゲインはレンズの中心から周辺に向かうほど大きな値となる。また、周辺光量落ちの特性は、レンズの種類、絞り、焦点距離、および、ズーム位置の条件によって変化し、領域ごとの最適なゲインが異なる。
図19(a)および図19(b)は、周辺光量落ちの様子を示す図である。横軸はレンズの中心位置からの距離である像高であり、レンズの中心位置の像高を0%、レンズのイメージサークルの外周における像高を100%としている。縦軸は光量であり、レンズの中心位置における光量を100%としている。図19(a)および図19(b)では、レンズ条件(絞り、フォーカス、ズーム位置)が異なる。図19(a)では、像高が15%に相当位置の光量は100%に近く、像高が100%に相当する位置における光量は80%となる。図15(b)では、像高が70%に相当位置の光量は100%に近く、像高が100%に相当する位置における光量は90%となる。このように、レンズの状態によって周辺光量落ちの始まる開始点や、傾き等の形状が異なる。
図19(c)は、図19(a)に示される周辺光量落ちを補正するためのゲインカーブを示し、図19(d)は、図19(b)に示される周辺光量落ちを補正するためのゲインカーブを示す。横軸は像高であり、縦軸はゲインである。図19(c)のゲインカーブは各像高で光量を100%にするための形状を有し、像高100%の位置では約1.25倍のゲインが設定され、図19(d)のゲインカーブは、像高100%の位置では約1.1倍のゲインが設定される。ゲインを大きくするほど、画像に含まれるノイズ成分も増幅されるため、ゲインに上限を設けるようにしても良い。
次に、第4の実施形態における学習処理の流れの一例について説明する。図20は、第4の実施形態の学習処理の流れの一例を示すフローチャートである。図20のフローチャートは、例えば、図2や図7(A)のブロック図を用いて実現することができる。画像処理部205の補正部704が後述する周辺光量落ち補正を行う。
S2001で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S2002で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。S2003で、画像処理部205の抽出部702は、教師画像から、レンズの種類、絞り、ズーム位置、および、焦点距離に関するメタデータを抽出する。
S2004で、補正値取得部703は、抽出されたレンズの種類、絞り、ズーム位置、および、焦点距離の組み合わせに対応する補正値をROM106から取得する。S2005で、補正部704は、教師画像およびニューラルネットワーク204から出力された出力画像に対して、取得された補正値で周辺光量落ち補正を行う。
S2006で、誤差評価部206は、誤差評価部206は、画像処理がされた出力画像と教師画像との誤差を算出する。そして、S2007で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S2008で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、S2008でNOと判定した場合、所定の終了条件を満たしていないため、フローをS1001に戻す。一方、制御部209は、S2008でYESと判定した場合、所定の終了条件を満たしたため、フローをS2009に進める。
S2009で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、周辺光量落ち補正の補正条件ごとに異なるパラメータ保存領域208に保存する。本実施形態の周辺光量落ち補正の補正条件は、レンズの種類、絞り、ズーム位置、および、焦点距離の組み合わせに対応する補正値である。制御部209は、更新されたパラメータを、レンズの種類、絞り、ズーム位置、および、焦点距離の組み合わせごとに異なるパラメータ保存領域208に保存する。なお、レンズが交換レンズでなく、撮像装置と一体化されたレンズであれば、レンズの種類に応じたパラメータを保存する必要はない。また、レンズがズーム機能のない単焦点レンズであれば、ズーム位置に応じたパラメータを保存する必要はない。S2010で、制御部209は、全ての条件のパラメータを取得したかを判定する。制御部209は、S2010でYESと判定した場合、図20のフローチャートの処理を終了させる。一方、制御部209は、S2010でNOと判定した場合、フローをS2011に進める。S2011で、制御部209は、レンズの種類、絞り、ズーム位置、および、焦点距離の組み合わせの条件を変更する。そして、制御部209は、フローをS2001に戻す。
図21は、周辺光量落ち補正データのテーブルデータの例を示す図である。テーブルデータ2100は、焦点距離がA1でのデータ群である。横軸は絞り値(S1,S2,S3・・・Sn)、縦軸はズーム位置(T1,T2,T3,・・・Tn)である。例えば、ズーム位置T1、絞り値S1、焦点距離A1での周辺光量落ち補正データはDt1s1a1である。また、テーブルデータ2101,2102,2103,2104はそれぞれ、焦点距離がA1,A2,A3,Anでのデータ群である。各レンズ条件に対応した周辺光量落ち補正データは、ROM106に保存されている。また、交換式レンズではレンズごとに周辺光量落ちの形状が異なるので、テーブルデータをレンズごとに持つ。交換式レンズは、レンズごとに割り振られたレンズIDにより、識別可能である。
次に、第4の実施形態の推論処理について説明する。図22は、第4の実施形態の推論処理の流れの一例を示すフローチャートである。S2201で、取得部501は、レンズの種類、絞り、ズーム位置、および、焦点距離の情報を取得する。あるいは、S2204の撮像画像の取得を最初に行い、撮像画像のメタデータからレンズの種類、絞り、ズーム位置、および、焦点距離の情報を取得しても良い。S2202で、パラメータ選択部502は、取得したレンズの種類、絞り、ズーム位置、および、焦点距離の情報に対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。そして、S2203で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。S2204~S2207の各処理は、図6のS604~S607と同じであるため、説明を省略する。
(第5の実施形態)
第5の実施形態では、画像処理としてチャンネル間ゲイン補正を例にあげ、複数のチャンネル間ゲイン補正のそれぞれに対応する補正値でチャンネル間ゲイン補正が施された教師画像と訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。
チャンネル間ゲイン補正は、センサのアナログ出力の最終段に配置されている出力アンプのゲインの補正を行う処理である。この出力アンプはアナログアンプであるため、アンプ毎にゲイン差を持っている。同一のセンサ内の複数の出力アンプ間でもゲインには差がある。また、温度に応じても変化するという特徴を持っている。そのため、1つのネットワークパラメータを用いただけでは温度条件により生じた出力アンプのゲイン差によるノイズ差が加味されず、十分なノイズ除去効果が得られない。つまり、チャンネル間ゲイン補正特性に合った最適なネットワークパラメータが温度条件ごとに必要となる。
図23はセンサ構造を示す図である。光の強さを電圧に変換するフォトダイオード2301には、スイッチ2302を介して垂直線2303が接続されている。垂直線2303はスイッチ2304を介して出力アンプ2305~2308に接続されている。それらのスイッチ2302、2304のオンとオフを切り替えることにより、フォトダイオード2301から得られる電圧信号が出力アンプ2305~2308から読み出される。本実施形態におけるチャンネル間ゲイン補正は、この4つの出力アンプ2305~2308のゲインを補正する機能であり、この4つの出力アンプ2305~2308をチャンネルと呼んでいる。例えば、ここでは、出力アンプ2305をチャンネルA、出力アンプ2306をチャンネルB、出力アンプ2307をチャンネルC、出力アンプ2308をチャンネルDとする。
図24は、フォトダイオード2301に入射する光量に対する各チャンネルの出力電圧を示す図である。
図24(A)において、グラフ2401はチャンネルAの出力、グラフ2402はチャンネルBの出力、グラフ2403はチャンネルCの出力、グラフ2404はチャンネルDの出力を示す。出力アンプはアナログアンプであるため、図24に示すように、出力レベルに差が生じる。この出力レベルに差が生じる原因としては、チャンネル間のオフセットのばらつきとゲインのばらつきがあり、オフセットのばらつきが補正されてから、ゲインのばらつきが補正される。図24(B)は、図24(A)における黒レベルが一致するように、オフセットのばらつきを補正した状態での各チャンネルの出力電圧を示す図である。グラフ2411、2412、2413、および、2414はそれぞれ、グラフ2401、2402、2403、および、2404の黒レベルを補正したグラフである。チャンネル間ゲイン補正では、線2415で示される一定の光量をセンサに一様に照射して1枚の画像を取得し、取得した画素出力の中心位置における400画素×400画素の領域から、各チャンネルの出力電圧の平均を計算する。この各チャンネルの出力電圧の平均値からそれぞれオフセットを減算し、減算結果が一定の値となるように、チャンネルごとの補正用ゲインを算出する。この補正用ゲインを算出は、センサ温度が60度および30度のそれぞれのケースで行う。このようにして取得した補正用ゲインは、センサの個体を示すセンサ番号、チャンネル番号(チャンネルA~Dの番号)、および、温度情報を紐づけて、補正値としてROM106に保存される。
次に、第5の実施形態における学習処理の流れの一例について説明する。図25は、第5の実施形態の学習処理の流れの一例を示すフローチャートである。図25のフローチャートは、図7(A)のブロック図に対応し、画像処理部205の補正部704がチャンネル間ゲイン補正を行う。S2501で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S2502で、制御部209は、取得した複数の学習セットのうち1つの学習セットの訓練画像をニューラルネットワーク204に入力する。ニューラルネットワーク204が行う処理により、出力画像が生成される。S2503で、画像処理部205の抽出部702は、教師画像からメタデータを抽出する。S2504で、補正値取得部703は、抽出されたメタデータのセンサ番号と温度情報との組み合わせに対応する補正値をROM106から取得する。S2505で、補正部704は、教師画像およびニューラルネットワーク204から出力された出力画像に対して、取得された補正値でチャンネル間ゲイン補正を行う。
S2506で、誤差評価部206は、誤差評価部206は、画像処理がされた出力画像と教師画像との誤差を算出する。S2507で、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S2508で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、S2508でNOと判定した場合、所定の終了条件を満たしていないため、フローをS2501に戻す。一方、制御部209は、S2508でYESと判定した場合、所定の終了条件を満たしたため、フローをS2509に進める。
S2509で、制御部209は、更新されたパラメータ(学習済みのパラメータ)を、センサ番号および温度情報の補正条件ごとに異なるパラメータ保存領域208に保存する。本実施形態チャンネル間ゲイン補正の補正条件は、センサ番号と温度情報の組み合わせに対応する補正値である。制御部209は、更新されたパラメータを、センサ番号と温度情報の組み合わせごとに異なるパラメータ保存領域208に保存する。S2510で、制御部209は、全ての条件のパラメータを取得したかを判定する。このとき、制御部209は、センサ番号と温度情報の全ての組み合わせを取得したかに基づいて、S2510の判定を行う。なお、複数の撮像装置のそれぞれに別のパラメータを用意するのであれば、その撮像装置に対応するセンサ番号に対応するパラメータさえ取得されればよい。制御部209は、S2510でYESと判定した場合、図25のフローチャートの処理を終了させる。一方、制御部209は、S2510でNOと判定した場合、フローをS2511に進める。S2511で、制御部209は、センサ番号と温度情報との組み合わせの条件を変更する。そして、制御部209は、フローをS2501に戻す。これにより、センサ番号と温度情報の組み合わせを変更した学習処理が新たに行われる。
次に、第5の実施形態の推論処理について説明する。図26は、第5の実施形態の推論処理の流れの一例を示すフローチャートである。S2601で、取得部501は、センサ番号および温度情報を取得する。取得部501は、撮像装置120からセンサ番号および温度情報を取得することができる。S2602で、パラメータ選択部502は、取得したセンサ番号に対応するパラメータを、パラメータ保存領域208-1~208-nから選択する。本実施形態では、温度情報として30度における補正値と60度におけるパラメータのみが保存されているため、センサ番号に対応する30度における補正値と60度におけるパラメータを両方とも選択する。もちろん、30度と60度だけでなく、多くの温度に対応するパラメータを予め用意しておいて、取得した温度に最も近い温度に対応するパラメータを用いるようにしてもよい。S2603で、制御部504は、選択されたそれぞれのパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。
S2604で、取得部501は、撮像画像を取得する。S2605で、制御部504は、取得した撮像画像をニューラルネットワーク204に入力する。S2606で、ニューラルネットワーク204は、推論処理を行う。本実施形態では、30度におけるパラメータを用いた推論処理を行って第1の推論画像を生成するとともに、60度におけるパラメータを用いた推論処理を行って第2の推論画像を生成する。S2607で、推論画像出力部503は、取得した温度情報に基づいて、第1の推論画像と第2の推論画像を補間して、温度情報に応じた推論画像を生成する。具体的には、tを取得した温度情報、αを加重加算の係数、Z1を第1の推論画像における座標(x,y)の信号レベル、および、Z2を第2の推論画像における座標(x,y)の信号レベルとする。この場合、第1の推論画像と第2の推論画像を補間して得られる推論画像における座標(x,y)の信号レベルZOUT(x,y)は、次の式2および式3を用いて、求めることができる。
α=(-1/(60-30))×t+2 ・・・(式2)
ZOUT(x,y)=α×Z1(x,y)+(1-α)×Z2(x,y) ・・・(式3)
なお、温度情報が30度未満のときは、温度情報が30度であるとみなし、温度情報が60度を超えるときは、温度情報が60度であるとみなしてもよい。S2608で、推論画像出力部503は、S2206で生成された推論画像をストレージ装置140に出力する。推論画像出力部503は、生成された推論画像を、ROM106やRAM107、表示装置130等に出力してもよい。
以上のように、第1~第5の実施形態では、画像処理として、ISO感度補正、F値補正、色抑圧処理、色曲がり補正、カラーバランス補正、周辺光量落ち補正、および、チャネル間ゲイン補正を例にあげて学習モデルのパラメータの具体例を説明したが、これに限られるものではない。例えば、これまで説明した画像処理とは別の画像処理の例として、フリッカ補正がある。フリッカ補正は、蛍光灯などの光源の明滅によって、センサのライン間、あるいは、フレーム間で生じた輝度値の差を補正する処理である。ラインによって変化する輝度値の変化量(振幅)からフリッカの大きさを検出したり、ラインごとに変化する輝度値の周期からフリッカの周波数を検出したりすることができる。フリッカ、光源の明るさ、明滅の周波数、および、センサの蓄積時間等の条件により、発生の仕方が異なるという特徴がある。つまり、これらの条件ごとに、学習モデルのパラメータを用意するようにしてもよい。このような場合でも、第1~第5の実施形態と同様の効果を得ることができる。
(第6の実施形態)
第6の実施形態では、画像処理として圧縮処理および伸張処理を例にあげ、教師画像と、複数の圧縮率のそれぞれで圧縮処理および伸張処理が施された訓練画像とを用いて学習処理が行われた学習モデルのパラメータの具体例について説明する。本実施形態では、ニューラルネットワーク204に入力する画像に圧縮処理を行うため、ニューラルネットワークの回路規模を抑えることができるという、第1~第5の実施形態とは異なる効果も得ることができる。
本実施形態では、画像処理部205は、画素値をm分の1にする圧縮処理と、画素値をn分の1にすることで圧縮処理を行う。尚、圧縮処理の方法はこの方法に限らず、推論処理の工程で使用される圧縮処理と同様の手法であれば、他の方法でもよい。
図27は、第6の実施形態の実施形態における画像処理装置100の学習処理の機能を示すブロック図である。第6の実施形態では、画像処理部205は、ニューラルネットワーク204の入力側と出力側に配置される点が、第1の実施形態と異なる。訓練画像が画像処理部205に入力され、画像処理部205が訓練画像に対して複数の圧縮率のうちのいずれかで圧縮処理を行う。画像処理部205で圧縮された画像がニューラルネットワーク204に入力され、ニューラルネットワーク204が出力画像を生成し、出力する。そして、出力画像が、再度、画像処理部205に入力され、画像処理部205が出力画像に対して圧縮処理における圧縮率に対応する伸張処理を行う。そして、誤差評価部206が、画像処理部205によって伸張された出力画像と教師画像との誤差を算出する。
各パラメータ保存領域208-1および208-2には、それぞれ異なる圧縮率で圧縮処理された学習済みのパラメータが保存される。ここでは圧縮率が2通りの例をあげて説明を行ったが、圧縮率は3種類以上であってもよい。圧縮率がn種類の場合、パラメータ保存領域208-1~208-nが使用される。
次に第6の実施形態における学習処理の流れの一例について説明する。図28は、第1の実施形態の学習処理の流れの一例を示すフローチャートである。S2801で、制御部209は、訓練画像および教師画像のペア(学習セット)をストレージ装置301から取得する。S2802で、制御部209は、圧縮情報を取得する。本実施形態では、圧縮情報は、訓練画像の各画素値に対して、画素値が所定の閾値未満の場合は0、閾値以上の場合は1の値が設定されている情報であり、訓練画像の画素数と同数のデータで構成される。尚、圧縮情報は、かかるデータ形式の情報に限らず、訓練画像の圧縮処理方法がわかる情報であれば他のデータ形式の情報でもよい。また、制御部209は、撮像装置120又はストレージ装置140のいずれかに予め記憶されている圧縮情報をステップS2802において取得するようにしてもよい。また、ステップS2802で圧縮情報を取得することなく、画像処理部205が以下のステップS2803で訓練画像から直接圧縮情報を算出してもよい。
ステップS2803において、制御部209は、ステップS202で取得した圧縮情報に基づき、画像処理部205に訓練画像の圧縮処理を行わせる。画像処理部205においては、圧縮情報が0の場合には画素値をm分の1に、圧縮情報が1の場合には画素値をn分の1にすることで圧縮処理を行う。尚、圧縮処理の方法はこの方法に限らず、推論処理の工程で使用される圧縮処理と同様の手法であれば、他の方法でもよい。また、ステップS2801において取得した訓練画像がすでに圧縮処理されたものであってもよい。この場合、訓練画像の圧縮処理を行わなくてもよいため、ステップS2801から直接後述するステップS2804に進む。また、撮像装置120の動作モードが複数あり、夫々で圧縮処理の処理方法が異なる場合は、動作モードに合わせて、ステップS2802で取得する圧縮情報の変更や圧縮処理の有無の切り替えを行ってもよい。
S2804において、制御部209は、ステップS2803で圧縮された訓練画像をニューラルネットワーク204へ入力して出力画像を生成する。続いてステップS2805において、画像処理部205がステップS2804で生成された出力画像に対して伸張処理を実行し、誤差評価部206がその伸張処理された出力画像と正解画像との誤差を算出する。
本実施形態では、画像処理部205は、ステップS2803で訓練画像に対して行った圧縮処理と逆の処理となる伸張処理を行う。具体的には、圧縮情報が0の場合には画素値をm倍に、圧縮情報が1の場合には画素値をn倍にする伸張処理を行う。但し、伸張処理の方法は、本実施形態の方法に限らず、推論処理の工程で使用される伸張処理と同様の手法であれば、他の方法でもよい。また、撮像装置120の動作モードが複数あり、夫々で圧縮処理および伸張処理の処理方法が異なる場合は、動作モードに合わせて、圧縮処理および伸張処理の処理方法や、圧縮処理および伸張処理の有無を切り替えてもよい。推論画像を伸張する際に用いる伸張処理と、ステップS2805で出力画像に行う伸張処理とで用いる伸張処理方法を同一の手法にすることで、伸張処理後のノイズ量に依らないより安定した精度で推論が可能となる。続いてステップS2806において、パラメータ調整部207は、算出した誤差が小さくなるように、誤差逆伝播法を用いて、ニューラルネットワーク204の各パラメータを更新する。S2807で、制御部209は、所定の終了条件を満たしたかを判定する。制御部209は、S2807でNOと判定した場合、フローをS2801に戻す。この場合、新たな訓練画像と正解画像との学習セットを用いて、S2801~S2806の処理が行われる。一方、制御部209は、S2807でYESと判定した場合、フローをS2808に進める。
ステップS2808において、制御部209は、更新されたパラメータやニューラルネットワークの構造などに関する情報をパラメータ保存領域208-1または208-2に保存する。S2809で、制御部209は、全ての圧縮情報についてのパラメータを取得したかを判定する。制御部209は、S2809でNOと判定した場合、フローをS2801に戻し、S2802で他の圧縮情報を取得する。制御部209は、S2809でYESと判定した場合、図28のフローチャートの処理を終了させる。以上の動作によって、回路規模を大きくすることなく、伸張処理された画像に対して、推論精度が影響されにくいニューラルネットワークを得ることができる。
図29は、画像処理装置100の推論処理の機能を示すブロック図である。図5に示すブロックに対して、取得部501とニューラルネットワーク204の間、および、ニューラルネットワーク204と推論画像出力部503の間に画像処理部205が配置されている点が異なる。この画像処理部205は、画像の圧縮処理と伸張処理を行う。
図30は、第6の実施形態における推論処理の流れの一例を示すフローチャートである。S3001で、取得部501は、圧縮情報を取得する。取得部501は、撮像装置120から圧縮情報を取得することができる。例えば、撮像装置120の設定条件に基づいて、取得部501は圧縮情報を取得することができる。この圧縮情報は、学習処理の工程で使用された圧縮処理と同じ形式である。具体的には、本実施例では、撮像画像の画素値に対して、画素値が所定の閾値未満の場合は0、閾値以上の場合は1の値が設定されている情報である。なお、圧縮情報はこの形式に限らず、学習処理の工程で使用された圧縮処理と同じであれば他のデータ形式の情報であってもよい。S3002で、パラメータ選択部502は、取得した圧縮情報に対応するパラメータを、パラメータ保存領域208-1あるいは208-2から選択する。そして、S3003で、制御部504は、選択されたパラメータをニューラルネットワーク204に適用する。これにより、ニューラルネットワーク204による推論処理を行うことが可能な状態になる。
S3004で、取得部501は、撮像装置120から、撮像画像を取得する。この撮像画像は、非圧縮のRAW画像であり、訓練画像の画素数と同数のデータで構成される。またこの時取得する圧縮情報は、学習処理の工程で使用された圧縮処理と同じ形式である。取得部501は、ストレージ装置140からRAW画像を取得してもよい。S3005で、圧縮部1901は、取得した撮像画像に対して、S3001で取得した圧縮情報に応じた圧縮処理を行う。画像処理部205は、圧縮情報が0の場合には画素値をm分の1に、圧縮情報が1の場合には画素値をn分の1にすることで圧縮処理を行う。尚、圧縮処理の方法はこの方法に限らず、撮像画像のデータ量を低減できる手法であれば他の方法でもよい。また、S3004において取得した撮像画像がすでに圧縮処理されたものであってもよい。この場合、撮像画像の圧縮処理を行わなくてもよいため、S3004からS3006に進む。また、撮像装置120の動作モードが複数あり、夫々で圧縮処理の方法が異なる場合は、動作モードに合わせて、ステップS3001で取得する圧縮情報の変更や圧縮処理の有無の切り替えを行ってもよい。
S3006で、制御部504は、圧縮された撮像画像をニューラルネットワーク204に入力する。S3007で、ニューラルネットワーク204は、推論処理を行い、推論画像を生成する。S3008で、画像処理部205がステップS3007で生成した推論画像に対して伸張処理を実行する。本実施形態では、画像処理部205は、ステップS3005で撮像画像に対して行った圧縮処理と逆の処理となる伸張処理を行う。具体的には、圧縮情報が0の場合には画素値をm倍に、圧縮情報が1の場合には画素値をn倍にする伸張処理を行う。但し、伸張処理の方法は、本実施形態の方法に限らず、学習処理の工程で使用された伸張処理と同様の手法であれば、他の方法でもよい。また、後段で別途伸張処理される場合は、ここで伸張処理を行わなくてもよい。 S3009で、推論画像出力部503は、伸張された推論画像をストレージ装置140に出力する。推論画像出力部503は、生成された推論画像を、ROM106やRAM107、表示装置130等に出力してもよい。
本実施形態によれば、ニューラルネットワーク204に入力する画像に圧縮処理を行うため、ニューラルネットワークの回路規模を抑えることができる。また、ニューラルネットワーク204からの出力画像に伸張処理を行った後、学習工程で各ネットワークパラメータの更新を行うため、上記圧縮処理による推論用のニューラルネットワークのノイズ抑圧効果の低下を抑制することができる。
なお、第1から第6の実施形態について説明を行ったが、各実施形態における補正条件の組み合わせに応じた、ニューラルネットワークのパラメータを用いるようにしてもよい。すなわち、ISO感度補正、F値補正、色抑圧処理、色曲がり補正、カラーバランス補正、周辺光量落ち補正、チャネル間ゲイン補正、フリッカ補正、および、圧縮および伸張処理うちの2つの以上を組み合わせた補正条件に応じたパラメータを用いるようにしてもよい。
以上、本発明の好ましい実施の形態について説明したが、本発明は上述した各実施の形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。本発明は、上述の各実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。