(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-03
(45)【発行日】2024-10-11
(54)【発明の名称】情報処理方法及びプログラム
(51)【国際特許分類】
G06T 7/55 20170101AFI20241004BHJP
G06T 7/00 20170101ALI20241004BHJP
B60W 40/02 20060101ALI20241004BHJP
【FI】
G06T7/55
G06T7/00 350C
B60W40/02
(21)【出願番号】P 2021122628
(22)【出願日】2021-07-27
【審査請求日】2023-11-28
(73)【特許権者】
【識別番号】000005326
【氏名又は名称】本田技研工業株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】アミット・ポーパーット・モア
【審査官】高野 美帆子
(56)【参考文献】
【文献】特開平09-219814(JP,A)
【文献】米国特許出願公開第2021/0049371(US,A1)
【文献】Tinghui Zhou et al,Unsupervised Learning of Depth and Ego-Motion from Video,2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2017年07月26日,https://ieeexplore.ieee.org/document/8100183
【文献】Jie Song et al,Human Body Model Fitting by Learned Gradient Descent,arXiv,2020年08月19日,https://arxiv.org/abs/2008.08474
【文献】Mi Tian et al,3D Scene Geometry-Aware Constraint for Camera Localization with Deep Learning,2020 IEEE International Conference on Robotics and Automation (ICRA),2020年08月31日,https://ieeexplore.ieee.org/document/9196940
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/55
G06T 7/00
B60W 40/02
(57)【特許請求の範囲】
【請求項1】
情報処理装置において実行される情報処理方法であって、
第1画像又は前記第1画像と対になる第2画像を第1機械学習モデルに入力して深度マップを予測することと、
前記第1画像と前記第2画像とを第2機械学習モデルに入力して、前記第1画像と前記第2画像とを撮影した撮像装置の相対的な移動及び回転を予測することと、
前記第1画像から前記第2画像への予測された前記相対的な移動及び回転と、前記第1画像について予測された前記深度マップとに基づく画像変換を、前記第1画像に適用した第1変換画像を生成することと、
前記第1変換画像と前記第2画像の間の誤差を含んだ損失を算出することと、
前記相対的な移動及び回転に関する前記損失の勾配と、前記第1変換画像と、前記第1画像及び前記第2画像とを前記第2機械学習モデルに入力して、前記相対的な移動及び回転を繰り返し予測し、新たに予測される前記相対的な移動及び回転に基づく新たな前記第1変換画像と前記第2画像の間の誤差を含んだ前記損失を収束させることと、を含むことを特徴とする情報処理方法。
【請求項2】
前記第2画像から前記第1画像への予測された前記相対的な移動及び回転と、前記第2画像について予測された前記深度マップとに基づく画像変換を、前記第2画像に適用した第2変換画像を生成することと、
前記第2変換画像と前記第1画像の間の誤差を含んだ前記損失を算出することと、を更に含み、
前記損失を収束させることは、前記相対的な移動及び回転に関する前記損失の勾配と、前記第2変換画像と、前記第1画像及び前記第2画像とを前記第2機械学習モデルに入力して、前記相対的な移動及び回転を繰り返し予測することを含む、請求項1に記載の情報処理方法。
【請求項3】
前記損失は、前記第1変換画像と前記第2画像の間の誤差と、前記第2変換画像と前記第1画像の間の誤差との両方を含む、ことを特徴とする請求項2に記載の情報処理方法。
【請求項4】
前記第1変換画像についての深度マップを生成することと、
前記第1変換画像についての深度マップと前記第1画像についての深度マップの間の誤差を含んだ前記損失を算出することと、を更に含み、
前記損失を収束させることは、前記深度マップに関する損失の勾配と、前記第1変換画像についての深度マップと、前記第1画像とを前記第1機械学習モデルに入力して、前記深度マップを繰り返し予測することを含む、請求項1から3のいずれか1項に記載の情報処理方法。
【請求項5】
前記情報処理装置は、移動体の外部に配置される情報処理サーバである、ことを特徴とする請求項1から4のいずれか1項に記載の情報処理方法。
【請求項6】
前記情報処理装置は、車両を含む移動体である、ことを特徴とする請求項1から4のいずれか1項に記載の情報処理方法。
【請求項7】
前記第1画像と前記第2画像とは、同一の撮像装置で撮像される画像であり、撮像される時刻が異なる、ことを特徴とする請求項1から6のいずれか1項に記載の情報処理方法。
【請求項8】
コンピュータに、請求項1から7のいずれか1項に記載の情報処理方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
近年、カメラで撮影された画像をディープニューラルネットワーク(DNN)に入力し、DNNの推論処理により画像内の深度やカメラポーズ(2枚の画像を撮影した撮像装置の間の相対的な移動及び回転)を推定する技術が知られている(非特許文献1及び2)。従来の(DNNを用いない手動の)推定方法で相対的なカメラポーズを推定するためには、2枚の画像間の対応関係を推定したうえで、当該画像の対応関係に適合するカメラポーズや深度マップを最適化問題として解く必要があったが、上記のDNNを用いる方法により、画像間の対応関係や深度の推定においてより正確な推定結果を得ることが可能になった。
【0003】
一方、非特許文献1及び2で提案される技術では、カメラポーズについては、従来の(DNNを用いない手動の)推定方法で相対的なカメラポーズを推定する場合と比べて、高い性能が得られていないという課題がある。
【先行技術文献】
【非特許文献】
【0004】
【文献】Vitor Guizilini, 外3名, 「3D Packing for Self-Supervised Monocular Depth Estimation」,arXiv:1905.02693v4 [cs.CV] 28 Mar 2020 (https://arxiv.org/pdf/1905.02693.pdf)
【文献】Clement Godard, 外3名, 「Digging Into Self-Supervised Monocular Depth Estimation」,arXiv:1806.01260v4 [cs.CV] 17 Aug 2019 (https://arxiv.org/pdf/1806.01260.pdf)
【文献】John Flynn, 外7名, 「DeepView: View Synthesis with Learned Gradient Descent」,arXiv:1906.07316v1 [cs.CV] 18 Jun 2019 (https://arxiv.org/pdf/1906.07316.pdf)
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、DNNを用いた推論処理において、DNNの出力に基づく損失の勾配をDNNに入力して繰り返し演算を行うことにより、勾配降下法のパラメータ変更に係る設計(例えば学習係数や正規化など)をDNNに置き換える技術が知られている。非特許文献3は、1つのDNN(CNN)に損失の勾配を入力する演算を行って、複数の視点から撮影された画像から深度ごとの複数画像(マルチプレーン画像)を生成し、撮影画像に無い新たな視点の合成画像を生成する技術を提案している。上述の非特許文献1及び2に係る技術は、一度のDNNの演算でカメラポーズ等を推定する技術にすぎず、また、被特許文献3に係る技術は、カメラポーズを推定する構成を考慮していなかった。
【0006】
本発明は、上記課題に鑑みてなされ、その目的は、機械学習モデルを用いてカメラポーズを推定する場合に、カメラポーズの推定精度を向上させることが可能な推定技術を提供することである。
【課題を解決するための手段】
【0007】
本発明によれば、
情報処理装置において実行される情報処理方法であって、
第1画像又は前記第1画像と対になる第2画像を第1機械学習モデルに入力して深度マップを予測することと、
前記第1画像と前記第2画像とを第2機械学習モデルに入力して、前記第1画像と前記第2画像とを撮影した撮像装置の相対的な移動及び回転を予測することと、
前記第1画像から前記第2画像への予測された前記相対的な移動及び回転と、前記第1画像について予測された前記深度マップとに基づく画像変換を、前記第1画像に適用した第1変換画像を生成することと、
前記第1変換画像と前記第2画像の間の誤差を含んだ損失を算出することと、
前記相対的な移動及び回転に関する前記損失の勾配と、前記第1変換画像と、前記第1画像及び前記第2画像とを前記第2機械学習モデルに入力して、前記相対的な移動及び回転を繰り返し予測し、新たに予測される前記相対的な移動及び回転に基づく新たな前記第1変換画像と前記第2画像の間の誤差を含んだ前記損失を収束させることと、を含むことを特徴とする情報処理方法が提供される。
【発明の効果】
【0008】
本発明によれば、機械学習モデルを用いてカメラポーズを推定する場合に、カメラポーズの推定精度を向上させることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】実施形態1に係る情報処理サーバの機能構成例を示すブロック図
【
図2】実施形態1に係るモデル処理部114における、深度マップ予測及びカメラポーズ予測について説明するための図
【
図3A】実施形態1に係る画像変換(時刻tから時刻t+1)について説明する図
【
図3B】実施形態1に係る、逆向きの画像変換(時刻t+1から時刻t)について説明する図
【
図4A】実施形態1に係る予測されたカメラポーズの損失について説明する図
【
図4B】実施形態1に係る予測された深度マップの損失について説明する図
【
図5】実施形態1に係る、イテレーションを伴う深度マップ予測について説明する図
【
図6】実施形態1に係る、イテレーションを伴うカメラポーズ予測について説明する図
【
図7】実施形態1に係る、モデル処理部における(カメラポーズ及び深度マップの)予測処理の一連の動作を示すフローチャート
【
図8】実施形態2に係る車両の機能構成例を示すブロック図
【
図9】実施形態2に係る車両の走行制御のための主な構成を示す図
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態で説明されている特徴の組み合わせの全てが発明に必須のものとは限らない。実施形態で説明されている複数の特徴のうち二つ以上の特徴は任意に組み合わされてもよい。また、同一若しくは同様の構成には同一の参照番号を付し、重複した説明は省略する。
【0011】
<情報処理サーバの構成>
次に、情報処理サーバの機能構成例について、
図1を参照して説明する。なお、以降の図を参照して説明する機能ブロックの各々は、統合されまたは分離されてもよく、また説明する機能が別のブロックで実現されてもよい。また、ハードウェアとして説明するものがソフトウェアで実現されてもよく、その逆であってもよい。情報処理サーバは、車両などの移動体の外部に配置される。
【0012】
制御部104は、例えば、CPU110、RAM111、ROM112を含み、情報処理サーバ100の各部の動作を制御する。制御部104は、CPU110がROM112に格納されたコンピュータプログラムを、RAM111に展開、実行することにより、制御部104を構成する各部の機能を発揮させる。制御部104は、CPU110のほか、GPU、或いは、機械学習の処理やニューラルネットワークの処理の実行に適した専用の回路を更に含んでよく、GPU或いは当該回路がモデル処理部114の処理を実行してもよい。
【0013】
画像データ取得部113は、ユーザの操作する車両などの外部装置から送信される画像データを取得する。画像データ取得部113は、取得した画像データを記憶部103に格納する。取得された画像データは、取得された画像データに対する推論結果を得るために、推論段階の機械学習モデル(単に学習モデルともいう)に入力される。また、画像データ取得部113が取得した画像データは、モデル処理部114のモデルを学習させるために用いられてもよい。
【0014】
モデル処理部114は、本実施形態に係る機械学習モデルを含み、当該学習モデルの学習段階の処理や推論段階の処理を実行する。学習モデルは、例えば第1及び第2の画像データを入力して、第1の画像データを撮影したカメラ1と第2の画像データを撮影したカメラ2の間の相対的なカメラポーズを予測する。相対的なカメラポーズは、例えば、一方のカメラに対する他方のカメラの相対的な移動と相対的な3軸周りの回転とを含む。また、学習モデルは、第1及び第2の画像データのそれぞれに対応する深度マップを予測する。
【0015】
第1の画像データと第2の画像データとは、例えば車両の前方を向くように搭載されている1台のカメラで、異なる時刻(例えば時刻tとその後の時刻t+1)に撮影された画像データであり得る。このとき、車両の移動によって時刻tと時刻t+1の間でカメラが移動するため、それぞれの画像データを撮影したカメラのカメラポーズが異なる。また、第1の画像データと第2の画像データとは、例えば車両の前方を向くように搭載されている2台のカメラで撮影された2つの画像データであってよい。この場合もそれぞれの画像データを撮影したカメラのカメラポーズが異なっている。固定された2台のカメラで撮影された画像データに本実施形態の予測処理を用いる場合、推定されるカメラパラメータからカメラのキャリブレーションやカメラの異常検知を行うことができる。
【0016】
DNNは、学習段階の処理を行うことにより学習済みの状態となり、新たな画像データを学習済みのDNNに入力することにより新たな画像データに対するカメラポーズ予測と深度マップ予測(推論段階の処理)を行うことができる。推論段階の処理は、学習済みモデルを用いた推論処理を情報処理サーバ100において実行する場合に、実行される。情報処理サーバ100は、学習させた学習済みのモデルを情報処理サーバ100側で実行して、推論結果を、車両や情報処理装置などの外部装置に送信する。情報処理サーバ100は、一般に、車両などと比べて豊富な計算資源を用いることができるため、後述する予測処理のように繰り返し演算を行う場合には適している。また、様々な車両で撮影された画像データを受信、蓄積することで、多種多用な状況における画像データを収集することができ、より多くの状況に対応した学習が可能になる。
【0017】
予測結果提供部115は、モデル処理部114によって予測された深度マップとカメラポーズの情報を、画像データを送信した車両などの外部装置に提供する。
【0018】
通信部101は、例えば通信用回路等を含む通信デバイスであり、例えばインターネットなどのネットワークを通じて、車両や情報処理装置などの外部装置と通信する。通信部101は、車両や情報処理装置などの外部装置から送信される実画像を受信するほか、学習モデルによって予測されたカメラパラメータや深度マップを車両に送信する。電源部102は、情報処理サーバ100内の各部に電力を供給する。記憶部103は、ハードディスクや半導体メモリなどの不揮発性メモリである。記憶部103は、後述するDNNの学習済みパラメータや学習データを格納する。
【0019】
<モデル処理部の学習モデルの例>
次に、本実施形態に係るモデル処理部114における学習モデルの例について説明する。なお、以下の説明では、車両に搭載された1台のカメラで時刻tとその後の時刻t+1に撮影された2つの画像データがモデル処理部114に入力される場合を例に説明する。
【0020】
図2を参照して、モデル処理部114の構成と、モデル処理部114が含む学習モデルの処理例について説明する。モデル処理部114は、DNN_D201、DNN_P202と、画像変換部203と、損失算出部204と、イテレーション制御部205とを含む。また、モデル処理部114は、学習モデルを含む。本実施形態に係る学習モデルは、例えば、DNN_D201、DNN_P202と、画像変換部203と、損失算出部204と、イテレーション制御部205とを含むものとする。
【0021】
深度マップ予測部201(以下、DNN_D201ともいう)は、機械学習モデルの1例としての1つ以上のディープニューラルネットワーク(DNN)で構成され、入力された画像データの深度マップ211を予測結果として出力する。例えば、DNN_D201は、時刻tの画像データが入力されると時刻tの画像データに対応する深度マップを出力し、時刻t+1の画像データが入力されると時刻t+1の画像データに対応する深度マップを出力する。深度マップは、例えば、入力画像の各画素値について、予測される深度(カメラから物体までの距離)を画像で表す情報であり、カメラに近いほど白色、遠いほど黒色で表される。また、後述するように、DNN_D201は、深度マップを出力するためにイテレーション(繰り返し演算)を行って、予測する深度マップの精度を向上させることができる。このとき、DNN_D201は、画像データと、直前のイテレーションで予測した深度マップと、後述する、深度マップに関する損失の勾配とを入力して、現在のイテレーションにおける深度マップを出力することができる。DNN_D201は、例えば、CNN(Convolutional Neural Network)やオートエンコーダなどにより構成されてよい。
【0022】
カメラポーズ予測部202(DNN_P202ともいう)は、機械学習モデルの一例としての1つ以上のDNNで構成され、入力された2つの画像データの間の相対的なカメラポーズ212を予測結果として出力する。例えば、DNN_P202は、時刻tと時刻t+1の2つの画像データが入力されると、時刻tと時刻t+1の画像データの間の相対的なカメラポーズ(例えばカメラの移動量と3軸周りの回転量)を出力する。また、後述するように、DNN_P202は、予測結果としてのカメラポーズを出力するためにイテレーションを行って、予測するカメラポーズの精度を向上させることができる。このとき、DNN_P202は、2つの画像データと、直前のイテレーションで予測したカメラポーズと、後述する、カメラポーズに関する損失の勾配とを入力して、現在のイテレーションにおけるカメラポーズを出力することができる。DNN_P202は、時刻tから時刻t+1へカメラポーズが変化した場合に対応した、相対的なカメラポーズP(It、It+1)を出力することができる。また、DNN_P202は、時刻t+1から時刻tへの相対的なカメラポーズP(It+1、It)を出力することができる。DNN_P201は、例えば、CNN(Convolutional Neural Network)などにより構成されてよい。
【0023】
画像変換部203は、予測された(相対的な)カメラポーズと深度マップとを用いて、一方の時刻で撮影された画像データを変換し、他方の時刻に対応する変換画像213を生成する。例えば、
図3Aに示すように、画像変換部203は、時刻tで撮影された画像データ301と、時刻tの画像データ301に対して推定された深度マップ302と、時刻tから時刻t+1への相対的なカメラポーズ303を入力する。そして、画像変換部203は、入力データに基づいて、時刻t+1に対応する変換画像304を生成する。
【0024】
ここで、画像変換部203による画像変換は、一方のカメラで撮影された画像データに対して、予測された相対的なカメラポーズと深度マップとに基づく画像変換を適用して、他方のカメラで撮影された仮想的な画像データを再現することに相当する。従って、時刻tにおける画像データと時刻t+1における画像データとから予測された、(相対的な)カメラポーズ(と深度マップと)が正確であるほど、時刻t+1の画像データと、時刻t+1に対応する変換画像304との誤差は小さくなる。反対に、実際の時刻t+1の画像データと時刻t+1に対応する変換画像304との誤差が大きい場合には、予測されたカメラポーズ或いは深度マップは正確ではない。従って、時刻t+1に対応する変換画像と実際の時刻t+1の画像データとの差異がより小さくなるように、予測されたカメラポーズ或いは深度マップの予測を繰り返すことにより、精度の高い(相対的な)カメラポーズと深度マップとを得ることができる。
【0025】
なお、画像変換部203は、画像データI
t、相対的なカメラポーズP(I
t、I
t+1)、及び深度マップD
tを用いた画像変換に加えて、画像データI
t+1、相対的なカメラポーズP(I
t+1、I
t)と深度マップD
t+1とを用いた画像変換を行うことができる。例えば、
図3Bに示すように、画像変換部203は、時刻t+1に撮影された画像データ311と、時刻t+1の画像データに基づいて予測された深度マップ312と、相対的なカメラポーズ313(P(I
t+1、I
t))とを入力して、時刻tに対応する変換画像314を生成することができる。このように、時刻tから時刻t+1への画像変換と、時刻t+1から時刻tへの画像変換との両方向への変換についてその誤差が小さくなるように最適化を拘束することにより、高い予測精度を実現することができる。また、DNNを学習させる場合には、1対の画像があれば2倍の学習が可能になるため、少ない学習データで効率的に学習を行うことができる。
【0026】
損失算出部204は、撮影された画像と変換画像との間の誤差に基づく損失214を算出する。例えば、損失算出部204は、画像データI
t+1と画像変換部203により出力された時刻t+1に対応する変換画像との間の誤差(例えば各画素値の差分の2乗和)を損失に含めてよい。また、損失算出部204は、画像データI
tと画像変換部203により出力された時刻tに対応する変換画像との間の誤差(例えば各画素値の差分の2乗和)を、更に損失に含めてよい。例えば、損失算出部204は、画像データI
tと画像変換部203により出力された時刻tに対応する変換画像を用いる場合、
図4Aに示すように、画像データI
tである画像データ401と時刻tに対応する変換画像402とを用いて、カメラポーズに関する損失403を算出する。
【0027】
損失算出部204は、画像データと変換画像との間の誤差に加えて、或いはそれに代えて、画像特徴に基づく誤差、SSIM(構造的類似性)指標などを用いて、損失を算出してもよい。損失算出部204は、例えば、所定の特徴量を抽出するように予め学習させた別のDNNを用いて、画像データIt+1と時刻t+1に対応する変換画像とのそれぞれの特徴量を抽出するようにしてもよい。この場合、抽出したそれぞれの特徴量の相違に基づいて、画像特徴に基づく誤差を算出してもよい。もちろん、損失算出部204は、画像データItと時刻tに対応する変換画像についての、画像特徴に基づく誤差を算出してもよい。
【0028】
損失算出部204は、更に、撮影画像から予測される深度マップと、画像変換部203によって画像変換された深度マップとの誤差を更に加味して損失を計算してもよい。例えば、損失算出部204は、時刻tにおける深度マップ411と、時刻tに対応する深度マップの変換画像412とを用いて、深度マップに関する損失413を算出する。このとき、損失算出部204は、例えば、比較対象の2つの深度マップの各画素値(深度の値)の差を加味する。損失算出部204は、更に、これに加えて又はこれに代えて、比較対象の2つの深度マップの各画素値の勾配(深度の滑らかさ)の差を加味してもよい。
【0029】
また、損失算出部204は、画像変換において、隠れ領域をマスクして当該隠れ領域については誤差の算出に用いないようにしてもよい。例えば、時刻tの画像データから時刻t+1に対応する変換画像を得る場合に、時刻t+1でのみ画像に現れる領域については本質的に予測精度が得られない。このため、損失算出部204は、時刻tの深度マップと時刻t+1の深度マップとを用いて、隠れ領域を特定し、隠れ領域を示すマスク情報を記憶部103に記憶する。隠れ領域を示すマスク情報は、例えば、0又は1を有するバイナリデータであってよく、時刻t+1に対応する変換画像において正確な予測が得られない領域を0とし、そうでない領域を1として設定するものであってよい。
【0030】
例えば、損失算出部204は、一例として、損失Lを以下のように算出することができる。
L=(It-It’)2+(It+1-It+1’)2+(Dt-Dt’)2+(Dt+1-Dt+1’)2
ここで、
It’はtに対応する変換画像、It+1’はt+1に対応する変換画像、Dtは時刻tの画像データから予測される深度マップ、Dt’は時刻tに対応する深度マップの変換画像を表す。また、Dt+1は時刻t+1の画像データから予測される深度マップ、Dt+1’は時刻t+1に対応する深度マップの変換画像を表す。
【0031】
イテレーション制御部205は、DNN_D201及びDNN_P202による最適化を実現するために、繰り返し演算(すなわちイテレーション)を制御する。DNN_D201は、上述のように、繰り返し演算によって、予測する深度マップの精度を向上させる。具体的には、
図5に示すように、DNN_D201は、例えば、時刻tの画像データと、時刻tの画像データに対して直前(例えばN)のイテレーションで予測された深度マップ502と、深度マップに関する損失の勾配503とを入力する。そして、DNN_D201は、N+1回目のイテレーションにおける深度マップ504を出力する。イテレーションによる計算では、N回目のイテレーションの深度マップ502と、深度マップに関する損失の勾配503は、イテレーションごとに更新される。時刻tの深度マップに関する損失の勾配503は、損失における時刻tの深度マップ(D
t)の勾配(例えば、上記損失Lのコスト関数における当該D
tによる偏微分)である。また、時刻t+1の深度マップに関する損失の勾配は、損失における時刻t+1の深度マップ(D
t+1)の勾配(例えば、上記損失Lのコスト関数における当該D
t+1による偏微分)である。
【0032】
DNN_P202は、上述のように、繰り返し演算によって、予測するカメラポーズの精度を向上させる。具体的には、
図6に示すように、DNN_P202は、例えば、時刻t及び時刻t+1の画像データ601と、画像データ601に対する、直前(例えばN)のイテレーションで予測されたカメラポーズ602と、カメラポーズに関する損失の勾配603とを入力する。そして、DNN_P201は、N+1回目のイテレーションにおけるカメラポーズ604を出力する。イテレーションによる計算では、N回目のイテレーションのカメラポーズ602と、カメラポーズに関する損失の勾配603は、イテレーションごとに更新される。(時刻tから時刻t+1への)カメラポーズに関する損失の勾配603は、損失における時刻tから時刻t+1へのカメラポーズの勾配(例えば、上記損失Lにおける当該カメラポーズによる偏微分)である。また、(時刻t+1から時刻tへの)カメラポーズに関する損失の勾配は、損失における時刻t+1から時刻tへのカメラポーズの勾配(例えば、上記損失Lにおける当該カメラポーズによる偏微分)である。
【0033】
イテレーション制御部205は、損失214が収束するまでイテレーションを繰り返す。イテレーション制御部205は、例えば、算出した損失214が所定の回数に渡って閾値以下である場合に、損失214が収束したと判定してイテレーションを終了する。
【0034】
<モデル処理部における予測処理の一連の動作>
次に、
図7を参照して、モデル処理部114における(カメラパラメータ及び深度マップの)予測処理の一連の動作について説明する。なお、本処理は、例えば、制御部104のCPU110(或いはGPU)がROM112に記憶されたプログラムをRAM111に展開、実行することにより実現される。なお、制御部104のモデル処理部114の学習モデルは学習済みの状態(すなわち、上述のDNN_D201及びDNN_P202は学習済みの状態)で実行される。
【0035】
S701において、制御部104の画像データ取得部113は、車両などの外部装置から2つの画像データを取得する。2つの画像データは、例えば、車両に搭載された1台のカメラが時刻t及びその後の時刻t+1に撮影した画像である。
【0036】
S702において、制御部104のモデル処理部114は、時刻tの画像データ(It)及び時刻t+1の画像データ(It+1)のそれぞれに対する深度マップ(Dt及びDt+1)を予測する。具体的には、最初のイテレーションにおいて、DNN_D201が画像データ(It)を入力して、時刻tにおける深度マップ(Dt)を予測する。また、DNN_D201は画像データ(It+1)を入力して、時刻t+1における深度マップ(Dt+1)を予測する。なお、本ステップの時点では直近のイテレーションは実行されていないため、DNN_D201には、直近のイテレーションの深度マップ502や深度マップに関する損失の勾配503は入力されない。
【0037】
S703において、モデル処理部114は、時刻tの画像データ(It)から時刻t+1の画像データ(It+1)に対する、相対的なカメラポーズP(It、It+1)を予測する。また、モデル処理部114は、時刻t+1の画像データ(It+1)から時刻tの画像データ(It)に対する、相対的なカメラポーズP(It+1、It)を予測する。具体的には、最初のイテレーションにおいて、DNN_P202が画像データ(It)と画像データ(It+1)とを入力して、相対的なカメラポーズP(It、It+1)を予測する。また、DNN_P202は画像データ(It)と画像データ(It+1)を入力して、相対的なカメラポーズP(It+1、It)を予測する。なお、本ステップの時点では直近のイテレーションは実行されていないため、DNN_P202には直近のイテレーションのカメラポーズ602やカメラポーズに関する損失の勾配603は入力されない。
【0038】
S704において、画像変換部203は、予測された深度マップとカメラポーズを用いて、時刻tにおける画像データ(It)と時刻t+1における画像データ(It+1)を画像変換する。具体的には、画像変換部203は、時刻tにおける画像データ(It)と時刻tにおける深度マップ(Dt)と相対的なカメラポーズP(It、It+1)を用いて、時刻t+1に対応する変換画像を生成する。また、画像変換部203は、時刻t+1における画像データ(It+1)と時刻t+1における深度マップ(Dt+1)と相対的なカメラポーズP(It+1、It)を用いて、時刻tに対応する変換画像を生成する。
【0039】
また、画像変換部203は、相対的なカメラポーズP(It、It+1)と時刻tにおける深度マップ(Dt)とを用いて、時刻t+1に対応する深度の変換画像(Dt+1’)を生成する。更に、画像変換部203は、相対的なカメラポーズP(It+1、It)と時刻t+1における深度マップ(Dt+1)とを用いて、時刻tに対応する深度の変換画像(Dt’)を生成する。
【0040】
S705において、損失算出部204は、変換前のデータと変換画像との差分を含む損失を計算する。損失は、例えば上述した損失Lであってよい。すなわち、損失算出部204は、時刻tと時刻t+1のそれぞれの画像、及び時刻tと時刻t+1に対応するそれぞれの変換画像の2乗誤差を損失に含める。更に、損失算出部204は、時刻tと時刻t+1のそれぞれの深度マップ、及び時刻tと時刻t+1に対応するそれぞれの深度マップの2乗誤差を損失に含める。すなわち、時刻tと時刻t+1の両方向へのカメラポーズと、時刻tと時刻t+1の両方における深度マップとが、損失を最小化するように最適化される。
【0041】
S706において、イテレーション制御部205は、損失算出部204によって算出された損失を監視し、損失が収束の条件を満たすかを判定する。イテレーション制御部205は、例えば、算出した損失が、所定の回数に渡って損失値の閾値以下である場合に、収束の条件を満たしたと判定して、本一連の処理を終了する。一方、イテレーション制御部205は、算出した損失が所定の回数に渡って損失値の閾値以下になっていないと判定した場合には、処理をS707に進める。
【0042】
S707において、イテレーション制御部205は、S705で算出された損失に基づき、深度マップに関する損失の勾配を算出する。深度マップに関する損失の勾配は、時刻t及び時刻t+1のそれぞれの深度マップに関して算出することができる。損失における時刻tの深度マップ(Dt)の勾配は、例えば、損失Lにおける当該Dtによる偏微分である。また、損失における時刻t+1の深度マップ(Dt+1)の勾配は、例えば、損失Lにおける当該Dt+1による偏微分である。
【0043】
イテレーション制御部205は、深度マップに関する損失の勾配と、現在のイテレーション(すなわちS702の予測結果)と、各画像データ(It、It+1)とを用いて、新たなイテレーションにおける深度マップ(Dt、Dt+1)を予測する。
【0044】
S708において、イテレーション制御部205は、S705で算出された損失に基づき、カメラポーズに関する損失の勾配を算出する。カメラポーズに関する損失の勾配は、相対的なカメラポーズP(It、It+1)とP(It+1、It)とのそれぞれに関して算出することができる。損失におけるカメラポーズP(It、It+1)の勾配は、例えば、損失Lにおける当該カメラポーズP(It、It+1)による偏微分である。また、損失におけるカメラポーズP(It+1、It)の勾配は、例えば、損失Lにおける当該カメラポーズP(It+1、It)による偏微分である。
【0045】
イテレーション制御部205は、カメラポーズに関する損失の勾配と、現在のイテレーション(すなわちS703の予測結果)と、各画像データ(It、It+1)とを用いて、新たなイテレーションにおける相対的なカメラポーズ(P(It、It+1)とP(It+1、It))を予測する。
【0046】
イテレーション制御部205は、S708の処理が終わると、イテレーションの処理を継続するように、処理をS704に進めて、S704~S708の処理を繰り返す。
【0047】
このように、モデル処理部114における予測処理では、元の画像データと、推定されたカメラパラメータと深度マップとから得られる変換画像とを比較した損失を計算し、深度マップに関する損失の勾配やカメラパラメータに関する損失の勾配を用いて、深度マップ及びカメラポーズを繰り返し演算により最適化する。このようにすることで、DNNによって予測されるカメラパラメータや深度マップを勾配に応じて修正し、DNNによる一度の処理によって予測される結果よりも予測精度を高めることができる。
【0048】
上述の予測処理では明示していないが、モデル処理部114は、最終的に求めたカメラポーズと深度マップとを、例えば車両などの外部装置に送信することができる。すなわち、モデル処理部114は、車両などの外部装置から処理対象の2つの画像を受け付けて、当該画像から予測される深度マップとカメラパラメータとを当該外部装置に返信することができる。このようにすれば、車両などの外部装置は、撮影した画像に対する推論結果を情報処理サーバ100から適宜取得しながら、例えば自動運転などの走行制御を行うことができる。
【0049】
なお、上述の予測処理の一連の動作は、モデル処理部114の学習モデルが推論段階(すなわち学習済み)において行われる動作であった。学習モデルを学習させる場合には、モデル処理部114は、上記S701~S708の処理に加え、DNN_D201とDNN_P202の重みパラメータを更新する処理を加えればよい。具体的には、S705において損失を計算した後に、損失の勾配を用いたバックプロパゲーションを行って各DNNの重みパラメータを更新するようにすればよい。或いは、S706において収束の条件を満たしたと判定した後(すなわち繰り返し演算を終了した後)の最終的なカメラポーズと深度マップを用いて、S705と同様に変換前のデータと変換画像との差分を含む損失を算出してもよい。この場合、算出した損失を全て学習データに渡って蓄積させ、蓄積した損失に基づいてDNNのバックプロパゲーションを行ってもよい。
【0050】
また、上述の例では、モデル処理部114が、取得した画像に基づいて深度マップを生成する例を説明した。しかし、モデル処理部114は、車両などのLidar(Light Detection and Ranging)やレーダによって生成される深度マップを用いて、カメラパラメータを推定するようにしてもよい。
【0051】
(実施形態2)
次に、本発明の実施形態2について説明する。上述の実施形態では、情報処理サーバ100において学習モデルによる予測処理を実行する場合を例に説明した。しかし、本実施形態は、当該予測処理を情報処理サーバにおいて実行する場合に限らず、移動体の一例としての車両において実行する場合にも適用可能である。すなわち、車両においてモデル処理部の学習モデルが動作して、車両内でカメラパラメータと深度マップとを予測することができる。以下、このような実施形態における車両の機能構成例について説明する。なお、以下の例では、制御部808が車両800に組み込まれている制御手段である場合を例に説明する。しかし、車両800に制御部808の構成を有する情報処理装置が搭載されていてもよい。すなわち、車両800は、制御部808に含まれるCPU810やモデル処理部814などの構成を備える情報処理装置を搭載した車両であってもよい。
【0052】
車両において学習モデルの推論段階の処理を行う場合、例えば、情報処理サーバ100が車両800に学習済みモデルの情報(例えば学習後のニューラルネットワークの重みパラメータ等)を提供する。このようにすれば、車両800は、情報処理サーバ100において収集される様々な学習データを用いて学習された最新の学習済みモデルを用いることができる。
【0053】
<車両の構成>
図8を参照して、本実施形態に係る車両800の機能構成例について説明する。なお、以降の図を参照して説明する機能ブロックの各々は、統合されまたは分離されてもよく、また説明する機能が別のブロックで実現されてもよい。また、ハードウェアとして説明するものがソフトウェアで実現されてもよく、その逆であってもよい。
【0054】
センサ部801は、車両の前方(或いは、更に後方方向や周囲)を撮影した撮影画像を出力するカメラ(撮像装置)を含む。センサ部801は、更に、車両の前方(或いは、更に後方方向や周囲)の距離を計測して得られる距離画像を出力するLidar(Light Detection and Ranging)を含んでよい。撮影画像は、例えば、モデル処理部814における予測処理に用いられる。また、センサ部801は、車両800の加速度、位置情報、操舵角などを出力する各種センサを含んでよい。
【0055】
通信部802は、例えば通信用回路等を含む通信デバイスであり、例えばLTEやLTE-Advanced等或いは所謂5Gとして規格化された移動体通信を介して情報処理サーバ100や周囲の交通システムなどと通信する。通信部802は、情報処理サーバ100から学習モデルの情報を取得する。そのほか、通信部802は、地図データの一部又は全部や交通情報などを他の情報処理サーバや周囲の交通システムから受信する。
【0056】
操作部803は、車両800内に取り付けられたボタンやタッチパネルなどの操作部材のほか、ステアリングやブレーキペダルなどの、車両800を運転するための入力を受け付ける部材を含む。電源部804は、例えばリチウムイオンバッテリ等で構成されるバッテリを含み、車両800内の各部に電力を供給する。動力部805は、例えば車両を走行させるための動力を発生させるエンジンやモータを含む。
【0057】
走行制御部806は、モデル処理部814から出力される予測処理の結果(例えばカメラポーズや深度マップ)を用いて、車両800の移動を推定したり、外界を認識したりして、車両800の走行を制御する。なお、移動推定、外界の認識、及び走行制御は既知の方法を用いて行うことができる。なお、本実施形態の説明では、走行制御部806を制御部808と異なる構成として例示しているが、制御部808に含まれてもよい。
【0058】
記憶部807は、半導体メモリなどの不揮発性の大容量のストレージデバイスを含む。センサ部801から出力された実画像やその他、センサ部801から出力された各種センサデータを一時的に格納する。また、例えば外部の情報処理サーバ100から通信部802を介して受信する、学習済みモデルのパラメータを格納する。
【0059】
制御部808は、例えば、CPU810、RAM811、ROM812を含み、車両800の各部の動作を制御する。また、制御部808は、センサ部801から画像データを取得して、上述の予測処理を実行する。制御部808は、CPU810がROM812に格納されたコンピュータプログラムを、RAM811に展開、実行することにより、制御部808が有するモデル処理部814等の各部の機能を発揮させる。
【0060】
CPU810は、1つ以上のプロセッサを含む。RAM811は、例えばDRAM等の揮発性の記憶媒体で構成され、CPU810のワークメモリとして機能する。ROM812は、不揮発性の記憶媒体で構成され、CPU810によって実行されるコンピュータプログラムや制御部808を動作させる際の設定値などを記憶する。なお、以下の実施形態では、CPU810がモデル処理部814の処理を実行する場合を例に説明するが、モデル処理部814の処理は不図示の1つ以上の他のプロセッサ(例えばGPU)で実行されてもよい。
【0061】
学習パラメータ取得部813は、情報処理サーバ100から学習済みモデルの情報(学習パラメータ)を取得し、記憶部807に格納する。
【0062】
モデル処理部814は、実施形態1において
図2に示した構成と同一の構成の学習モデルを有し、モデル処理部814は、当該学習モデルの推論段階の処理を実行する。モデル処理部814が実行する推論段階の処理は、実施形態1に示した予測処理と同様に行うことができる。
【0063】
<車両の走行制御のための主な構成>
次に、
図9を参照して、車両800の走行制御のための主な構成について説明する。センサ部801が、例えば車両800の前方を撮影し、撮影した画像データを毎秒所定の枚数で出力する。センサ部801から出力された画像データは、制御部808のモデル処理部814に入力される。モデル処理部814に入力された画像データは、カメラポーズ及び深度マップの予測処理(推定段階の処理)に用いられる。モデル処理部814は、センサ部801から出力された画像データを入力して、当該予測処理を実行し、カメラポーズや深度マップを走行制御部806に出力する。
【0064】
走行制御部806は、カメラポーズや深度マップの予測結果、及びセンサ部801から得られる車両の加速度や操舵角などの各種センサ情報に基づいて、移動推定、外界の認識などを行うとともに、例えば動力部805への制御信号を出力して、車両800の車両制御を行う。カメラポーズや深度マップを用いた移動推定、外界の認識、及び車両制御は公知の方法を用いて行うことができる。動力部805は、走行制御部806による制御信号に応じて、動力の発生を制御する。
【0065】
学習パラメータ取得部813は、情報処理サーバ100から送信された学習モデルの情報を取得する。取得されたデータは、モデル処理部814のDNNを学習させるために用いられる。
【0066】
このように、本実施形態では、車両800におけるモデル処理部814においてカメラポーズ及び深度マップを予測する学習モデルを実行するようにした。すなわち、車両が、元の画像データと、推定されたカメラパラメータと深度マップとから得られる変換画像とを比較した損失を計算し、深度マップに関する損失の勾配やカメラパラメータに関する損失の勾配を用いて、深度マップ及びカメラポーズを繰り返し演算により最適化する。このようにすることで、車両において実行する学習モデルにおいて、DNNによる一度の処理によって予測される結果よりも予測精度を高めることができる。
【0067】
<実施形態のまとめ>
(1)上述の実施形態では、情報処理装置において実行される情報処理方法であって、
第1画像又は前記第1画像と対になる第2画像を第1機械学習モデルに入力して深度マップを予測することと、
前記第1画像と前記第2画像とを第2機械学習モデルに入力して、前記第1画像と前記第2画像とを撮影した撮像装置の相対的な移動及び回転を予測することと、
前記第1画像から前記第2画像への予測された前記相対的な移動及び回転と、前記第1画像について予測された前記深度マップとに基づく画像変換を、前記第1画像に適用した第1変換画像を生成することと、
前記第1変換画像と前記第2画像の間の誤差を含んだ損失を算出することと、
前記相対的な移動及び回転に関する前記損失の勾配と、前記第1変換画像と、前記第1画像及び前記第2画像とを前記第2機械学習モデルに入力して、前記相対的な移動及び回転を繰り返し予測し、新たに予測される前記相対的な移動及び回転に基づく新たな前記第1変換画像と前記第2画像の間の誤差を含んだ前記損失を収束させることと、を含むことを特徴とする情報処理方法が提供される。
【0068】
このような実施形態によれば、相対的な移動及び回転に関する損失の勾配を機械学習モデルに与えて、繰り返し計算を行うことによって、機械学習モデルを用いてカメラポーズを推定する場合に、カメラポーズの推定精度を向上させることができる。
【0069】
(2)さらに、上述の実施形態では、
前記第2画像から前記第1画像への予測された前記相対的な移動及び回転と、前記第2画像について予測された前記深度マップとに基づく画像変換を、前記第2画像に適用した第2変換画像を生成することと、
前記第2変換画像と前記第1画像の間の誤差を含んだ前記損失を算出することと、を更に含み、
前記損失を収束させることは、前記相対的な移動及び回転に関する前記損失の勾配と、前記第2変換画像と、前記第1画像及び前記第2画像とを前記第2機械学習モデルに入力して、前記相対的な移動及び回転を繰り返し予測することを含む。
【0070】
このような実施形態によれば、前記第1画像から前記第2画像への変換と、前記第2画像から前記第1画像への変換との両方向で正解となるデータとの比較を行うことができるため、推定精度を更に向上させることができる。また、機械学習モデルを学習させる場合に必要とする学習データの量を低減させることができる。
【0071】
(3)更に、上述の実施形態では、
前記損失は、前記第1変換画像と前記第2画像の間の誤差と、前記第2変換画像と前記第1画像の間の誤差との両方を含む。
【0072】
このような実施形態によれば、前記第1変換画像と第2変換画像との両方の損失が低下するように拘束されるため、それぞれの推定精度を向上させることができる。
【0073】
(4)更に、上述の実施形態では、
前記第1変換画像についての深度マップを生成することと、
前記第1変換画像についての深度マップと前記第1画像についての深度マップの間の誤差を含んだ前記損失を算出することと、を更に含み、
前記損失を収束させることは、前記深度マップに関する損失の勾配と、前記第1変換画像についての深度マップと、前記第1画像とを前記第1機械学習モデルに入力して、前記深度マップを繰り返し予測することを含む。
【0074】
このような実施形態によれば、機械学習を用いた繰り返し計算を深度マップの推定に適用することで、深度マップの推定をより精度良く行うことができる。
【0075】
(5)更に、上述の実施形態では、
前記情報処理装置は、移動体の外部に配置される情報処理サーバである。
【0076】
このような実施形態によれば、より計算資源の豊富な情報処理サーバにおいて機械学習モデルの処理を実行することができる。
【0077】
(6)更に、上述の実施形態では、
前記情報処理装置は、車両を含む移動体である。
【0078】
車両を含む移動体において上記情報処理方法を実行することにより、移動体において、撮像装置のキャリブレーションや移動予測を精度よく行うことができる。
【0079】
発明は上記の実施形態に制限されるものではなく、発明の要旨の範囲内で、種々の変形・変更が可能である。
【符号の説明】
【0080】
100…情報処理サーバ、113…画像データ取得部、114…モデル処理部、201…深度マップ予測部、202…カメラポーズ予測部、203…画像変換部、204…損失算出部、205…イテレーション制御部