LIFULL Creators Blog

LIFULL Creators Blogとは、株式会社LIFULLの社員が記事を共有するブログです。自分の役立つ経験や知識を広めることで世界をもっとFULLにしていきます。

ディープラーニングであり得そうな間取り画像を生成させてみる

こんにちは。おうちハッカー@リッテルラボラトリーの石田です。

今日は、HOME'Sで大量に保持している間取り画像を使って、ディープラーニングの手法の一つであるDCGANを使い、あり得そうな間取りを生成させてみました。

f:id:nextdeveloper:20160226204527p:plain

DCGANとは?

Deep Convolutional Generative Adversial Networkの略で、画像を生成する手法です。 データセットを元に画像を生成する生成器と、生成された画像かデータセット画像かを見分ける判別機の2つのニューラルネットワークを交互に学習させることで、 データセットのような画像を生成します。

論文はこちらです。 またNextremerさま主催の機械学習勉強会で、発表されていた方の資料もあります。 Deep Convolutional Generative Adversarial Networks - Nextremer勉強会資料

昨年末のディープラーニング界隈では、DCGANを用いた顔イラスト生成が話題となっていました。 qiita.com

今回はこちらのChainerでの実装を使わせていただきました。

間取り画像のデータセット

間取り画像を生成しようかと考えたのは、弊社の日本最大の物件数を誇るHOME'Sのデータセットがあるからです。
今回使用した、画像を含むHOME'Sデータセットは、国立情報学研究所を通して、研究者の方に無償で提供させていただいています。

nextdeveloper.hatenablog.com

最近、高精度な間取り画像を追加させていただきましたので、ぜひご利用ください。 nextdeveloper.hatenablog.com

こちらの間取り画像から、サイズを96×96に縮小してデータセットを作成します。 データセットには、約500万枚の間取り画像があり、さすがに多すぎるので約50万枚を使用します。

学習経過

30分後 間取りの線がなんとなく見えてきました。 f:id:nextdeveloper:20160226193913p:plain

2時間後 間取りの形と色がそれっぽくなってきました。 f:id:nextdeveloper:20160226193950p:plain

24時間後 遠目で見る分には、かなり間取りっぽいです。 f:id:nextdeveloper:20160226195208p:plain

32時間を超えたあたりで、誤差が発散してしまい、こんなのになってしまいました。 f:id:nextdeveloper:20160226195541p:plain

学習経過を動画にしてみました。1画像で10分程度、約32時間分です。 www.youtube.com

どんどん間取りっぽくなっていくのが分かると思います。
ただ間取りに書いてある文字まではさすがに再現されません。文字っぽい模様が見えるだけです。

シード値の操作

画像を生成するジェネレーターは、今回の場合、値域[-1,1]の100次元のシード値zを入力として画像を生成します。
このzを、画像Aを生成したシード値zaから、画像Bを生成したシード値zbに連続的に変化させることで、間取りも連続的に変化するのではないかと思い、やってみます。

f:id:nextdeveloper:20160226201808p:plain:h300

すると、このように、1Kぽい部屋が、4LDKっぽい部屋に連続的に変わる様子が見られました。徐々に部屋が増えていきます。なんだか不思議な感覚です。 f:id:nextdeveloper:20160226202054p:plain

こっちはワンルームから3LDK f:id:nextdeveloper:20160226202813p:plain

やってみての感想

先人のイラストや景色などは、手書き感があったり、雰囲気が再現できていれば成功しているように見えるけれど、間取り画像はそうはいきません。
生成した間取りでは、間取り上入れない部屋が生成されたり、よく分からない文字らしきものが生成されたりで、間取り図としての機能を果たせていません。 また現状で生成できる解像度も小さいので、なかなか見ずらいです。
DCGANは、こうした精密な画像生成には向いていないと思われます。もう少し人の感性に左右される画像をデータセットにすると面白いかもしれません。

参考

Chainerで顔イラストの自動生成 - Qiita

Chainerを使ってコンピュータにイラストを描かせる - Qiita

[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

www.slideshare.net