(57)【特許請求の範囲】
【請求項１】
プロセッサを備える画像処理装置であって、
前記プロセッサが、
入力画像を取得するステップと、
前記入力画像を畳み込み層により処理することで特徴残差を算出するステップと、
前記入力画像に対して少なくとも一つの畳み込みを実行するステップと、
前記畳み込まれた入力画像に前記特徴残差を適用することで出力特徴を生成するステップと、
前記出力特徴に基づいて画像残差を生成するステップとを実行し、
前記画像残差が前記入力画像に適用されることで、前記入力画像よりも解像度が高い高解像度画像が生成される、
画像処理装置。
【請求項２】
前記プロセッサが、第１の処理ブロックおよび第２の処理ブロックを含むニューラルネットワークを用いて前記画像残差を生成し、
前記第１の処理ブロックが、
前記入力画像に基づく第１の入力特徴を第１の畳み込み層により処理することで第１の特徴残差を算出するステップと、
前記第１の入力特徴に前記第１の特徴残差を適用することで第１の出力特徴を生成するステップとを含み、
前記第２の処理ブロックが、
前記入力画像に基づく第２の入力特徴を第２の畳み込み層により処理することで第２の特徴残差を算出するステップと、
前記第２の入力特徴に対して前記少なくとも一つの畳み込みを実行するステップと、
前記畳み込まれた第２の入力特徴に前記第２の特徴残差を適用することで第２の出力特徴を生成するステップとを含む、
請求項１に記載の画像処理装置。
【請求項３】
前記プロセッサが前記第１の処理ブロックおよび前記第２の処理ブロックを交互に実行する、
請求項２に記載の画像処理装置。
【請求項４】
前記プロセッサが、前記出力特徴に対して特徴スケーリングを実行することで前記画像残差を生成する、
請求項１〜３のいずれか一項に記載の画像処理装置。
【請求項５】
プロセッサを備える画像処理装置により実行される画像処理方法であって、
入力画像を取得するステップと、
前記入力画像を畳み込み層により処理することで特徴残差を算出するステップと、
前記入力画像に対して少なくとも一つの畳み込みを実行するステップと、
前記畳み込まれた入力画像に前記特徴残差を適用することで出力特徴を生成するステップと、
前記出力特徴に基づいて画像残差を生成するステップと
を含み、
前記画像残差が前記入力画像に適用されることで、前記入力画像よりも解像度が高い高解像度画像が生成される、
画像処理方法。
【請求項６】
入力画像を取得するステップと、
前記入力画像を畳み込み層により処理することで特徴残差を算出するステップと、
前記入力画像に対して少なくとも一つの畳み込みを実行するステップと、
前記畳み込まれた入力画像に前記特徴残差を適用することで出力特徴を生成するステップと、
前記出力特徴に基づいて画像残差を生成するステップと
をコンピュータに実行させ、
前記画像残差が前記入力画像に適用されることで、前記入力画像よりも解像度が高い高解像度画像が生成される、
画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の一側面は画像処理装置、画像処理方法、および画像処理プログラムに関する。
【背景技術】
【０００２】
従来から、機械学習を用いて画像の解像度を高める手法が知られている。例えば、下記の非特許文献１は、画像の超解像（ｓｕｐｅｒ−ｒｅｓｏｌｕｔｉｏｎ）のためのＧｅｎｅｒａｔｉｖｅ  Ａｄｖｅｒｓａｒｉａｌ  Ｎｅｔｗｏｒｋ（ＧＡＮ）であるＳＲＧＡＮを記載する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】C. Ledig, L. Theis, F. Huszar, J. Caballero, A. Aitken, A. Tejani, J. Totz, Z.Wang, and W. Shi, “Photo-realistic single image super-resolution using a generative adversarial network,” arXiv:1609.04802, 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理時間を短縮するために、バイパス接続を含むニューラルネットワークを用いる機械学習を用いて超解像を実行することが考えられる。しかし、バイパス接続をそのまま超解像に適用すると、すべての勾配（層間係数）が０になってしまい、超解像のための機械学習が進まなくなる可能性がある。そこで、入力画像と出力画像との間の解像度の差が小さい場合にも超解像を実行することが可能な機械学習が求められている。
【課題を解決するための手段】
【０００５】
本発明の一側面に係る画像処理装置は、プロセッサを備える画像処理装置であって、プロセッサが、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとを実行し、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。【０００６】
本発明の一側面に係る画像処理方法は、プロセッサを備える画像処理装置により実行される画像処理方法であって、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとを含み、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。【０００７】
本発明の一側面に係る画像処理プログラムは、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとをコンピュータに実行させ、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。【０００８】
このような側面においては、入力画像に対して畳み込みを実行し、畳み込まれた入力画像に特徴残差を適用する処理が必ず実行される。入力画像に対して強制的に畳み込みを実行することで、すべての勾配が０になる事態が避けられるので、入力画像と出力画像との間の解像度の差が小さい場合にも超解像を実行可能な機械学習を実現することができる。
【発明の効果】
【０００９】
本発明の一側面によれば、入力画像と出力画像との間の解像度の差が小さい場合にも超解像を実行可能な機械学習を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】超解像の一例を模式的に示す図である。
【図２】実施形態に係る画像処理装置のハードウェア構成を示す図である。
【図３】実施形態に係る画像処理装置の機能構成を示す図である。
【図４】ニューラルネットワークの第１の処理ブロックを示すフローチャートである。
【図５】ニューラルネットワークの第２の処理ブロックを示すフローチャートである。
【図６】ニューラルネットワークの一例を示すフローチャートである。
【図７】実施形態に係る画像処理装置の学習部による処理を示すフローチャートである。
【図８】実施形態に係る画像処理装置の超解像部による処理を示すフローチャートである。
【図９】実施形態に係る画像処理プログラムの構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
［概要］
実施形態に係る画像処理装置１０は、機械学習（より具体的には、深層学習）により画像の超解像を実行するコンピュータまたはコンピュータシステムである。
【００１３】
「画像」とは、人の視覚で捉えることができるように対象物を何らかの媒体に定着させた像である。画像は、コンピュータでの処理が可能な、画像を示すデータ（画像データ）を処理することで視認可能となる。具体的には、画像は、メモリなどの記憶装置に記録され、プロセッサの処理によりモニタなどの出力装置に出力されることで、視認可能となる。画像は静止画でもよいし、動画を構成する個々のフレームでもよい。
【００１４】
「超解像」とは、解像度の低い画像から高解像度の画像を生成する（すなわち、画像の解像度を高くする）技術である。なお、「解像度」とは、画像における画素の密度を示す数値である。例えば、超解像は、入力画像の解像度が表示装置の解像度に満たない場合に、入力画像の解像度を表示装置の解像度に合わせるように高くするために用いられてもよい。あるいは、超解像は、利用されようとする画像の解像度が所定の基準に満たない場合に、その基準を満たすように該画像の解像度を高くするために用いられてもよい。図１は超解像の一例を模式的に示す。この例では、蝶の羽の部分を示す低解像度画像ＬＲに対して超解像を実行することで高解像度画像ＨＲが得られている。なお、超解像を実行したとしても、解像度がほとんど変わらないかまたは全く変わらなかったり、解像度の変化の度合いが、人の目で判断できないほどに小さかったりする場合があり得る。
【００１５】
画像処理装置１０は機械学習（より具体的には、深層学習）により超解像を実行する。「機械学習」とは、与えられた情報に基づいて反復的に学習することで、法則またはルールを自律的に見つけ出す手法である。機械学習は、コンピュータに学習能力を持たせることにより問題を解決しようとするアプローチであるといえる。「深層学習」とは多層構造のニューラルネットワーク（深層ニューラルネットワーク）を用いた機械学習である。「ニューラルネットワーク」とは、人間の脳神経系の仕組みを模した情報処理のモデルである。
【００１６】
画像処理装置１０は、機械学習の入力として与えられた低解像度画像と、機械学習の出力（正解）として与えられた高解像度画像とを用いて学習を実行することで、超解像を実現するニューラルネットワークを自律的に生成する。一般に、画像処理装置１０は低解像度画像および高解像度画像の複数の組を処理することで超解像の処理手順を反復的に学習する。さらに、画像処理装置１０はそのニューラルネットワークを用いて、正解が未知である低解像度画像を処理し、その低解像度画像に対応する高解像度画像を生成する（すなわち、入力された画像の解像度を高くする）。本実施形態における画像処理装置１０の特徴の一つは、超解像を実現するニューラルネットワークの基本的な構造に関する。
【００１７】
［装置の構成］
図２は画像処理装置１０の一般的なハードウェア構成を示す。画像処理装置１０は、オペレーティングシステムやアプリケーション・プログラムなどを実行するプロセッサ１０１と、ＲＯＭおよびＲＡＭで構成される主記憶部１０２と、ハードディスクやフラッシュメモリなどで構成される補助記憶部１０３と、ネットワークカードまたは無線通信モジュールで構成される通信制御部１０４と、キーボードやマウスなどの入力装置１０５と、モニタなどの出力装置１０６とを備える。プロセッサ１０１の例としてＣＰＵおよびＧＰＵが挙げられるが、大量の積和演算を行う必要がある深層学習では一般に、並列計算を得意とするＧＰＵが用いられる。
【００１８】
画像処理装置１０の各機能要素は、プロセッサ１０１または主記憶部１０２の上に所定のソフトウェア（例えば、後述する画像処理プログラムＰ１）を読み込ませてそのソフトウェアを実行させることで実現される。プロセッサ１０１はそのソフトウェアに従って、通信制御部１０４、入力装置１０５、または出力装置１０６を動作させ、主記憶部１０２または補助記憶部１０３におけるデータの読み出しおよび書き込みを行う。処理に必要なデータまたはデータベースは主記憶部１０２または補助記憶部１０３内に格納される。
【００１９】
画像処理装置１０は１台のコンピュータで構成されてもよいし、複数台のコンピュータで構成されてもよい。複数台のコンピュータを用いる場合には、これらのコンピュータがインターネットやイントラネットなどの通信ネットワークを介して接続されることで、論理的に一つの画像処理装置１０が構築される。
【００２０】
図３は画像処理装置１０の機能構成を示す。画像処理装置１０は機能的構成要素として学習部１１および超解像部１２を備える。
【００２１】
学習部１１は、超解像を実現するニューラルネットワークを自律的に生成する機能要素である。学習部１１はデータセットを処理しながら超解像の処理手順を学習することで、最適であると推定されるニューラルネットワークを生成する。「データセット」とは、入力データとその入力データから得られるべき正解データとの組合せの集合である。本明細書では、最適であると推定されるニューラルネットワークを単に「最適なニューラルネットワーク」という。したがって、この「最適なニューラルネットワーク」は“現実に最適である”とは限らないことに留意されたい。
【００２２】
学習部１１での計算に用いられるニューラルネットワークモデルは限定されない。本実施形態では、学習部１１は、畳み込みニューラルネットワーク（ＣＮＮ：Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）の一種であるＲｅｓＮｅｔというニューラルネットワークモデルでの残差学習方法を応用する。ＲｅｓＮｅｔは、入力ｘから出力ｙを計算するのではなく、出力から入力を引いた残差（ｒｅｓｉｄｕａｌ）ｆ（ｘ）を学習し、入力ｘに残差ｆ（ｘ）を加算することで出力ｙを得る。「残差」とは出力と入力との差分であり、したがって「残差」を「差分」と言い換えてもよい。
【００２３】
学習部１１は取得部１３、残差算出部１４、画像生成部１５、およびパラメータ更新部１６を備える。
【００２４】
取得部１３は、データセットを取得する機能要素である。データセットは、画像処理装置１０に最適なニューラルネットワークを学習させるための訓練データと、ニューラルネットワークの精度を確かめるためのテストデータとを含んでもよい。
【００２５】
本実施形態におけるデータセットは、超解像の対象となる画像である入力画像と、その入力画像から得られるべき正解画像との複数の（例えば、多数の）組合せである。データセットは、入力画像と、その入力画像よりも解像度が高い正解画像との組合せを含み、この場合には、入力画像は低解像度画像であり、正解画像は高解像度画像であるということができる。データセットはさらに、入力画像および正解画像の双方が高解像度である組合せ（入力画像および正解画像の解像度が同じ組合せ）を含んでもよい。入力画像および正解画像の双方が高解像度である組合せも用いる理由は、入力画像が高解像度画像である場合にその入力画像が過学習されて、却って不鮮明な画像が出力されてしまう事態を防ぐためである。いずれにしても、正解画像の解像度は入力画像の解像度以上である。
【００２６】
データセットを準備する方法は何ら限定されない。例えば、超解像のための機械学習に用いられる画像ライブラリを用いてデータセットを準備してもよい。そのライブラリの例として、Ｓｅｔ５、Ｓｅｔ１４、およびＢＳＤ１００が挙げられる。入力画像は、例えばライブラリの画像を圧縮し、圧縮した画像をそのまま元の寸法に引き伸ばすことで得ることができる。
【００２７】
残差算出部１４は、ＲｅｓＮｅｔの仕組みを利用して入力画像から画像残差を生成する機能要素である。「画像残差」とは、入力画像と出力画像（入力画像を超解像することで得られる高解像度画像）との残差（差分）の推定結果である。
【００２８】
画像生成部１５は、入力画像に画像残差を適用することで、入力画像よりも解像度が高い高解像度画像を生成する機能要素である。具体的には、画像生成部１５は入力画像と画像残差とを要素ごとに加算することで高解像度画像を生成する。
【００２９】
パラメータ更新部１６は、ニューラルネットワークのパラメータを更新する機能要素である。パラメータ更新部１６は、正解画像に対する高解像度画像の誤差（高解像度画像と正解画像との差分）を求め、この誤差に基づいてニューラルネットワークのパラメータ（例えば、重み）を更新する。パラメータの更新方法は限定されないが、例えば、パラメータ更新部１６はバックプロパゲーション（誤差逆伝播法）を用いてパラメータを更新してもよい。バックプロパゲーションは、出力側から入力側に向かって進みながら、各ニューロンの重みを局所誤差が小さくなるように修正する手法である。
【００３０】
学習部１１は、個々の入力画像を処理しながらニューラルネットワークのパラメータを更新しながら（すなわち、学習を繰り返しながら）ニューラルネットワークのパラメータ（例えば重み）を学習することで、最適なニューラルネットワークを生成する。本実施形態では、超解像部１２がその最適なニューラルネットワークを用いる。
【００３１】
超解像部１２は、学習部１１により生成されたニューラルネットワークを用いて、正解が未知である入力画像を処理することで、該入力画像よりも解像度が高い高解像度画像を生成する機能要素である。超解像部１２は取得部１３、残差算出部１４、および画像生成部１５を備える。取得部１３、残差算出部１４、および画像生成部１５の機能は学習部１１および超解像部１２の間で共通する。
【００３２】
取得部１３は、超解像の対象となる画像である入力画像を取得する機能要素である。例えば、取得部１３は、解像度を高くしたい低解像度画像を入力画像として取得する。残差算出部１４は、学習部１１により生成されたニューラルネットワークを用いて入力画像から画像残差を生成する。画像生成部１５は、入力画像にその画像残差を適用することで、入力画像よりも解像度が高い高解像度画像を生成する。画像生成部１５は入力画像と画像残差とを要素ごとに加算することで高解像度画像を生成し、その高解像度画像を出力する。
【００３３】
［装置の動作］
次に、図４〜図８を参照しながら、画像処理装置１０の動作を説明するとともに本実施形態に係る画像処理方法について説明する。
【００３４】
図４および図５を参照しながら、学習部１１および超解像部１２で用いられるニューラルネットワーク（すなわち、ＲｅｓＮｅｔに基づくニューラルネットワーク）の基本ユニットである２種類の処理ブロックについて説明する。これらの処理ブロックは「残差ブロック」ともいわれる。双方の処理ブロックはいずれも畳み込み層ＣＬおよびバイパス接続（ｂｙｐａｓｓ  ｃｏｎｎｅｃｔｉｏｎ）ＢＣを含む。「畳み込み層」とは、入力に対して畳み込みを実行することで残差を求める処理である。「バイパス接続」とは、入力をそのまま流す処理であり、「ショートカット接続（ｓｈｏｒｔｃｕｔ  ｃｏｎｎｅｃｔｉｏｎ）」とも呼ばれる。図４は第１の処理ブロックを示すフローチャートであり、図５は第２の処理ブロックを示すフローチャートである。
【００３５】
第１の処理ブロックでは、残差算出部１４が入力特徴（第１の入力特徴）ｈｔ（ｘ）を受け付ける（ステップＳ１１）。「入力特徴」とは、入力画像の何らかの特徴を示し、畳み込み層に入力されるデータである。ＣＮＮでは、畳み込み層の入出力データを「特徴マップ」ともいうので、入力特徴は、畳み込み層に入力される特徴マップであるともいうことができる。概念的には入力特徴は入力画像と同視できる。したがって、ｈｔ（ｘ）は入力画像を示すということができ、第１の処理ブロックは入力画像を受け付けるということができる。
【００３６】
続いて、残差算出部１４は入力特徴ｈｔ（ｘ）を畳み込み層（第１の畳み込み層）ＣＬにより処理することで特徴残差（第１の特徴残差）ｆ（ｈｔ（ｘ））を算出する（ステップＳ１２）。「特徴残差」とは、入力特徴と出力特徴（入力特徴に対して処理ブロックを実行することで得られる特徴マップ）との残差（差分）の推定結果である。残差算出部１４は入力特徴ｈｔ（ｘ）に対して畳み込みおよびＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）関数を実行することで残差ｆ（ｈｔ（ｘ））を算出する。例えば、残差ｆ（ｈｔ（ｘ））は下記式で定義されてもよい。なお、ｗは重みを示す。
ｆ（ｈｔ（ｘ））＝ｗｔ＋３＊（ｍａｘ（０，ｗｔ＋２＊ｍａｘ（０，ｗｔ＋１＊ｈｔ（ｘ））））
【００３７】
「畳み込み」とは、入力データに対して所定のサイズ（例えば３×３）のフィルタ（カーネル）を適用する演算である。具体的には、フィルタの要素と入力データの対応する要素とを乗算してその和を求める処理を、フィルタを１画素分ずつずらしながら繰り返すことで、特徴マップを生成する。ＲｅＬＵ関数は、入力が０を超えていればその入力をそのまま出力し、入力が０以下ならば０を出力する活性化関数である。
【００３８】
図４に示す例では、畳み込み層ＣＬは畳み込みおよびＲｅＬＵ関数の組合せを二つと一つの畳み込みとを含むが、畳み込み層ＣＬの構成はこれに限定されるものではない。例えば、畳み込み層ＣＬ内での、畳み込みおよびＲｅＬＵ関数の組合せの個数は１でもよいし３以上でもよい。
【００３９】
続いて、残差算出部１４は入力特徴ｈｔ（ｘ）に特徴残差ｆ（ｈｔ（ｘ））を適用することで出力特徴（第１の出力特徴）ｙを生成する。具体的には、残差算出部１４は特徴残差ｆ（ｈｔ（ｘ））と入力特徴ｈｔ（ｘ）とを要素ごとに合算することで出力特徴ｙを生成する（ステップＳ１３）。すなわち、ｙ＝ｆ（ｈｔ（ｘ））＋ｈｔ（ｘ）である。
【００４０】
ニューラルネットワークの処理ブロックを第１の処理ブロックのみで構築すると、すべての処理ブロックがバイパス接続を含むため、畳み込み層においてすべての勾配が０になってしまって機械学習が進まなくなる可能性がある。本実施形態では、その状況を回避して機械学習を良好に進めるために、少なくとも一部の処理ブロックにおいて、バイパス接続にも畳み込み演算を導入する。このようにバイパス接続を変形させた処理ブロックが第２の処理ブロックである。第２の処理ブロックは、バイパス接続ＢＣの途中に畳み込みが設けられる点で、第１の処理ブロックと異なる。
【００４１】
第２の処理ブロックでは、残差算出部１４が入力特徴（第２の入力特徴）ｈｔ（ｘ）を受け付ける（ステップＳ２１）。上述したように、概念的には入力特徴は入力画像と同視できるから、ｈｔ（ｘ）は入力画像を示すということができ、第２の処理ブロックは入力画像を受け付けるということができる。残差算出部１４はその入力特徴ｈｔ（ｘ）を畳み込み層（第２の畳み込み層）ＣＬにより処理することで特徴残差（第２の特徴残差）ｆ（ｈｔ（ｘ））を算出する（ステップＳ２２）。ステップＳ２１およびＳ２２の処理は、第１の処理ブロックにおけるステップＳ１１およびＳ１２と同じである。
【００４２】
また、残差算出部１４は、バイパス接続ＢＣを通る入力特徴ｈｔ（ｘ）に対して一つの畳み込みを実行することで、入力特徴ｈｔ（ｘ）から、畳み込まれた入力特徴（ｗｋ＊ｈｔ（ｘ））を得る（ステップＳ２３）。そして、残差算出部１４は畳み込まれた入力特徴（ｗｋ＊ｈｔ（ｘ））に特徴残差ｆ（ｈｔ（ｘ））を適用することで出力特徴（第２の出力特徴）ｙを生成する。具体的には、残差算出部１４は特徴残差ｆ（ｈｔ（ｘ））と畳み込まれた入力特徴（ｗｋ＊ｈｔ（ｘ））とを要素ごとに合算することで出力特徴ｙを生成する（ステップＳ２４）。すなわち、ｙ＝ｆ（ｈｔ（ｘ））＋（ｗｋ＊ｈｔ（ｘ））である。このように、入力画像に基づく入力特徴を強制的に畳み込むことで（言い換えると、入力画像を強制的に畳み込むことで）、すべての勾配が０になる事態が避けられるので、機械学習を良好に進めることが可能になる。
【００４３】
第２の処理ブロックの構成は図５の例に限定されない。例えば、第１の処理ブロックと同様に、畳み込み層ＣＬ内での、畳み込みおよびＲｅＬＵ関数の組合せの個数は１でもよいし３以上でもよい。バイパス接続ＢＣでの畳み込みの処理手順も図５の例に限定されず、例えば、バイパス接続ＢＣが、畳み込みおよびＲｅＬＵ関数の組合せをさらに含んでもよい。図５の例に示すようにバイパス接続ＢＣに一つの畳み込みのみを含めることで、処理時間の増大を抑制しつつ、すべての勾配が０になる事態を避けることができる。
【００４４】
図６は、第２の処理ブロックを含むニューラルネットワークの一例を示すフローチャートである。この処理は学習部１１および超解像部１２の双方で実行される。
【００４５】
まず、残差算出部１４が入力画像に対して畳み込みおよびＲｅＬＵ関数を実行することで、入力画像の特徴を示す特徴マップを生成する（ステップＳ３１）。例えば、残差算出部１４は、フィルタサイズが３×３でありチャンネル数が６４である畳み込みを実行することで特徴マップを生成する。
【００４６】
続いて、残差算出部１４は第２の処理ブロックを少なくとも一回用いてその特徴マップを処理する（ステップＳ３２）。複数の処理ブロックを用いる場合には、これらの処理ブロックは直列につなげられ、したがって、ある処理ブロックで得られた出力特徴ｙが、次の処理ブロックで入力特徴（入力画像）ｈｔ（ｘ）として処理される。
【００４７】
図６は、残差算出部１４が第１の処理ブロックおよび第２の処理ブロックを交互に実行する例を示す。この例では、１，３，５番目の処理ブロックが第１の処理ブロックであり、２，４番目の処理ブロックが第２の処理ブロックである。しかし、処理ブロックの実行順序はこれに限定されない。例えば、１，３，５番目の処理ブロックが第２の処理ブロックであり、２，４番目の処理ブロックが第１の処理ブロックであってもよい。いずれにしても、２種類の処理ブロックを交互に実行することで、計算時間を抑えつつ高精度な超解像を実現することができる。
【００４８】
第１および第２の処理ブロックを交互に実行することは必須ではない。例えば、残差算出部１４は第１および第２の処理ブロックをランダムな順序で実行してもよい。あるいは、残差算出部１４は第１の処理ブロックを用いることなく第２の処理ブロックのみを１回以上実行してもよい。
【００４９】
図６は残差算出部１４が５個の処理ブロックを実行する例を示すが、実行する処理ブロックの個数は限定されず、例えばその個数は７または９でもよいし、１０以上でもよい。
【００５０】
いずれにしても、残差算出部１４は少なくとも一つの第２の処理ブロックを含む一以上の処理ブロックを実行することで出力特徴を得る。続いて、残差算出部１４はその出力特徴に対して畳み込みを実行することで、特徴マップの次元を入力画像に合わせるように修正する（ステップＳ３３）。例えば、残差算出部１４は、サイズが３×３である単一のフィルタを用いた畳み込みを実行する。
【００５１】
続いて、残差算出部１４は次元が修正された特徴マップに対して特徴スケーリング（ｆｅａｔｕｒｅ  ｓｃａｌｉｎｇ）を実行することで、入力画像に対する画像残差を生成する（ステップＳ３４）。この特徴スケーリングは、入力画像の全画素に対応する特徴マップの全要素に共通の係数λを乗ずる処理である。画像残差の分布に合うようにその係数λを設定することで、機械学習が効率良く収束するので、計算時間を短縮することができる。
【００５２】
続いて、画像生成部１５が、入力画像に画像残差を加算することで（より具体的には、入力画像と画像残差とを要素ごとに合算することで）高解像度画像を生成する（ステップＳ３５）。
【００５３】
図７は、学習部１１による処理を示すフローチャートである。まず、取得部１３がデータセットを取得する（ステップＳ４１）。データセットの取得方法は限定されない。例えば、取得部１３はデータセットを記憶する画像データベースにアクセスしてデータセットを読み出してもよい。なお、画像データベースは画像処理装置１０とは別の装置であってもよいし、画像処理装置１０の一部であってもよい。あるいは、取得部１３は画像処理装置１０のユーザにより入力または指定されたデータセットを取得してもよい。あるいは、取得部１３は他のコンピュータからデータセットを受信してもよい。続いて、取得部１３は入力画像および正解画像の一つの組合せを処理対象としてデータセットから選択する（ステップＳ４２）。
【００５４】
続いて、残差算出部１４および画像生成部１５が、図６に示す処理（ニューラルネットワーク）により、選択された入力画像から高解像度画像を生成する（ステップＳ４３）。ステップＳ４３は、図６に示すステップＳ３１〜Ｓ３５に相当する。続いて、パラメータ更新部１６が生成された高解像度画像と選択された正解画像との差分を求め、その差分に基づいてニューラルネットワークのパラメータを更新する（ステップＳ４４）。学習部１１はデータセット内のすべての組合せを処理するまで、入力画像および正解画像の組合せを変えながらステップＳ４２〜Ｓ４４の処理を繰り返す（ステップＳ４５参照）。最後に、学習部１１は最適なニューラルネットワークのパラメータ（例えば重み）を出力する（ステップＳ４６）。本実施形態では、超解像部１２が、そのパラメータに基づくニューラルネットワークを用いる。
【００５５】
図８は、超解像部１２による処理を示すフローチャートである。まず、取得部１３が入力画像を取得する（ステップＳ５１）。学習部１１と同様に、入力画像の取得方法は限定されない。例えば、取得部１３は画像データベースから入力画像を読み出してもよいし、ユーザにより入力または指定された入力画像を取得してもよいし、他のコンピュータから入力画像を受信してもよい。続いて、残差算出部１４および画像生成部１５が、図６に示す処理（ニューラルネットワーク）により、選択された入力画像から高解像度画像を生成する（ステップＳ５２）。ステップＳ５２は、図６に示すステップＳ３１〜Ｓ３５に相当し、したがって、図７に示すステップＳ４３と同様の処理である。ただし、超解像部１２では、残差算出部１４は学習部１１により生成された最適なニューラルネットワークを用いる。最後に、画像生成部１５が、生成された高解像度画像を出力する（ステップＳ５３）。高解像度画像の出力方法は限定されない。例えば、画像生成部１５は高解像度画像を、所定のデータベースに格納してもよいし、他のコンピュータに送信してもよいし、モニタ上に描画してもよい。
【００５６】
［プログラム］
次に、図９を参照しながら、コンピュータを画像処理装置１０として機能させるための画像処理プログラムＰ１を説明する。図９は画像処理プログラムＰ１の構成を示す図である。
【００５７】
画像処理プログラムＰ１はメインモジュールＰ１０、取得モジュールＰ１１、残差算出モジュールＰ１２、画像生成モジュールＰ１３、およびパラメータ更新モジュールＰ１４を含む。メインモジュールＰ１０は、ニューラルネットワークの生成と超解像とを統括的に管理する部分である。取得モジュールＰ１１、残差算出モジュールＰ１２、画像生成モジュールＰ１３、およびパラメータ更新モジュールＰ１４を実行することで、取得部１３、残差算出部１４、画像生成部１５、およびパラメータ更新部１６が実現する。取得モジュールＰ１１、残差算出モジュールＰ１２、および画像生成モジュールＰ１３は、学習部１１および超解像部１２の双方のために用いられる。
【００５８】
画像処理プログラムＰ１は、例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。あるいは、画像処理プログラムＰ１は、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【００５９】
［効果］
以上説明したように、本発明の一側面に係る画像処理装置は、プロセッサを備える画像処理装置であって、プロセッサが、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとを実行し、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。
【００６０】
本発明の一側面に係る画像処理方法は、プロセッサを備える画像処理装置により実行される画像処理方法であって、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとを含み、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。
【００６１】
本発明の一側面に係る画像処理プログラムは、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとをコンピュータに実行させ、画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。
【００６２】
このような側面においては、入力画像に対して畳み込みを実行し、畳み込まれた入力画像に特徴残差を適用する処理が必ず実行される。入力画像に対して強制的に畳み込みを実行することで、すべての勾配が０になる事態が避けられるので、入力画像と出力画像との間の解像度の差が小さい場合にも超解像を実行可能な機械学習を実現することができる。
【００６３】
より具体的には、入力特徴そのものに対して畳み込みを実行し、畳み込まれた入力特徴に特徴残差（入力特徴の残差）を適用する処理が必ず実行される。入力特徴そのものに対して強制的に畳み込みを実行することで、すべての勾配が０になる事態が避けられるので、入力画像と出力画像との間の解像度の差が小さい場合にも超解像を実行可能な機械学習を実現することができる。
【００６４】
他の側面に係る画像処理装置では、前記プロセッサが、第１の処理ブロックおよび第２の処理ブロックを含むニューラルネットワークを用いて画像残差を生成し、第１の処理ブロックが、入力画像に基づく第１の入力特徴を第１の畳み込み層により処理することで第１の特徴残差を算出するステップと、第１の入力特徴に第１の特徴残差を適用することで第１の出力特徴を生成するステップとを含み、第２の処理ブロックが、入力画像に基づく第２の入力特徴を第２の畳み込み層により処理することで第２の特徴残差を算出するステップと、第２の入力特徴に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた第２の入力特徴に第２の特徴残差を適用することで第２の出力特徴を生成するステップとを含んでもよい。
【００６５】
入力特徴そのものに特徴残差を適用する処理（第１の処理ブロック）と、入力特徴を畳み込んでから特徴残差を適用する処理（第２の処理ブロック）との双方を用いることで、超解像の処理時間の増大を防ぎつつ入力画像の解像度を良好に上げることが可能になる。
【００６６】
他の側面に係る画像処理装置では、プロセッサが第１の処理ブロックおよび第２の処理ブロックを交互に実行してもよい。２種類の処理ブロックを交互に実行することで、計算時間を抑えつつ高精度な超解像を実現することができる。
【００６７】
ここで、２種類の処理ブロックの実行順序に関する実験結果を説明する。上記実施形態における画像処理装置１０を構築し、２種類の処理ブロックの実行順序を変えながら、各パターンでの超解像の精度を確かめた。画像ライブラリとしてＳｅｔ５を用いた。このライブラリの画像を圧縮し、圧縮した画像をそのまま元の寸法に引き伸ばすことで低解像度の入力画像を得た。具体的には、一つのライブラリ画像を１／２、１／３、または１／４に圧縮する処理を介して、一つのライブラリ画像から三つの入力画像（低解像度画像）を得た。ライブラリ画像そのものは正解画像（高解像度画像）に相当する。
【００６８】
第１および第２の処理ブロックの実行順序については下記の７パターンを設定した。「０」は第１の処理ブロックを示し、「１」は第２の処理ブロックを示し、数字の並びは処理の流れを示す。例えば、パターン３は、第２の処理ブロックが２回続けて実行された後に、第１の処理ブロックが３回続けて実行されることを示す。また、パターン５，６はいずれも、第１の処理ブロックと第２処理ブロックとが交互に実行されることを示す。すべてのパターンにおいて、ニューラルネットワークに含まれる処理ブロックの個数を５に統一した。パターン１は第２の処理ブロックを含まないので、比較例であるといえる。
・パターン１：０００００
・パターン２：００１００
・パターン３：１１０００
・パターン４：１０００１
・パターン５：０１０１０
・パターン６：１０１０１
・パターン７：１１１１１
【００６９】
機械学習に関する他の設定は以下の通りである。
・確率的勾配降下法を用いたＣＮＮ
・モメンタム（ｍｏｍｅｎｔｕｍ）＝０．９
・重み減衰（ｗｅｉｇｈｔ  ｄｅｃａｙ）＝１０−４
・勾配刈り込み（ｇｒａｄｉｅｎｔ  ｃｌｉｐｐｉｎｇ）の閾値＝１．０
・学習率（ｌｅａｒｎｉｎｇ  ｒａｔｅ）：初期値は１であり、１０エポック毎に１０分の１に変更。
・特徴スケーリングでの係数の初期値＝０．１
【００７０】
機械学習による超解像の結果をピーク信号対雑音比（ＰＳＮＲ：Ｐｅａｋ  ｓｉｇｎａｌ−ｔｏ−ｎｏｉｓｅ  ｒａｔｉｏ）で評価した。下記の表１は、各パターンにおけるＰＳＮＲ値を示し（単位はデシベル（ｄＢ）である。）、値が高いほど画質が良いと評価できる。「Ｘ２」、「Ｘ３」、および「Ｘ４」はそれぞれ、１／２圧縮の入力画像、１／３圧縮の入力画像、１／４圧縮の入力画像を示す。この実験より、第２の処理ブロックを多く含むほど学習効果が高くなることがわかった。また、第２の処理ブロックの個数が同じ場合には、第２の処理ブロックを交互に配置させた方が学習効果が高くなることもわかった。表１には示していないが、第２の処理ブロックの個数が多いと処理時間が長くなった。したがって、２種類の処理ブロックを交互に実行することは、計算時間を抑えつつ高精度な超解像を実現する一手法であるといえる。
【表１】
0006276901.tif 000002
【００７１】
他の側面に係る画像処理装置では、プロセッサが、出力特徴に対して特徴スケーリングを実行することで画像残差を生成してもよい。この特徴スケーリングにより機械学習が効率良く収束するので、計算時間を短縮することができる。
【００７２】
［変形例］
以上、本発明をその実施形態に基づいて詳細に説明した。しかし、本発明は上記実施形態に限定されるものではない。本発明は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００７３】
上記実施形態では画像処理装置が学習部１１および超解像部１２を含むが、画像処理装置は学習部および超解像部のどちらか一方のみを備えてもよい。画像処理装置が超解像部を備えず学習部を備える場合には、学習部が最適なニューラルネットワークを出力し、他のコンピュータがそのニューラルネットワークを用いて超解像を実行してもよい。画像処理装置が学習部を備えず超解像部を備える場合には、超解像部は他のコンピュータから学習済のニューラルネットワークを取得し、そのニューラルネットワークを用いて超解像を実行してもよい。いずれにしても、画像処理装置は、（Ａ）入力画像を取得し、（Ｂ）入力画像を畳み込み層により処理することで特徴残差を算出し、（Ｃ）入力画像に対して少なくとも一つの畳み込みを実行し、（Ｄ）畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成し、（Ｅ）出力特徴に基づいて画像残差を生成する。画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。
【００７４】
画像処理装置は画像残差を生成するまでの処理を実行し、他のコンピュータがその画像残差を入力画像に適用することで高解像度画像を生成してもよい。したがって、高解像度画像の生成は画像処理装置の必須の処理ではない。
【００７５】
少なくとも一つのプロセッサにより実行される画像処理方法の処理手順は上記実施形態での例に限定されない。例えば、上述したステップ（処理）の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の２以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【符号の説明】
【００７６】
１０…画像処理装置、１１…学習部、１２…超解像部、１３…取得部、１４…残差算出部、１５…画像生成部、１６…パラメータ更新部、ＣＬ…畳み込み層、ＢＣ…バイパス接続、Ｐ１…画像処理プログラム、Ｐ１０…メインモジュール、Ｐ１１…取得モジュール、Ｐ１２…残差算出モジュール、Ｐ１３…画像生成モジュール、Ｐ１４…パラメータ更新モジュール。
【要約】
一実施形態に係る画像処理装置はプロセッサを備える。プロセッサは、入力画像を取得するステップと、入力画像を畳み込み層により処理することで特徴残差を算出するステップと、入力画像に対して少なくとも一つの畳み込みを実行するステップと、畳み込まれた入力画像に特徴残差を適用することで出力特徴を生成するステップと、出力特徴に基づいて画像残差を生成するステップとを実行する。画像残差が入力画像に適用されることで、入力画像よりも解像度が高い高解像度画像が生成される。【図１】
0006276901.tif 000003
【図２】
0006276901.tif 000004
【図３】
0006276901.tif 000005
【図４】
0006276901.tif 000006
【図５】
0006276901.tif 000007
【図６】
0006276901.tif 000008
【図７】
0006276901.tif 000009
【図８】
0006276901.tif 000010
【図９】
0006276901.tif 000011