[’21 ICCV] DeepCAD: A Deep Generative Network for Computer-Aided Design Models

This entry is part 1 of 1 in the series Geometric Deep Learning
  • [’21 ICCV] DeepCAD: A Deep Generative Network for Computer-Aided Design Models

1. 들어가며

3D 형상 생성은 오랜 시간 동안 컴퓨터 비전과 그래픽스 분야에서 활발히 연구되어 왔습니다. 최근에는 딥러닝 기술의 발전에 힘입어 다양한 3D 생성 모델들이 등장했으며, 특히 voxel, point cloud, polygon mesh 등과 같은 불연속적인(discrete) 3D 표현 방식을 생성하는 모델들이 주류를 이루고 있습니다.

하지만 현실 세계의 산업 설계에서는 이러한 표현보다 훨씬 더 구조적인 표현이 사용됩니다. 대표적인 예가 CAD(Computer-Aided Design) 모델입니다. CAD 모델은 단순히 형상을 표현하는 것이 아니라, 사용자가 실제로 수행한 생성 과정—예를 들어 스케치하고, 돌출(Extrude)하고, 불린(Boolean) 연산을 하는 과정을 순차적으로 저장합니다. 이러한 CAD 명령어 시퀀스는 설계 의도를 명확하게 담고 있기 때문에, 실제 설계나 생산 과정에 훨씬 더 적합한 표현 방식입니다.

DeepCAD는 이러한 CAD 도면을 딥러닝 기반으로 생성할 수 있는 새로운 모델을 제안합니다. 특히, 기존의 3D 생성 모델들이 다루지 못했던 CAD 명령어 시퀀스라는 독특한 형식의 데이터를 다루기 위해, DeepCAD는 자연어 처리에 활용되는 Transformer 기반 Autoencoder 구조를 활용하였습니다. 또한, 실제 CAD 모델 생성에 필요한 다양한 명령어 구조를 정규화하고 표현하는 새로운 방식도 함께 제안합니다.

이번 포스팅에서는 먼저 기존 3D 생성 모델들이 가지는 한계를 짚어보고, DeepCAD가 어떤 방식으로 이 문제를 해결하는지, 그리고 실제로 얼마나 성능이 뛰어난지를 살펴보겠습니다.

2. 기존 방법의 한계

딥러닝 기반의 3D 생성 모델들은 주로 point cloud, voxel, mesh 등 형상의 겉모습을 중심으로 데이터를 표현해왔습니다. 이 방식은 자유롭게 다양한 형태를 생성하는 데에는 유리하지만, 정밀한 제어가 필요한 산업 설계나 공학적 설계에서는 한계가 분명합니다.

2.1. 3D 생성 모델의 한계

기존 3D 생성 모델들의 대표적인 특징은 대부분이 불연속적인 표현(discrete representation)—예를 들어 point cloud나 polygon mesh 등을 생성한다는 점입니다. 이런 방식으로 생성된 형상은 다음과 같은 한계를 가집니다.

첫 번째 한계는 정확도 부족입니다. 세밀한 기하학적 구조가 필요한 경우, point cloud나 mesh는 노이즈가 있거나 매끄럽지 못한 표면을 가지기 쉽습니다.

두 번째 한계는 수정의 어려움입니다. 이러한 표현은 사용자가 직접 수정하기 어렵기 때문에, 실제 CAD 도구에서 불러와 편집하는 것이 불가능하거나 매우 번거롭습니다.

세 번째 한계는 설계자의 의도가 포함되지 않는다는 점입니다. 이는 제품 설계나 제작 단계에서의 활용 가능성을 크게 떨어뜨립니다.

결국 기존 방식들은 3D 형상을 ‘보이는 형태’로는 잘 표현할 수 있어도, ‘설계 가능한 형태’로는 표현하지 못한다는 점에서 한계를 가집니다.

2.2. CAD 도면 생성을 위한 기존 시도

이러한 한계를 인식하고, 일부 연구에서는 CAD 도면을 직접 생성하기 위한 시도도 존재해왔습니다. 대표적인 예로는 CSGNet이 있습니다. 이 모델은 voxel 데이터를 기반으로 CSG(Constructive Solid Geometry) 연산 시퀀스를 추론하는 모델입니다. 또 다른 예로는 ShapeAssemblyUCSG-Net 등이 있으며, 이들은 도메인 특화 언어(DSL)를 기반으로 3D 모델을 구성하는 방식입니다.

하지만 이들 대부분은 다음과 같은 문제점을 가지고 있습니다.

첫 번째 문제는 표현력의 제약입니다. 사용 가능한 연산 종류나 표현 방식이 제한되어 있어, 실제 CAD 도면에서 사용되는 다양한 명령어를 포괄하지 못합니다.

두 번째 문제는 정확한 재현의 어려움입니다. voxel 기반의 접근은 원래 설계의 기하학적 특성을 잃기 쉬우며, 복잡한 명령어 순서나 매개변수를 정확히 복원하기 어렵습니다.

세 번째 문제는 직접 활용이 어렵다는 점입니다. 생성된 도면이 CAD 툴에서 바로 사용되기 어려운 구조를 가지고 있기 때문에, 실무 적용에 한계가 있습니다.

결국, 기존 시도들은 CAD 도면 생성의 가능성을 보여주긴 했지만, 실제로 사용 가능한 CAD 명령어 시퀀스를 생성하는 것에는 성공하지 못했습니다. 이러한 배경에서 DeepCAD는 CAD 설계의 핵심인 명령어 시퀀스를 직접 생성할 수 있는 최초의 모델로 등장하였습니다.

3. 제안 방법: DeepCAD

DeepCAD는 기존의 point cloud나 voxel 기반 3D 생성 모델들과는 전혀 다른 방식으로 CAD 도면을 생성하는 모델입니다. 기존 방식들이 3D 형상의 결과만을 표현했다면, DeepCAD는 형상을 만들어내는 과정, 즉 CAD 명령어 시퀀스(command sequence)를 생성하는 모델입니다.

이러한 접근을 위해 DeepCAD는 세 가지 핵심 아이디어를 제안합니다. 첫째, CAD 도면의 구조를 딥러닝 모델이 이해할 수 있도록 표현하는 새로운 방식. 둘째, 이 표현을 학습 가능한 형식으로 벡터화하는 방법. 셋째, 이러한 시퀀스를 생성하기 위한 Transformer 기반의 Autoencoder 구조입니다.

3.1. CAD 도면의 구조와 표현 방식

CAD 도면은 단순한 3D 형상이 아니라, 명령어(command)들의 시퀀스로 구성됩니다. 예를 들어, 사용자가 CAD 소프트웨어에서 사각형을 그리고 돌출(Extrude)시켜 입체 형태를 만드는 과정은 다음과 같은 명령어 시퀀스로 표현됩니다.

  • Sketch: 2D 평면 위에 폐곡선을 그리는 명령어
  • Extrude: 스케치를 기준으로 입체를 생성하는 명령어

각 명령어는 다양한 파라미터를 가집니다. 예를 들어, 선(Line)은 시작점과 끝점 좌표를, 원(Circle)은 중심과 반지름을, 그리고 Extrude는 돌출 방향, 거리, Boolean 연산 종류 등을 포함합니다.

그림1. CAD 명령어와 파라미터 예시
그림1. CAD 명령어와 파라미터 예시
그림2. CAD 3D Construction 예시
그림2. CAD 3D Construction 예시

예를 들어 아래와 같은 시퀀스를 생각해볼 수 있습니다.

Sketch → Line(x1, y1) → Line(x2, y2) → Circle(x, y, r) → Extrude(direction, distance, type)

이처럼 CAD 도면은 단지 형상의 집합이 아니라, ‘어떤 순서로 어떤 명령어를 수행했는가’를 그대로 담고 있는 시퀀스 구조입니다. 이러한 구조는 자연어와 유사하기 때문에, DeepCAD는 이를 시퀀스 모델링 문제로 변환하여 학습합니다.

3.2. CAD Command 시퀀스를 위한 Representation

하지만 자연어와 달리 CAD 명령어는 다음과 같은 복잡한 특성을 가집니다.

  • 명령어마다 파라미터 수가 다릅니다. (예: 선은 2개, 원은 3개, Extrude는 9개 이상)
  • 파라미터는 정수값도 있고 실수값도 있습니다.
  • 때로는 파라미터가 생략될 수 있습니다.

이런 복잡성을 딥러닝 모델이 학습하기 어렵지 않도록, DeepCAD는 아래와 같은 방식으로 시퀀스를 정규화합니다.

  • 모든 명령어는 총 16개의 파라미터를 갖도록 고정합니다. 사용하지 않는 파라미터는 -1로 채웁니다.
  • 실수형 파라미터는 모두 정규화(normalization)한 후, 256단계로 양자화(quantization)하여 8비트 정수로 표현합니다.
  • 명령어의 총 길이도 고정합니다. 실제 시퀀스보다 짧은 경우는 특별한 종료 토큰 <EOS>로 채웁니다.

이렇게 정규화된 명령어 시퀀스는 하나의 명령어 벡터 시퀀스로 표현되며, 딥러닝 모델이 입력으로 사용할 수 있는 형태가 됩니다.

예를 들어 아래와 같이 표현됩니다.

Command 1: [L, x1, y1, -1, -1, ..., -1]  
Command 2: [A, x2, y2, angle, ..., -1]  
Command 3: [E, θ, φ, ψ, px, py, pz, scale, dist1, dist2, ..., bool_type]  
... (총 60개 명령어까지 패딩)

이런 정규화는 단순히 벡터화에 그치지 않고, CAD 명령어들이 지니는 기하학적 관계를 보존하는 데에도 매우 중요한 역할을 합니다. 예를 들어, 평행한 선이나 수직한 선 등의 제약 조건은 양자화된 discrete한 표현이 더 잘 보존할 수 있기 때문입니다.

3.3. Transformer 기반 Autoencoder 구조

DeepCAD의 핵심은 이 CAD 명령어 시퀀스를 입력으로 받아, 이를 잠재 벡터(latent vector)로 압축하고, 다시 복원하는 Transformer 기반 Autoencoder 구조입니다.

그림3. DeepCAD Architecture
그림3. DeepCAD Architecture

전체적인 구조는 다음과 같습니다.

  • Encoder: 입력 명령어 시퀀스를 임베딩하여 잠재 벡터 z로 압축합니다.
  • Decoder: 잠재 벡터 z로부터 명령어 시퀀스를 복원합니다.
  • 학습 방식: reconstruction loss를 최소화하도록 학습되며, Cross-Entropy Loss를 사용합니다.

Embedding 방식도 독특합니다. 하나의 명령어는 아래 세 가지 임베딩을 더해서 표현됩니다.

  1. 명령어 타입 임베딩 (예: L, A, R, E 등)
  2. 명령어 파라미터 임베딩 (각 파라미터는 one-hot encoding 후 projection)
  3. 시퀀스 위치 임베딩 (Transformer에서 사용하는 positional encoding)

이렇게 임베딩된 명령어 시퀀스는 Transformer Encoder를 통해 하나의 벡터 z로 압축되며, 이 벡터는 3D 도면의 핵심 정보를 요약한 representation이라 할 수 있습니다.

Decoder는 학습된 z를 받아 다시 명령어 시퀀스로 복원합니다. 이때는 feed-forward decoding 방식을 사용하며, 순차적으로 한 명령어씩 생성하는 방식이 아니라 전체 시퀀스를 병렬적으로 생성할 수 있어 학습 속도와 안정성이 높습니다. 이때 Decoder는 z 뿐만 아니라 learned constant embedding을 같이 입력 받습니다. 이는 학습 과정에서 Initial Value로 시작하여 학습된 constant로, Inference 단계에서는 입력 Sequence와 관계 없이 동일한 값을 갖습니다. z는 입력 도면의 압축된 정보를, learned constant는 학습 과정에서 배운 전체적인 도면 골격을 의미한다고 이해할 수 있습니다.

이 구조는 단순한 재구성(autoencoding)뿐 아니라, latent space를 활용한 도면 생성, point cloud로부터 도면 복원, 사용자 편집 가능한 CAD 도면 생성 등의 다양한 응용에 활용됩니다.

4. 실험 결과

DeepCAD는 CAD 명령어 시퀀스를 직접 생성하는 모델로, 기존의 3D 생성 모델들과는 전혀 다른 형태의 출력을 생성합니다. 따라서 평가 역시 두 가지 관점에서 이루어집니다.
첫째, 입력 도면을 얼마나 정확히 복원할 수 있는지를 보는 Autoencoding 실험,
둘째, latent 공간에서 임의의 벡터로부터 얼마나 자연스럽고 유효한 도면을 생성할 수 있는지를 평가하는 Shape Generation 실험입니다.
마지막으로, point cloud로부터 CAD 도면을 복원하거나, CAD 도면을 실제 편집 가능한 형태로 활용하는 가능성도 함께 살펴봅니다.

4.1. Autoencoding of CAD Models

Autoencoding 실험은 DeepCAD 모델이 입력 CAD 명령어 시퀀스를 정확히 압축하고 다시 복원할 수 있는지를 측정합니다. 이는 단순한 재구성 능력뿐 아니라, 모델이 CAD 표현의 구조적 특성을 잘 이해하고 있는지를 보여줍니다.

평가지표는 세 가지로 구성됩니다.

  • Command Accuracy (ACCcmd): 명령어의 종류 (예: Line, Arc, Extrude 등)를 정확히 복원했는지를 측정합니다.
  • Parameter Accuracy (ACCparam): 명령어의 파라미터 값들이 정확히 복원되었는지를 측정합니다. 파라미터는 정수로 양자화되어 있기 때문에, 특정 허용 오차(예: ±3) 이내로 복원된 경우를 정답으로 간주합니다.
  • Chamfer Distance (CD): 복원된 명령어 시퀀스를 CAD 툴에서 3D 형상으로 렌더링한 후, 원본 형상과의 포인트 클라우드 간 거리를 측정합니다. 값이 낮을수록 실제 형상이 유사하다는 의미입니다.
그림4. Autoencoding 실험 결과
그림4. Autoencoding 실험 결과

실험 결과에서 볼 수 있듯이, DeepCAD는 매우 높은 정확도로 명령어 시퀀스를 복원하며, 데이터 증강을 추가한 경우(Aug) 성능이 더욱 향상됩니다. 특히 Alt-Regr처럼 실수 파라미터를 양자화하지 않고 회귀(regression) 방식으로 복원한 모델은 형상 왜곡이 심해 Chamfer Distance가 매우 높게 나타납니다. 시각적 예시를 보면, DeepCAD는 직선과 원, 호의 연결 관계를 잘 보존하고 있으며, 일부 대체 모델(Alt-Rel)은 오류가 누적되어 비정상적인 형태가 나타나기도 합니다.

그림5. 생성된 3D Model
그림5. 생성된 3D Model

4.2. Shape Generation

학습된 Autoencoder의 latent space는 단순히 복원만을 위한 것이 아니라, 새로운 설계 도면을 생성하는 데에도 활용됩니다. 이를 위해 DeepCAD는 latent-GAN 구조를 활용하여 latent vector z를 생성하고, 이를 Decoder에 입력하여 새로운 CAD 명령어 시퀀스를 생성합니다.

이 실험에서는 DeepCAD로 생성한 도면의 품질을 기존 3D point cloud 생성 모델인 l-GAN과 비교합니다. 비교를 위해 생성된 CAD 명령어 시퀀스를 렌더링한 뒤 point cloud로 변환하여 동일한 조건에서 평가합니다.

평가지표는 다음과 같습니다.

  • Coverage (COV): 생성된 도면이 얼마나 다양한 실제 형상을 커버하는지 평가합니다.
  • Minimum Matching Distance (MMD): 생성된 형상과 실제 형상 간의 평균 거리를 측정합니다.
  • Jensen-Shannon Divergence (JSD): 생성된 형상 분포가 실제 형상 분포와 얼마나 유사한지를 측정합니다.
그림6. Shape Generation 실험 결과
그림6. Shape Generation 실험 결과

DeepCAD는 point cloud 기반 생성 모델과 비교해도 매우 경쟁력 있는 성능을 보이며, 특히 JSD가 낮고 COV가 높아 더 다양한 형상을 안정적으로 생성할 수 있음을 보여줍니다. 무엇보다 중요한 점은, DeepCAD로 생성된 도면은 단순한 점들의 집합이 아니라, 명령어 시퀀스 형태로 생성되기 때문에 실제 CAD 툴에서 바로 편집이 가능하다는 점입니다.

그림7. 생성된 Shape 결과
그림7. 생성된 Shape 결과

4.3. 응용 가능성

DeepCAD는 단순한 3D 생성 모델을 넘어서, 다양한 실무 응용 가능성을 가집니다.

첫 번째는 Point Cloud로부터 CAD 도면으로 변환하는 것입니다. 스캔된 점군 데이터를 기반으로 CAD 도면을 복원할 수 있다면, 설계 자동화나 리버스 엔지니어링 분야에서 큰 가치를 가집니다. DeepCAD는 PointNet++와 결합하여 point cloud를 latent vector로 변환하고, 이를 CAD 명령어 시퀀스로 복원하는 데 성공했습니다. 이 과정은 CAD 표현의 정확성과 편집 가능성을 동시에 확보할 수 있다는 점에서 매우 유용합니다.

그림8. Point2CAD
그림8. Point2CAD

두 번째는 사용자 편집이 가능한 CAD 도면을 생성하는 것입니다. DeepCAD로 생성된 명령어 시퀀스는 Onshape, AutoCAD 등 CAD 툴에서 직접 로드하여 간단한 파라미터 수정만으로 형상을 변경할 수 있습니다. 예를 들어, 특정 면을 이동하거나 Fillet을 추가하는 등의 편집이 자유롭습니다. 이는 기존 mesh나 voxel 기반 생성 방식에서는 불가능했던 기능입니다.

그림9. CAD 편집하기
그림9. CAD 편집하기

5. 마치며

이번 포스팅에서는 DeepCAD: A Deep Generative Network for Computer-Aided Design Models 논문을 통해, 기존의 3D 생성 모델들과는 차별화된 방식으로 CAD 도면 자체를 생성하는 모델에 대해 살펴보았습니다. 기존의 대부분 3D 생성 모델들은 point cloud, voxel, polygon mesh 등 불연속적인 형상 표현을 생성하는 데 집중되어 있었고, 그 결과는 주로 시각화에는 적합했지만 실제 설계나 수정이 필요한 산업 현장에서는 활용도가 낮았습니다. DeepCAD는 이와는 전혀 다른 접근을 취합니다. 바로, CAD 명령어 시퀀스 자체를 생성하는 모델이라는 점에서 의미가 큽니다. 이 명령어 시퀀스는 설계자가 CAD 소프트웨어에서 수행한 생성 과정을 그대로 담고 있어, 형상의 결과뿐 아니라 설계의도까지 표현 가능한 구조입니다.

이 모델의 핵심은 세 가지였습니다.

  1. CAD 도면을 명령어 시퀀스로 표현하고, 이를 벡터 형태로 정규화하여 딥러닝 모델에 입력할 수 있도록 만든 점.
  2. Transformer 기반 Autoencoder를 사용하여 도면을 잠재 공간(latent space)으로 압축하고, 이를 다시 복원하거나 새롭게 생성할 수 있는 구조를 제안한 점.
  3. 이러한 구조를 통해 학습된 모델이 단순한 복원뿐 아니라, 새로운 CAD 도면 생성, point cloud로부터의 도면 복원, 사용자 편집 가능한 설계 결과 생성까지 다양한 응용 가능성을 보였다는 점입니다.

실험 결과에서도 DeepCAD는 높은 명령어 복원 정확도, 낮은 Chamfer Distance, 그리고 타 모델들과 비교해도 경쟁력 있는 도면 생성 성능을 보여주었습니다. 특히 실무에서 활용 가능한 명령어 기반 생성 구조를 통해, 생성된 도면을 CAD 툴에서 곧바로 불러와 수정할 수 있다는 점은 매우 강력한 장점입니다.

물론 DeepCAD에도 한계는 존재합니다. 예를 들어, 현재는 주로 선(Line), 호(Arc), 원(Circle) 등의 기본적인 스케치 명령과 단순한 Extrude 연산만을 지원하며, Revolve, Fillet, Sweep 등 다양한 CAD 연산은 아직 포함되어 있지 않습니다. 또한, 생성된 명령어 시퀀스가 항상 정상적인(유효한) 형상을 생성한다는 보장이 없다는 점도 여전히 해결해야 할 과제입니다.

그럼에도 불구하고, DeepCAD는 딥러닝 모델이 단순한 형상 생성에서 벗어나 설계 과정을 학습하고 생성할 수 있다는 가능성을 보여준 의미 있는 연구입니다. 향후에는 더 다양한 CAD 명령어를 포함한 확장, Topology 검증을 위한 후처리 기법, 그리고 실제 CAD 소프트웨어와의 통합을 통해 실무에서도 활용 가능한 완전한 시스템으로 발전할 수 있을 것으로 기대됩니다.

6. 참고 자료

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top