ArchiGAN実装①

こんにちは!Onplanetzインターンです.

今日は,現在進めている,GANを用いた住宅見取り図生成モデル,ArchiGAN[1]実装プロジェクトについて書きたいと思います.

 

近年画像生成の文脈で注目されているアルゴリズムのひとつに,「GAN(Generative Adversarial Networks)[2]」というものがあります.GANには,Generatorと呼ばれる画像を生成するモデルと,Discriminatorと呼ばれる画像を本物かGeneratorが作成したものか判別するモデルの2つがあります.簡単に言うと,これらを同時に学習させることで,互いに競争させるようにモデルに画像の特徴を抽出させ,より本物らしい画像を生成することのできるモデルです.

f:id:tech_onplanetz:20191230150126p:plain

GANのモデル図

このプロジェクトでは,このGANの生成モデルを用いて空間デザインのリコメンデーションを行いたい!ということで,ArchiGANを参考にしながら,住宅のレイアウトから間取り図を生成し,そこから家具の配置を提案するAIを作ってみたいと思います!

f:id:tech_onplanetz:20191230150223p:plain

ArchiGANの実装概要

今回はGANの中でもpix2pix[3]という教師あり学習で画像から画像の生成を学習するモデルを使用し,ArchiGANの手順に従って,model2にあたる部分,見取り図を黒く塗りつぶしたものから部屋を生成して色付けをするタスクを行い,ベースラインを作成しました.

 

ベースラインの考察としては,何となく部屋の分割が学習出来ているものの,まだ境界線がぼやけていたり,もう少し精度を上げたいなという改善点も残りました.また,一部アノテーションの基準が統一出来ていなかったり,部屋と部屋の間が黒く塗りつぶされず,白い境界が出来てしまったことから,GANの学習するタスクが色塗り問題になってしまった部分もあったと思ったので,これらの点を改善してより精度を上げていけたらと思います!

また,今回はmodel2のみでしたが,model3の部屋に家具を配置するところまで行って,空間デザインお助けAIを作りたいと思います!

 

f:id:tech_onplanetz:20191230150529p:plain

細かい部分では改善の余地があるものの,比較的上手くいった例

f:id:tech_onplanetz:20191230150606p:plain

境界が斜めになっているなど,あまり上手くいっていない例

f:id:tech_onplanetz:20191230150641p:plain

アノテーションに失敗してしまった例

 

使用したデータやモデルについて,以下に記述しておきます.

・データ:住宅物件の見取り図から,1room, 2room, 3roomの部屋を各30, 30, 40枚の100枚用意した.これに対し部屋を識別するアノテーションを施し,画像処理したものを教師データ,実験データとして使用しています.

・モデル:pix2pixモデル[4]を使用しました.

・demo用画像:今回のブログでのdemo画像は,Illust ACのものを利用しました.



参考文献

[1]  ArchiGAN: a Generative Stack for Apartment Building Design, NVIDIA

      https://devblogs.nvidia.com/archigan-generative-stack-apartment-building-design/v

[2] Generative Adversarial Networks, Ian J. Goodfellow et.al.

      https://arxiv.org/abs/1406.2661

[3] Image-to-Image Translation with Conditional Adversarial Networks, Phillip Isola et.al.

      https://arxiv.org/abs/1611.07004

[4] CycleGAN and pix2pix in Pytorch, junyanz github

      https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix