こんにちは!
株式会社神戸デジタル・ラボ DataIntelligenceチーム(以降DIチーム)の原口です。
前回は「間取り図解析アルゴリズム作成」に利用した学習環境についてご紹介しました。
この取り組みを最初からお読みになりたい方はこちらからご覧いただけます。
今回からは、構築した開発環境を用いて、実際にどのように間取り図の解析モデルの構築に挑んだか概要をご紹介します。
「間取り図解析アルゴリズム作成」コンペについて
まず初めにコンペ全体について振り返ります。
コンペの目的は、間取り図画像から部屋領域と建具(たてぐ:開口部に設けられた窓や戸、ドア、ふすま、障子といった可動部分とそれを支える枠などの総称)の検出を行うことでした。
私たちのチームでは以下の図のように、部屋領域と建具の検出を別々のAIを用いることで、間取り図解析アルゴリズムを作成する方針を立てました。
本稿では、建具検出部分について取り扱っていきます。
まずは建具検出で利用したデータについて確認します。
建具検出の際に利用したデータ
建具検出では、間取り図画像と、建具の位置・サイズを表したデータ(以下、アノテーションデータ。アノテーションとは、AIを学習させる際に必要となる大量の教師データを作り出す作業のことを指します。)の二つのデータが与えられます。
AIは、与えられた間取り図画像とアノテーションデータを用いて、建具の検出を学習します。
間取り図画像の特徴
間取り図画像は例で示したような境界線・壁がくっきりとした画像のほか、部屋領域に色がついているものや、紙に印刷された間取り図をカメラで撮影したもの、さらには手書きのものなど、様々な間取り図画像が存在しました。
これらの画像をそのままAIに学習させると、ノイズが多いため低い検出精度となる場合があります。
この場合、一般的に前処理と呼ばれる作業を行い画像中のノイズを除去します。
そうすることで、AIはノイズの少ない画像で学習ができるため、前処理を行わない場合と比較してより高精度な検出が可能となります。
建具領域の特徴
AIが検出すべき引戸・折戸・開戸の特徴について、詳しく見ていきましょう。
引戸
引戸は例で示した画像中の洗面室にある収納で利用されている、上図のような記号です。
引戸の図記号はこの形を基準として、引戸の形状の違い(引き違い戸や引き込み戸など)で若干記号が変わります。
折戸
折戸はサンプル画像中の洋室にある収納で利用されている、上図のような記号です。
折戸の記号は片方のみ・両方の二つがほとんどなので比較的認識が容易な建具です。
開戸
開戸はサンプル画像中の部屋をつなぐ領域で用いられており、上図のような記号です。
開戸は窓と似たような形状をしている場合があり、注意が必要なポイントです。
また、今回のコンペでは室内に存在する建具のみを検出するというルールなので、家の外と中をつなぐ玄関のような扉は検出対象外となります。
すべての建具に対して与えられているアノテーションデータは、長方形の箱(バウンディングボックスと呼びます)であるというのも特徴の一つです。
建具検出の実際の取り組み
前章で確認した通り、与えられているアノテーションデータは、すべてバウンディングボックスでした。
このような問題の場合、一般的によく用いられるのが物体検出AIです。
まずは物体検出AIについてご紹介いたします。
物体検出AIとは?
上図左側のように、猫が写った写真があるとします。この画像を物体検出AIに入力すると、右側のような結果が出力されます。
物体検出AIは、画像中に存在する物体の位置をバウンディングボックスで検出することができます。
物体の検出は猫に限定されているわけではなく、AIを学習させることによって任意の物体を検出することが可能となります。
物体検出AIは、「SSD」「Faster R-CNN」「YOLO」「EfficientDet」など様々な種類が存在します。
今回のコンペでは、有名な物体検出手法のいくつかを比較して精度の良かったものを採用しました。
毎年のように新しい手法が出てくるので、情報のキャッチアップが重要になってきます。
入力画像の前処理
間取り図画像の特徴で説明した通り、間取り図の画像には様々なものが存在しています。
一般的に画像処理の分野では、入力画像に存在するノイズを前処理の段階で除去します。
本ブログでは、この一連の前処理を「OpenCV」という画像処理でよく用いられるライブラリを利用して行ってみました。
前処理の流れの一例としては以下の通りとなります。
Step1) 画像を輝度情報のみの画像に変換(グレースケール画像化)。
Step2) グレースケール化を行った画像に対して、輝度反転(ネガポジ反転と言います)を実施。
すると画像は次のように変化しました。
データセットの変更
本コンペ開始直後のデータでは、引戸のアノテーションデータが下記の2種類存在していました。
AIの学習では、一般的に一つの物体には一通りの方法でアノテーションをすることが知られています。
これは、一つの物体に二通り以上のアノテーションが存在することによって、AIがどう学習すればよいか分からなくなることを避けるためです。
この件に関しては、コンペのフォーラムで活発に議論された結果、後日アノテーションを修正したものを準備してもらえることになり、無事コンペを終えることができました。
この一件から、常にアノテーションは確認すべきであること・アノテーションの正確さは精度に直結することを実感しました・・・。
まとめ
今回はコンペ課題の建具認識・部屋領域認識のうち、建具の認識についてお話ししました。
建具検出の取り組みの中で、常にアノテーションは確認すべき・アノテーションの正確さは精度に直結することを学べたのが大きな収穫です!
次回は部屋領域検出編です、お楽しみに!
データインテリジェンスチーム所属
データエンジニアを担当しています。画像認識を得意としており、画像認識・ニューラルネットワーク系の技術記事を発信していきます