こんにちは。AI技術部の永島です。
最近はカメラと物体までの距離(深度)を測定することが、屋内外問わずロボットナビゲーションにおいて重要な要素となってきています。
しかし、実際に深度を測定するには高価な深度センサーが必要となります。
そこでAIによりセンサーを利用せずにRGB画像のみを使用して(つまり正解となる深度情報なしで)深度を推定する研究がされています。
今回は当社の『SNN』と『単眼画像のみを使用した手法』について精度を比較してみたいと思います。
※SNN(SCSK Neural Network toolkit)は、当社にて提供するAIモデル構築ツールキットです。詳細はこちらから。
各手法の特徴について
SNNにおける深度推定の特徴
- 学習時にはステレオ画像を使用する
- 学習時に正解となる深度情報は使用しない
- ステレオ画像の視差を学習している
- 推論時には単眼画像から物体までの深度を推定する
大きな特徴としては学習時にステレオ画像を使用する点です。
学習しているのは深度ではなく、ステレオ画像の視差です。
視差を学習することで以下のように物体までの距離を求めることができます。
単眼画像による手法の深度推定の特徴
今回SNNと比較するのは『Google Brain』の研究チームが発表した、単眼カメラからの深度とエゴモーションを推定する教師なし学習(URL)です。
- 学習時には単眼画像を使用する
- 学習時に正解となる深度情報は使用しない
- 個々のオブジェクトの動きが3Dで推定され、すべてのオブジェクトの方向と速度が得られる
- 推論時には単眼画像から物体までの深度及びエゴモーション(カメラ自身の速度や動き)を推定する
大きな特徴としては学習時に単眼画像を使用し、深度だけでなくエゴモーションも推定できる点です。
学習では画像内の個々のオブジェクトに分解するアプローチをとっているそうです。
精度比較検証
前提条件
- どちらの手法もKITTI(URL)というドライブレコーダー画像のデータセットを使用して学習したモデルを使用
- 今回は深度に関する精度比較のみでエゴモーションに関する評価は行わない
【検証1】KITTIの画像を使用した定性的評価
以下に3つの画像で推論した結果を表示します。
黄色が強くなっている箇所が距離が近い箇所で、紫色が強くなっている箇所が距離が遠い箇所です。
画像で比較すると多少の違いはあるものの自動車や柱や人などの物体を検出できており、大きな差はないようです。
上段:元画像
中段:単眼画像での結果
下段:SNNでの結果
【検証2】KITTIの画像を使用した定量的評価
定量的評価の結果は以下の通りとなりました。(値が低いほど高い精度を表します。)
定量評価でも大きな差はないですが、全体的にSNNの精度の方が高い精度となっています。
※ 評価指標について
【検証3】通常のドライブレコーダー画像での定性評価
KITTI以外のドライブレコーダー画像を使用して推論した結果を以下に表示します。
ちなみに、正解となる深度情報がないため定量評価は実施していません。
1枚目
夜の交差点の画像に対する結果です。
単眼画像の結果(中段)では信号機の柱部分は検出できているが全体的にぼやけているのに対しSNNの結果(下段)では右側の自動車や奥の自動車の検出できています。
しかし、どちらも全体的な精度は低いように感じます。
これは学習データであるKITTIに夜の画像がないため夜の画像に対しては物体の検出精度が低いことが原因と考えられます。
2枚目
昼の交差点の画像における結果です。
この画像に対してはどちらも自動車が検出できており夜の画像と比べると精度が高いように感じます。
3枚目
昼の道路の画像における結果です。
単眼画像の結果(中段)では右側の自動車が紫色になっておりうまく検出できていないのに対しSNNの結果(下段)では検出できています。
また、どちらも標識などは検出できているため全体的にみると夜の画像に比べると精度が高いように感じます。
おわりに
今回はRGB画像からの深度推定に関する2つの手法に関する精度比較を実施しました。
ステレオ画像を使用するSNNの手法の方が若干ではありますが精度は高くなりましたが、ステレオ画像を取得するためにはステレオカメラが必要であるためデータの準備に手間がかかることが考えられます。
一方の手法では、単眼画像のみで学習できるため、データの準備は通常のドライブレコーダー画像だけでよくデータの準備の手間はかかりません。
また、エゴモーションも推定できることもあり試しやすいのではないかと感じました。
最後までお読み頂きありがとうございます。