Seunghan Paek
학위논문 Floorplan-Mediated Indoor 3D Reconstruction from Raster Floorplans and Image Sequences
지금까지 진행한 연구
오늘날 실내 공간 복원에는 high quality의 dense mesh만이 아니라, 사람과 프로그램이 함께 다룰 수 있는 편집 가능한 형태가 요구됩니다. 제 박사과정 연구는 그 형태로 평면도를 제시합니다.
실내 3D 복원에서 제가 주목한 문제는 크게 세 가지입니다. 표면을 얼마나 정확하고 촘촘하게 되살리는가 하는 geometric reconstruction, 복원된 공간 안의 fixture와 구조 요소를 무엇이라 부를 것인가 하는 semantic segmentation, 방의 경계와 방 사이의 연결을 어떤 compact한 구조로 인코딩할 것인가 하는 structural·topological representation. 세 가지는 각각 독립된 분야로 성숙했지만, 이들을 하나의 표현으로 엮는 문제는 여전히 열려 있습니다.
저는 이 세 정보를 함께 담을 수 있는 intermediate representation으로 vectorized floorplan을 활용했습니다. 벽과 개구부의 형상·위치 정보, fixture의 위치와 category, 방 사이의 connectivity를 하나의 2D representation에 담을 수 있고, 그대로 3D로 extrusion할 수 있기 때문입니다.
| 컴퓨터 비전의 하위 문제 | 대응하는 floorplan의 구성 요소 |
|---|---|
| Geometric reconstruction | extrusion height를 가진 wall · window · door polygon |
| Object detection · semantic segmentation | 위치 · 방향 · category를 가진 fixture icon |
| Structural · topological representation | room polygon과 opening을 통한 방 사이의 connectivity |
digital twin, XR 콘텐츠, robotics, physics simulation 같은 응용에서는 공간의 구조와 외관을 함께 다룰 수 있는 3D representation이 필요하고, 흔히 dense mesh가 그 역할을 맡습니다. 다만 dense mesh는 용량과 연산 비용이 크고, 무엇보다 고쳐 쓰기가 어렵습니다. 구조적으로 단순하고 semantic이 붙어 있으며 editable한 표현이 함께 필요한 이유이고, floorplan이 그 조건을 만족합니다.
지금까지 저는 두 방향을 진행했습니다. 이미 존재하는 raster floorplan을 3D로 올리는 쪽(Floorplan to 3D Model)과, floorplan이 없을 때 casual RGB 시퀀스만으로 되살리는 쪽(RGB to 3D Model)입니다. 각각 아래 두 절에서 설명합니다.
Future Direction — Closing the Loop
앞으로는 이 세 표현을 상호 검증할 수 있는 closed loop로 확장하고자 합니다. 아래 두 그림에서 아직 채워지지 않은 방향이 그 대상입니다.
이 loop가 형성되면 세 표현은 순서대로 변환되기만 하는 것이 아니라 서로를 검증하고 보완할 수 있습니다. floorplan에서 합성한 뷰가 실제 관측과 어긋나면 floorplan을 의심할 근거가 되고, 반대로 floorplan이 옳다면 부분적으로만 관측된 공간의 나머지를 채워 넣을 수 있습니다. 복원이 한 방향의 파이프라인이 아니라 관측과 reconstruction 결과가 서로를 검증할 수 있는 loop가 되는 셈입니다.
이것이 제가 이어서 풀고자 하는 문제입니다.
Floorplan to 3D Model
IEEE Access 2025 · 제1저자 · 게재 완료
이미 존재하는 raster floorplan 한 장을, 사람이 다시 그리지 않고 3D 모델로 만드는 방법.
무엇을 목표로 했나
실무에서 마주치는 평면도는 대부분 raster 이미지입니다. CAD와 BIM은 전문가와 전용 소프트웨어를 전제하고, 그 이전에 지어진 건물에는 디지털 모델이 아예 없습니다. 부동산 매물 페이지, 인테리어 도면, 손으로 그린 스케치, 스캔본 — 가장 많이 쌓여 있는 형식은 결국 그림 파일입니다.
그런데 기존 연구는 대체로 소규모 주거용 도면을 전제하고, Manhattan-world 직교성과 균일한 벽 두께를 가정했습니다. 저는 그 가정을 걷어내고, 다세대 건물 한 층 전체처럼 크고 규칙적이지 않은 도면까지 하나의 프레임워크로 처리하는 것을 목표로 잡았습니다.
무엇을 했나
도면을 통째로 네트워크에 넣는 대신, 겹치도록 자른 patch 단위로 읽고 다시 합치는 구조를 만들었습니다. 하나의 크고 복잡한 segmentation 문제를 수백 개의 작고 비슷한 국소 문제로 바꾼 셈입니다. 덕분에 도면이 아무리 커져도 한 번에 다루는 크기가 일정해서, 입력을 resize하지 않고 원본 해상도 그대로 처리할 수 있습니다. backbone으로는 SegFormer-B5를 썼고, 저해상도 입력에는 Real-ESRGAN을 전처리로 붙였습니다.
합칠 때는 patch마다 나온 결과를 hard voting으로 고르지 않고, softmax 확률을 그대로 누적해 판정합니다. 겹침 영역에서 여러 patch의 판단이 자연스럽게 쌓이기 때문에 patch 경계의 artifact가 사라지고, 결과적으로 test-time augmentation과 같은 효과를 냅니다.
마지막으로 벽을 centerline이 아니라 polygon으로 벡터화합니다. Douglas-Peucker로 근사한 뒤 bin 단위 노이즈 제거를 거쳐 extrusion하면 그대로 3D 모델이 되고, OBJ나 Unreal Engine으로 바로 넘길 수 있습니다.
부딪힌 문제
Resize하는 순간 얇은 벽이 사라진다
네트워크 입력 크기에 맞추려고 큰 도면을 축소하면, 한 픽셀 두께로 그려진 벽과 좁은 opening이 그냥 없어집니다. 정확도 이전에 정보가 남아 있지 않은 상태가 됩니다.
resize를 포기하고 원본 해상도에서 patch 단위로 읽는 방식으로 문제 자체를 없앴습니다. 반대로 원본이 애초에 저해상도인 경우에는 patch를 자르기 전에 super-resolution을 먼저 적용했습니다.
Patch 안에서는 벽의 long-range continuity가 보이지 않는다
patch 하나 안에서는 벽이 건물 끝까지 이어지는 긴 선인지, 여기서 끊기는 짧은 선인지 알 수가 없습니다. 특히 다세대 건물 한 층 전체처럼 벽이 아주 길게 이어지는 도면에서 이 한계가 드러났습니다.
겹침을 두고 확률을 누적하는 병합으로 상당 부분 메웠지만, 완전히 해결되지는 않았습니다. patch size를 도면에 따라 다르게 잡는 adaptive·multi-scale 방식이 다음 과제로 남아 있습니다.
Centerline으로는 벽 두께를 표현할 수 없다
기존 방식대로 벽의 centerline을 따라 그리면, 같은 벽이라도 구간마다 두께가 달라지는 실제 도면을 담을 수 없습니다. centerline 하나에는 두께가 하나만 붙기 때문입니다.
벽을 polygon으로 벡터화하도록 표현을 바꿨습니다. 이 결정이 가변 벽 두께와 Manhattan 가정 두 가지를 동시에 풀어 준 분기점이 되었습니다.
RGB to 3D Model
WACV 2027 · 제1저자 · under review
floorplan이 아예 없을 때, 스마트폰으로 방을 한 바퀴 찍은 casual RGB 시퀀스만으로 floorplan과 3D 모델을 함께 만드는 방법.
무엇을 목표로 했나
이전 연구가 도면이 있다는 전제 위에 서 있다면, 이쪽은 그 전제가 없을 때를 다룹니다. 많은 기존 floorplan reconstruction 방법은 LiDAR, RGB-D, 혹은 정합된 panorama처럼 구조 복원에 유리한 입력을 사용하고, 방 안의 fixture는 layout 추론 전에 제거해야 할 clutter로 취급해 왔습니다.
저는 이 두 전제를 모두 걷어내고 싶었습니다. Active depth sensing이나 panorama 정합 없이 casual하게 촬영한 RGB sequence, 그리고 fixture가 그대로 놓여 있는 실제 방. 일반적으로 고려되지 않던 정보를 활용한 3차원 모델 생성이 목표였습니다.
무엇을 했나
출발점은 관점을 뒤집는 데 있었습니다. 침대는 벽에 붙고, 소파는 벽을 등지고, 냉장고는 모서리에 들어갑니다. fixture는 임의로 놓이지 않고 건축 경계를 존중합니다. 그렇다면 fixture의 배치는 지워야 할 clutter가 아니라 벽 위치에 대한 positive evidence입니다.
게다가 이 evidence는 벽 자체의 오차와 독립적입니다. SfM point cloud는 textureless한 벽면에서 특히 sparse하고 noisy한데, fixture 표면은 텍스처가 풍부해 오히려 더 잘 복원되기 때문입니다. 가장 불안정한 곳을 가장 안정적인 증거로 보정하는 셈입니다.
파이프라인은 이렇게 구성했습니다. SAM 3의 open-vocabulary segmentation과 Depth Anything 3의 multi-view geometry로 semantic label이 붙은 dense point cloud를 만들고, 이것을 boundary candidate와 fixture cluster로 갈라 둡니다. boundary 쪽에서 CAGE로 초기 room polygon을 얻은 뒤, fixture rectangle과 opening의 위치를 근거로 그 polygon을 바로잡습니다.
특히 opening은 정의상 벽 위에만 존재하므로, 그 centerline은 벽이 지나가는 자리를 알려 주는 가장 확실한 증거가 됩니다. 이 centerline을 constrained Delaunay triangulation의 segment constraint로 넣어 평면을 원자 삼각형으로 쪼갠 뒤, 삼각형들을 region adjacency graph로 다시 묶습니다. opening에 정렬된 변만 연결에서 빠져 cut edge로 작동하므로, connected component를 세는 것만으로 room이 갈라지고 새로 생깁니다.
마지막으로 fixture를 도면 기호로 바꿔 넣습니다. SAM 3D로 mesh proxy를 만들고 top view와 side view를 orthographic으로 렌더링해 GPT-5에 넘겨 카테고리를 판정하고, mesh proxy와 카테고리를 고려한 vector icon을 생성합니다. 실루엣을 그대로 따면 같은 침대도 찍은 각도에 따라 다르게 그려지므로, 카테고리에서 출발해야 결과물이 시점별 렌더가 아니라 architectural drawing처럼 읽힙니다.
부딪힌 문제
작은 geometric error가 room topology를 무너뜨린다
casual RGB에서 얻은 SfM point cloud는 textureless한 벽면에서 sparse하고, fixture에 가려 군데군데 비어 있습니다. 여기에 plane fitting을 곧바로 적용하면 몇 센티미터의 오차가 두 벽의 병합이나 room의 소실 같은 topological error로 이어질 수 있습니다. 국소적인 geometric error가 훨씬 큰 structural error로 증폭되는 것입니다.
벽면 관측에만 의존하지 않고, fixture와 opening이라는 독립적인 evidence를 함께 쓰도록 문제를 다시 세웠습니다.
기존 backbone은 깨끗한 입력을 기대한다
floorplan reconstruction 모델들은 Structured3D 같은 정돈된 RGB-D density map으로 학습되어 있어서, SfM에서 얻은 지저분한 boundary point를 그대로 넣으면 제 성능이 나오지 않습니다. 그렇다고 재학습시키면 개선이 전처리 덕인지 학습 덕인지 구분할 수 없게 됩니다.
backbone은 공개 체크포인트 그대로 두고, 입력을 boundary-weighted density map으로 다듬어 모델이 기대하는 형태에 맞췄습니다. 덕분에 제가 더한 optimization 단계의 기여만 따로 확인할 수 있었고, 더 좋은 backbone이 나오면 그대로 갈아 끼울 수 있습니다.
Top view만으로는 fixture를 구별할 수 없다
floorplan은 위에서 내려다본 그림인데, top view에서는 desk와 table과 chair의 좌면이 거의 같은 사각형으로 보입니다. 어떤 카테고리로 판정하느냐에 따라 도면에 들어갈 icon이 달라지므로 이 구분이 필요했습니다.
fixture마다 mesh proxy를 복원한 뒤 top view와 side view를 함께 판정에 넘겼습니다. side view가 수직 방향의 구조를 알려 주기 때문에 구분이 가능해집니다.
Doorframe이 두 개의 bounding box로 잡힌다
upstream detection이 doorframe 하나를 opening 양쪽의 별개 object 두 개로 내놓는 경우가 있습니다. 그러면 그 뒤의 모든 geometric reasoning이 문이 두 개 있다는 잘못된 전제 위에서 진행됩니다.
현재는 뒷단에서 부분적으로만 걸러 냅니다. geometry processing 단계로 넘기기 전에 조각난 detection을 통합하는 과정이 필요하다고 보고 있고, 이것이 제가 다음으로 풀려는 문제 중 하나입니다.
마치며
두 연구는 각각 다른 문제를 풀었지만, vectorized floorplan을 공유합니다.
앞의 연구는 raster 입력에서 출발해 벽을 두께를 가진 polygon으로 다루고, 뒤의 연구는 RGB 입력에서 출발해 벽을 centerline과 thickness로 다룹니다. 표현이 달라 보이지만 두께를 아는 선은 이미 채워진 영역을 정의하므로, 둘 사이의 변환은 단순한 offset 연산에 지나지 않습니다. RGB에서 복원한 floorplan을 그대로 raster 기반 파이프라인에 넣을 수 있다는 뜻입니다. 아래 세 그림이 그것을 보여줍니다.
제가 할 수 있는 일
두 연구를 수행하면서 실내 3차원 복원 파이프라인을 처음부터 끝까지 설계하고 구현하는 경험을 쌓았습니다. 평면도에서는 구조와 semantic 정보를 추출해 3D 모델로 변환하고, RGB 영상에서는 multi-view geometry를 통해 공간을 복원한 뒤 이를 구조화된 floorplan과 3D scene으로 연결했습니다.
이 과정에서 단일 모델의 성능뿐 아니라 입력 표현과 파이프라인 설계가 최종 복원 품질에 큰 영향을 준다는 점을 확인했습니다. Floorplan to 3D Model에서는 다양한 해상도의 도면을 안정적으로 처리하기 위한 patch-based segmentation을 설계했고, RGB to 3D Model에서는 공개 vision/reconstruction 모델의 결과에 fixture와 공간 구조 정보를 결합해 복원된 공간 구조를 보정했습니다.
이를 위해 semantic segmentation, polygon vectorization, SfM 기반 multi-view geometry, open-vocabulary segmentation, VLM, constrained Delaunay triangulation과 region adjacency graph 등 인식부터 computational geometry, 구조 최적화, 3D 모델 생성까지의 전체 reconstruction pipeline을 직접 다루었습니다. 또한 특정 foundation model에 종속되지 않도록 각 단계를 모듈화하여, 새로운 모델을 기존 파이프라인에 쉽게 적용할 수 있는 구조를 지향했습니다.
앞으로는 이러한 경험을 바탕으로 더 크고 복잡한 실제 환경에서의 3D reconstruction, 그리고 앞서 말한 closed loop의 남은 방향인 appearance reconstruction과 지속적인 scene update까지 연구 범위를 확장하고 싶습니다.