딥러닝을 이용한 재난시 실내 대피 모델 연구를 도왔습니다. Indoor GML 데이터를 유니티로 파싱하여 실제 건물 데이터를 이용해 가상의 건물을 만들었습니다.
건물은 재난 시 인명피해가 최소화될 수 있도록 설계되어야 합니다. 이 프로젝트의 목표는 딥 러닝을 이용해 사람이 잘 대피할 수 있도록 건물이 설계됐는지를 판단하는 것입니다.
시공 예정인 건물의 설계도를 기반으로 만들어진 가상의 공간에서 실험이 진행됩니다. 사람 모형들은 각기 건물에서 탈출하는 것을 목표로 움직입니다. 브레인은 실험을 거듭하며 최상의 탈출 루트를 만듭니다. 일정 횟수의 실험 이후 몇 명이 탈출했는지, 병목 현상이 일어난 곳은 어디인지를 파악합니다.
저는 건물의 설계도를 기반으로 가상의 건물을 만드는 업무와, 실험을 위한 UI를 만드는 업무를 맡았습니다. 먼저, 유니티 상에 가상의 건물을 만드는 업무를 진행했습니다. Indoor GML 파일에 저장된 건물의 설계도를 유니티에 파싱하여 가상의 건물을 만들었습니다. 이 과정에서 Triangulation이 필요했습니다. 유니티에서 도형을 나타내는 최소 단위는 삼각형입니다. 따라서 기존 XML 파일에 저장된 점 데이터를 이어 삼각형으로 만들어야 했습니다. XML 파일의 점 데이터는 각기 면 노드에 포함되어 있습니다. 이 면을 이용해 triangulation기법인 ear clipping 알고리즘을 사용했습니다. 유니티에서는 메모리를 절약하기 위해 도형의 겉면만 메쉬를 가지고 있습니다. 이 알고리즘은 항상 시계 반대 방향으로 점을 선택해야 한다는 법칙이 있는데, 이 경우 바닥은 괜찮지만 천장의 메쉬가 표현되지 않았습니다. 따라서 z축 좌표의 평균을 이용해 천장과 바닥을 구분했습니다.
UI를 구현하는 데 가장 어려웠던 점은 온타임으로 뇌를 교체하는 버튼을 만드는 일이었습니다. 원하는 건물을 대상으로 실험을 진행하고, 이 데이터를 학습한 뇌를 다른 건물에서 테스트하고자 했습니다. 따라서 학습을 위한 뇌와 그 결과물로 나온 학습을 마친 뇌를 유연하게 변경할 방법이 필요했습니다. 이 문제는 뇌를 담을 수 있는 슬롯을 여러 개 만들어 놓는 방법으로 해결했습니다.
본 프로젝트를 통해 사람들이 몰려 포화되는 문, 탈출한 인원수를 얻을 수 있었고, 이를 이용해 건물이 잘 설계됐는지를 나타낼 지표를 만들 수 있었습니다.
더보기