(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025143679
(43)【公開日】2025-10-02
(54)【発明の名称】画像処理方法、画像処理装置および撮像装置
(51)【国際特許分類】
G06T 3/4046 20240101AFI20250925BHJP
G06T 7/00 20170101ALI20250925BHJP
G06T 7/20 20170101ALI20250925BHJP
H04N 23/60 20230101ALI20250925BHJP
【FI】
G06T3/4046
G06T7/00 350C
G06T7/20
H04N23/60 500
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2024043029
(22)【出願日】2024-03-19
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100110412
【弁理士】
【氏名又は名称】藤元 亮輔
(74)【代理人】
【識別番号】100104628
【弁理士】
【氏名又は名称】水本 敦也
(74)【代理人】
【識別番号】100121614
【弁理士】
【氏名又は名称】平山 倫也
(72)【発明者】
【氏名】大野 雪乃
(72)【発明者】
【氏名】井田 義明
(72)【発明者】
【氏名】楠美 祐一
【テーマコード(参考)】
5B057
5C122
5L096
【Fターム(参考)】
5B057BA02
5B057CA08
5B057CA12
5B057CA16
5B057CB08
5B057CB12
5B057CB16
5B057CC01
5B057CD05
5B057CD06
5B057CE08
5B057DA07
5B057DB02
5B057DB09
5B057DC40
5C122DA03
5C122EA37
5C122FH07
5C122FH12
5C122HA46
5C122HA48
5C122HA89
5C122HB01
5L096AA06
5L096CA04
5L096DA01
5L096EA14
5L096EA33
5L096FA32
5L096GA08
5L096HA04
5L096HA11
5L096KA04
(57)【要約】
【課題】動きベクトルを生成する機械学習モデルが学習した画像サイズで制限されずに、動きベクトルを用いた高精度な機械学習タスクを行う。
【解決手段】画像処理方法は、同一の物体の少なくとも一部を互いに異なる位置に含む第1の画像と第2の画像を縮小して、第1の画像に対応する第3の画像と第2の画像に対応する第4の画像を生成する。第1の機械学習モデルを用いて、第3の画像と第4の画像とに基づいて第1の動きベクトルを生成する。第1の動きベクトルを拡大して第2の動きベクトルを生成する。第2の機械学習モデルを用いて、第1の画像と第2の画像と第2の動きベクトルとに基づいて第5の画像を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
同一の物体の少なくとも一部を互いに異なる位置に含む第1の画像と第2の画像を縮小して、前記第1の画像に対応する第3の画像と前記第2の画像に対応する第4の画像を生成する工程と、
第1の機械学習モデルを用いて、前記第3の画像と前記第4の画像とに基づいて第1の動きベクトルを生成する工程と、
前記第1の動きベクトルを拡大することで第2の動きベクトルを生成する工程と、
第2の機械学習モデルを用いて、前記第1の画像と前記第2の画像と前記第2の動きベクトルとに基づいて第5の画像を生成する工程とを有することを特徴とする画像処理方法。
【請求項2】
前記第1の画像と前記第2の画像は、同一の動画から抽出された画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項3】
前記第1の画像と前記第2の画像はそれぞれ、第1の元画像と第2の元画像を分割して得られた画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項4】
前記第5の画像は、前記第1の画像に対応し、かつ該第1の画像よりも高解像度の画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項5】
前記第5の画像は、前記第1の画像がアップスケールされた画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項6】
前記第5の画像は、前記第1および第2の画像を含む動画がアップフレームレートされた動画を構成する画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項7】
前記第1の機械学習モデルは、畳み込みニューラルネットワークであることを特徴とする請求項1に記載の画像処理方法。
【請求項8】
前記第2の機械学習モデルは、畳み込みニューラルネットワークであることを特徴とする請求項1に記載の画像処理方法。
【請求項9】
前記第1の画像、前記第2の画像および前記第2の動きベクトルは、互いに同一サイズを有することを特徴とする請求項1に記載の画像処理方法。
【請求項10】
前記第1の動きベクトルの拡大は、補間処理または前記第1の機械学習モデルとは独立して学習される機械学習モデルを用いて行われることを特徴とする請求項1に記載の画像処理方法。
【請求項11】
前記第3の画像と前記第4の画像はともに第1のサイズの画像であり、
前記第1の機械学習モデルの学習に用いられる第1の学習画像セットは前記第1のサイズ以上の画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項12】
前記第1の画像と前記第2の画像はともに第3のサイズの画像であり、
前記第2の機械学習モデルの学習に用いられる第2の学習画像セットは第4のサイズ以下の画像であることを特徴とする請求項1に記載の画像処理方法。
【請求項13】
請求項1から5および請求項7から12のいずれか一項に記載の画像処理方法に用いられる前記第1および第2の機械学習モデルの学習を行う学習方法であって、
第1の学習画像と第2の学習画像を前記第1の機械学習モデルに入力して第3の動きベクトルを生成する工程と、
前記第2の学習画像と前記第3の動きベクトルとを用いて、前記第1の学習画像に相当する第1のワープ画像を生成する工程と、
前記第1の学習画像と前記第1のワープ画像との差に基づいて、前記第1の機械学習モデルの学習を行う工程と、
第3の学習画像と第4の学習画像を学習済みの前記第1の機械学習モデルに入力して第4の動きベクトルを生成する工程と、
前記第3の学習画像と前記第4の学習画像と前記第4の動きベクトルとを前記第2の機械学習モデルに入力し、該第2の機械学習モデルに、前記第4の学習画像と前記第4の動きベクトルに基づいて前記第3の学習画像に相当する第2のワープ画像を生成させるとともに、前記第3の学習画像と前記第2のワープ画像とを用いて第6の画像を生成させる工程と、
前記第6の画像と正解画像との差に基づいて、前記第2の機械学習モデルの学習を行う工程とを有することを特徴とする学習方法。
【請求項14】
同一の物体の少なくとも一部を互いに異なる位置に含む第1の画像と第2の画像を縮小して、前記第1の画像に対応する第3の画像と前記第2の画像に対応する第4の画像を生成する手段と、
第1の機械学習モデルを用いて、前記第3の画像と前記第4の画像とに基づいて第1の動きベクトルを生成する手段と、
前記第1の動きベクトルを拡大して第2の動きベクトルを生成する手段と、
第2の機械学習モデルを用いて、前記第1の画像と前記第2の画像と前記第2の動きベクトルとに基づいて第5の画像を生成する手段とを有することを特徴とする画像処理装置。
【請求項15】
請求項13に記載の画像処理装置と、
光学系を通して物体を撮像する撮像素子とを有し、
前記第1および第2の画像を取得するための元画像を生成することを特徴とする撮像装置。
【請求項16】
請求項1から5および請求項7から12のいずれか一項に記載の画像処理方法に用いられる前記第1および第2の機械学習モデルの学習を行う学習装置であって、
第1の学習画像と第2の学習画像を前記第1の機械学習モデルに入力して第3の動きベクトルを生成する手段と、
前記第2の学習画像と前記第3の動きベクトルとを用いて、前記第1の学習画像に相当する第1のワープ画像を生成する手段と、
前記第1の学習画像と前記第1のワープ画像との差に基づいて、前記第1の機械学習モデルの学習を行う手段と、
第3の学習画像と第4の学習画像を学習済みの前記第1の機械学習モデルに入力して第4の動きベクトルを生成する手段と、
前記第3の学習画像と前記第4の学習画像と前記第4の動きベクトルとを前記第2の機械学習モデルに入力し、該第2の機械学習モデルに、前記第4の学習画像と前記第4の動きベクトルに基づいて前記第3の学習画像に相当する第2のワープ画像を生成させるとともに、前記第3の学習画像と前記第2のワープ画像とを用いて第6の画像を生成させる手段と、
前記第6の画像と正解画像との差に基づいて、前記第2の機械学習モデルの学習を行う手段とを有することを特徴とする学習装置。
【請求項17】
請求項1から12のいずれか一項に記載の画像処理方法に従う処理をコンピュータに実行させることを特徴とするプログラム。
【請求項18】
請求項13に記載の学習方法に従う処理をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習モデルを用いて生成される動きベクトルを利用した機械学習タスクを行う技術に関する。
【背景技術】
【0002】
動きベクトルを用いた画像処理方法として、非特許文献1には、動画に含まれる参照フレームと隣接フレームを第1の機械学習モデルに入力して参照フレームと隣接フレーム間の動きベクトルを生成し、動きベクトルをbilinear補間で拡大する方法が開示されている。この方法では、拡大された動きベクトルと、参照フレームと、第2の機械学習モデルでアップスケールされた隣接フレームとを第2の機械学習モデルに入力することで、参照フレームのアップスケールを行う。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Mehdi SM Sajjadi, Raviteja Vemulapalli, and Matthew Brown. Frame-recurrent video super-resolution. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 6626-6634, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0004】
非特許文献1にて開示された方法では、高精度なアップスケールを実現できる参照フレームのサイズが第1の機械学習モデルが学習した画像サイズに基づいて制限される。具体的には、動きベクトルを生成する第1の機械学習モデルに入力する画像のサイズは、第1の機械学習モデルが学習した画像サイズに基づいて制限される。このため、第1の機械学習モデルを用いて生成された動きベクトルを用いる第2の機械学習モデルに入力する画像のサイズも同様に第1の機械学習モデルが学習した画像サイズに基づいて制限される。
【0005】
本発明は、動きベクトルを生成する機械学習モデルが学習した画像サイズに基づいて制限されることなく、動きベクトルを用いた高精度な機械学習タスクを行うことが可能な画像処理方法および画像処理装置を提供する。
【課題を解決するための手段】
【0006】
本発明の一側面としての画像処理方法は、同一の物体の少なくとも一部を互いに異なる位置に含む第1の画像と第2の画像を縮小して、第1の画像に対応する第3の画像と第2の画像に対応する第4の画像を生成する工程と、第1の機械学習モデルを用いて、第3の画像と第4の画像とに基づいて第1の動きベクトルを生成する工程と、第1の動きベクトルを拡大して第2の動きベクトルを生成する工程と、第2の機械学習モデルを用いて、第1の画像と第2の画像と第2の動きベクトルとに基づいて第5の画像を生成する工程とを有することを特徴とする。なお、上記画像処理方法に従う処理を行う画像処理装置とこれを含む撮像装置、さらには該処理をコンピュータに実行させるプログラムも、本発明の他の一側面を構成する。
【発明の効果】
【0007】
本発明によれば、動きベクトルを生成する機械学習モデルが学習した画像サイズに基づいて制限されることなく、動きベクトルを用いた高精度な機械学習タスクを行うことができる。
【図面の簡単な説明】
【0008】
【
図1】実施例1における推定フェーズの流れを示す図。
【
図2】機械学習モデルが生成した動きベクトルを用いて機械学習タスクを実行する従来の流れを示す図。
【
図3】実施例1における画像処理システムの構成を示すブロック図。
【
図4】実施例1における画像処理システムの外観図。
【
図5】実施例1における第1の機械学習モデルの学習データの生成処理を示すフローチャート。
【
図6】実施例1における第1の機械学習モデルのウエイトの学習(第1の学習フェーズ)の処理を示すフローチャート。
【
図7】実施例1における第2の機械学習モデルの学習データの生成処理を示すフローチャート。
【
図8】実施例1における第2の機械学習モデルのウエイトの学習(第2の学習フェーズ)の処理を示すフローチャート。
【
図9】実施例1における推定フェーズに関するフローチャート。
【
図10】実施例2における画像処理システムの構成を示すブロック図。
【
図11】実施例2における画像処理システムの外観図。
【
図12】実施例2における第2の機械学習モデルの学習データの生成処理を示すフローチャート。
【
図13】実施例2における第2の機械学習モデルのウエイトの学習(第2の学習フェーズ)の処理を示すフローチャート。
【
図14】実施例2における推定フェーズの流れを示す図。
【
図15】実施例2における推定フェーズの処理を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、本発明の実施例について図面を参照しながら説明する。
【0010】
ここでは、実施例1~3について具体的に説明する前に、各実施例において共通する事項について説明する。
【0011】
各実施例において、「サイズ」とは、画像またはマップの幅と高さにおける画素数である。また「動きベクトル」は、画像ペア(2つのフレーム画像)間の互いに対応する画素の動きをベクトルで表したものである。
【0012】
まず各実施例が解決する課題について説明する。画像ペアに基づいて画像ペア内の動きベクトルを生成する機械学習モデルにおいて、画像ペアのサイズは機械学習モデルが学習した画像サイズに基づいて制限される。具体的には、学習した画像サイズの閾値倍より大きなサイズの画像ペアに基づいて動きベクトルを生成する場合、動きベクトル(オプティカルフロー)の精度が大きく損なわれる。閾値は、機械学習モデルのモデル構造や画像ペア内に含まれる物体の動き量などによって変動するものの、1以上2未満の範囲の値である。例えば、128×128画素の画像ペアを入力して動きベクトルを生成するように学習された機械学習モデルに256×256画素の画像ペアを入力する場合、生成される動きベクトルの精度が大きく損なわれる。
【0013】
以下、その理由を説明する。動きベクトルの生成タスクを行う機械学習モデルは、画像ペアの各画素における動きベクトルを広範囲の周辺画素を考慮して生成するよう学習される。その際、機械学習モデルの受容野に含まれる各周辺画素の寄与度は、学習に用いる画像ペアのサイズに合わせて最適化される。すなわち、受容野内の各周辺画素の寄与度は学習時に与えられた画像ペアのサイズに基づいて自動的に調整され、動きベクトルの生成タスクにおいては受容野内の広範囲の周辺画素が高い寄与度を有するように学習される。
【0014】
一方、学習した画像サイズよりも大きなサイズの画像ペアに基づいて動きベクトルを生成する場合、学習時に比べて受容野が広げられて不必要に広範囲の隣接画素の影響を受けるため、生成される動きベクトルの精度が大きく損なわれる。
【0015】
このように、画像ペアに基づいて動きベクトルを生成する機械学習モデルでは、画像ペアのサイズは機械学習モデルが学習した画像サイズに基づいて制限される。これに伴い、機械学習モデルで生成された動きベクトルを用いる機械学習タスクにおける画像サイズも同様に、機械学習モデルが学習した画像サイズに基づいて制限される。
【0016】
図2は、従来において機械学習モデルが生成した動きベクトルを用いて機械学習タスクを実行する処理を示している。
図2は、画像ペアである画像101と画像102から出力としての画像104を生成する、最も単純な従来処理を示している。この従来処理では、まず画像101と画像102を機械学習モデル111に入力して、画像101と画像102の間の動きベクトル103を生成する。次に画像101と画像102と動きベクトル103とを機械学習モデル112に入力して、画像104を生成する。例えば、機械学習モデル112において、256×256画素の画像101と画像102から画像104を生成する場合には、機械学習モデル111においても256×256画素の画像101と画像102を入力して動きベクトル103を生成する必要がある。
【0017】
一方、機械学習モデル111が128×128画素の画像ペアを入力して動きベクトルを生成するように学習されている場合は、生成される動きベクトル103の精度は大きく損なわれる。その結果、機械学習モデル112において、高精度に画像104を生成することができない。この詳細については各実施例において説明する。
【0018】
各実施例では、上記課題を解決して、動きベクトルを生成する機械学習モデルが学習した画像サイズに基づいて制限されることなく、この機械学習モデルが生成した動きベクトルを用いる機械学習タスクを高精度に実行する方法を示している。具体的には、第1の画像と第2の画像とをそれぞれ縮小した第3の画像と第4の画像とに基づいて、第1の機械学習モデルを用いて第1動きベクトルを生成する。
【0019】
そして各実施例では、第1動きベクトルを拡大した第2動きベクトルと、第1の画像と、第2の画像とに基づいて、第2の機械学習モデルを用いて第5の画像を生成する。ここで、第1の画像と第2の画像はともに同じ第3のサイズの画像であり、第3の画像と第4の画像とはともに同じ第1のサイズの画像である。第1の機械学習モデルは、該第1の機械学習モデルが学習した画像サイズに基づいて制限された第1のサイズで、高精度に第1動きベクトルを生成することができる。一方、第2の機械学習モデルは、第1の機械学習モデルの学習した画像サイズに基づいて制限されない第3のサイズで、高精度に第5の画像を生成することができる。
【0020】
以下、各実施例の詳細を説明する。各実施例では、まず第1の画像と第2の画像とを縮小して、第1の画像に対応する第3の画像と第2の画像に対応する第4の画像とを生成する。第1の画像と第2の画像は、同一の物体の少なくとも一部が互いに異なる位置に含まれる画像ペアである。なお、第1の画像と第2の画像は、同一の動画から抽出される画像であってもよい。
【0021】
また第1の画像から第3の画像への縮小と第2の画像から第4の画像への縮小は、画像から画像への変換を行う同一の縮小処理を用いて行われる。縮小処理は、例えば、複数画素から1画素のみを抽出するダウンサンプルや、複数画素を用いて新しい1画素の画素値を生成するビニングによるものである。
【0022】
次に、各実施例では、第1の機械学習モデルを用いて、第3の画像と第4の画像とに基づいて第1動きベクトルを生成する。ここで、第1動きベクトルは、第3の画像と第4の画像との間で互いに対応する画素の動きをベクトルで表したものである。例えば、第1動きベクトルは、第3の画像の各画素についての第4の画像から第3の画像への移動を示すベクトルである。また、第1動きベクトルは、第3の画像と第4の画像とを第1の機械学習モデルに入力することで生成されてもよい。
【0023】
第1の機械学習モデルは、例えば、畳み込みニューラルネットワーク(CNN)である。ただし、第1の機械学習モデルは、第2のサイズを有する複数の画像からなる第1学習画像セットに基づいて動きベクトルを生成するよう学習されてもよい。また、第2のサイズは第1のサイズ(第3の画像と第4の画像のサイズ)以上のサイズであることが好ましい。前述したように第2のサイズの閾値倍より大きなサイズの画像ペアに基づいて動きベクトルを生成する場合、生成される動きベクトルの精度が大きく損なわれる。また閾値は第1の機械学習モデルのモデル構造や画像ペアに含まれる物体の動き量等によって変動するものの、1以上2未満の範囲の値である。第1のサイズを第2のサイズ以下(つまりは第2のサイズを第1のサイズ以上)にすることで、第1の機械学習モデルは、該第1の機械学習モデル自体や第3および第4の画像にかかわらず、高精度な第1動きベクトルを生成することができる。
【0024】
続いて各実施例では、第1動きベクトルを拡大処理により拡大して、第2動きベクトルを生成する。各実施例での拡大処理は、第1の機械学習モデルとは独立した処理である。この拡大処理は、第1の機械学習モデルと独立していれば、機械学習モデルを用いる拡大処理であってもよいし、機械学習モデルを用いない拡大処理であってもよい。機械学習モデルを用いる拡大処理は、例えば、1層以上の逆畳み込み層を用いる処理や、サブピクセルコンボリューション処理である。サブピクセルコンボリューション処理は、畳み込み演算の後、画素を再配置することで拡大を行う処理である。ただし、これらの拡大処理は、第1の機械学習モデルに基づいて学習されていないウエイトを用いる。機械学習モデルを用いない拡大処理には、nearest neighbor補間、bilinear補間またはbicubic補間等の公知の補間方法が用いられる。また、この拡大処理における拡大倍率は、第1の画像と第2の画像とをそれぞれ第3の画像と第4の画像とに縮小する縮小処理における縮小倍率と同一であってもよい。さらに、第2動きベクトルは、第1の画像と第2の画像と同一の第3のサイズを有してもよい。
【0025】
最後に各実施例では、第2の機械学習モデルを用いて、第1の画像と第2の画像と第2動きベクトルとに基づいて第5の画像を生成する。第2の機械学習モデルは、例えば、CNNである。また、第5の画像は、第1の画像と第2の画像と第2動きベクトルとを第2の機械学習モデルに入力することで生成されてもよい。他にも、第5の画像は、第1の画像、第2の画像または第2動きベクトルに処理を施した後、第2の機械学習モデルに入力することで生成されてもよい。例えば、第1の画像と第2の画像のそれぞれを予め補間処理などで拡大した後、拡大された第1の画像と拡大された第2の画像と第2動きベクトルとを第2の機械学習モデルに入力することで作成されてもよい。
【0026】
さらに、第2の機械学習モデルは、第4のサイズを有する複数の画像からなる第2学習画像セットに基づいて画像を生成するよう学習されてもよい。第3のサイズ(第1の画像と第2の画像のサイズ)は第4のサイズ以上(つまりは第4のサイズは第3のサイズ以下)であってもよい。
【0027】
各実施例の処理で得られる効果について、
図2に示した従来処理と比較しながら説明する。前述したように
図2の従来処理は、画像101と画像102から画像104を生成する最も単純な処理である。そしてこの従来処理により高精度に画像104を生成するためには、画像101と画像102の画像サイズ(第3のサイズ相当)は機械学習モデル111が学習に用いる画像のサイズ(第2のサイズ相当)に基づいて制限される。さらに従来処理では、機械学習モデル112の学習も
図2に示した流れで行われるため、機械学習モデル112が学習に用いる画像のサイズ(第4のサイズ相当)も同様に機械学習モデル111が学習に用いる画像のサイズ(第2のサイズ相当)に基づいて制限されることとなる。機械学習モデル112自体や機械学習モデル112が学習に用いる画像にかかわらず、機械学習モデル112の効果的な学習を行うために、理想的には第4のサイズは第2のサイズ以下に制限される。
【0028】
一方、機械学習モデル112が学習に用いる画像のサイズはできるだけ大きい方がよい。これは、この画像サイズが大きいほど、機械学習モデル112はより大きなサイズの画像101と画像102に対して高精度な画像104を生成できるためである。したがって、第4のサイズは第2のサイズと等しく設定される。以上のことから、従来処理では、画像101と画像102の画像サイズ(第3のサイズ相当)は、機械学習モデル112が学習した画像サイズ(第4のサイズ相当)に基づいて制限される。
【0029】
各実施例では、従来処理と同様の流れで第2の機械学習モデルの学習をしてもよい。すなわち、第2の機械学習モデルは、画像ペアと、この画像ペアを第1の機械学習モデルに入力して生成された動きベクトルとに基づいて、新たな画像を生成するように学習されてもよい。このとき、第2の機械学習モデルが学習に用いる画像ペアのサイズ(第4のサイズ)は、従来処理と同様に第1の機械学習モデルが学習した第2のサイズに制限され、また従来処理と同様の理由から第2のサイズと等しく設定される。
【0030】
一方、各実施例では、前述したように第1の画像と第2の画像のサイズ(第3のサイズ)は第2のサイズに基づいて制限されない。このため、第3のサイズは、第2のサイズと等しい第4のサイズによっても制限されない。したがって、第3のサイズは第4のサイズ以上であってもよい。第3のサイズを第4のサイズ以上にできることで、学習時の計算リソースによって第4のサイズが制限される場合でも、第2の機械学習モデルや第2の機械学習モデルが実行するタスクの前後の工程にとって最適な第3のサイズを設定できる。すなわち第3のサイズの自由度が向上する。この詳細については実施例1にて説明する。
【0031】
以下に説明する各実施例において、機械学習モデルのウエイトを決定する段階を学習フェーズという。また、学習により決定されたウエイトを用いた第1の機械学習モデルと第2の機械学習モデルを用いて、第1の画像と第2の画像から第5の画像を生成する段階を推定フェーズという。機械学習モデルは、ニューラルネットワーク、遺伝的プログラミングおよびベイジアンネットワーク等を含む。ニューラルネットワークは、CNN(Convolutional Neural Network)、GAN(Generative Adversarial Network)、RNN(Recurrent Neural Network)等を含む。
【実施例0032】
実施例1は、動画を高解像化することを目的とする。低解像度な動画に含まれる複数の低解像度なフレーム画像を高解像化し、高解像化されたフレーム画像を組み合わせて高解像度な動画を生成する。そのため本実施例では、低解像度なフレーム画像の少なくとも一部である第1の画像と、該フレーム画像に隣接する低解像度なフレーム画像の少なくとも一部である第2の画像とをそれぞれ縮小して第3の画像と第4の画像を生成する。また、第3の画像と第4の画像とに基づいて、第1の機械学習モデルを用いて第1動きベクトルを生成する。さらに第1動きベクトルを拡大して生成された第2動きベクトルと第1の画像と第2の画像とに基づいて、第2の機械学習モデルを用いて、第1の画像に対応し、かつ第1の画像より高解像度な第5の画像を生成する。第5の画像は、高解像度なフレーム画像の少なくとも一部である。
【0033】
実施例1では、低解像度な元の動画を高解像化することで、動画の幅方向および高さ方向のそれぞれにて2倍(すなわち合計4倍)のサイズを有する高解像度な動画を生成する。生成される高解像度な動画は、低解像度な元の動画に対してサンプリングピッチが2倍小さい動画である。本実施例における高解像化は、高画素化である。第5の画像は第1の画像がアップスケールされた画像であり、第5の画像のサイズは第1の画像のサイズより大きい。ただし、高解像化は高画素化に限らない。例えば、第5の画像は、第1の画像と同じサイズを有し、第1の画像からノイズ、ぼけ、振れ等が除去された画像でもよい。
【0034】
本実施例では、第1の画像に加えて時間的に隣接する第2の画像を用いて第5の画像を生成する。これにより、第1の画像のみを用いて第5の画像を生成する場合に比べて、より高解像度な第5の画像を生成することができる。これは、第1の画像に存在しない物体の情報を、同一物体の情報を有する第2の画像から補うことができるためである。
【0035】
本実施例によれば、以下の効果を得ることができる。第1の機械学習モデルは、該第1の機械学習モデルが学習した画像サイズ(第2のサイズ)に基づいて制限した第3の画像と第4の画像のサイズ(第1のサイズ)で高精度に第1動きベクトルを生成することができる。本実施例では、高精度な第1動きベクトルを用いることで、第2の機械学習モデルの内部で第2の画像を第1の画像相当の画像になるように(第2の画像の各画素を第1の画像の対応する画素の位置に合わせるように)正確に位置合わせをすることができる。このため、第2の画像が有する物体の情報をより高精度に集約することができる。これは特に、第2の機械学習モデルの受容野が小さい場合に有効である。そして本実施例は、第2のサイズに基づいて制限されない第1の画像と第2の画像のサイズ(第3のサイズ)に対して有効である。
【0036】
本実施例では、第1の画像に加え、第1の画像と時間的に隣接する第2の画像を用いて第1の画像を高解像化した第5の画像を生成する例について説明するが、より好ましくは、第1の画像と時間的に近接するより多くの画像を用いる方がよい。これにより、第1の画像に存在しない物体の情報をより多くの画像から補うことができ、より高解像度な第5の画像を生成できる。
【0037】
図3は、実施例1における画像処理システム200の構成を示している。
図4は、画像処理システム200の外観を示している。画像処理システム200は、学習装置201、撮像装置202およびネットワーク203を有する。学習装置201と撮像装置202は、互いに有線または無線のネットワーク203で接続されている。
【0038】
学習装置201は、パーソナルコンピュータ等のコンピュータにより構成され、記憶部211、取得部212、生成部213および更新部214を有し、プログラムに従って動作して機械学習モデルのウエイトを決定する。
【0039】
撮像装置202は、光学系221、撮像素子222、画像処理装置としての画像推定部223、記憶部224、記録媒体225、表示部226およびシステムコントローラ227を有する。光学系221は、物体が存在する空間から入射した光を集光して物体像を形成する。光学系221は、必要に応じてズーム、絞りおよびオートフォーカス等の機能を有する。撮像素子222は、光学系221により形成された物体像を電気信号に変換することで(つまりは光学系221を通して物体を撮像することで)、画像データとしての撮像動画を生成する。撮像素子222は、CCD(Charge Coupled Device)センサやCMOS(Complementary Metal-Oxide Semiconductor)センサ等により構成される。
【0040】
画像推定部223は、CPUやMPU等のコンピュータにより構成され、プログラムに従って動作することで、光学系221と撮像素子222とにより生成された撮像動画を高解像化する。そのために撮像動画を構成するフレーム画像の一部である第1の画像と第2の画像のそれぞれを縮小した第3の画像と第4の画像とに基づいて、第1の機械学習モデルを用いて第1の動きベクトルを生成する。さらに画像推定部223は、第1の動きベクトルを拡大した第2の動きベクトルと、第1の画像と、第2の画像とに基づいて、第2の機械学習モデルを用いて第5の画像を生成する。そして画像推定部223は、第5の画像を用いて、撮像動画を高解像化した高解像度動画を生成する。第5の画像の生成には、学習装置201で予め決定された機械学習モデルのウエイトが用いられる。ウエイトは、記憶部224に記憶されている。画像推定部223は、取得部223a、演算部223bおよび推定部223cを有する。画像推定部223で行われる処理の詳細については後述する。
【0041】
記録媒体225は、高解像度動画を記録する。表示部226は、ユーザから高解像度動画の出力に関する指示がなされた場合、高解像度動画を表示する。以上の動作は、システムコントローラ227によって制御される。
【0042】
本実施例で行われる処理は、第1の機械学習モデルの学習データの生成、第1の機械学習モデルのウエイトの学習(第1の学習フェーズ)、第2の機械学習モデルの学習データの生成、第2の機械学習モデルのウエイトの学習(第2の学習フェーズ)および学習済のウエイトを用いた第1の機械学習モデルと第2の機械学習モデルによる推定(推定フェーズ)に大別される。
【0043】
まず
図5のフローチャートを用いて、学習装置201により行われる第1の機械学習モデルの学習データを生成する処理について説明する。本実施例では、第1の機械学習モデルは正解データを必要としない教師なし学習によって学習される。学習データは第1の学習画像セットであり、第1の機械学習モデルの学習に使用される。次の第1の学習フェーズにおいて、第1の学習画像セットは第1の機械学習モデルに入力される。
【0044】
なお、本実施例では、第1の機械学習モデルの学習データの生成を学習装置201が行うが、他の装置が行ってもよい。
【0045】
ステップS101では、取得部212は、記憶部211から第1の画像セットを取得する。第1の画像セットは、1組以上の第1の画像ペアを含む。第1の画像ペアのうち一方の画像は、該第1の画像ペアの他方の画像が含む物体のうち少なくとも一部を一方の画像とは異なる位置に含む。第1の画像セット内の第1の画像ペアを構成する各画像は、第1の画像セットに含まれる他の画像と別の第1の画像ペアを構成してもよい。第1の画像セットは、撮像画像を含んでもよいし、CG(Computer Graphics)画像を含んでもよい。例えば、第1の画像セットは、撮像動画から抽出された複数のフレーム画像を含んでもよい。また第1の画像セットは、REDS(Realistic and Diverse Scenes)データセット等の公開データセットでもよい。
【0046】
また、第1の画像セットは、様々な物体を含む画像を含むことが好ましい。例えば、様々な強度と方向を有するエッジ、テクスチャ、グラデーションまたは平坦部を含む画像を含むことが好ましい。これにより、第3の画像と第4の画像が含む物体に対して、第1の機械学習モデルの頑健性を向上させることができる。
【0047】
さらに、第1の画像セットは、第3の画像と第4の画像が有する画質劣化を含む画像を含むことが好ましい。画質劣化とは、例えば、輪郭やエッジに含まれるジャギー、空間エイリアシング、圧縮アーティファクトおよびノイズである。これにより、第3の画像と第4の画像が有する画質劣化に対して、第1の機械学習モデルの頑健性を向上させることができる。
【0048】
加えて、第1の画像ペアの一方の画像は、該第1の画像ペアの他方の画像に含まれる複数の物体が互いに異なる動き量や動き方向に移動した画像であることが好ましい。すなわち、第1の画像ペア内の2つの画像は、動き量や動き方向が互いに異なる複数の物体を含むことが好ましい。さらに、第1の画像セットに含まれる複数の第1の画像ペア間でも、物体の異なる動き量や異なる動き方向を含むとよい。これにより、第3の画像と第4の画像の間に含まれる動きに対して、第1の機械学習モデルの頑健性を向上させることができる。
【0049】
次にステップS102では、生成部213は、第1の学習画像セットを生成する。そして本処理を終了する。第1の学習画像セットは、1組以上の第1の学習画像ペアを含む。第1の学習画像ペアは、それぞれ所定のサイズ(第2のサイズ)を有する画像のペアであり、本実施例では第2のサイズは128×128画素である。また第1の学習画像ペアの一方の画像は、第1の学習画像ペアの他方の画像が含む物体の少なくとも一部を一方の画像とは異なる位置に含む。
【0050】
本実施例では、第1の画像ペアの両画像から同一位置の第2のサイズを有する領域をクロップすることで、第1の学習画像ペアを生成する。ただし、第1の学習画像ペアは、第1の画像ペアの少なくとも一部を第2のサイズにリサイズすることで生成されてもよい。また本実施例では、第1の画像セットから第1の学習画像セットを生成するが、第1の画像セットのサイズが第2のサイズと同じであれば、第1の画像セットから第1の学習画像セットを生成する処理は不要である。
【0051】
次に、
図6のフローチャートを用いて、第1の学習フェーズとして、学習装置201により行われる第1の機械学習モデルのウエイトを学習する処理(学習方法)について説明する。前述したように本実施例では、第1の機械学習モデルは正解データを必要としない教師なし学習によって学習される。以下、第1の学習画像ペアの一方の画像を第1の学習画像、他方の画像を第2の学習画像という。第1の学習フェーズでは、学習装置201は、まず学習データである第1の学習画像セットに含まれる第1の学習画像ペアを第1の機械学習モデルに入力し、第1の学習画像ペア内の対応する画素の動きを示す第3の動きベクトルを得る。
【0052】
次に学習装置201は、第3の動きベクトルを用いて、第2の学習画像を第1の学習画像相当の画像になるように(第2の学習画像の各画素を第1の学習画像の対応する画素に近づけるように)位置合わせした画像(後述する第1のワープ画像)を生成する。そして第1の学習画像と第1のワープ画像との差分を小さくするように、第1の機械学習モデルのウエイトを決定する。すなわち、第1の機械学習モデルの学習を行う。
【0053】
ステップS201では、取得部212は、記憶部211から1組以上の第1の学習画像ペアを取得する。
【0054】
次にステップS202では、生成部213は、第1の学習画像ペアを第1の機械学習モデルに入力して第3の動きベクトルを生成する。第3の動きベクトルは、第1の学習画像ペア内、すなわち第1の学習画像と第2の学習画像間の対応する画素の動きをベクトルで表したものである。本実施例において、第3の動きベクトルは第1の学習画像ペアと同じサイズを有するが、第3の動きベクトルのサイズはこれに限定されない。本実施例において、第3の動きベクトルは、第1の学習画像の各画像についての第2の学習画像から第1の学習画像への移動を示すベクトルである。また本実施例において、第3の動きベクトルは2種類の2次元マップであり、各2次元マップは第1の学習画像の各画素の位置ごとに水平方向または垂直方向の移動量を示す。
【0055】
本実施例では、第1の機械学習モデルは複数の畳み込み層を有するCNNである。学習の初回において畳み込み層のウエイト(フィルタの係数とバイアス)は乱数により生成される。ただし、第1の機械学習モデルは、CNNに限らず、GANやRNN等の他の機械学習モデルであってもよい。
【0056】
次にステップS203では、生成部213は、第2の学習画像と第3の動きベクトルを用いて第1のワープ画像を生成する。第1のワープ画像は、第2の学習画像の画素を第3の動きベクトルを用いて移動させることで、第2の学習画像を第1の学習画像相当の画像になるように位置合わせした画像である。
【0057】
生成部213は、nearest neighbor補間、bilinear補間、bicubic補間等の公知の補間方法(補間処理)を用いて、第2の学習画像の画素値から第1のワープ画像の各画素値を算出する。この際、第1のワープ画像の画素値を算出するために用いる補間方法は、推定フェーズにおいて第2の機械学習モデルの内部で第2の画像を第1の画像相当の画像になるように位置合わせする際に用いる補間方法と同じであることが好ましい。これにより、第2の機械学習モデルがより高精度な第5の画像を生成するのに適した第1の機械学習モデルの学習を行うことが可能である。
【0058】
本実施例では、第1の学習画像の各画素についての第2の学習画像から第1の学習画像への移動を示す第3の動きベクトルを用いて、第2の学習画像を第1の学習画像相当の画像になるように位置合わせするbackward warpingを採用している。ただし、第3の動きベクトルを用いて、第1の学習画像を第2の学習画像相当の画像になるように位置合わせするforward warpingを行ってもよい。本実施例では、推定フェーズの第2の機械学習モデルにおいてbackward warpingを採用するため、ステップS203においてもbackward warpingを採用している。すなわち、推定フェーズの第2の機械学習モデルにおいて採用する位置合わせ方法と同じ位置合わせ方法を採用することが好ましい。これにより、第2の機械学習モデルがより高精度な第5の画像を生成するのに適した第1の機械学習モデルの学習を行うことが可能である。
【0059】
次にステップS204では、更新部214は、第1の学習画像と第1のワープ画像との誤差に基づいて、第1の機械学習モデルのウエイトを更新(決定)する。本実施例では、第1の学習画像と第1のワープ画像における画素値の差のシャルボニエロス(Charbonnier loss)をロス関数とする。ただし、ロス関数はこれに限定されない。更新部214は、ステップS201にて複数組の第1の学習画像ペアを取得した場合は、各組に対してロス関数の値を算出する。そして更新部214は、算出されたロス関数の値から、誤差逆伝搬法(Backpropagation)等によってウエイトの更新を行う。
【0060】
次にステップS205では、更新部214は、第1の機械学習モデルの学習が完了したか否かを判定する。学習の完了は、ウエイトの更新の反復回数が所定回数に達したことや、更新時のウエイトの変化量が所定値より小さい等によって判定することができる。ウエイトの学習が完了していないと判定された場合は処理はステップS201へ戻り、取得部212は、1組以上の新たな第1の学習画像ペアを取得する。ウエイトの学習が完了したと判定された場合は、更新部214は、学習を終了し、ウエイトの情報を記憶部211に記憶する。
【0061】
なお、本実施例では、第1の機械学習モデルは教師なし学習によって学習されるが、第1の機械学習モデルの学習方法はこれによらない。例えば、第1の学習画像ペアに対応する第3の動きベクトルの正解データを用いる教師あり学習によって学習されてもよい。
【0062】
図7のフローチャートは、学習装置201において行われる第2の機械学習モデルの学習データを生成する処理を示している。学習データは、第2の正解画像セットと第2の学習画像セットであり、第2の機械学習モデルの学習に使用される。次の第2の学習フェーズでは、第2の機械学習モデルに第2の学習画像セットを入力することで得られる第6の画像と第2の正解画像セットとの差分を小さくするように、第2の機械学習モデルのウエイトを決定する。すなわち、第2の機械学習モデルの学習を行う。
【0063】
なお、本実施例では第2の機械学習モデルの学習データの生成を学習装置201が行うが、他の装置が行ってもよい。
【0064】
ステップS301では、取得部212は、記憶部211から第1の正解画像セットを取得する。第1の正解画像セットは、1つ以上の第1の正解画像からなる。第1の正解画像セットは、撮像画像を含んでもよいし、CG画像を含んでもよい。例えば、第1の正解画像セットは撮像動画から抽出されたフレーム画像を含んでもよい。また、第1の正解画像セットは、REDSデータセット等の公開データセットでもよい。
【0065】
さらに第1の正解画像セットは、様々な物体を含む画像を含むことが好ましい。例えば、様々な強度と方向を有するエッジ、テクスチャ、グラデーションまたは平坦部を含む画像を含むことが好ましい。これにより、第1の画像と第2の画像が含む物体に対して、第2の機械学習モデルの頑健性を向上させることができる。
【0066】
加えて、第1の正解画像は十分に高周波成分を有することが好ましい。例えば、第1の学習画像が撮像画像である場合、第1の正解画像が光学系221よりも高性能な光学系での撮像画像や、該光学系での撮像動画から抽出されたフレーム画像であるとよい。また、これらの撮像画像やフレーム画像を縮小した画像であるとよい。これにより、第2の機械学習モデルは十分に高周波成分を含んで解像感の高い第5の画像を生成することができる。
【0067】
次にステップS302では、取得部212は、記憶部211から第2の画像セットを取得する。第2の画像セットは、1組以上の第2の画像ペアを含む。第2の画像ペアのサイズは第1の正解画像のサイズより小さく、第2の画像ペアの一方の画像は第1の正解画像と同一物体を含む画像である。すなわち、第2の画像ペアの一方の画像は、第1の正解画像と同一物体を含み、第1の正解画像よりもサンプリングピッチが大きい画像である。また、第2の画像ペアのサイズと第1の正解画像のサイズとの比は、推定フェーズにおける第1の画像と第2の画像のサイズと第5の画像のサイズとの比と等しい。
【0068】
第2の画像ペアの一方の画像は、該第2の画像ペアの他方の画像が含む物体の少なくとも一部を一方の画像とは異なる位置に含む。第2の画像セット内の第2の画像ペアを構成する各画像は、第2の画像セットに含まれる他の画像と別の第2の画像ペアを構成してもよい。第2の画像セットは、撮像画像を含んでもよいし、CG画像を含んでもよい。また第2の画像セットは、撮像動画から抽出された複数のフレーム画像を含んでもよい。また第2の画像セットは、REDSデータセット等の公開データセットでもよい。
【0069】
さらに第2の画像セットは、第1の画像と第2の画像が有する画質劣化を含む画像を含むことが好ましい。画質劣化は、前述した第3および第4の画像の画質劣化と同様であるこれにより、第1の画像と第2の画像が有する画質劣化に対して、第2の機械学習モデルの頑健性を向上させることができる。
【0070】
加えて、第2の画像ペアの一方の画像は、該第2の画像ペアの他方の画像に含まれる複数の物体が互いに異なる動き量や動き方向に移動した画像であることが好ましい。すなわち、第2の画像ペア内の各画像は、動き量や動き方向が互いに異なる複数の物体を含むことが好ましい。さらに、第2の画像セットに含まれる複数の第2の画像ペア間でも、物体の異なる動き量や異なる動き方向を含むとよい。これにより、第1の画像と第2の画像の間に含まれる動きに対して、第2の機械学習モデルの頑健性を向上させることができる。
【0071】
また、第1の正解画像セットを用いて、第2の画像セットを生成してもよい。例えば、第1の正解画像セットをダウンスケールし、第1の画像と第2の画像が有する画質劣化を与えることで、第2の画像セットを生成してもよい。また、別の画像セットを用いて、第1の正解画像セットと第2の画像セットをそれぞれ生成してもよい。
【0072】
次にステップS303では、生成部213は、第2の正解画像セットと第2の学習画像セットを生成する。そして本処理を終了する。第2の正解画像セットは1つ以上の第2の正解画像を含み、第2の学習画像セットは1組以上の第2の学習画像ペアを含む。第2の正解画像は、所定のサイズを有する画像であり、本実施例では256×256画素である。また第2の学習画像ペアは、所定のサイズ(第4のサイズ)を有する画像ペアであり、本実施例では第4のサイズは128×128画素である。第4のサイズは第2の正解画像のサイズより小さい。第2の学習画像ペアの一方の画像は、第2の正解画像と同一物体を含む画像である。すなわち、第2の学習画像ペアの一方の画像は、第2の正解画像と同一物体を含み、第2の正解画像よりもサンプリングピッチが大きい画像である。また、第2の学習画像ペアのサイズと第2の正解画像のサイズとの比は、推定フェーズにおける第1の画像と第2の画像のサイズと第5の画像のサイズとの比と等しい。
【0073】
また、第2の学習画像ペアの一方の画像は、該第2の学習画像ペアの他方の画像が含む物体の少なくとも一部を一方の画像とは異なる位置に含む。本実施例では、第1の正解画像から第2の正解画像のうち所定のサイズを有する領域をクロップすることで、第2の正解画像を生成する。また、第2の画像ペアの両画像から同一位置の第4のサイズを有する領域をクロップすることで、第2の学習画像ペアを生成する。第2の学習画像セットは、第1の機械学習モデルの学習に用いる第1の学習画像セットと少なくとも一部が共通していてもよい。
【0074】
なお、本実施例では、第1の正解画像セットから第2の正解画像セットを生成したが、第1の正解画像セットが必要な画像サイズと同じであれば、第1の正解画像セットから第2の正解画像セットを生成する処理は不要である。また、第2の画像セットから第2の学習画像セットを生成したが、第2の画像セットのサイズが必要な画像サイズと同じであれば、第2の画像セットから第2の学習画像セットを生成する処理は不要である。
【0075】
図8のフローチャートは、第2の学習フェーズとして、学習装置201において行われる第2の機械学習モデルのウエイトを学習する処理(学習方法)を示している。以下、第2の学習画像ペアの一方の画像を第3の学習画像、他方の画像を第4の学習画像という。この処理では、まず学習データである第2の学習画像セットに含まれる第2の学習画像ペアを第1の学習フェーズで学習された第1の機械学習モデルに入力し、第2の学習画像ペア内の対応する画素の動きを示す第4の動きベクトルを得る。次に第2の機械学習モデルにおいて、第3の学習画像と、第4の学習画像と、第4の動きベクトルを用いて第4の学習画像を第3の学習画像相当の画像になるように位置合わせした画像(後述する第2のワープ画像)とを用いて、第6の画像を生成する。最後に、第6の画像と第2の正解画像との差分を小さくするように第2の機械学習モデルのウエイトを決定する。
【0076】
ステップS401では、取得部212は、記憶部211から、第1の機械学習モデルのウエイトの情報と、1つ以上の第2の正解画像と、1組以上の第2の学習画像ペアとを取得する。第1の機械学習モデルのウエイトの情報は予め記憶部211から読み出され、記憶部224に記憶されている。
【0077】
次にステップS402では、生成部213は、第2の学習画像ペア(第3の学習画像と第4の学習画像)を学習済みの第1の機械学習モデルに入力して第4の動きベクトルを生成する。学習済みの第1の機械学習モデルとは、第1の学習フェーズでの学習によりウエイトを決定された第1の機械学習モデルである。第4の動きベクトルは、第2の学習画像ペア内、すなわち第3の学習画像と第4の学習画像の間の対応する画素の動きをベクトルで表したものである。本実施例において、第4の動きベクトルは第2の学習画像ペアと同じサイズを有するが、第4の動きベクトルのサイズはこれに限定されない。本実施例において、第4の動きベクトルは、第3の学習画像の各画像についての第4の学習画像から第3の学習画像への移動を示すベクトルである。また本実施例において、第4の動きベクトルは2種類の2次元マップであり、各2次元マップは第3の学習画像の各画素の位置ごとに水平方向または垂直方向の移動量を示す。
【0078】
次にステップS403では、生成部213は、第2の学習画像ペアと第4の動きベクトルを第2の機械学習モデルに入力して第6の画像を生成する。このとき、まず生成部213は、第2の機械学習モデルの内部で、第4の学習画像と第4の動きベクトルとを用いて第2のワープ画像を生成する。第2のワープ画像は、第4の学習画像の画素を第4の動きベクトルを用いて移動させることで、第4の学習画像を第3の学習画像相当の画像になるように位置合わせした画像である。生成部213は、nearest neighbor補間、bilinear補間、bicubic補間等の公知の補間方法を用いて、第4の学習画像の画素値から第2のワープ画像の各画素値を算出する。
【0079】
なお、第2のワープ画像の画素値を算出するために用いる補間方法は、推定フェーズにおいて第2の機械学習モデルの内部で第2の画像を第1の画像相当の画像になるように位置合わせした際に用いる補間方法と同じであることが好ましい。第2の学習フェーズと推定フェーズで第2の機械学習モデルにおける画像の補間方法を揃えることで、より高精度な第5の画像を生成する第2の機械学習モデルを学習できる。
【0080】
また、第2の機械学習モデルの内部で、第2のワープ画像に基づいて第2のワープ画像の各画素を第3の学習画像の対応する画素に対してさらに正確に位置合わせした画像を生成して、これを新たな第2のワープ画像とすることが好ましい。例えば、第3の学習画像と第2のワープ画像とをCNNに入力して、第2のワープ画像の各画素の第3の学習画像の対応する画素からのずれ量を算出し、そのずれ量に応じて第2のワープ画像をさらに補正することが好ましい。推定フェーズにおいても第2の機械学習モデルが同様の処理を行うことで、第2の画像を第1の画像相当の画像になるようにより正確に位置合わせすることができるため、より高精度な第5の画像を生成することができる。
【0081】
本実施例では、第3の学習画像の各画素についての第4の学習画像から第3の学習画像への移動を示す第4の動きベクトルを用いて、第4の学習画像を第3の学習画像相当の画像になるように位置合わせするbackward warpingを採用している。ただし、第4の学習画像の各画素についての第3の学習画像から第4の学習画像への移動を示す第4の動きベクトルを用いて、第4の学習画像を第3の学習画像相当の画像になるように位置合わせするforward warpingを行ってもよい。本実施例では、推定フェーズの第2の機械学習モデルにおいてbackward warpingを採用しているため、S403においてもbackward warpingを採用している。このように、第2の学習フェーズと推定フェーズとで第2の機械学習モデルにおける画像の位置合わせの方法を揃えることで、より高精度な第5の画像を生成する第2の機械学習モデルを学習できる。
【0082】
次に生成部213は、第2の機械学習モデルの内部で、第3の学習画像と第2のワープ画像とを用いて第6の画像を生成する。第3の学習画像と第2のワープ画像は、第2の機械学習モデルが含む連結層においてチャンネル方向に連結される。第6の画像は、第3の学習画像がアップスケールされた画像である。
【0083】
本実施例では、第2の機械学習モデルは複数の畳み込み層を有するCNNである。学習の初回において畳み込み層のウエイト(フィルタの係数とバイアス)は乱数により生成される。ただし、第2の機械学習モデルは、CNNに限らず、GANやRNN等の他の機械学習モデルであってもよい。
【0084】
また、第2の機械学習モデルの内部で、第3の学習画像と第2のワープ画像の第6の画像の生成に対する寄与度を決定し、その寄与度に応じて第6の画像を生成することが好ましい。この寄与度は、第3の学習画像と第2のワープ画像の画素ごとに決定されることが好ましい。例えば、第3の学習画像と第2のワープ画像をCNNに入力して、第3の学習画像と第2のワープ画像の各画素について、第6の画像の生成に対する寄与度を決定することが好ましい。推定フェーズにおいても第2の機械学習モデルが同様の処理を行うことで、第1の画像と第2の画像のそれぞれに対して寄与度が調整されるため、より高精度な第5の画像を生成することができる。
【0085】
また本実施例では、第4の学習画像を第3の学習画像相当の画像になるように位置合わせした第2のワープ画像を用いて第6の画像を生成した。これに対して、第4の学習画像を位置合わせする工程ではなく、第4の学習画像の特徴量を位置合わせする工程を経て、第6の画像を生成してもよい。より具体的には、第6の画像を生成する過程で、例えば、第4の学習画像の特徴量を第4の動きベクトルを用いて第3の学習画像の特徴量相当になるように位置合わせしてもよい。
【0086】
次にステップS404では、更新部214は、第6の画像と第2の正解画像との誤差に基づいて、第2の機械学習モデルのウエイトを更新する。本実施例では、第6の画像と第2の正解画像における画素値の差のシャルボニエロスをロス関数とする。ただし、ロス関数はこれに限定されない。更新部214は、ステップS401にて複数組の第2の学習画像ペアを取得している場合は、各組に対してロス関数の値を算出する。更新部214は、算出されたロス関数の値から、誤差逆伝搬法等によってウエイトの更新を行う。
【0087】
次にステップS405において、更新部214は、第2の機械学習モデルの学習が完了したか否かを判定する。学習の完了は、ウエイトの更新の反復回数が所定回数に達したことや、更新時のウエイトの変化量が所定値より小さいこと等で判定することができる。ウエイトの学習が完了していないと判定された場合は処理はステップS401へ戻り、取得部212は、1組以上の新たな第2の学習画像ペアおよび第2の正解画像を取得する。ウエイトの学習が完了したと判定された場合は、更新部214は、学習を終了し、ウエイトの情報を記憶部211に記憶する。
【0088】
本実施例では、第1の学習フェーズにおいて第1の機械学習モデルの学習を行った後、第2の学習フェーズにおいて第2の機械学習モデルの学習を行う。ただし、これに限らず、初めから第1の機械学習モデルと第2の機械学習モデルを共同で学習してもよい。より具体的には、第1の学習フェーズを行うことなく、ウエイトが決定されていない第1の機械学習モデルを用いて第2の学習フェーズを行う。そして、ステップS404において、第6の画像と第2の正解画像との誤差に基づいて、第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトとを同時に更新してもよい。また、第6の画像と第2の正解画像との誤差および第3の学習画像と第2のワープ画像との誤差に基づいて、第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトとを同時に更新してもよい。推定フェーズでは、第1の機械学習モデルと第2の機械学習モデルとを共同で用いることで、第1の画像と第2の画像から第5の画像を生成する。このため、第1の機械学習モデルと第2の機械学習モデルとを共同で学習することで、より高精度な第5の画像を生成するように第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトを最適化することができる。
【0089】
ただし、第1の学習フェーズと第2の学習フェーズを行った後、さらに第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトと共同で更新する第3の学習フェーズを設けてもよい。これにより、より高精度な第5の画像を生成するよう第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトを最適化することができるとともに、各機械学習モデルの学習を収束させ易くすることができる。
【0090】
図1は、撮像装置202の画像推定部223において行われる学習済の第1の機械学習モデルと学習済の第2の機械学習モデルとによる推定の処理(推定フェーズ)の流れを示している。学習済の機械学習モデルとは、学習フェーズでの学習によりウエイトを決定された機械学習モデルである。
【0091】
推定フェーズでは、画像推定部223は、まず元動画301から第1の元画像302と第2の元画像303を抽出する。次に第1の元画像302と第2の元画像303をそれぞれ分割して第1の画像304と第2の画像305を生成する。次に第1の画像304と第2の画像305をそれぞれ縮小して、第3の画像306と第4の画像307を生成する。
【0092】
次に画像推定部223は、第3の画像306と第4の画像307を第1の機械学習モデルに入力して第1の動きベクトル308を生成する。次に第1の動きベクトル308を拡大して第2の動きベクトル309を生成する。次に第1の画像304と第2の画像305と第2の動きベクトル309とを第2の機械学習モデルに入力して第3の画像310を生成する。続いて画像推定部223は、第5の画像310を結合して、目的画像311を生成する。最後に画像推定部223は、、目的画像311から目的動画312を生成する。
【0093】
第5の画像310は第1の画像304がアップスケールされたものであり、目的画像311は第1の元画像302がアップスケールされたものである。また、目的動画312は元動画301がアップスケールされたものである。
【0094】
図9のフローチャートは、推定フェーズとして、画像推定部223により行われる処理(画像処理方法)を示している。まずステップS501において、取得部223aは、元動画301と、第1の機械学習モデルのウエイトの情報と、第2の機械学習モデルのウエイトの情報とを取得する。本実施例において元動画301は、光学系221と撮像素子222とにより生成された撮像動画である。ただし、取得する元動画301は撮像動画の一部でもよい。例えば、撮像動画を空間方向または時間方向にクロップした動画でもよいし、撮像動画から一定間隔でフレーム画像を取り出すことで生成された、撮像動画よりフレームレートが低い動画でもよい。また元動画301は、グレースケールで表現されても、複数のチャンネル成分を有してもよい。第1の機械学習モデルのウエイトの情報と第2の機械学習モデルのウエイトの情報は、予め記憶部211から読み出され、記憶部224に記憶されている。
【0095】
次にステップS502では、演算部223bは、元動画301から第1の元画像302と第2の元画像303を抽出する。第1の元画像302と第2の元画像303は、元動画301を構成するフレーム画像である。第1の元画像302は、ステップS509において生成される目的画像311に対応して、アップスケールされる対象の画像である。本実施例では、
図1に示すように第2の元画像303は元動画301において第1の元画像302に隣接するフレーム画像であるが、必ずしも隣接するフレーム画像でなくてもよい。ただし、ステップS503において生成する第1の画像304と第2の画像305において、第2の画像305が第1の画像304に含まれる物体の少なくとも一部を含むように第2の元画像303を選択する必要がある。
【0096】
次にステップS503では、演算部223bは、第1の元画像302と第2の元画像303とをそれぞれ分割して第1の画像304と第2の画像305とを生成する。第1の画像304と第2の画像305はともに同じ第3のサイズの画像である。すなわち、第1の画像304と第2の画像305はそれぞれ、第1の元画像302と第2の元画像303の同一位置から第3のサイズの領域がクロップされた画像である。本実施例において、第3のサイズは256×256画素である。第1の元画像302を複数の第1の画像304同士が共通の領域を含むよう分割することが好ましい。この理由については後のステップS509にて説明する。なお、第1の元画像302と第2の元画像303のサイズが第3のサイズと同じであれば、ステップS503の分割処理は不要であり、これに付随してステップS509の結合処理も不要である。
【0097】
次にステップS504では、演算部223bは、第1の画像304と第2の画像305をそれぞれ縮小して、第3の画像306と第4の画像307とを生成する。第1の画像304から第3の画像306への縮小および第2の画像305から第4の画像307への縮小は、画像から画像への変換を行う同一の縮小処理を用いて行われる。本実施例での縮小処理は、複数画素から1画素のみを抽出するダウンサンプルである。第3の画像306と第4の画像307はともに同じ第1のサイズの画像である。本実施例において、第1のサイズは128×128画素である。このため、第1の画像304から第3の画像306への縮小倍率および第2の画像305から第4の画像307への縮小倍率はともに、画像の幅方向に2倍、高さ方向に2倍である。
【0098】
次にステップS505では、推定部223cは、第3の画像306と第4の画像307を第1の機械学習モデルに入力して第1の動きベクトル308を生成する。第1の動きベクトル308は、第3の画像306と第4の画像307の間の対応する画素の動きをベクトルで表したものである。本実施例において、第1の動きベクトル308は、第3の画像306および第4の画像307と同じ第1のサイズ(128×128画素)を有するが、第1の動きベクトル308のサイズはこれに限定されない。本実施例において、第1の動きベクトル308は、第3の画像306の各画像についての第4の画像307から第3の画像306への移動を示すベクトルである。また、本実施例において、第3の動きベクトルは2種類の2次元マップであり、各2次元マップは第3の画像306の各画素の位置ごとに水平方向または垂直方向の移動量を示す。
【0099】
次にステップS506において、演算部223bは、第1の動きベクトル308を拡大して第2の動きベクトル309を生成する。第1の動きベクトル308の拡大処理は、第1の機械学習モデルとは独立した処理である。この拡大処理は、第1の機械学習モデルと独立していれば、機械学習モデルを用いる拡大処理であっても機械学習モデルを用いない拡大処理であってもよい。本実施例において拡大処理は、bicubic補間を用いる処理である。より具体的には、拡大処理として、第1の動きベクトル308をbicubic補間で拡大した動きベクトルに対応する各画素に対して、拡大倍率(本実施例では、後述の通り2倍)を乗算することで第2の動きベクトル309を生成する。また本実施例において、この拡大処理における拡大倍率は、S504の縮小処理における縮小倍率と同一であり、マップの幅方向に2倍、高さ方向に2倍である。すなわち、第2の動きベクトルのサイズは256×256画素である。本実施例において、第2の動きベクトル309は、第1の画像304と第2の画像305と同一のサイズを有する。
【0100】
次にステップS507では、推定部223cは、第1の画像304と第2の画像305と第2の動きベクトル309とを第2の機械学習モデルに入力して、第5の画像310を生成する。ここでは推定部223cは、まず第2の機械学習モデルの内部で第2の画像305と第2の動きベクトル309を用いて、第3のワープ画像を生成する。第3のワープ画像は、第2の画像305の画素を第2の動きベクトル309を用いて移動させることで、第2の画像305を第1の画像304相当の画像になるように位置合わせした画像である。この際、推定部223cは、nearest neighbor補間、bilinear補間およびbicubic補間等の公知の補間方法を用いて、第2の画像305の画素値から第3のワープ画像の各画素値を算出する。なお、本実施例では、推定部223cは、ステップS505において第3の画像306の各画像についての第4の画像307から第3の画像306への移動を示す第1の動きベクトル308を生成する。この際、第1の動きベクトル308を拡大した第2の動きベクトル309を用いて、第2の画像305を第1の画像304相当の画像になるように位置合わせするbackward warpingを採用する。
【0101】
次に推定部223cは、第2の機械学習モデルの内部で、第1の画像304と第3のワープ画像とを用いて第5の画像310を生成する。第1の画像304と第3のワープ画像は、第2の機械学習モデルが含む連結層においてチャンネル方向に連結される。第5の画像310は、第1の画像304がアップスケールされた画像である。本実施例における第5の画像310は、第1の画像304が幅方向に2倍、高さ方向に2倍だけアップスケールされた画像であり、512画素×512画素を有する。
【0102】
次にステップS508では、演算部223bは、全ての第1の画像304と第2の画像305の組について、第5の画像310の生成を完了したか否かを判定する。全ての第5の画像310の生成が完了していないと判定された場合は処理はステップS504へ戻り、演算部223bは、新たな第1の画像304と第2の画像305の組から第5の画像310を生成する。全ての第5の画像310の生成が完了したと判定された場合は、処理はステップS509に進む。
【0103】
ステップS509では、演算部223bは、第5の画像310を結合して目的画像311を生成する。ここでは、目的画像311が第1の元画像302がアップスケールされた画像となるように第5の画像310を結合して目的画像311を生成する。本実施例では、目的画像311は第1の元画像302が幅方向に2倍、高さ方向に2倍だけアップスケールされた画像である。
【0104】
先のステップS503では第1の元画像302を複数の第1の画像304同士が共通の領域を含むように分割することが好ましいと説明した。これにより、ステップS509にて複数の第5の画像310同士が含む共通の領域に後処理を加えて、目的画像311を生成することができる。ステップS503にて第1の画像304同士が共通の領域を含まないように分割された場合は、目的画像311上の第5の画像310同士が結合された部分にタイル状のアーティファクトが発生するおそれがある。このため、第1の画像304同士が共通の領域を含むよう分割し、第5の画像310同士が含む共通の領域では、例えば複数の第5の画像の加重平均に基づいて目的画像311を生成することで、アーティファクトを低減することができる。
【0105】
また、第5の画像310内の周辺領域では、中心領域に比べてステップS507での生成の精度が低いおそれがある。これは、第5の画像310の周辺領域では、中心領域に比べて、考慮される第1の画像304と第2の画像305の画素が少ないためである。したがって、第1の画像304同士が共通の領域を含むよう分割したうえで、例えば目的画像311を複数の第5の画像310の中心領域で生成することで、より高精度な目的画像311を生成することができる。
【0106】
次にステップS510では、演算部223bは、全ての第1の元画像302と第2の元画像303の組について目的画像311の生成が完了したか否かを判定する。全ての目的画像311の生成が完了していないと判定された場合は処理はステップS503へ戻り、演算部223bは、新たな第1の元画像302と第2の元画像303の組から目的画像311を生成する。全ての目的画像311の生成が完了したと判定された場合は、処理はステップS511に進む。
【0107】
ステップS511では、演算部223bは、目的画像311から目的動画312を生成する。具体的には、複数の目的画像311のそれぞれが目的動画312のフレーム画像となるように目的動画312を生成する。そして本処理を終了する。本実施例において、目的動画312は元動画301が幅方向に2倍、高さ方向に2倍だけアップスケールされた動画である。
【0108】
推定フェーズと学習フェーズにおける画像サイズについて説明する。推定フェーズにおいて第1の機械学習モデルに入力される第3の画像306と第4の画像307はともに第1のサイズを有する。第1の学習フェーズにおいて、第1の機械学習モデルに入力される第1の学習画像セットは第2のサイズを有する。本実施例において、第1の機械学習モデル自体や、第3の画像306と第4の画像307にかからず高精度な第1の動きベクトル208を生成するには、第1のサイズを第2のサイズ以下とすることが好ましい。なお、本実施例では、第1のサイズおよび第2のサイズはいずれも、128×128画素である。
【0109】
また、第2の学習フェーズにおいて、第2の機械学習モデルに入力される第2の学習画像セットは第4のサイズを有する。第2の学習フェーズにおいては、第2の学習画像セットが学習済の第1の機械学習モデルに入力され、第3の動きベクトルが生成される。推定フェーズのみならず第2の学習フェーズにおいても、第1の機械学習モデルからの出力である第3の動きベクトルを高精度に生成する必要がある。第1の機械学習モデル自体や第2の学習画像セットに拘わらず高精度な第3の動きベクトルを生成するには、第4のサイズを第2のサイズ以下することが好ましい。
【0110】
本実施例では、第4のサイズは第2のサイズと等しく、128×128画素である。このように第4のサイズはできるだけ大きい方がよい。これは、第4のサイズが大きいほど、第2の機械学習モデルがより大きなサイズの第3の画像306と第4の画像307に対して高精度な第5の画像310を生成することができるためである。
【0111】
また推定フェーズにおいて、第2の機械学習モデルに入力される第1の画像304と第2の画像305はともに第3のサイズである。第3のサイズは、第1の機械学習モデルが学習した画像サイズである第2のサイズに基づいて制限されることはない。すなわち、第2のサイズと等しい第4のサイズによっても制限されることはない。このため、第3のサイズは第4のサイズ以上であってもよい。これは各実施例の効果の1つである。なお、本実施例では第3のサイズは第4のサイズ(128×128画素)以上の256×256画素である。
【0112】
本実施例において第3のサイズを第4のサイズ以上にすることができる効果について説明する。学習時の計算リソースによって第4のサイズが制限される場合でも、推定フェーズとって最適な第3のサイズを設定できる自由度が向上する。例えば、ステップS507における第2の機械学習モデルでの処理速度とステップS509における第5の画像310からの目的画像311の生成速度とに応じて、最適な第3のサイズを設定する自由度が向上する。すなわち、推定フェーズにおける処理速度の向上のために最適な第3のサイズを設定することができる。
【0113】
また本実施例では、同じ第4のサイズの第1の画像304と第2の画像305を処理するための学習時の計算リソースを、従来に比べて低減することができる。例えば、256×256画素の第3の画像306と第4の画像307から第5の画像310を生成する場合、従来では第2の機械学習モデルを256×256画素の画像サイズで学習する必要がある。一方、本実施例では、128×128画素の第4のサイズで学習することができるため、学習時の計算メモリを従来の1/4程度に低減することができる。
【0114】
以上のように、本実施例によれば、動きベクトルを生成する機械学習モデルが学習した画像サイズに基づいて制限されることなく、高精度なアップスケールタスクを実現することが可能となる。
実施例2は、動画のフレームレートを向上させるアップフレームレートを目的とする。具体的には低フレームレートの動画に含まれる各フレーム画像の間に新たなフレーム画像を生成し、元のフレーム画像と新たに生成されたフレーム画像を組み合わせて高フレームレートの動画を生成する。より具体的には、低フレームレートの動画に含まれるフレーム画像の少なくとも一部である第1の画像と、該フレーム画像に隣接するフレーム画像の少なくとも一部である第2の画像とをそれぞれ縮小して第3の画像と第4の画像を生成する。第3の画像と第4の画像とに基づいて、第1の機械学習モデルを用いて第1の動きベクトルを生成する。第1の動きベクトルを拡大した第2の動きベクトルと、第1の画像と、第2の画像とに基づいて、第2の機械学習モデルを用いて第5の画像を生成する。第5の画像は、第1の画像が対応するフレーム画像と第2の画像が対応するフレーム画像間に新たに生成されるフレーム画像の少なくとも一部である。
本実施例では、例として、低フレームレートの元動画に含まれる連続する2つのフレーム画像の中央に新たな1つのフレーム画像を生成することで高フレームレートの動画を生成する。すなわち、生成される動画は元動画に対して、約2倍のフレームレートを有する。第5の画像は、時間的に連続する第1の画像と第2の画像の中央に位置する画像である。ただしこれに限定されず、第1の画像と第2の画像間に新たな複数の第5の画像を生成することで、よりフレームレートの高い動画を生成してもよい。また本実施例では、第1の画像と第2の画像とに基づいてその間に位置する第5の画像を生成するが、元動画に含まれる3つ以上のフレーム画像の少なくとも一部である3つ以上の画像に基づいて第5の画像を生成してもよい。
本実施例で行う、第1の画像と第2の画像とに基づいてその間に位置する第5の画像を生成するアップフレームレートタスクは、第1の画像の画素値と第2の画像の画素値との平均または加重平均に基づいて第5の画像を生成することが可能である。このタスクにおいて動きベクトルを用いることで、第1の画像と第2の画像の間の物体の動きに適応して、より高精度な第5の画像を生成することができる。
一方、動きベクトルの生成精度に第5の画像の生成精度が強く依存する。動きベクトルの生成精度が低い場合は、本意ではない第1の画像や第2の画像の画素から第5の画像の画素を生成することとなるため、第5の画像にアーティファクトが出現する。これに対して、本実施例で用いる第1の機械学習モデルは、第1の機械学習モデルが学習した画像サイズ(第2のサイズ)に基づいて制限した第3の画像と第4の画像のサイズ(第1のサイズ)で、高精度に第1の動きベクトルを生成することができる。高精度な第1の動きベクトルを用いることで、アーティファクトが低減された第5の画像を生成することができる。本実施例では、第2のサイズに基づいて制限されない第1の画像と第2の画像のサイズ(第3のサイズ)に対して有効である。
学習装置401は、パーソナルコンピュータ等のコンピュータにより構成され、記憶部401a、取得部401b、生成部401cおよび更新部401dを有し、プログラムに従って動作して機械学習モデルのウエイトを決定する。
撮像装置402は、光学系402aと撮像素子402bを有する。光学系402aは、物体が存在する空間から入射した光を集光して物体像を形成する。光学系402aは、必要に応じてズーム、絞りおよびオートフォーカス等の機能を有する。撮像素子402bは、光学系402aにより形成された物体像を電気信号に変換し、画像データとしての撮像動画を生成する。
画像推定装置403は、記憶部403a、取得部403b、生成部403cおよび推定部403dを有する。画像推定装置403は、パーソナルコンピュータにより構成され、プログラムに従って動作して、光学系221と撮像素子222により生成された撮像動画をアップフレームレートする。このために画像推定装置403は、撮像動画のフレーム画像の一部である第1の画像と第2の画像をそれぞれ縮小した第3の画像と第4の画像とに基づいて、第1の機械学習モデルを用いて第1の動きベクトルを生成する。さらに画像推定装置403は、第1の動きベクトルを拡大した第2の動きベクトルと、第1の画像と、第2の画像とに基づいて、第2の機械学習モデルを用いて第5の画像を生成する。そして第5の画像を用いて、撮像動画をアップフレームレートした高フレームレート動画を生成する。
第5の画像の生成には、学習装置401であらかじめ決定されたウエイトが用いられる。記憶部403aは該ウエイトを記憶している。画像推定装置403で行われる処理の詳細については後述する。
高フレームレート動画は、表示装置404、記憶媒体405および出力装置406のうち少なくとも1つに出力される。表示装置404は、液晶ディスプレイやプロジェクタ等である。ユーザは表示装置404を介して、処理途中の画像を確認しながら編集作業等を行うことができる。記憶媒体405は、半導体メモリ、ハードディスクまたはネットワーク上のサーバ等であり、高フレームレート動画を保存する。出力装置405は、プリンタ等である。
本実施例で行われる処理も、実施例1と同様に、第1の機械学習モデルの学習データの生成、第1の機械学習モデルのウエイトの学習(第1の学習フェーズ)、第2の機械学習モデルの学習データの生成、第2の機械学習モデルのウエイトの学習(第2の学習フェーズ)および学習済のウエイトを用いた第1の機械学習モデルと第2の機械学習モデルによる推定(推定フェーズ)に大別される。
ステップS601では、取得部401bは、記憶部401aから第3の画像セットを取得する。第3の画像セットは、1組以上の第1の画像トリプレットを含む。第1の画像トリプレットは、同一物体を互い異なる位置に含む3つの画像により構成されている。第3の画像セット内の第1の画像トリプレットを構成する各画像は、第3の画像セットに含まれる他の画像と別の第1の画像トリプレットを構成してもよい。第3の画像セットは、撮像画像を含んでもよいし、CG画像を含んでもよい。例えば、第3の画像セットは撮像動画から抽出されたフレーム画像を含んでもよい。また第3の画像セットは、REDSデータセット等の公開データセットでもよい。
本実施例において、第3の画像セットは、最終的に生成したい高フレームレート動画と同じフレームレートを有する撮像動画から生成される。第1の画像トリプレットは、この撮像動画から抽出された連続する3つのフレーム画像である。また、第3の画像セットは様々な物体を含む画像を含むことが好ましい。例えば、様々な強度と方向を有するエッジ、テクスチャ、グラデーションまたは平坦部を含む画像を含むことが好ましい。これにより、第1の画像と第2の画像が含む物体に対して、第2の機械学習モデルの頑健性を向上させることができる。
また、第3の画像セットは、第1の画像と第2の画像が有する画質劣化を含む画像を含むことが好ましい。画質劣化は、実施例1で説明したものと同じである。これにより、第1の画像と第2の画像が有する画質劣化に対して、第2の機械学習モデルの頑健性を向上させることができる。
加えて、第1の画像トリプレット内の各画像は、動き量や動き方向が互いに異なる複数の物体を含むことが好ましい。さらに第3の画像セットに含まれる複数の第1の画像トリプレット間でも、動き量や動き方向が互いに異なる複数の物体を含むことが好ましい。これにより、第1の画像と第2の画像間に含まれる動きに対して、第2の機械学習モデルの頑健性を向上させることができる。
次にステップS602では、生成部401cは、第3の正解画像セットと第3の学習画像セットを生成する。第3の正解画像セットは1つ以上の第3の正解画像を含み、第3の学習画像セットは1組以上の第3の学習画像ペアを含む。1組の第3の学習画像ペアに対して1つの第3の正解画像が対応する。第3の学習画像ペアは、所定のサイズ(第4のサイズ)を有する画像ペアであり、本実施例では第4のサイズは128×128画素である。また第3の正解画像は、第3の学習画像ペアと同一の第4のサイズを有する画像である。
さらに第3の学習画像ペアとこれに対応する第3の正解画像の組は、互いに同一物体を含む。前述したように本実施例では、第1の画像トリプレットは、最終的に生成したい高フレームレート動画と同じフレームレートを有する撮像動画から抽出した連続する3つのフレーム画像である。本実施例では、第1の画像トリプレットを構成する最初のフレーム画像と最後のフレーム画像から第4のサイズを有する領域をクロップして第3の学習画像ペアを生成する。また本実施例では、第1の画像トリプレットを構成する中間のフレーム画像から第4のサイズを有する領域をクロップして第3の正解画像を生成する。この際、第1の画像トリプレットと同一の位置から第3の学習画像ペアまたは第3の正解画像をクロップする。第3の正解画像セットと第3の学習画像セットはそれぞれ、第1の機械学習モデルの学習に用いる第1の学習画像セットと少なくとも一部が共通していてもよい。
第2の学習フェーズにおいて学習装置401は、まず学習データである第3の学習画像セットに含まれる第3の学習画像ペアを、第1の学習フェーズで学習された第1の機械学習モデルに入力し、第3の学習画像ペア内の対応する画素の動きを示す第5の動きベクトルを得る。次に第2の機械学習モデルにおいて、第5の動きベクトルに基づいて、第5の学習画像と生成したい第7の画像との間および第6の学習画像と第7の画像との間でそれぞれ対応する画素の動きをそれぞれ示す第6の動きベクトルおよび第7の動きベクトルを生成する。
次に学習装置401は、第2の機械学習モデルにおいて、第6の動きベクトルを用いて、第5の学習画像を生成したい第7の画像相当の画像になるように位置合わせした画像である第4のワープ画像を生成する。同様に、第2の機械学習モデルにおいて、第7の動きベクトルを用いて、第6の学習画像を生成したい第7の画像相当の画像になるように位置合わせした画像である第5のワープの画像を生成する。そして、第4のワープ画像と第5のワープ画像とを用いて第7の画像を生成する。
ステップS701では、取得部401bは、記憶部401aから、第1の機械学習モデルのウエイトの情報と、1つ以上の第3の正解画像と、1組以上の第3の学習画像ペアとを取得する。
次にステップS702では、生成部401cは、第3の学習画像ペアを学習済みの第1の機械学習モデルに入力して第5の動きベクトルを生成する。学習済みの第1の機械学習モデルとは、第1の学習フェーズでの学習によりウエイトを決定された第1の機械学習モデルである。第5の動きベクトルは、第3の学習画像ペア内、すなわち第5の学習画像と第6の学習画像間の対応する画素の動きをベクトルで表したものである。本実施例において、第5の動きベクトルは第3の学習画像ペアと同じサイズを有するが、第5の動きベクトルのサイズはこれに限定されない。本実施例において、第5の動きベクトルは、第3の学習画像ペア内の対応する画素の動きを示す2種類のベクトルである。一方の種類のベクトルは、第5の学習画像の各画素についての第6の学習画像から第5の学習画像への移動を示す。もう一方の種類のベクトルは、第6の学習画像の各画素についての第5の学習画像から第6学習画像への移動を示す。本実施例において、第5の動きベクトルは、4種類の2次元マップであり、各2次元マップは第5の学習画像または第6の学習画像の各画素の位置ごとに水平方向または垂直方向の移動量を示す。
次にステップS703では、生成部401cは、第3の学習画像ペアと第5の動きベクトルを第2の機械学習モデルに入力して第7の画像を生成する。このためにまず生成部401cは、第2の機械学習モデルの内部で、第5の動きベクトルを用いて第6の動きベクトルと第7の動きベクトルを生成する。第6の動きベクトルは、第5の学習画像と第7の画像間の対応する画素の動きを示すベクトルである。
本実施例において、第6の動きベクトルは、第5の学習画像の各画素についての第7の画像から第5の学習画像への移動を示す。具体的には生成部401cは、第5の動きベクトルのうち、第5の学習画像の各画素についての第6の学習画像から第5の学習画像への移動を示すベクトルの各画素に1/2を乗算することで、第6の動きベクトルを生成する。
一方、第7の動きベクトルは、第6の学習画像と第7の画像の間の対応する画素の動きを示すベクトルであり、第6の学習画像の各画素についての第7の画像から第6の学習画像への移動を示す。具体的には生成部401cは、第5の動きベクトルのうち、第6の学習画像の各画素についての第5の学習画像から第6の学習画像への移動を示すベクトルの各画素に1/2を乗算することで、第7の動きベクトルを生成する。
次に生成部401cは、第2の機械学習モデルの内部で、第3の学習画像ペアと第6の動きベクトルと第7の動きベクトルとを用いて、第4のワープ画像と第5のワープ画像を生成する。第4のワープ画像は、第5の学習画像と第6の動きベクトルとに基づいて生成された第7の画像に相当する画像である。第4のワープ画像は、第5の学習画像の画素を第6の動きベクトルを用いて移動させることで生成される。具体的には生成部401cは、nearest neighbor補間、bilinear補間およびbicubic補間等の公知の補間方法を用いて、第5の学習画像の画素値から第4のワープ画像の各画素値を算出する。
本実施例では、第5の学習画像の各画素についての第7の画像から第5の学習画像への移動を示す第6の動きベクトルを用いて、第5の学習画像を第7の画像相当の画像になるように位置合わせするforward warpingを採用している。ただし、第7の画像の各画素についての第5の学習画像から第7の画像への移動を示す動きベクトルを用いて、第5の学習画像を第7の画像相当の画像になるように位置合わせするbackward warpingを行ってもよい。本実施例では、推定フェーズの第2の機械学習モデルにおいてforward warpingを採用しているため、ステップS703においてもforward warpingを採用している。このように、第2の学習フェーズと推定フェーズで第2の機械学習モデルにおける画像の位置合わせの方法を揃えることで、より高精度な第5の画像を生成する第2の機械学習モデルを学習できる。このことは、以下の第5のワープ画像の生成についても同様である。
第5のワープ画像は、第6の学習画像と第7の動きベクトルとに基づいて生成された第7の画像に相当する画像である。第5のワープ画像は、第6の学習画像の画素を第7の動きベクトルを用いて移動させることで生成される。具体的には生成部401cは、nearest neighbor補間、bilinear補間およびbicubic補間等の公知の補間方法を用いて、第6の学習画像の画素値から第5のワープ画像の各画素値を算出する。
最後に生成部401cは、第2の機械学習モデルの内部で、第4のワープ画像と第5のワープ画像から第7の画像を生成する。具体的には、第4のワープ画像の画素値と第5のワープ画像の画素値との平均または加重平均に基づいて第7の画像を生成する。本実施例では、第4のワープ画像の画素値と第5のワープ画像の画素値との平均を第7の画像の画素値とすることで、第7の画像を生成する。
なお、第2の機械学習モデルの内部で、第4のワープ画像と第5のワープ画像の第7の画像の生成に対する寄与度を決定し、その寄与度に応じて第7の画像を生成することが好ましい。該寄与度は第7の画像の画素ごとに決定されることが好ましい。例えば、第4のワープ画像と第5のワープ画像とをCNNに入力して、第4のワープ画像と第5のワープ画像の各画素について第7の画像の生成に対する寄与度を決定することが好ましい。推定フェーズにおいても第2の機械学習モデルが同様の処理を行うことで、第1の画像と第2の画像の画素ごとに第1の画像と第2の画像との寄与度が調整されるため、より高精度な第5の画像を生成することができる。
また、第7の画像の生成の後、第2の機械学習モデルの内部で、少なくとも第4のワープ画像と第5のワープ画像に基づいて第7の画像の画素ごとに残差成分を算出し、この残差成分を第7の画像に加算した画像を新たな第7の画像とすることが好ましい。例えば、第4のワープ画像と第5のワープ画像とをCNNに入力して、第7の画像の各画素について残差成分を決定することが好ましい。推定フェーズにおいても第2の機械学習モデルが同様の処理を行うことで、より高精度な第5の画像を生成することができる。
次にステップS704では、更新部401dは、第7の画像と第3の正解画像との誤差に基づいて、第2の機械学習モデルのウエイトを更新(決定)する。本実施例では、第7の画像と第3の正解画像における画素値の差のシャルボニエロスをロス関数とする。ただし、ロス関数はこれに限定されるものではない。ステップS701において複数組の第3の学習画像ペアを取得している場合は、各組に対してロス関数の値を算出する。算出されたロス関数の値から誤差逆伝搬法等によってウエイトの更新を行う。
次にステップS705では、更新部401dは、第2の機械学習モデルの学習が完了したか否かを判定する。学習の完了は、ウエイトの更新の反復回数が所定回数に達したことや、更新時のウエイトの変化量が所定値より小さいこと等で判定することができる。ウエイトの学習が完了していないと判定された場合は処理はステップS701へ戻り、取得部401bは、1組以上の新たな第3の学習画像ペアおよび第3の正解画像を取得する。ウエイトの学習が完了したと判定された場合は、更新部401dは、学習を終了し、ウエイトの情報を記憶部401aに記憶する。
実施例1と同様に本実施例でも、第1の学習フェーズにおいて第1の機械学習モデルの学習を行った後、第2の学習フェーズにおいて第2の機械学習モデルの学習を行う。ただし、これに限らず、はじめから第1の機械学習モデルと第2の機械学習モデルを共同で学習してもよい。また、第1の学習フェーズと第2の学習フェーズを行った後、さらに第1の機械学習モデルのウエイトと第2の機械学習モデルのウエイトと共同で更新する第3の学習フェーズを設けてもよい。
また本実施例では、第2の学習フェーズにおいて第1の機械学習モデルが第3の学習画像ペア内の対応する画素の動きを示す第5の動きベクトルを生成する。ただし、これに限定されず、第2の学習フェーズにおいて第1の機械学習モデルが第6の動きベクトルと第7の動きベクトルの両方を生成してもよい。具体的には、第1の機械学習モデルは、第1の学習画像ペアの一方または他方の画像と、第1の学習画像ペアの中央の画像との間の動きベクトルの両方を生成するように学習されてもよい。第1の学習画像ペアの中央の画像とは、第1の学習画像ペアが同一の動画を構成するフレーム画像であると仮定した場合に、第1の学習画像ペアの中央のフレーム画像となることが目標とされる画像である。その場合、推定フェーズにおいて第1の機械学習モデルは、第1の画像または第2の画像と、第5の画像との間の対応する画素の動きを示す動きベクトルの両方を第1の動きベクトルとして生成する。
推定フェーズでは、画像推定装置403は、まず元動画501から第1の元画像502と第2の元画像503を抽出する。次に第1の元画像502と第2の元画像503をそれぞれ分割して第1の画像504と第2の画像505とを生成する。次に第1の画像504と第2の画像505とをそれぞれ縮小して、第3の画像506と第4の画像507を生成する。
次に画像推定装置403は、第3の画像506と第4の画像507を第1の機械学習モデルに入力して第1の動きベクトル508を生成する。次に第1の動きベクトル508を拡大して第2の動きベクトル509を生成する。次に画像推定装置403は、第1の画像504と第2の画像505と第2の動きベクトル509を第2の機械学習モデルに入力して第5の画像510を生成する。続いて第5の画像510を結合して目的画像511を生成する。
最後に画像推定装置403は、元動画501と目的画像511とから目的動画512を生成する。第5の画像510は、第1の画像504と第2の画像505の中央に位置する画像である。また目的画像511は、第1の元画像502と第2の元画像503の中央に位置するフレーム画像である。また、目的動画512は、元動画501が約2倍にアップフレームレートされた動画である。
次にステップS803では、生成部403cは、第1の元画像502と第2の元画像503とをそれぞれ分割して第1の画像504と第2の画像505とを生成する。第1の画像504と第2の画像505はともに同じ第3のサイズの画像である。すなわち、第1の画像504と第2の画像505はそれぞれ、第1の元画像502と第2の元画像503の同一位置から第3のサイズを有する領域をクロップされた画像である。本実施例において、第3のサイズは256×256画素である。実施例1と同様に、第1の元画像502を複数の第1の画像504同士が共通の領域を含むよう分割することが好ましい。なお、第1の元画像502と第2の元画像503のサイズが第3のサイズと同じであれば、ステップS803の分割処理は不要であり、これに付随してステップS809の結合処理も不要である。
次にステップS804では、生成部403cは、第1の画像504と第2の画像505をそれぞれ縮小して第3の画像506と第4の画像507とを生成する。第1の画像504から第3の画像506への縮小および第2の画像505から第4の画像507への縮小は、画像から画像への変換を行う同一の縮小処理を用いて行われる。本実施例での縮小処理は、複数画素から1画素のみを抽出するダウンサンプルである。
第3の画像506と第4の画像507はともに同じ第1のサイズの画像である。本実施例において第1のサイズは128×128画素である。このため、第1の画像504から第3の画像506への縮小倍率および第2の画像505から第4の画像507への縮小倍率はともに、画像の幅方向に2倍、高さ方向に2倍である。
次にステップS805では、推定部403dは、第3の画像506と第4の画像507を第1の機械学習モデルに入力して第1の動きベクトル508を生成する。第1の動きベクトル508は、第3の画像506と第4の画像507の間の対応する画素の動きをベクトルで表したものである。本実施例において、第1の動きベクトル508は第3の画像506および第4の画像507と同じ第1のサイズ(128×128画素)を有する。ただし、第1の動きベクトル508のサイズはこれに限定されない。
本実施例において、第1の動きベクトルは、第3の画像506と第4の画像507の間の対応する画素の動きを示す2種類のベクトルである。一方の種類のベクトルは、第3の画像506の各画像についての第4の画像507から第3の画像506への移動を示す。他方の種類のベクトルは、第4の画像507の各画像についての第3の画像506から第4の画像507への移動を示す。また本実施例において、第1の動きベクトルは4種類の2次元マップであり、各2次元マップは第3の画像506または第4の画像507の各画素の位置ごとに水平方向または垂直方向の移動量を示す。
次にステップS806では、生成部403cは、第1の動きベクトル508を拡大して第2の動きベクトル509を生成する。第1の動きベクトル508に対する拡大処理は、第1の機械学習モデルとは独立した処理である。この拡大処理は、第1の機械学習モデルと独立していれば、機械学習モデルを用いる拡大処理であってもよいし、機械学習モデルを用いない拡大処理であってもよい。本実施例において、拡大処理はbicubic補間を用いる処理である。より具体的には、拡大処理として、第1の動きベクトル508をbicubic補間で拡大した動きベクトルの各画素に対して、拡大倍率(本実施例では後述するように2倍)を乗算することで第2の動きベクトル509を生成する。また本実施例において、この拡大処理における拡大倍率は、ステップS804の縮小処理における縮小倍率と同一であり、マップの幅方向に2倍、高さ方向に2倍である。すなわち、第2の動きベクトルのサイズは256×256画素である。本実施例において、第2の動きベクトル509は、第1の画像504と第2の画像505と同一のサイズを有する。
次にステップS807では、推定部403dは、第1の画像504と第2の画像505と第2の動きベクトル509とを第2の機械学習モデルに入力して第5の画像510を生成する。ここでは推定部403dは、まず第2の機械学習モデルの内部で、第2の動きベクトル509を用いて第8の動きベクトルと第9の動きベクトルを生成する。第8の動きベクトルは、第1の画像504と第5の画像510の間の対応する画素の動きを示すベクトルである。本実施例において第8の動きベクトルは、第1の画像504の各画像についての第5の画像510から第1の画像504への移動を示す。具体的には、第2の動きベクトル509のうち第1の画像504の各画像についての第2の画像505から第1の画像504への移動を示すベクトルの各画素に1/2を乗算することで、第8の動きベクトルを生成する。
一方、第9の動きベクトルは、第2の画像505と第5の画像510の間の対応する画素の動きを示すベクトルである。本実施例において第9の動きベクトルは、第2の画像505の各画像についての第5の画像510から第2の画像505への移動を示す。具体的には、第2の動きベクトル509のうち第2の画像505の各画像についての第1の画像504から第2の画像505への移動を示すベクトルの各画素に1/2を乗算することで、第9の動きベクトルを生成する。
次に推定部403dは、第2の機械学習モデルの内部で、第1の画像504と第2の画像505と第8の動きベクトルと第9の動きベクトルとを用いて、第6のワープ画像と第7のワープ画像を生成する。第6のワープ画像は、第1の画像504と第8の動きベクトルに基づいて生成された第5の画像510に相当する画像である。第6のワープ画像は、第1の画像504の画素を第8の動きベクトルを用いて移動させることで生成される。具体的には、nearest neighbor補間、bilinear補間、bicubic補間等の公知の補間方法を用いて、第1の画像504の画素値から第6のワープ画像の各画素値を算出する。
なお、本実施例では、第1の画像504の各画像についての第5の画像510から第1の画像504への移動を示す第8の動きベクトルを用いて、第1の画像504を第5の画像510相当の画像になるように位置合わせするforward warpingを採用している。forward warpingの採用については、第7のワープ画像に対しても同様である。
一方、第7のワープ画像は、第2の画像505と第9の動きベクトルとに基づいて生成された第5の画像510相当の画像である。第7のワープ画像は、第2の画像505の画素を第9の動きベクトルを用いて移動させることで生成される。具体的には、nearest neighbor補間、bilinear補間、bicubic補間等の公知の補間方法を用いて、第2の画像505の画素値から第7のワープ画像の各画素値を算出する。
最後に推定部403dは、第2の機械学習モデルの内部で、第6のワープ画像と第7のワープ画像から第5の画像510を生成する。具体的には、第6のワープ画像の画素値と第7のワープ画像の画素値との平均または加重平均に基づいて第5の画像510を生成する。本実施例では、第6のワープ画像の画素値と第7のワープ画像の画素値との平均を第5の画像510の画素値とすることで、第5の画像510を生成する。
次にステップS808では、生成部403cは、全ての第1の画像504と第2の画像505の組について、第5の画像510の生成を完了したか否かを判定する。全ての第5の画像510の生成が完了していないと判定された場合は処理はステップS804へ戻り、生成部403cは、新たな第1の画像504と第2の画像505の組から第5の画像510を生成する。全ての第5の画像510の生成が完了したと判定された場合は、処理はステップS809に進む。
ステップS809では、生成部403cは、第5の画像510を結合して目的画像511を生成する。本実施例において、目的画像511は第1の画像504と第2の画像505の中央に位置する画像である。
次にステップS810では、生成部403cは、全ての第1の元画像502と第2の元画像503の組について、目的画像511の生成を完了したか否かを判定する。全ての目的画像511の生成が完了していないと判定された場合は処理はステップS803へ戻り、生成部403cは、新たな第1の元画像502と第2の元画像503の組から目的画像511を生成する。全ての目的画像511の生成が完了したと判定された場合は、処理はステップS811に進む。
ステップS811において、生成部403cは、第1の元画像502と第2の元画像503と目的画像511から目的動画512を生成する。具体的には、第1の元画像502と第2の元画像503の中央に目的画像511を配置することで、目的動画512を生成する。本実施例において、目的動画512は元動画501が約2倍のアップフレームレートされた動画である。
本実施例によれば、動きベクトルを生成する機械学習モデルが学習した画像サイズに基づいて制限されることなく、高精度なアップフレームタスクを実現することが可能となる。