はじめに
ICCV2019で発表された「Deep Floor Plan Recognition Using a Multi-Task Network with Room-Boundary-Guided Attention」(以下、DeepFloorPlan)をpython3版に書き直して動かしてみました。[paper, github, github(python3版)]
タスクが具体的でビジネス的なニーズがありそうだなと思って気になってました。
今回の記事では、DeepFloorPlanについて簡単に紹介した後、デモプログラムを動かしてみた結果を書いてみます。
学習プログラムを動かした結果なども今後追記予定です。
DeepFloorPlanとは
一言で言うと「部屋の間取りを認識する」DNNです。
部屋の境界予測タスク、部屋タイプ予測タスクごとにデコーダを分けているのが特徴的です。
また、部屋タイプ予測には部屋の境界情報をアテンションとして使用しています。
ネットワーク自体は割とシンプルですがPSPNetやDeepLabV3+よりも良い性能が出ています。
実行環境
OS: windows10 64bit
GPU: GeForce GTX1060 6GB
デモプログラム実行結果
学習済みのモデルを使用してデモプログラムを動かしてみました。
ここでは、推論が比較的うまく出来ている例とそうでない例を挙げてみたいと思います。
推定できている例
ホール部分が一部クローゼットやトイレと認識されていますが、背景と各部屋タイプ、ドアと窓まで比較的正しく認識されています。
推定できてない例
バルコニーとダイニングルームの境界が正しく認識されていません。ドアのタイプが少し特殊なのが影響していそうです。
また、このデータでは背景と部屋の境界が一部正しく認識されていません。入力画像の背景部分に図面の注釈が入っているのが原因っぽいです。
考察
この他いくつかのデータを見てみましたが、以下の点が難しそうです。
- ドアのタイプが特殊なもの
- 背景部分に注釈や寸法が入っている
- 部屋の形がいびつなもの(単純な矩形ではなく、円形や台形のような部屋)
この辺を対処するような改良を今後加えてみたいと思います。
学習プログラム実行結果
改良して結果を含めて後日追記したいと思います。
精度改良案があれば是非是非コメントお願いします!