この記事について
物体認識系技術の勉強として学んだ内容のざっくりまとめ。
多くの画像はプロジェクトページの画像へのリンク。
Amodal Ground Truth and Completion in the Wild
Amodalデータセットに関する論文。
概要情報
関連分野
セグメンテーション
主な成果
- 3Dデータを使用したAmodalマスク決定自動パイプラインの提案
- 新しい評価ベンチマークデータセット MD3D-Amodal の作成
- Amodalマスク推論モデル2種の提案
Amodalとは
英単語 | 和訳 | 備考 |
---|---|---|
modal | 形式的な | |
amodal | 非形式的な | 否定の接頭辞 a + modal |
上記の単語の意味直訳だと意味が取りづらい…。
ざっくりと意訳して 形のない や 非可視部分の と解釈。
Amodalマスク = 遮蔽された部分も補完したマスク。
例えば下の画像ではバイクやソファが別のバイクやテーブルによって部分的に遮蔽されている。
遮蔽された部分の形状を保管したマスクが欲しいというタスクがAmodalマスクの推定。
用語メモ
用語 | 説明 |
---|---|
Occlusion | ある物体が遮蔽された状態 |
Occluder | 遮蔽物 ある物体を遮蔽している物体 |
Occluded | 被遮蔽物 何らかの物体によって遮蔽されている物体 |
学ぶモチベーション
画像処理関連の業務を行っている中で
認識対象の物体が遮蔽物によって部分的に隠れていても、隠された部分も推定できれば...
というケースに遭遇したため。
- 通常は遮蔽が発生しにくいカメラの位置にするが、諸般の都合でカメラは動かせない
- 映像内の物体配置が頻繁に変わり、遮蔽の有無が刻々と変化する
- 認識対象物体の着目したい部位が遮蔽されやすい
- 着目するの座標のため見えない部分のテクスチャは不要
内容
Amodalデータ作成パイプライン
- 既存のデータセットMatterport3Dから3Dメッシュを取得
- 3Dメッシュを2Dに投影してマスク生成
- modalマスク: 全ての物体を2Dへ投影
- amodalマスク: 物体ごとに2Dへ投影
- 下記判定式でOccludedを特定
$(amodalマスク面積) > 1.2 × (modalマスク面積)$ - 人による選定
- 元となるデータセットMatterport3D自体にノイズがある
Matterport3Dデータセット
- データの内容
- 建物90シーン
- 194,400枚のRGB-D画像
- 10,800枚のパノラマビューのRGB-D画像
- Matterport: RGB-Dカメラを出していおり、デジタルツイン推しの企業
作成されたAmodalデータセット
サンプルデータ
ダウンロードしたデータの中身を抜粋。
画像



アノテーション
アノテーションはpklファイルになっている。
以下はPythonのインタプリタモードで確認した結果。
(長すぎる内容は省略して記載)
形式はCOCOAデータセット(COCOをベースにAmodal対応したデータセット)。
COCOA形式の参考
>>> import pickle
>>> with open(r"MP3D_seleted_eval_10.29.pkl", "rb") as f:
... loaded_data = pickle.load(f)
...
>>>
>>> type(loaded_data)
<class 'dict'>
>>>
>>> loaded_data.keys()
dict_keys(['images', 'annotations'])
>>> type(loaded_data["images"])
<class 'list'>
>>> len(loaded_data["images"])
11441
>>> loaded_data["images"][0]
{
'data_captured': '?',
'coco_url': 'http://mscoco.org/images/27',
'flickr_url': '?',
'license': 2,
'height': 1024,
'id': 1,
'width': 1280,
'file_name': 'scene-VLzqgDo317F-img_name-f4810f2f18cb497389628bd8738ba036_i2_0.jpg'
}
>>> type(loaded_data["annotations"])
<class 'list'>
>>> len(loaded_data["annotations"])
11441
>>> loaded_data["annotations"][0]
{
'depth_constraint': '',
'url': 'https://s3-us-west-1.amazonaws.com/coco-ann/coco-test/COCO_test2014_000000000027.jpg',
'size': 1, 'author': 'upwork26', 'image_id': 1, 'id': 1,
'regions': [
{
'isStuff': 0, 'order': 1, 'category_id': 1, 'area': 323593,
'name': 'mp3d_obj', 'occlusion_rate': 0.3892120740813445, 'image_id': 1,
'visible_mask': {'size': [1024, 1280], 'counts': b']Zcg04mo05(略)'},
'segmentation': {'size': [1024, 1280], 'counts': b'^Pcb0i0in0(略)'}
}
]
}
- pklを読み込むと 'images', 'annotations' のキーを持つ辞書になっている
- 'images', 'annotations' の値は辞書のリストになっている
- 'images' の各辞書には画像のファイル名やサイズが含まれている
- 'annotations' の各辞書には 'occlusion_rate' のようなメタ情報やマスク情報が含まれている
用語メモ
「thing」と「stuff」はどちらもモノを指す単語だが「thing」は可算名詞で「stuff」は不可算名詞という違いがある。
用語 | 説明 | 例 |
---|---|---|
thing (things) | 1つ1つ数えやすい物体 | 人 犬 椅子 車 コップ |
stuff | 明確な形状がないものや広がりのある領域など インスタンスセグメンテーションでは対象外 |
空 道路 水 壁 道路植栽 |
詳細情報
他データセットとの比較
- 合成データでないリアル画像
- AmodalなGT
- 対象カテゴリ(クラス)が多い
- 主に屋内画像
データ分割
- 評価ベンチマークなため、学習用データは少なく評価用データが多い
- 学習用データはモデルのドメイン適応させるためで、根本的な推論能力の獲得は別のデータセットで行う必要がありそう
- 1画像当たり約1.17インスタンス
データ分布
- 屋内データのため壁や家具類が多い
- トップ画像にあるバイクは無い…?
- Occlusion Rate 20~30%がボリュームゾーン
サンプル画像
Amodalセグメンテーションモデル
2ステップモデル
- Occluder推定とAmodalマスク推定の2段構成
1ステップモデル
- Stable Diffusionを使用した1段階構成(Occluder推定部無し)
- Stable Diffusionパワーで2ステップモデルより高精度
実験結果
他モデルとの比較
学習データを変えて提案モデルの比較
定性的な比較
まとめ
- 研究の主な成果
- Amodalマスク決定自動パイプラインの提案
- 評価ベンチマークデータセットの作成
- Amodalマスク推論モデル2種の提案
- 成果物のデータセット
- 評価用ベンチマーク
- Amodalマスクの数は限定的(1画像1マスク程度)
所感
- Amodalというワードを知ることができたため、ネットで更なる情報収集が可能になった
- Amodalマスクが得られれば様々な応用ができそう
- Amodalな姿勢推定など