VITALIFY.ASIA logo

ノイズだらけの物件図面を推論し3Dモデルを自動生成!CubiCasa5K解析とリバースエンジニアリングの挑戦

Author profile
Toshihiko Nagaoka2026/07/01
ノイズだらけの物件図面を推論し3Dモデルを自動生成!CubiCasa5K解析とリバースエンジニアリングの挑戦

今回は、機械学習エンジニアとしての「地力」と「野生の勘」を限界まで試すため、究極の縛りプレイに挑戦しました。

テーマは、間取り図解析のデファクトスタンダードである超有名データセット『CubiCasa5K』

GitHub - CubiCasa/CubiCasa5k: CubiCasa5k floor plan dataset
CubiCasa5k floor plan dataset. Contribute to CubiCasa/CubiCasa5k development by creating an account on GitHub.

通常、こうした有名データセットに挑む際は、公式の論文を読み込み、公式のGitHubリポジトリからコードをクローンして始めるのが当たり前です。しかし、今回はそれを一切禁じました。

課したルールはただ一つ。 「論文も読まない、コードも見ない。手元にある『画像とSVGアノテーションデータ』だけを頼りに、自力で間取り図解析システムをゼロからリバースエンジニアリングする」

「7年前に発表された技術を、なぜ今さらそんな無謀な方法で?」と思われるかもしれません。しかし、実際にやってみると、仕様書(論文)のない暗闇の中で、データだけを対話相手にシステムを組み上げるという、エンジニア人生の中でも最高にスリリングで、最高に学びのある泥臭い試行錯誤の全記録となりました。

CubiCasa5Kとは?

CubiCasa5Kは、建築間取り図の自動解析・デジタル化(ベクター変換)タスクのために公開された、高密度なアノテーション付きの大規模データセットです。

本データセットの最大の技術的価値は、「実世界由来の低品質なラスター画像」と「完全に構造化されたベクター形式の正解(Ground Truth)データ」が1対1でペアリングされている点にあります。

収録されている約5,000件の間取り図には、スキャンやコピーによるかすれ、歪み、解像度の低さといった「現実世界の多様なノイズ」がそのまま含まれています。一方で、正解データには壁、窓、ドアといった建築要素のポリゴン情報や、部屋の属性が厳密にラベル付けされています。

この「ノイズを含む入力」から「破綻のない構造化データ」を推論・復元するタスクにおいて、堅牢(ロバスト)な機械学習モデルを構築・評価するためのデファクトスタンダードとして広く活用されています。

CubiCasa5Kデータセットの内容の一部。左が元画像、右が元画像から起こしたSVG図面データ。このような元画像とSVGのペアがおよそ5,000件収録されている。 元画像は劣化コピーの果てにもはやドアがどこにあるのかすら判別がつかない。 AIモデルはこの元画像の側のみを渡され、右側の図面の再現を試みる。

早速始めてみる

今回ベンチマークにしたのは、下記の図面です。画面上部に左右対称の間取りの物件があるようですが、雑に切り取られています。
また、注目すべきは一番右上、つまりトイレ・シャワー室のさらに奥にある「S」と書かれた小部屋(およびその右側のスペース)ですが、これは「サウナ(Sauna)」と思われます。

そう判断できる理由は、この図面が フィンランドの住宅図面 だからです(CubiCasa5Kデータセットはフィンランドの不動産データをベースにしています)。

フィンランドの住居(アパートメント含む)では、浴室(シャワー室)の奥にプライベートサウナが隣接して設置されているレイアウトが非常に一般的です。

AIがこの間取りを推論する上で厄介なのが、サウナ室のドアにはドア自体の矩形が描かれていないことです。開閉方向を表す軌跡から間接的にドアの存在を推論するしかありません。

学習後のモデルの検証用に使用した画像。上部に雑に切り取られた隣室が映り込んでいる。 また、画面左上のサウナ室のドアはアークのみが描かれ、ドアの枠線は全く描かれていない。

正解データを色分けする

先ほどご覧いただいだとおり、CubiCasaにはそれぞれのコピー画像から書き起こした正確な図面のSVGデータが収録されています。
ただし、このままでは今回使用するCNNでAIモデルを訓練する上での正解データとして使用できません。そこで、下記のように要素ごとに塗り分けした画像に変換しました。

上記の画像の正解データ。AIモデルはこの画像と一致率が100%になるよう推論を行う。赤は壁、ドアは緑、窓は青。上部の隣室は正解データには全く含まれない。これを正しく無視することが求められる。また、画面右上のサウナ室のドアは元の図面には枠線が描かれていないが、正解データには緑色の縦長長方形として描かれている。

赤: 壁
青: 窓
緑: ドア
グレー: 床
白: 頂点

学習開始

では早速学習を開始します。最大で100エポックを想定し、精度に改善が見られなくなった時点で終了とします。

まだ何も学習をしていないモデルは、完全にでたらめな推論を行います。
下記がごく初期の推論結果の画像です。壁を赤で塗ると減点が少なくて済むことを学んだようですが、まだ壁を面として捉えることができず、輪郭線をなぞろうとしています。
また、青の使い方をまったく理解していないようで、壁以外の面をすべて青で塗りつぶしています。青は上述の通り窓ですので、これは大きな減点となります。

ごく初期のカオスな状態。

第1エポックの終了に差し掛かった頃には、推論がかなり正しく行われるようになりました。もうすでに、壁を線ではなく面として捉えるというパラダイムシフトが起きています。
そして驚くべきことに、まだ完全ではないものの隣室を無視し始めている様子も伺うことができます。
窓やドアはまだ当てずっぽう感が否めませんが、それでも窓とドアは常に壁に沿って存在しているという法則は理解しているようです。

第1エポック終了。すでに壁の形状を大まかに捉え始めているが、窓やドアについてはまだ手探り感が見られる。

学習データの回転という工夫

今回これだけ学習が早く進んだのは、入念な仕込みの賜物です。
学習時に下記の画像のように、物件の間取り図をランダムな角度で回転させました。
このような回転を行わずに常にキリの良い角度の物件ばかりを見せていると、AIはその格子状の整然とした枠組みの中でしか世界を理解することができません。
また「壁もドアも窓も常に並行または垂直な存在である」というイージーモードな環境下では、AIはすぐに学習をサボろうとします。
常にランダムな角度の物件を与えることで、それぞれの要素に対するより深い理解をもたらすとともに、学習に常に緊張感を与えることができます。

また、回転は過学習の防止にも役立ちます。過学習とは簡単に言えば「丸暗記」のことです。学習データを完璧に覚えこんでしまうことで、逆に現実世界の実データへの対応力が弱まることを意味します。
いくらCubiCasaのデータが5,000件あるとは言え、学習の中で何度も使いまわすと過学習を招きかねません。学習データ回転に回転をかけることは、擬似的に学習データ数を増やすことに繋がり、過学習を抑制します。

回転された学習データの推論結果。現時点ではまだ、手書きで書き込まれた矢印を壁と誤認識している。

ドアの認識に成功

学習が進むと、モデルは少しずつ窓とドアを認識し始めました。

注目すべきは、画面右上にあるサウナ室のドアです。このドアだけはドア自体の枠線が引かれていないため、他のドアよりは認識に苦労していることが窺われます。ですが、現時点でも認識の予兆が見られます。
これは、AIが「ドアは常に長方形で描かれている」という単純な理解をしているわけではないことを示しています。開閉方向の軌跡線もまたドアの存在を強く指し閉める重要な目印であることを認識していない限り、サウナのドアを発見することはできません。
第2エポックというごく早期にその予兆が見られたことはとても良い傾向です。

また、この時点で隣室はもう完全に無視しています。

第2エポック終了。もうこの時点で隣室はほぼ完璧に無視できてている。また、ドアと窓についても認識精度が高まり始めた。注目すべきは右上のサウナ室のドア。本来の図面に描かれていない枠線を捉え始めている。

認識精度の向上

第2エポックまでで掴んでいた傾向への精度を高める方向で、学習は順調に進みました。それぞれの線は次第にはっきりとし始め、より直線的に鋭角になりました。
ついに、サウナのドアも他のドアと同じ精度で完璧に捉えるようになりました。

左上のバルコニーと思われる領域の床が正しく認識されていませんが、これは今回の要素のどれにも当てはまらないパーツが複雑に書き込まれていますので致し方ありません。
検証の品質としてはもう十分ですので、ここで終了とします。

第5エポック終了。すでにこの時点で壁の輪郭線は十分に直線的になり、ドアと窓もほぼ完璧に捉えている。誤魔化し気味に描かれている箇所を壁に含めるべきか、ぱっと見では人間でも迷うところ。
第43エポック終了。主要な要素は正解データとほぼ見分けがつかないレベルにまで到達した。元の図面のコピー画像自体に歪みが見られるため、結果画像にもわずかな歪みが見られる。このような問題はこれ以上学習しても改善が見込めないため、今回の学習はここで終了とした。

3Dモデルに変換

最終エポックの分類結果をもとに、3Dモデルを自動生成してみました。
図面が持つ歪みを補正した後、それぞれの要素に一定のルールで高さを持たせただけです。そのため、実際のドアや窓とは高さが異なる可能性があります。
それでも、元の手書き図面と比較すると、物件の全体像を人間が直感的に把握するには大いに役立ちます。

上記の第43エポックの結果画像を3Dデータに変換。

まとめ

公式の論文やリポジトリを封印する「リバースエンジニアリング縛り」で挑んだ今回のCubiCasa5K解析プロジェクト。
手探りの暗闇からスタートしましたが、最終的に高精度なセグメンテーション、さらには3Dモデルの自動生成まで到達することができました。

今回、仕様書なしでここまでモデルを追い込めた勝因は、単に「最新のアーキテクチャを使ったから」ではなく、データセットの背後にある「建築の文脈(ドメイン知識)」を徹底的に読み解き、泥臭く泥臭くアプローチに組み込んだ点にあります。

機械学習において、強力なライブラリをクローンしてきて回すだけでは、実世界の「汚いリアルなデータ(ノイズ)」に直面した瞬間にモデルが破綻します。 モデルが今なぜ迷っているのか、データはどういう思想で作られているのか。「データと徹底的に対話し、ドメイン知識をコード(前処理や損失関数)に宿す」ことこそが、実用的なAIシステムを開発するための、泥臭くも最強の近道であると確信した検証となりました。 皆さんもぜひ、お気に入りのデータセットで「論文クローン禁止縛り」、挑戦してみてはいかがでしょうか? 視界が一気にクリアになる圧倒的な成長を体験できるはずです。

1,000社以上の事業成長を支えた圧倒的な『スピードと柔軟性』で、御社のアイデアを最短で形にします。まずは無料で壁打ちしませんか?

無料相談はこちら
#Generative AI & ML

「Generative AI & ML」の関連記事

Function Callingとは?AIエージェントの仕組みとLangGraph実装

Function Callingとは?AIエージェントの仕組みとLangGraph実装

Toshihiko Nagaoka2026/07/01

LLMに外部ツールを操作させる「Function Calling」とは?自律型AIエージェントの進化の歴史から、LangGraph(TypeScript)を用いた自社専用エージェントの具体的な実装コードまで徹底解説。

夜空の星を解きほぐす:GNNと記号的AIでノイズ点群から星座を復元!ハイブリッドモデル開発

夜空の星を解きほぐす:GNNと記号的AIでノイズ点群から星座を復元!ハイブリッドモデル開発

Toshihiko Nagaoka2026/07/01

ノイズだらけの点群から星座を正確に検出!GNN(グラフニューラルネットワーク)と記号的AIを組み合わせた、高精度なハイブリッド・パターン認識手法の構築プロセスを解説します。

1枚の写真からリアルな3Dアバターを作る。FLAME / DECA / DiffLocksを使った頭部&髪の毛生成の挑戦

1枚の写真からリアルな3Dアバターを作る。FLAME / DECA / DiffLocksを使った頭部&髪の毛生成の挑戦

Toshihiko Nagaoka2026/06/23

写真1枚からメタバースで使えるリアルな3Dアバターを生成!最新AI「FLAME」「DECA」「DiffLocks」を組み合わせた頭部&髪の毛生成のワークフローと、独自のテクスチャ合成技術を解説します。

ぼくはデューパー、なんでもきいてね!