건축공학에서 쓰일 수 있는 여러 알고리즘에 대한 고찰 - 5
2022년 12월 기준으로 ML/AI 분야에서 뜨겁게 타오르는 기술들이 있습니다. 바로 Diffusion model 기반의 생성 모델과 GPT기반의 챗봇(Chat-GPT) 인데요. 기술의 발전 속도만큼 논문들도 빠르게 게재되고 있죠. 특히 이미지를 생성하는 모델의 결과를 보고 있으면 감탄을 자아냅니다.
그래서 저는 생각해봤습니다. 건축분야에서도 생성 모델을 사용할 수는 없을지. 건축 계획(초기) 단계에서 설계도면에 대한 대안들을 A.I가 자동으로 생성해준다면, 설계자 및 관리자는 생성된 프로토타입 설계안들에 기반해 뛰어난 의사결정을 할 수 있을 것이라 생각했죠.
그래서 대충 설계도면 형태만 펜으로 쓱쓱 그린 후에 이미지 생성 모델에 넣으면 그럴듯한 도면으로 바꿔주는 기능을 만들어보기로 했습니다. 그리고 논문까진 아니어도 건축 관련 학술발표대회에 참가하고 싶은 동기가 있었습니다.
ML/AI 모델을 구현할 때 가장 중요한 것이 데이터입니다. 멍청한 컴퓨터를 똑똑하게 학습시키려면 계속해서 자료를 보여주면서 하나하나 알려줘야 하기 때문에, 건축도면과 관련된 수많은 데이터가 필요했습니다. 저의 신분은 대학원생도 아니고, 연구원도 아닌 일개 회사원이기 때문에 인터넷에 공개된 도면을 찾아봐야 했죠. 리서치를 해본 결과 cubicasa5K라는 데이터셋이 존재하였고, 이것을 활용하기로 하였습니다.
데이터가 많다고 해도 지옥 같은 전처리 과정을 거치지 않는다면 이놈의 멍청한 컴퓨터는 알아듣지를 못합니다. 제가 구현하려는 모델은 펜으로 대충 그린 도면 to 그럴듯한 도면 생성 모델이기 때문에 펜으로 대충 그린 도면 이미지들이 필요했습니다. 당연히 저에겐 그런 데이터가 없으니 다른 방안을 생각해봐야 했습니다. 결국은 설계도면 데이터를 펜글씨처럼 바꿔주는 작업을 해야 했습니다. 번거롭게도 전처리를 위해서 딥러닝 모델링이 한번 더 들어가는 것이지요.
다양한 전환 모델들이 있겠지만 저는 holistically-nested edge detection이라는 기술을 pytorch로 구현한 모델을 사용하였습니다. 이미지의 경계선을 찾는 작업을 edge detection이라고 합니다. 이 기술을 이용하면 아래처럼 도면을 전환시킬 수가 있습니다.
이제 데이터도 구성되었으니 본격적으로 학습을 시작할 차례인데요. 저는 pix2pix라는 모델을 사용해 이미지 전환 학습(Image-to-Image Translation)을 진행했습니다. 쉽게 설명드리자면 pix2pix는 불완전한 이미지에 색을 입혀주는 생성 모델이라고 보시면 될 것 같습니다. 아래 그림처럼 말이죠! 오래되고 이미 너무 유명한 모델이기도 합니다.
저는 학습을 위해 구글에서 개발한 colab 환경을 이용했습니다. 집에 비싼 GPU를 설치할 환경이 되지 않는다면 colab pro+등을 구독하는 것도 나쁘지 않습니다. 52GB 메모리에 P100으로 웬만한 건 모두 학습시킬 수 있습니다. train, test(validation) 쪼개기 국룰인 8:2 비율을 맞춰주고 100epoch을 돌려보았습니다. 약 1시간 정도 걸렸네요.
첫 번째가 input 이미지이고, 두 번째가 ground truth(원본)입니다. 그리고 세 번째가 생성된 이미지입니다.
첫 번째에는 정신을 못 차리는 듯하다가 학습이 진행될수록 그럴듯하게 보입니다.
현재는 IT기업 노예지만 건축에 대한 애정을 버리지 못해 짧은 시간 동안 프로젝트를 진행해봤습니다. 사실 현업에서는 NLP 및 비전과 관련된 프로젝트를 많이 접하지 않아서 나름대로 신기하기도 했습니다. 건축 학술활동도 활발히 하고 여러모로 좋은 계기가 되었으면 좋겠습니다.