自動運転:距離推定にステレオビジョンをどのように活用するのか?

自動運転:距離推定にステレオビジョンをどのように活用するのか?

自動化システムでは、ディープラーニングとコンピュータービジョンが広く普及し、あらゆる場所で利用されています。コンピュータービジョンの分野、特に障害物検出の分野は、過去 10 年間で急速に発展しました。

YOLO や RetinaNet などの障害物検出アルゴリズムは、画像内の障害物の位置を示す 2D 注釈ボックスを提供します。

各障害物までの距離を測定するために、エンジニアはカメラと、レーザーを使用して深度情報を返すLIDAR(光検出および測距)センサーを融合しました。センサー融合技術は、コンピューター ビジョンと LiDAR の出力を融合するために使用されます。

LiDAR を使用する際の問題は、高価であることです。エンジニアが使用する便利なトリックは、2 台のカメラを一直線に並べ、幾何学の原理を使用して各障害物までの距離を計算することです。私たちはこの新しいセットアップを疑似ライダーと呼んでいます。


単眼視と立体視

疑似 LiDAR は幾何学的原理を使用して深度マップを作成し、それを物体検出と組み合わせて 3 次元距離を取得します。

ステレオビジョンを使用して距離を推定するにはどうすればよいですか?

距離を取得するには、次の 5 ステップの疑似コードを使用します。

  • 2台のカメラをキャリブレーションする(内部キャリブレーションと外部キャリブレーション)
  • エピポーラスキームの作成
  • まず視差マップを作成し、次に深度マップを作成します

次に、深度マップを障害物検出アルゴリズムと組み合わせて、境界ボックスのピクセルの深度を推定します。詳細はこの記事の最後をご覧ください。

さあ始めましょう!

1. 内部および外部校正

すべてのカメラは調整する必要があります。キャリブレーションとは、[X、Y、Z] 座標を持つ 3D ポイント (ワールド内) を [X、Y] 座標を持つ 2D ピクセルに変換することを意味します。

カメラモデル

今日のカメラはピンホールカメラモデルを採用しています。

ピンホールを使用して少量の光をカメラに通し、鮮明な画像を生成するという考え方です。

画像の中央に障害物がなければ、すべての光線が通過し、画像はぼやけてしまいます。また、ズームと鮮明度を向上させるために焦点距離 f を決定することもできます。

カメラをキャリブレーションするには、カメラ座標を介してワールド座標をピクセル座標に変換する必要があります。


カメラのキャリブレーションプロセス

ワールド座標からカメラ座標への変換は、外部キャリブレーションと呼ばれます。外部パラメータは、R (回転行列) と T (変換行列) と呼ばれます。

カメラ座標からピクセル座標への変換は、固有キャリブレーションと呼ばれます。焦点距離、光学中心などのカメラの固有値が必要です。

固有パラメータは K と呼ばれる行列です。

較正

K マトリックスはカメラのキャリブレーションを通じて見つけることができます。

通常、チェッカーボードと自動アルゴリズムを使用して実行します。 これを行うと、チェス盤上の点 (例: 0,0,0) が画像内のピクセル (例: 545, 343) に対応することをアルゴリズムに伝えます。


校正例

これを行うには、カメラでチェッカーボードの画像を撮影し、いくつかの画像といくつかのポイントを取得した後、キャリブレーション アルゴリズムが最小二乗損失を最小限に抑えてカメラのキャリブレーション マトリックスを決定します。

通常、画像の歪みを除去するにはキャリブレーションが必要です。 ピンホールカメラモデルには歪み、「GoPro 効果」が含まれます。 補正された画像を得るためには、キャリブレーションを実行する必要があります。 変形は放射状または接線方向に行うことができます。 キャリブレーションは画像の歪みを補正するのに役立ちます。


画像調整

カメラのキャリブレーションによって返される行列は次のとおりです。

f は焦点距離、(u₀、v₀) は光学中心です。これらは固有のパラメータです。

すべてのコンピューター ビジョン エンジニアは、カメラのキャリブレーションを理解し、習得する必要があります。これは最も基本的かつ重要な要件です。私たちはオンラインで画像を処理することに慣れており、ハードウェアに触れることはありませんが、これは間違いです。

- カメラのキャリブレーションのために OpenCV を実行してみてください。

同じタイプの座標

カメラのキャリブレーション中に、ワールド内のポイント O をピクセル空間に変換する 2 つの式があります。

世界をカメラに変える


外在的校正式

カメラから画像への変換


内部校正式

計算すると、次の式が得られます。

ワールドから画像への変換

完全な式

マトリックスの次元を見ると、不一致があります。

したがって、O_worldを[XYZ]から[XYZ 1]に変更する必要があります。

この「1」を同次座標と呼びます。

2. エピポーラ幾何学 - 立体視

立体視は、2 つの画像間の奥行きを見つけることに基づいています。

私たちの目は2台のカメラのようなものです。同じ画像を異なる角度から見るため、2 つのビューの違いを比較し、距離の推定値を計算できます。

以下はステレオカメラのセットアップの例です。ほとんどの自動運転車に同様の機能が搭載されています。

ステレオカメラが奥行きを推定する方法

左側に 1 台、右側に 1 台の計 2 台のカメラがあるとします。 2 台のカメラは同じ Y 軸と Z 軸上に配置されています。基本的に、唯一の違いは X 値です。

それでは、以下の説明をご覧ください。


ステレオカメラ図

私たちの目標は、点 O (画像内の任意のピクセルを表す) の Z 値、つまり深度距離を推定することです。

  • X は位置合わせ軸です。
  • Yは高さです。
  • Z は深さです。

2 つの青い平面は、2 台のカメラからの画像に対応します。

さて、これを鳥瞰的に考えてみましょう。

ステレオカメラ鳥瞰図の説明:

  • xL は左カメラの光学中心に対応し、xR は右カメラの光学中心に対応します。
  • b はベースライン、つまり 2 台のカメラ間の距離です。

タレスの定理を適用すると、2つの方程式が得られることがわかる。

左カメラの場合:


左カメラ方程式

? Z = X*f / xL となります。

  • 適切なカメラの場合:

右カメラ方程式:

  • ? Z = (X — b)*f/xRが得られます。

これをまとめると、正しい視差 d = xL -- xR とターゲットの正しい XYZ 座標を見つけることができます。

3. 視差と深度マップ

視差とは何ですか? 視差とは、2 つの異なるカメラ角度からの画像内の 3D ポイントの位置の差です。


ステレオビジョンの公式

? 立体視により、あらゆる物体の奥行きを推定できます。マトリックスキャリブレーションを正しく行ったと仮定します。深度マップや視差マップを計算することもできます。


視差マップ

なぜ「ベースラインジオメトリ」なのか?

視差を計算するには、左側の画像のすべてのピクセルを見つけて、右側の画像のすべてのピクセルと一致させる必要があります。 これをステレオ対応問題と呼びます。

この問題を解決するには――

  • 左の画像のピクセルを取り出しましょう
  • 右側の画像でこのピクセルを見つけるには、ベースライン上で検索するだけです。 2D 検索を行う必要はありません。ポイントはこの線上にあるはずで、検索は 1D に縮小されます。


ベースライン

これは、両方のカメラが同じ軸に沿って配置されているためです。

ベースライン検索の仕組みは次のとおりです。

ベースライン検索

応用: 疑似ライダーの構築

さて、これを実際のシナリオに適用し、ステレオビジョンを使用して物体の奥行きをどのように推定できるかを見てみましょう。

2つの画像を見てみましょう。


ステレオビジョン

各画像には外部パラメータ R と t があり、これらはキャリブレーション (ステップ 1) によって事前に決定されます。

視差

各画像について、他の画像に対する視差マップを計算できます。私たちは次のことを行います:

  • 2 つの画像間の視差を決定します。
  • 投影行列は、カメラの内部行列 K と外部行列 R,t に分解されます。
  • 前の 2 つの手順で収集したデータを使用して深さを推定します。

左画像と右画像の視差マップを取得します。

違いの意味をよりよく理解できるように、Stack Overflow で素晴らしい説明を見つけました。

視差マップとは、一対のステレオ画像間の見かけのピクセル差または動きを指します。

これを体験するには、片方の目を閉じて、もう片方の目を開けながら素早く閉じてみてください。非常に近くにある物体は遠くまでジャンプするように見えますが、遠くにある物体はほとんど動きません。この動きが視差です。ステレオカメラからの一対の画像では、各ポイントでの各ピクセルの見かけの動きを測定し、測定値から強度画像を作成できます。


視差から深度マップへ

2 つの視差マップがあり、基本的には 2 つの画像間のピクセルの変位がわかります。

各カメラには、投影行列 P_left と P_right があります。深さを推定するには、K、R、t を推定する必要があります。


ワールド座標系からカメラ座標系への変換は

OpenCV 関数 cv2.decomposeProjectionMatrix() はこれを実行し、P から K、R、t を取得します。次に、各カメラに対して深度マップを生成します。深度マップは、他の画像と視差マップを使用して、画像内の各ピクセルがどれだけ離れているかを示します。

プロセスは次のとおりです。

  • 行列 K から焦点距離 f を取得します。
  • 変換ベクトルtの対応する値を使用してベースラインを計算します。
  • 前の式と視差マップ d を使用して画像の深度マップを計算します。


ステレオビジョンの公式

この計算をピクセルごとに実行します。

障害物の深さの推定

各カメラには深度マップがあります。ここで、これを YOLO などの障害物検出アルゴリズムと組み合わせるとします。 アルゴリズムは、障害物ごとに 4 つの数値 [x1; y1; x2; y2] を持つ境界ボックスを返します。 これらの数字は、ボックスの左上隅と右下隅の座標を表します。

たとえば、このアルゴリズムを左側の画像で実行し、左側の深度マップを使用できます。

これで、この境界ボックス内で最も近い点を取得できます。画像内の各点の距離がわかっているので、それがわかります。境界ボックスの最初のポイントは障害物までの距離です。

すごいですね!疑似LIDARを構築したばかりです!

立体視により、画像内にどのような障害物があるのか​​だけでなく、それらが自分からどのくらい離れているかも分かります。この障害物は 28.927 メートル離れています。

ステレオビジョンは、単純なジオメトリと追加のカメラを使用して、2D 障害物検出を 3D 障害物検出に変換する技術です。現在、新しい OpenCV AI キットや Raspberry および Nvidia Jetson カードへの統合など、新興のエッジ プラットフォームのほとんどはステレオ ビジョンを考慮しています。

コスト面では、LiDAR を使用する場合に比べて比較的安価でありながら、優れたパフォーマンスを提供します。ライダーの機能を代替できるため、疑似ライダーと呼びます。障害物を検出し、分類し、3D で位置を特定します。

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式サイトにアクセスして許可を申請してください。

<<:  インテリジェントな人間と機械のインタラクションがデジタルサービスを新たなレベルに引き上げます

>>:  機械学習の新たな嵐: ML モデルを使用して住宅価格を予測する方法とは?

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

心臓血管疾患における人工知能の応用

人工知能(AI)は、知識の学習、知識の保存、思考、計画という人間の脳の思考プロセスをシミュレートする...

2021 年の Python 機械学習ライブラリ トップ 10

Python は機械学習にとって最も鋭い武器であると言えます。また、機械学習は Python の影...

人工知能が人事を変える7つの方法

[[357616]] International Journal of Engineering an...

...

アマゾン ウェブ サービスが中国で新たな機械学習サービスを開始

[51CTO.com からのオリジナル記事]現在、ますます多くの企業が機械学習や人工知能に多額の資金...

GPT-4 Turbo が Microsoft Copilot に搭載されるようになりました。アクセス可能かどうかを確認する方法は次のとおりです。

開発者、ライター、または AI 愛好家であれば、ChatGPT の開発元である OpenAI の最新...

アルゴリズムの法則から法則のアルゴリズムへ、アルゴリズムの時代を巻き起こす

ビッグデータの出現、クラウド コンピューティング テクノロジーの成熟度の向上、ディープラーニング ア...

AISpeechは多角的な視点からAIエコロジカルバリアを構築し、AIチップはラストマイルを切り開く

最近、シビチェンがチップスを製造しているというニュースが大きな騒ぎを引き起こしました。 [[2547...

GPT-4 は AGI です! Googleとスタンフォード大学の科学者が、大規模モデルがいかにして超知能化できるかを明らかに

汎用人工知能(AGI)は実際に実現されているのでしょうか?最近、Google Research と ...

画期的なニューラルネットワークが量子AI研究への道を開く可能性

海外メディアの報道によると、イタリアの研究者らは最近、量子コンピュータ上で特殊なアルゴリズムを実行す...

...

Zipf 行列分解: 推奨システムにおけるマシュー効果を解決する強力なツール

[[407036]] [51CTO.com からのオリジナル記事]アルゴリズムの公平性は、近年、推奨...

製造、小売、医療の事例から:エッジコンピューティングと人工知能がどのように収益向上に役立つか

[[403666]]ストラトキャスターとテレキャスターのギターを製造するカリフォルニア州コロナに本社...

何開明のMAEが人気になってから、ビジュアルトランスフォーマーを整理したいですか?この記事は100以上の

[[436989]]コンピュータービジョン界は最近非常に活発です。まず、He Kaiming 氏らは...

人工知能は200年以上前の進化のパズルをどうやって解くことができるのでしょうか?

人工知能は進化における最も古い謎の 1 つを解くのに役立っていますが、新たな謎ももたらしています。 ...