Segmentation SGM公開しました

こんにちは、エンジニアの高木です。

私は現在、弊社が公開している視差計算ライブラリlibSGMの開発に携わっています。

さて、私たちは過去の記事Realizing Self-Driving Cars with General-Purpose Processorsで、
SGMをセグメンテーションに応用したSegmentation SGMというアルゴリズムを紹介していましたが、この度その実装をGithubに公開いたしました。

fixstars/segmentation-sgm

Segmentation SGMは視差画像を入力としてシーンを物体と路面に分類し、物体領域を抽出するアルゴリズムです。出力例を以下に示します。

こちらは連番画像を入力した際のデモ動画です。画面上は入力の視差画像で、libSGMを使って計算しています。画面下がSegmentation SGMの出力になります。

アルゴリズムについて少しだけ紹介します。

Stereo SGMはコスト関数の最小化によって視差を推定するアルゴリズムです。コスト関数はマッチングコストとペナルティの2つの項から構成されます。マッチングコストは左右の画素間の類似度によって定義されます。ペナルティは視差の連続性を考慮し、隣接画素間の視差値の差に応じて設定されます。

Segmentation SGMは、Stereo SGMの枠組みを応用してピクセル毎の分類を行うアルゴリズムです。視差の代わりに、物体(Object)や路面(Ground)といったラベルを推定対象とします。マッチングコストは、観測視差がそのラベルに属すると仮定した場合の評価値によって定義されます。ペナルティはラベル間の遷移の妥当性に応じて設定しますが、Stereo SGMよりも複雑なケース分けを行っています。

より詳細なアルゴリズム説明もGithubで公開しています。興味がある方はこちらも是非ご覧ください。
fixstars/segmentation-sgm/wiki/Segmentation-SGM

また、Segmentation SGMはCUDAで実装・最適化されており、Jetson TX2上でも40~60FPSの性能を達成しています。

Device \ Width x Height x Max Disparity 1024 x 440 x 64 1024 x 440 x 128
Tegra X2 16 [ms] (64FPS) 23[ms] (44FPS)

具体的な使用方法についてはヘッダサンプルコードをご参照下さい。libSGMとともにSegmentation SGMも是非使っていただけると幸いです。

最後に、Segmentation SGMメイン部分のCUDA化を担当していただいた、インターンの田中雄基さんと杉田陽亮さんの多大な貢献に感謝いたします。

Tags:,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.