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

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

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

特開2025-143650画像処理方法、画像処理装置、およびプログラム
<>
  • 特開-画像処理方法、画像処理装置、およびプログラム 図1
  • 特開-画像処理方法、画像処理装置、およびプログラム 図2
  • 特開-画像処理方法、画像処理装置、およびプログラム 図3
  • 特開-画像処理方法、画像処理装置、およびプログラム 図4
  • 特開-画像処理方法、画像処理装置、およびプログラム 図5
  • 特開-画像処理方法、画像処理装置、およびプログラム 図6
  • 特開-画像処理方法、画像処理装置、およびプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025143650
(43)【公開日】2025-10-02
(54)【発明の名称】画像処理方法、画像処理装置、およびプログラム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20250925BHJP
   G06V 10/82 20220101ALI20250925BHJP
   G06T 7/20 20170101ALI20250925BHJP
【FI】
G06T7/00 350C
G06V10/82
G06T7/20 300Z
【審査請求】未請求
【請求項の数】18
【出願形態】OL
(21)【出願番号】P 2024042985
(22)【出願日】2024-03-19
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100110412
【弁理士】
【氏名又は名称】藤元 亮輔
(74)【代理人】
【識別番号】100104628
【弁理士】
【氏名又は名称】水本 敦也
(74)【代理人】
【識別番号】100121614
【弁理士】
【氏名又は名称】平山 倫也
(72)【発明者】
【氏名】井田 義明
(72)【発明者】
【氏名】楠美 祐一
(72)【発明者】
【氏名】大野 雪乃
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096CA02
5L096DA02
5L096FA59
5L096HA04
5L096HA11
5L096KA04
(57)【要約】
【課題】高解像度の画像に対して、機械学習モデルを用いた動きベクトル推定を高精度に行うことが可能な画像処理方法を提供する。
【解決手段】第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、第1画像セットの部分領域であって第1サイズよりも小さい第2サイズの第2画像セットを取得する工程(S203)と、第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する工程(S204)とを有し、動きベクトルは、第1画像を基準とした第2画像における動きベクトルであり、機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、第2サイズは、第3サイズに関して基準となる第4サイズ以下である。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、前記第1画像セットの部分領域であって前記第1サイズよりも小さい第2サイズの第2画像セットを取得する工程と、
前記第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する工程とを有し、
前記動きベクトルは、前記第1画像を基準とした前記第2画像における動きベクトルであり、
前記機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、
前記第2サイズは、前記第3サイズに関して基準となる第4サイズ以下であることを特徴とする画像処理方法。
【請求項2】
前記第4サイズは、前記第3サイズの1.5倍以下であることを特徴とする請求項1に記載の画像処理方法。
【請求項3】
前記第4サイズは、前記第3サイズの1.25倍以下であることを特徴とする請求項1に記載の画像処理方法。
【請求項4】
前記第4サイズは、前記第3サイズ以下であることを特徴とする請求項1に記載の画像処理方法。
【請求項5】
前記第1サイズは、前記第1画像および前記第2画像のそれぞれの一辺の画素数であることを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項6】
前記第1サイズは、前記第4サイズよりも大きいことを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項7】
前記第1サイズと前記第4サイズとに基づいて、前記第2画像セットを取得するか否かを判定する工程を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項8】
前記第1サイズが前記第4サイズよりも大きい場合、前記第2画像セットを取得し、該第2画像セットを前記機械学習モデルに入力することで、前記動きベクトルを取得し、
前記第1サイズが前記第4サイズよりも小さい場合、前記第1画像セットを前記機械学習モデルに入力することで、前記動きベクトルを取得することを特徴とする請求項7に記載の画像処理方法。
【請求項9】
前記第1画像セットの前記部分領域を縮小することで、前記第2画像セットを取得することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項10】
前記第2画像セットおよび前記動きベクトルに基づいて取得された画像、または前記動きベクトルの少なくとも一方を部分データとして取得し、異なる複数の前記部分領域のそれぞれに対応する複数の前記部分データを結合する工程を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項11】
前記第2画像セットおよび前記動きベクトルを前記機械学習モデルに入力することで、前記第2画像セットに対応する高解像度化画像を推定する工程を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項12】
前記第4サイズを取得する工程を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項13】
前記第1サイズ、前記第4サイズ、および前記機械学習モデルのうち少なくとも1つに基づいて、前記第2サイズを決定する工程を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項14】
前記機械学習モデルは、畳み込みニューラルネットワークであることを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項15】
前記第1画像および前記第2画像は、動画データにおける異なる時刻の複数のフレームであることを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項16】
前記機械学習モデルの受容野は、前記第2サイズよりも大きいことを特徴とする請求項1乃至4のいずれか一項に記載の画像処理方法。
【請求項17】
第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、前記第1画像セットの部分領域であって前記第1サイズよりも小さい第2サイズの第2画像セットを取得する取得部と、
前記第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する推定部とを有し、
前記動きベクトルは、前記第1画像を基準とした前記第2画像における動きベクトルであり、
前記機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、
前記第2サイズは、前記第3サイズに関して基準となる第4サイズ以下であることを特徴とする画像処理装置。
【請求項18】
請求項1乃至4のいずれか一項に記載の画像処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理方法、画像処理装置、およびプログラムに関する。
【背景技術】
【0002】
機械学習モデルを用いた画像処理において、動きベクトル(オプティカルフロー)を推定する技術が知られている。特許文献1には、動画を構成する時間的に隣接するフレーム(画像)間のオプティカルフローの推定する機械学習モデルの学習を行う方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2018-156640号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
機械学習モデルを用いた画像処理において、学習の際に用いる画像サイズと推定の際に用いる画像サイズとが異なる場合がある。学習の際の画像サイズを大きくするには制限がある。理由の1つは、高解像度の画像からなる学習データセットを十分な数だけ集めることが一般的に難しく、特に動画のデータセットではより難しいことである。また、機械学習においては様々なシーンに対して学習しながらも、学習時間を低減することが好ましい。そのため、限られたメモリ量で多くのシーンを同時に演算するには、学習の際の画像サイズを所定のサイズに抑える必要がある。一方、推定の際には、高解像度のコンテンツに対して画像処理を適用したい場合がある。
【0005】
しかしながら、機械学習を用いた動きベクトルの推定において、学習の際の画像サイズに対して推定の際の画像サイズが大きい場合、推定精度が低下する。
【0006】
特許文献1に開示された方法では、学習の際の画像サイズと推定の際の画像サイズとを考慮していないため、高解像度の動画を入力してオプティカルフローを推定する際に、精度が低下しうる。
【0007】
そこで本発明は、高解像度の画像に対して、機械学習モデルを用いた動きベクトル推定を高精度に行うことが可能な画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一側面としての画像処理方法は、第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、前記第1画像セットの部分領域であって前記第1サイズよりも小さい第2サイズの第2画像セットを取得する工程と、前記第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する工程とを有し、前記動きベクトルは、前記第1画像を基準とした前記第2画像における動きベクトルであり、前記機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、前記第2サイズは、前記第3サイズに関して基準となる第4サイズ以下である。
【0009】
本発明の他の目的及び特徴は、以下の実施例において説明される。
【発明の効果】
【0010】
本発明によれば、高解像度の画像に対して、機械学習モデルを用いた動きベクトル推定を高精度に行うことが可能な画像処理方法を提供することができる。
【図面の簡単な説明】
【0011】
図1】実施例1における学習方法のフローチャートである。
図2】実施例1における推定方法のフローチャートである。
図3】実施例1における入力画像セットと分割領域の関係を示す図である。
図4】実施例2における画像処理の説明図である。
図5】実施例2における学習方法のフローチャートである。
図6】実施例2における推定方法のフローチャートである。
図7】各実施例における画像処理システムのブロック図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施例について、図面を参照しながら詳細に説明する。各図において、同一の部材については同一の参照符号を付し、重複する説明は省略する。
【0013】
各実施例の画像処理部は、入力された画像セットに対して、機械学習モデルを用いた動きベクトル推定処理を行う。ここで、画像セットとは、少なくとも第1画像および第2画像を含む複数の画像から構成され、第1画像および第2画像の2つの画像からなる画像ペアであればよい。また、動きベクトルとは、第1画像を基準とした第2画像の動きベクトルであり、画像セットに含まれる画像(第1画像と第2画像と)の間において、各画像に共通して含まれる同一物体の位置の違いに相当する。動きベクトルは、例えば、動画(動画データ)における異なる時刻の画像(フレーム)、異なる視点で取得されたステレオ画像、または、連写された複数の画像などの2つの画像(静止画)を用いて推定される。
【0014】
動きベクトルは、オプティカルフローとも呼ばれる。動きベクトルは、例えば画像に対応するマップとして取得される。マップの各画素値は所定の方向に沿った位置ずれ量の値であり、1つの画像を基準として異なる画像における位置ずれを表す。ステレオマッチングでは一方向の値だけを持つ1つのマップとして取得されることもあり、より一般的には画像の水平方向と垂直方向など、複数の方向に対応したマップとして取得されることもある。
【0015】
オプティカルフローを推定することで、動画中の被写体追跡やステレオ画像間の視差量推定、複数枚画像間の位置合わせを行うことができる。位置合わせは複数枚画像を合成する際に活用され、画像合成処理によるノイズ低減や、同一被写体に対するサンプリングの違いに基づいて鮮鋭化および高解像度化することができる。また、位置の補間を行うことで、動画のアップフレームレート処理を行うことができる。
【0016】
動きベクトル推定処理を実行する機械学習モデルの学習を行うには、複数の画像を含む画像セットに対して、正解の動きベクトルデータを用いる。撮影画像に対して測定された動きベクトルデータを用いてもよく、動きベクトルの値が既知であるCGデータを用いてもよい。例えばステレオ画像において、距離情報を測定することで視差量が算出できるため、正解の動きベクトルデータを取得することができる。そして、ニューラルネットワークなどの機械学習モデルに画像セットを入力して動きベクトルを推定させ、正解の動きベクトルとの差分が小さくなるように機械学習モデルのパラメータを最適化すればよい。また、正解の動きベクトルを必要としない教師なし学習によって学習してもよい。例えば、機械学習モデルに2つの画像を入力して動きベクトルを推定させ、推定された動きベクトルに基づく幾何変形を2つの画像のうち一方に対して適用し、他方の画像との差分が小さくなるように機械学習モデルのパラメータを最適化すればよい。
【0017】
なお各実施例では、特に動画を構成する異なるフレーム間における動きベクトルを推定するが、動きベクトル推定の対象は、動画を構成する異なるフレームに限定されるものではない。
【0018】
次に、各実施例の課題について詳述する。画像処理に用いる機械学習モデルの入力サイズが可変である場合、学習の際にモデルに入力する画像サイズ(第3サイズ)と、学習したモデルで推定する際に用いる画像サイズとが互いに異なる場合がある。一方、機械学習モデルのウエイトの情報(パラメータ)は、学習に用いる画像サイズに基づいて更新される。したがって、推定の際にモデルに入力する画像サイズが学習の際の画像サイズ(または基準の画像サイズ)よりも大きい場合、機械学習モデルによる推定精度が低下する。
【0019】
例えば畳み込みニューラルネットワークにおいて、畳み込みフィルタが画像よりも外側の値を計算に用いる(参照する)場合、画像をゼロや固定値でパディングすることがある。したがって、畳み込みフィルタは画像の外側がパディングされた値の場合のみに基づいて学習される。
【0020】
しかし、推定の際にモデルに入力する画像サイズが学習の際の画像サイズよりも大きい場合、パディングとは異なり、画像に含まれるシーンに応じた画素値が入力される。学習の際とは異なる条件の画像が入力されることで、推定精度が低下する。一方で、推定の際にモデルに入力する画像サイズが学習の際の画像サイズよりも小さい場合、モデルは様々なシーンの画像に対して学習されているため、推定の際の画像をパディングしても推定精度は低下しない。
【0021】
畳み込みフィルタが3×3のとき、画像よりも外側を参照する画素は、画像の最周辺の画素のみである。したがって、推定精度が低下するのは最周辺の画素のみであると思われる。しかし、複数層の畳み込み処理を含むことで、間接的に参照する入力画像の領域は大きくなる。このように、機械学習モデルが所定の画素を処理する際に間接的に参照する入力画像の領域を受容野と呼ぶ。3×3フィルタの畳み込み層を3層もつニューラルネットワークにおいて、受容野は7×7の領域になる。
【0022】
ニューラルネットワークの層が増えることで、受容野が広がり、画像よりも外側を参照する画素が増える。受容野が大きくなると機械学習モデルが入力画像の広い領域を考慮できるようになる一方で、推定精度が低下する画像の領域も広くなる。
【0023】
ただし、前述の課題は、機械学習モデルで行う画像処理タスクに依存する。例えば、高解像度化(アップスケーリング)は補間時の劣化を補正する処理であるが、局所的な情報のみに基づいて補正できる。別の例として、画像を撮像した光学系の収差補正を行う処理では、収差が影響する局所的な画像領域に基づいて補正できる。このように、比較的小さい画像領域の画素値に基づいて実行できる画像処理タスクでは、機械学習モデルの受容野が大きかったとしても、学習の際の画像サイズよりも小さい画像領域を重視するように機械学習モデルのパラメータが学習されうる。したがって、推定の際の画像サイズが学習の際の画像サイズより大きくても、機械学習モデルが小さい画像領域のみ重視しないため、前述の課題は生じにくい。
【0024】
また、これらの画像補正タスクは、画像劣化を畳み込みとして表現した際に、劣化カーネルが被写体に依存せずに決まる。そのため、補正に必要な画像サイズを予め想定して学習時の画像サイズを決定できる。したがって、補正対象となる劣化が被写体の大域的な構造に依存しない画像補正タスクにおいては、機械学習モデルが重視する画像領域に対して学習の際の画像サイズを大きく設定できるため、前述の課題は生じにくい。
【0025】
一方、被写体の動きベクトルを推定する画像処理タスクにおいては、動きベクトルの大きさの上限が定まらず、前記タスクよりも画像の広い領域に基づいて推定する必要がある。したがって、機械学習モデルは、広い領域の画素値に基づいて動きベクトルを推定するよう学習される。そのため、学習の際の画像サイズよりも大きい画像サイズを入力して推定することで、推定精度が低下する。学習時に用いる処理装置(例えばGPU(Graphics Processing Unit))のメモリ量、学習時間、または学習データセットのサイズによって、学習時の画像サイズは一定よりも小さいサイズに制限される。推定の際に高解像度の画像を入力すると、学習画像のサイズよりも大きい画像を入力することとなり、動きベクトルの推定精度が低下する。
【0026】
なお、学習データセットに大きな動きを含まない場合、機械学習モデルが重視する画像領域は局所的になるため、入力する画像サイズが大きくても精度が低下しない。一方、大きい動きを推定する場合には精度が低下する。
【0027】
以下、各実施例について詳述する。
【0028】
(実施例1)
まず、図7を参照して、実施例1における画像処理システム100について説明する。図7は、画像処理システム100のブロック図である。画像処理システム100は、学習装置(画像処理装置)101、撮像装置102、画像推定装置(画像処理装置)103、表示装置104、記録媒体105、出力装置106、および、ネットワーク107を有する。学習装置101は、記憶部(記憶手段)101a、取得部(取得手段)101b、生成部(生成手段)101c、および、更新部(学習手段)101dを有する。
【0029】
撮像装置102は、光学系102aと撮像素子102bを有する。光学系102aは、被写体空間から撮像装置102へ入射した光を集光する。撮像素子102bは、光学系102aを介して形成された光学像(被写体像)を受光して(光電変換して)撮像画像を取得する。撮像素子102bは、例えばCCD(Charge Coupled Device)センサや、CMOS(Complementary Metal-Oxide Semiconductor)センサなどである。撮像装置102によって取得される撮像画像は、光学系102aの収差や回折によるぼけと、撮像素子102bによるノイズを含む。
【0030】
推定装置103は、記憶部103a、取得部103b、および推定部103cを有する。推定装置103は、撮像画像を取得し、動きベクトルを推定する。動きベクトル推定には、ニューラルネットワークを使用し、ウエイトの情報(パラメータ)は記憶部103aから読み出される。ウエイト(ウエイトの情報)は学習装置101による学習により得られたものであり、推定装置103は、事前にネットワーク107を介して記憶部101aからウエイトの情報を読み出し、記憶部103aに保存している。保存されるウエイトの情報は、ウエイトの数値そのものでもよいし、符号化された形式でもよい。ウエイトの学習、およびウエイトを用いた動きベクトル推定処理に関する詳細は、後述する。
【0031】
推定して出力された動きベクトルは、表示装置104、記録媒体105、および出力装置106の少なくとも1つに出力される。表示装置104は、例えば液晶ディスプレイやプロジェクタなどである。記録媒体105は、例えば半導体メモリ、ハードディスク、ネットワーク上のサーバなどである。出力装置106は、プリンタなどである。推定装置103は、必要に応じてその他の画像処理を行う機能を有する。
【0032】
[学習方法]
次に、図1を参照して、本実施例における動きベクトル推定処理の学習方法について説明する。図1は、動きベクトル推定処理の学習方法のフローチャートである。図1のフローチャートは、コンピュータに各ステップの機能を実行させるためのプログラムとして具現化可能である。これらは、以下のフローチャートでも同様である。図1の各ステップは、主に、学習装置101の取得部101b、生成部101c、または更新部101dにより実行される。
【0033】
まずステップS101において、取得部101bは、学習に用いる複数の画像(第1画像、第2画像)を含む画像セットとして、動画の学習データセットから連続する2つの画像(フレーム)を取得する。また取得部101bは、一方の画像(第1画像)を基準とした他方の画像(第2画像)、すなわち2つの画像間の動きベクトルについて、正解となるデータを取得する。
【0034】
なお、画像セットは、学習データセットに含まれる画像の全領域を取得してもよく、画像の部分領域を取得してもよい。ここでは、2つの画像の同じ画像位置にある所定のサイズ(第3サイズ)の領域をランダムにクロップして取得する。画像セットに対して明るさや色を変化させるなど、既知のデータ拡張手法を用いてもよい。ここでは、128×128のサイズの領域を取得する。正解データについても同じ領域を取得する。なお、クロップを行わない場合は、フル画素の画像サイズが第3サイズに相当する。
【0035】
続いてステップS102において、生成部101cは、ステップS101にて取得された画像セットを機械学習モデルに入力し、推定された動きベクトルを取得する。機械学習モデルは、例えば畳み込みニューラルネットワークなどの既知の機械学習モデルを用いればよい。ここで、動きベクトルは画像と同じ解像度とする。
【0036】
続いてステップS103において、更新部101dは、ステップS102にて取得された動きベクトルと、ステップS101にて取得された正解の動きベクトルとの誤差(誤差量)を算出(取得)する。誤差は、例えば絶対値誤差またはL2ノルムなどの指標を用いて算出することができるが、これらに限定されるものではない。
【0037】
続いてステップS104において、更新部101dは、ステップS103にて取得した誤差を逆伝播することで、機械学習モデルのパラメータを更新する。
【0038】
続いてステップS105において、更新部101dは、機械学習モデルの学習を終了するか判定する。例えば、所定の更新回数を超えるか、または、誤差量が基準値を下回った場合に学習を終了すると判定すればよい。学習を終了しない場合、ステップS101に戻り、取得部101bは、新しい画像セットと正解の動きベクトルとを取得し、処理を繰り返す。一方、学習を終了する場合、本実施例の学習を終了として学習された機械学習モデルのパラメータが得られる。
【0039】
本実施例では、正解の動きベクトルを用いる例を説明したが、教師なし学習を行う場合にはステップS101で正解の動きベクトルを取得する必要はない。ステップS103の誤差として、推定された動きベクトルに基づく幾何変形を2つの画像の一方(例えば第2画像)に適用し、他方の画像(例えば第1画像)との差分を評価すればよい。評価指標として、例えばL1ノルムを用いることができる。
【0040】
ステップS101にて取得される画像セットは、複数のシーンに対して取得してもよい。その場合、ステップS102では複数のシーンに対してそれぞれ動きベクトルを推定し、ステップS103では誤差を算出する。ステップS103に算出される誤差(取得される誤差量)は、各シーンの合計または平均を用いる。また、連続する3つ以上の画像を取得して、隣接する各画像間で動きベクトルを推定してもよい。この場合も隣接する画像のペアのそれぞれに対して同様の処理を行えばよい。
【0041】
[推定方法]
次に、図2を参照して、図1を参照して説明した学習方法で学習された機械学習モデルを用いた動きベクトル推定処理を説明する。図2は、動きベクトル推定処理のフローチャートである。図2の各ステップは、主に、推定装置103の取得部103bまたは推定部103cにより実行される。
【0042】
まずステップS201において、取得部103bは、動きベクトルを推定するための複数の画像を入力画像セット(第1画像セット)として取得する。本実施例では、入力画像セットのサイズ(第1サイズ)は4K解像度(3840×2160)であるが、これに限定されるものではない。4Kの動画をデコードし、隣接する2つの画像(フレーム)である第1画像および第2画像を取得する。
【0043】
続いてステップS202において、取得部103bは、図1を参照して説明した学習方法で学習された機械学習モデルを取得する。本実施例の機械学習モデルは、ニューラルネットワークによる処理を含む。
【0044】
続いてステップS203において、取得部103bは、入力画像セットを分割する複数の分割領域(複数の部分領域)から、機械学習モデルに入力するための1つの入力分割画像セット(第2画像セット)を取得する。
【0045】
ここで、図3を参照して、入力分割画像セットの取得方法を詳述する。図3は、入力画像セットと複数の分割領域との関係を示す図であり、201は入力画像セット(第1画像セット)である。202は入力画像セットをブロック状に分割する分割位置について破線で表し、破線で囲まれた複数の部分領域のそれぞれが分割画像として取得する際の取得領域に対応する。分割位置と分割サイズは予め決められた値として設定され、入力画像セットは部分領域a1~aNに分割される。
【0046】
入力画像セットに含まれる複数の画像(第1画像および第2画像)はそれぞれ同じ位置で分割され、同じ部分領域を取得して分割画像セット(第2画像セット)とする。機械学習モデルは、ブロック単位で入力して処理を行うため、ステップS203では部分領域a1~aNのうち1つの部分領域が取得される。部分領域は重複して設定されてもよい。
【0047】
ここで、分割サイズは、学習時の画像サイズ128×128に対して大きいほど、動きベクトルの推定精度が低下する。そこで本実施例では、分割サイズは学習の際の画像サイズと同じ128×128とする。ただし分割サイズは、学習の際の画像サイズと異なっていてもよい。なお、図6において、第1サイズ、第4サイズ、および機械学習モデルのうち少なくとも1つに基づいて第2サイズを決定する工程を更に有していてもよい。
【0048】
続いてステップS204において、推定部103cは、ステップS203にて取得された所定のサイズ(第2サイズ)の分割画像セットを、ステップS202にて取得された機械学習モデルに入力する。そして推定部103cは、分割画像セットに対応する動きベクトル(分割動きベクトル)を推定する。分割動きベクトルは、分割画像セットの各画像と同じ画像サイズ128×128のマップであり、水平成分および垂直成分の2つのチャンネルを有する。
【0049】
続いてステップS205において、推定部103cは、分割画像セットにおける複数の部分領域(入力分割画像)を全て処理したか否かを判定する。部分領域の処理が完了していないと判定された場合、ステップS203に戻り、未処理の部分領域を分割画像セットとして取得し、取得した分割画像セットに対してステップS203、S204を実行する。一方、全ての部分領域の処理が完了したと判定された場合、ステップS206に進む。
【0050】
ステップS206において、取得部103bは、複数の分割動きベクトルを部分データとして、分割前の位置関係になるように配置して結合することで、サイズ3840×2160の出力動きベクトルを取得する。本実施例において、分割動きベクトルに代えて、第2画像セットおよび分割動きベクトルに基づいて取得された画像を部分データとして取得してもよい。そして取得部103bは、異なる複数の部分領域のそれぞれに対応する複数の部分データを結合する。なお、分割領域が互いに重複する場合、重複しないように切り出すか、または重複部分を加重平均することで結合すればよい。これにより、本実施例における画像処理が完了する。
【0051】
本実施例において、ステップS203の分割サイズ(第2サイズ)は、128×128でなくともよく、例えば192×192(すなわち、128の1.5倍)や160×160(すなわち、128の1.25倍)でもよい。推定の際の画像サイズが学習の際の画像サイズ以下となる場合、学習に基づく高精度な推定が可能である。しかし、推定の際の画像サイズが大きくなるほど徐々に推定された動きベクトルの精度が低下する。
【0052】
本発明者は、学習の際の画像サイズ(第1サイズ)と推定の際の分割サイズ(第2サイズ)との様々なバリエーション(組み合わせ)を検討することで、高精度に推定可能な推定の際の画像サイズに基準の画像サイズ(第4サイズ)があることを見出した。ここで第4サイズは、学習の際の画像サイズである第3サイズに関して基準となる画像サイズである。図2または図6(後述)において、第4サイズを取得するステップを更に有していてもよい。
【0053】
推定の際に学習済の機械学習モデルに入力される画像のサイズ(第2サイズ)を、基準の画像サイズ(第4サイズ)以下に設定することで、推定精度の低下を抑制することができる。なお、基準の画像サイズは、シーンの動きベクトルの大きさにも依存する。このため、基準の画像サイズは、学習の際の画像サイズ(第3サイズ)と動きベクトルの大きさとに応じて変更してもよい。
【0054】
好ましくは、基準の画像サイズ(第4サイズ)は、学習の際の画像サイズ(第3サイズ)の1.5倍以下である。このような構成とすることで、高精度に動きベクトルを推定することができる。より好ましくは、基準の画像サイズは、学習の際の画像サイズの1.25倍以下である。このような構成とすることで、より高精度に動きベクトルを推定することができる。更に好ましくは、基準の画像サイズは、学習の際の画像サイズの1倍以下である。このような構成とすることで、更に高精度に動きベクトルを推定することができる。
【0055】
なお、画像のサイズは、画像の総画素数ではなく、水平または垂直の画素数(一辺の画素数)が重要である。機械学習モデルが参照する画素範囲が学習の際の画像サイズに対して大きくなることで、推定精度は低下する。このため、分割サイズとしての水平の画素数および垂直の画素数のそれぞれ(一辺の画素数)が、基準の画像サイズ以下であることが好ましい。なお、一辺の画素数とは、水平方向または垂直方向の画素数に限定されるものではなく、対角方向の画素数であってもよい。
【0056】
事前学習、転移学習、またはファインチューニングなどのように、異なる複数のデータセットを用いて順次学習する場合、少なくとも1つのデータセットが画像サイズの前記基準を満足することが好ましい。より好ましくは、全てのデータセットが画像サイズの前記基準を満たす。高精度に動きベクトルを推定するには、機械学習モデルのパラメータが主に基準を満たすデータセットで決定されるように学習することが好ましい。例えば、基準を満たすデータセットで十分に学習した後に基準を満たさない学習データセットで学習する場合、ファインチューニングを限られたステップ数とすることが好ましい。
【0057】
また、マルチタスクの機械学習モデルであれば、基準を満たすデータセットで学習された動きベクトルを推定する際に使用される重みは固定して、基準を満たさないデータセットで他のタスクの学習を行うことが好ましい。基準より小さい画像で学習された事前学習済モデルに対しては、基準を満たすデータセットで十分に学習し直すことが好ましい。
【0058】
機械学習モデル内で分割や縮小を行うモデル構成において、構成の一部のみが基準を満たしても、基準を満たさない部分が含まれることで推定精度が低下する。したがって、最終的に推定される動きベクトルに影響する構成全体で、学習時の画像サイズに対して推定時の画像サイズが基準以下となることが好ましい。このとき、平均プーリングやバイリニア補間などのルールベースの処理は本発明とは関連せず、学習によって決定されるパラメータを用いる処理に対して、サイズの基準を満たせばよい。
【0059】
したがって、ステップS203にて256×256のサイズに分割した後、128×128に縮小(画素数を低減)した画像(第2サイズの画像)を分割画像セットとして機械学習モデルに入力してもよい。ただし、縮小処理を行うことで細部の推定精度が低下する。そこで、高解像度の画像に対しても高精度に動きベクトルを推定する本実施例において分割処理は必須であり、縮小は1/2程度とすることが好ましい。
【0060】
本実施例において、ステップS201にて取得する入力画像セットのサイズ(第1サイズ)は、基準のサイズ(第4サイズ)よりも大きいことが好ましい。入力画像セットが機械学習モデルに入力するサイズ(第2サイズ)よりも大きい場合、本実施例の処理による分割画像セットを取得することで、推定精度を向上させることができる。特に、入力画像セットが第4サイズよりも大きい場合には推定精度の低下も大きくなるため、本実施例の処理により分割画像セットを取得することで、推定精度を大きく向上させることができる。
【0061】
本実施例において、入力画像セットのサイズ(第1サイズ)および基準のサイズ(第4サイズ)に基づいて、分割画像セットを取得するか否かを判定してもよい。入力画像セットが基準のサイズよりも大きい場合、分割画像セットを取得して機械学習モデルに入力する。一方、入力画像セットが基準のサイズ以下の場合、入力画像セットをそのまま機械学習モデルに入力する。これにより、入力画像セットのサイズに応じた最適な処理を行うことができる。入力画像セットが基準のサイズ以下の場合、入力画像セットを直接機械学習モデルに入力することで、分割処理に要する時間を短縮することができる。
【0062】
本実施例において、機械学習モデルに入力する分割画像セット(第2画像セット)は、入力画像セットの部分領域が縮小された画像セットであってもよい。前述のように、分割後に縮小した画像セットを分割画像セットとしてもよく、縮小後に分割した画像セットを分割画像セットとしてもよい。
【0063】
本実施例の推定処理において、学習の際の画像サイズ(第3サイズ)を取得してもよい。例えば、ステップS202にて機械学習モデルを取得するのと同時に学習の際の画像サイズを取得することで、学習の際の画像サイズに基づいて基準のサイズを決定することができる。
【0064】
本実施例において、分割画像セットの画像サイズ(第2サイズ)は、入力画像セットのサイズ、学習時の画像サイズ、および機械学習モデルのうち少なくとも1つに基づいて決定してもよい。分割画像セットの画像サイズは、予め決められた値に固定する必要はない。分割画像セットの画像サイズは、分割画像の重複を考慮して入力画像セットを効率よく分割できるサイズとすることで、推定処理にかかる時間を短くすることができる。また、機械学習モデルに紐づいて学習の際の画像サイズを取得した場合、学習の際の画像サイズに基づいて分割画像セットの画像サイズを決定することが好ましい。
【0065】
また、推定処理に用いる機械学習モデルを複数のモデルから選択する場合、各モデルで学習の際の画像サイズが異なる場合があるため、モデルに基づいて第2サイズを決定してもよい。モデルと学習の際の画像サイズとを紐づけて取得することで、選択されたモデルに合わせて高精度に動きベクトルを推定することができる。
【0066】
本実施例において、機械学習モデルは、畳み込みニューラルネットワークであってもよい。畳み込みニューラルネットワークでは、学習の際の画像サイズよりも大きい画像を入力することができる。畳み込みニューラルネットワークに本実施例を適用することで、任意の画像サイズの入力画像セットに対して、高精度に動きベクトルを推定することができる。
【0067】
本実施例において、機械学習モデルの受容野は、第2サイズよりも大きいことが好ましい。受容野が大きいことで、分割画像セットの全域を考慮して高精度に動きベクトルを推定することができる。分割画像セットの画像サイズが基準のサイズよりも大きい場合、本実施例の課題による推定精度の低下も広い領域で起きてしまうが、本実施例を適用することで、高精度な推定を行いつつ、入力画像の広い領域を考慮した動きベクトルの推定が可能である。
【0068】
本実施例において、動きベクトルは、画像セットに含まれる1つの画像(第1画像)を基準とした他の画像(第2画像)の位置ずれ量に相当する。ただし、基準とする画像を変更すると、動きベクトルの値は変化する。このため、1つの基準画像に対する動きベクトルを推定しても、複数の基準画像に対する動きベクトルをそれぞれ推定してもよい。例えば、画像セットに含まれる2つの画像に対して、一方を基準とした他方の動きベクトルと、他方を基準にした一方の動きベクトルの両方を推定してもよい。
【0069】
(実施例2)
次に、本発明の実施例2について説明する。実施例1では、動画におけるオプティカルフローの推定処理について説明した。推定されたオプティカルフローは、その他の画像処理タスクに活用されることがある。本実施例では、推定したオプティカルフローに基づいて動画を高解像度化する処理を説明する。なお本実施例における画像処理は、実施例1にて図1を参照して説明した画像処理システム100と同じ構成の画像処理システムにより実行される。
【0070】
まず、図4を参照して、本実施例における画像処理の概要について説明する。図4は、本実施例における画像処理の説明図である。画像セット301は、機械学習モデルに入力される画像セットであり、実施例1の分割画像セットに相当する。動きベクトル推定処理は、実施例1と同様に、機械学習モデルを用いて行われる。そこで、画像セット301を動きベクトル推定のモデルに入力して、画像セット301に対応する領域の動きベクトル302を取得する。また、画像セット301の高解像度化処理を、動きベクトル推定とは異なる機械学習モデルで行う。画像セット301および動きベクトル302を高解像度化のモデルに入力して、画像セット301に対応して高解像度化された画像セット303を出力する。
【0071】
動画の高解像度化において、異なる時刻の画像は同じ被写体が異なる位置にあるため、撮像時に異なるサンプリングをされている。したがって、異なる時刻の複数の画像を用いることで、一つの画像から行う高解像度化処理よりも高精度に高解像度化処理を行うことができる。ただし、同じ被写体が画像内の異なる位置に存在する。このため、動きベクトルを用いて位置の違いを考慮することで、高精度な高解像度化処理を実現することができる。
【0072】
複数の画像に基づいて高解像度化処理を実行する機械学習モデルの学習を行うには、複数の画像を含む画像セットに対して、正解の高解像度化画像を用いる。例えば、動画のある時刻のフレームを正解の高解像度化データとして、所定の倍率で縮小処理した同じ時刻の画像と隣接する時刻の画像とを機械学習モデルに入力する画像セットとすればよい。そして、ニューラルネットワークなどの機械学習モデルに画像セットを入力して高解像度化画像を推定させ、正解の高解像度化画像との差分が小さくなるように機械学習モデルのパラメータを最適化すればよい。
【0073】
[学習方法]
次に、図5を参照して、本実施例における高解像度化処理の学習方法について説明する。図5は、高解像度化処理の学習方法のフローチャートである。図5の各ステップは、主に、学習装置101の取得部101b、生成部101c、または更新部101dにより実行される。
【0074】
まずステップS301において、取得部101bは、ステップS101にて取得する画像(画像セット)に加えて、正解となる高解像度化画像を取得する。正解となる高解像度化画像は、128×128サイズの画像セットに対して、256×256サイズとする。すなわち、本実施例では高解像度化の倍率を2倍に設定するが、これに限定さえるものではない。続くステップS302は、ステップS102と同様である。
【0075】
続いてステップS303において、生成部101cは、画像セットと動きベクトルとに基づいて高解像度化画像を取得する。画像セットと動きベクトルとを結合(concat)して高解像度化のための機械学習モデルに入力することで、高解像度化画像を取得する。なお、機械学習モデルは画像セットと動きベクトルとを結合(concat)する構成に限定されるものではない。例えば、動きベクトルを用いて位置ずれを補償した画像セットを入力する構成など、動きベクトルに基づく高解像度化処理が行われる機械学習モデルであればよい。続くステップS304は、ステップS103と同様である。
【0076】
続いてステップS305において、更新部101dは、ステップS304と同様に、ステップS303にて取得された高解像度化画像と、ステップS301にて取得された正解の高解像度化画像との誤差(高解像度化画像の誤差量)を算出(取得)する。
【0077】
続いてステップS306において、更新部101dは、ステップS303、S304にて取得された誤差を逆伝播することで、動きベクトル推定の機械学習モデルおよび高解像度化の機械学習モデルのパラメータを更新する。動きベクトルの誤差を高解像度化の機械学習モデルへの逆伝播に用いてもよく、高解像度化画像の誤差を動きベクトル推定の機械学習モデルへの逆伝播に用いてもよい。
【0078】
続いてステップS307において、更新部101dは、機械学習モデルの学習を終了するか否かを判定する。例えば、所定の更新回数を超えるか、または誤差量が基準値を下回った場合に、学習を終了すると判定すればよい。学習を終了しない場合、ステップS301に戻り、新しい画像セット、正解の動きベクトル、および正解の高解像度化画像を取得し、処理を繰り返す。一方、学習を終了する場合、本実施例の学習を終了として学習された動きベクトルを推定する機械学習モデルおよび高解像度化の機械学習モデルのパラメータが得られる。
【0079】
なお本実施例では、動きベクトル推定の機械学習モデルと高解像度化の機械学習モデルとを同時に学習する例を説明したが、これに限定されるものではない。動きベクトル推定の機械学習モデルの学習と高解像度化の機械学習モデルの学習とを別々に行ってもよい。また、動きベクトル推定の学習のみを先に行い、動きベクトル推定の機械学習モデルのパラメータを固定して高解像度化の機械学習モデルの学習を行ってもよい。また、個別に学習を行ったモデルを用いて、再度、2つの機械学習モデルの学習を同時に追加して行ってもよい。
【0080】
本実施例では、動きベクトルを高解像度化に活用する例を説明したが、複数の画像を用いたアップフレームレート処理または鮮鋭化処理に活用してもよい。また、画像セットの画像は2枚より多くてもよい。また、高解像度化の機械学習モデルは、異なる複数の時刻のフレームに対応する複数の高解像度化画像を出力してもよい。
【0081】
[推定方法]
次に、図6を参照して、図5を参照して説明した学習方法で学習された機械学習モデルを用いた高解像度化処理を説明する。図6は、高解像度化処理のフローチャートである。図6の各ステップは、主に、推定装置103の取得部103bまたは推定部103cにより実行される。
【0082】
ステップS401は、ステップS201と同様である。ただし、入力画像セット(第1画像セット)は、動きベクトルを推定するためだけでなく、高解像度化画像を推定するためにも用いられる。
【0083】
続いてステップS402において、取得部103bは、図5を参照して説明した学習方法により学習された機械学習モデルを取得する。機械学習モデルとして、動きベクトルを推定するためのモデルと、高解像度化のためのモデルとがそれぞれ取得される。続くステップS403は、ステップS203と同様である。
【0084】
続いてステップS404において、推定部103cは、ステップS403にて取得された所定のサイズ(第2サイズ)の分割画像セットを、ステップS402にて取得された動きベクトルを推定する機械学習モデルに入力する。そして推定部103cは、分割画像セットに対応する動きベクトル(分割動きベクトル)を推定する。分割動きベクトルは、分割画像セットの各画像と同じ画像サイズ128×128のマップであり、水平成分および垂直成分の2つのチャンネルを有する。
【0085】
続いてステップS405において、推定部103cは、ステップS403にて取得された分割画像セットと、ステップS404にて取得された分割動きベクトルとを高解像度化のための機械学習モデルに入力する。そして推定部103cは、分割画像セットに対応する高解像度化画像(分割高解像度化画像)を推定する。分割高解像度化画像は、分割画像セットの各画像と同じ領域に対応するが、256×256のサイズに高解像度化されている。続くステップS406は、ステップS205と同様である。
【0086】
ステップS407において、取得部103bは、複数の分割高解像度化画像を部分データとして、分割前の位置関係になるように配置して結合することで、8K解像度(7680×4320)の出力高解像度化画像を取得する。なお、分割領域が互いに重複する場合、重複しないように切り出すか、または重複部分を加重平均することで結合すればよい。これにより、本実施例における画像処理が完了する。
【0087】
実施例1と同様に、ステップS403の分割サイズ(第2サイズ)は、128×128でなくともよく、例えば192×192(すなわち、128の1.5倍)や160×160(すなわち、128の1.25倍)でもよい。
【0088】
また本実施例では、分割画像セットを動きベクトル推定の機械学習モデルおよび高解像度化の機械学習モデルへの入力として共通して用いる。このとき、それぞれの機械学習モデルへの入力サイズは同じでなくてもよい。例えば、入力画像セットを256×256のサイズに分割した後に128×128のサイズに縮小した画像セットを分割画像セットとして動きベクトル推定の機械学習モデルに入力してもよい。
【0089】
また、高解像度化の機械学習モデルに縮小前の256×256のサイズの画像セットを入力してもよい。このとき動きベクトル推定の機械学習モデルに入力するサイズ(第2サイズ)は、本実施例と変わらない。前述のように、学習の際の画像サイズに対して推定の際の画像サイズが大きくなるほど推定精度が低下する課題は、高解像度化処理では生じない。このため、本変形例でも高解像度化に活用する動きベクトルの推定を高精度に行うことができる。
【0090】
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。本発明における画像処理装置は本発明の画像処理機能を有する装置であればよく、撮像装置やPCの形態で実現され得る。
【0091】
各実施例によれば、高解像度の画像に対して、機械学習モデルを用いた動きベクトル推定を高精度に行うことが可能な画像処理方法、画像処理装置、およびプログラムを提供することができる。
【0092】
各実施例の開示は、以下の方法および構成を含む。
(方法1)
第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、前記第1画像セットの部分領域であって前記第1サイズよりも小さい第2サイズの第2画像セットを取得する工程と、
前記第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する工程とを有し、
前記動きベクトルは、前記第1画像を基準とした前記第2画像における動きベクトルであり、
前記機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、
前記第2サイズは、前記第3サイズに関して基準となる第4サイズ以下であることを特徴とする画像処理方法。
(方法2)
前記第4サイズは、前記第3サイズの1.5倍以下であることを特徴とする方法1に記載の画像処理方法。
(方法3)
前記第4サイズは、前記第3サイズの1.25倍以下であることを特徴とする方法1に記載の画像処理方法。
(方法4)
前記第4サイズは、前記第3サイズ以下であることを特徴とする方法1に記載の画像処理方法。
(方法5)
前記第1サイズは、前記第1画像および前記第2画像のそれぞれの一辺の画素数であることを特徴とする方法1乃至4のいずれかに記載の画像処理方法。
(方法6)
前記第1サイズは、前記第4サイズよりも大きいことを特徴とする方法1乃至5のいずれかに記載の画像処理方法。
(方法7)
前記第1サイズと前記第4サイズとに基づいて、前記第2画像セットを取得するか否かを判定する工程を更に有することを特徴とする方法1乃至6のいずれかに記載の画像処理方法。
(方法8)
前記第1サイズが前記第4サイズよりも大きい場合、前記第2画像セットを取得し、該第2画像セットを前記機械学習モデルに入力することで、前記動きベクトルを取得し、
前記第1サイズが前記第4サイズよりも小さい場合、前記第1画像セットを前記機械学習モデルに入力することで、前記動きベクトルを取得することを特徴とする方法7に記載の画像処理方法。
(方法9)
前記第1画像セットの前記部分領域を縮小することで、前記第2画像セットを取得することを特徴とする方法1乃至8のいずれかに記載の画像処理方法。
(方法10)
前記第2画像セットおよび前記動きベクトルに基づいて取得された画像、または前記動きベクトルの少なくとも一方を部分データとして取得し、異なる複数の前記部分領域のそれぞれに対応する複数の前記部分データを結合する工程を更に有することを特徴とする方法1乃至9のいずれかに記載の画像処理方法。
(方法11)
前記第2画像セットおよび前記動きベクトルを前記機械学習モデルに入力することで、前記第2画像セットに対応する高解像度化画像を推定する工程を更に有することを特徴とする方法1乃至9のいずれかに記載の画像処理方法。
(方法12)
前記第4サイズを取得する工程を更に有することを特徴とする方法1乃至11のいずれかに記載の画像処理方法。
(方法13)
前記第1サイズ、前記第4サイズ、および前記機械学習モデルのうち少なくとも1つに基づいて、前記第2サイズを決定する工程を更に有することを特徴とする方法1乃至12のいずれかに記載の画像処理方法。
(方法14)
前記機械学習モデルは、畳み込みニューラルネットワークであることを特徴とする方法1乃至13のいずれかに記載の画像処理方法。
(方法15)
前記第1画像および前記第2画像は、動画データにおける異なる時刻の複数のフレームであることを特徴とする方法1乃至14のいずれかに記載の画像処理方法。
(方法16)
前記機械学習モデルの受容野は、前記第2サイズよりも大きいことを特徴とする方法1乃至15のいずれかに記載の画像処理方法。
(構成1)
第1サイズの第1画像および第2画像を含む第1画像セットに基づいて、前記第1画像セットの部分領域であって前記第1サイズよりも小さい第2サイズの第2画像セットを取得する取得部と、
前記第2画像セットを機械学習モデルに入力することで、動きベクトルを取得する推定部とを有し、
前記動きベクトルは、前記第1画像を基準とした前記第2画像における動きベクトルであり、
前記機械学習モデルは、第3サイズの第3画像セットを用いて学習されており、
前記第2サイズは、前記第3サイズに関して基準となる第4サイズ以下であることを特徴とする画像処理装置。
(構成2)
方法1乃至16のいずれかに記載の画像処理方法をコンピュータに実行させることを特徴とするプログラム。
【0093】
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【符号の説明】
【0094】
103b 取得部
103c 推定部
201 入力画像セット
図1
図2
図3
図4
図5
図6
図7