AI 탐구노트

DeepSVG : 벡터 그래픽 생성과 애니메이션을 위한 계층적 생성 네트워크 본문

AI 기술

DeepSVG : 벡터 그래픽 생성과 애니메이션을 위한 계층적 생성 네트워크

42morrow 2024. 12. 14. 10:35

1. 서론

앞서 다른 글에서도 언급한 것처럼 현대 디지털 디자인에서 벡터 그래픽은 스케일 조정의 유연성으로 인해 광범위하게 사용됩니다. 벡터 그래픽은 크기를 조정할 때 품질 손실이 없다는 점에서 레스터 이미지보다 뛰어난 장점을 가지고 있죠. 하지만, 대부분의 인공지능 연구는 레스터 이미지 생성에 집중되어 있으며, 벡터 그래픽을 학습하거나 생성하려는 노력은 상대적으로 부족했습니다.

 

이러한 한계를 극복하기 위해 DeepSVG라는 새로운 접근이 제시되었습니다. DeepSVG는 SVG(Scalable Vector Graphics) 형식의 복잡한 벡터 그래픽을 생성하고 애니메이션을 지원하는 계층적 생성 네트워크입니다. 이 모델은 벡터 그래픽 데이터를 효율적으로 표현할 수 있는 계층적 구조를 활용하여 복잡한 아이콘을 생성, 보간(interpolation), 그리고 조작(manipulation)할 수 있는 기능을 제공합니다. 

 

DeepSVG는 디자이너와 개발자에게 강력한 도구가 될 잠재력을 지니고 있으며, 벡터 그래픽의 학습과 생성이라는 새로운 연구 방향을 제시합니다. 이 글에서는 DeepSVG의 작동 원리와 그 성능, 그리고 실질적인 응용 가능성을 다루겠습니다.

그림 : 벡터 그래픽 애니메이션을 생성하는 과정 설명


2. 본론

2.1 기존 방식의 문제점

기존의 벡터 그래픽 생성 연구는 주로 단순한 로고나 스케치 생성에 초점이 맞춰져 있었습니다. 예를 들어, SketchRNN은 단순한 스케치를 생성하는 모델로 벡터 그래픽의 전반적인 복잡성을 다루는 데 한계가 있었습니다. 또한, 벡터 그래픽 생성에서 순차적 처리 방식을 사용하는 경우가 많았는데, 이는 계산 비용이 크고 복잡한 이미지에서는 비효율적이었습니다.

2.2 접근 방식

DeepSVG는 계층적 트랜스포머 구조를 기반으로 복잡한 벡터 그래픽을 효율적으로 생성합니다. 이 접근법은 고수준의 형태(high-level shapes)와 이를 구성하는 명령어(low-level commands)를 효과적으로 분리(disentangle)하여 그래픽을 처리합니다.

  • 인코더 구조 : 벡터 그래픽의 경로를 독립적으로 인코딩하며, 전체 그래픽의 잠재 표현(latent representation)을 생성합니다.  쉽게 풀어서 얘기하면 벡터 그래픽을 구성하는 다수의 경로(path)를 독립적으로 분석해서 핵심 정보를 추출하고, 이들을 결합해 전체 이미지를 대표하는 하나의 요약정보(잠재 벡터)를 생성한다는 것입니다. 
  • 디코더 구조 : 한 번의 예측 과정으로 전체 그래픽의 명령어를 생성하여 기존의 순차적 처리보다 더 빠르고 효율적입니다.

 

그림 : DeepSVG의 인코더, 디코더의 동작 방식 설명

 

위 그림에서 E(1)은 Path Encoder로 경로를 독립적으로 분석해 중요 정보를 추출하는 역할을 하며, E(2)는 Global Encoder로 각 경로에서 추출된 정보를 합쳐 전체 이미지를 대표하는 잠재 벡터(z)를 생성합니다. D(2)는 Global Decoder는 잠재 벡터(z)를 이용해 그래픽을 구성하는 경로의 정보를 생성하고 최종적으로 D(1)는 Path Decoder로 경로 정보를 기반으로 세부적인 명령어를 생성해 경로를 완성합니다. 위의 과정은 벡터 이미지를 퍼즐 조각처럼 나누고, 각 조각의 특징을 기록한 뒤 전체 퍼즐을 요약하고 이를 다시 풀어서 원래 이미지를 완성하는 과정으로 비유할 수 있습니다. 

 

2.3 세부 적용 기술

  1. SVG-Icons8 데이터셋 : DeepSVG는 약 10만 개의 고품질 SVG 아이콘으로 구성된 대규모 데이터셋을 활용합니다. 이 데이터는 다양성과 일관성을 모두 고려하여 설계되었습니다.
  2. 트랜스포머 기반 구조 : DeepSVG는 트랜스포머 아키텍처를 통해 입력 데이터의 순서 불변성(permutation invariance)을 유지하고, 효율적인 병렬 처리를 지원합니다. 이는 경로(path) 생성 순서가 중요하지 않은 벡터 그래픽의 특징과 관련됩니다.
  3. 비순차적 디코딩(non-autoregressive decoding) : 기존의 순차적 접근 방식 대신, 모든 명령어를 동시에 예측하여 성능을 향상시켰습니다. 
  4. 잠재 공간 보간(interpolation) : DeepSVG는 잠재 공간에서 아이콘 간의 매끄러운 변환을 수행할 수 있어 애니메이션 제작과 같은 실질적 응용에 유용합니다.

 

그림 : 병렬처리 기반의 인코딩/디코딩 방식 비교 설명

 

2.4 제약사항

 

현재 DeepSVG는 경로 수나 명령어 수와 같은 고정된 크기로 제한하도록 했습니다. 이는 모델의 입력 크기를 고정하면 학습과 추론 단계에서 효율적으로 병렬 처리할 수 있기 때문이며 이로 인해 GPU 메모리 사용을 줄이고 모델의 계산 비용을 줄일 수 있습니다. 하지만, 대신 매우 복잡한 벡터 그래픽에서는 성능 저하가 발생할 수 있습니다. 그러니 사용하실 때 보유한 컴퓨팅 리소스에 따라 적절한 입력 크기를 설정하는 작업이 필요할 수 있습니다. 


3. 결론

DeepSVG는 복잡한 벡터 그래픽 생성을 위한 새로운 가능성을 열었습니다. 이 모델은 디자인 작업에서 사용자 생산성을 높이고, 애니메이션 제작 등 다양한 응용 가능성을 제공합니다. 개인적으로는 처음과 끝의 벡터 이미지를 지정하고 그 사이의 과정을 interporlation을 이용해 생성해서 애니메이션이 되는 이모지를 생성하는 것이 인상적이었습니다. 잠재 공간 상의 위치를 변경해 가면서 다양한 결과물을 만들어 낼 수 있을테니 적용할 분야에 상큼한 아이디어를 결합하면 재미난 것도 만들어낼 수 있지 않을까 생각했습니다. ^^

 


4. 참고자료

  • 프로젝트
 

DeepSVG

A Hierarchical Generative Network for Vector Graphics Animation.

alexandre01.github.io

  • 논문: DeepSVG: A Hierarchical Generative Network for Vector Graphics Animation (링크)
  • 코드 (Github)
 

GitHub - alexandre01/deepsvg: [NeurIPS 2020] Official code for the paper "DeepSVG: A Hierarchical Generative Network for Vector

[NeurIPS 2020] Official code for the paper "DeepSVG: A Hierarchical Generative Network for Vector Graphics Animation". Includes a PyTorch library for deep learning with SVG data. - alexan...

github.com

 


5. Q&A

Q. DeepSVG의 주요 기여는 무엇인가요?

DeepSVG는 SVG 데이터를 위한 대규모 데이터셋과 계층적 트랜스포머 모델을 활용하여 복잡한 벡터 그래픽을 생성하고, 보간 및 조작 기능을 제공합니다.

 

Q. DeepSVG는 레스터 이미지 생성 모델과 어떻게 다른가요?

레스터 이미지는 픽셀 기반의 정렬된 데이터 구조를 사용하지만, 벡터 그래픽은 수학적 경로로 구성됩니다. DeepSVG는 이러한 구조적 차이를 반영하여 데이터를 처리합니다.

 

Q. 모델이 제공하는 애니메이션 기능은 어떤 원리인가요?

DeepSVG는 잠재 공간에서 두 그래픽 간의 변화를 학습하여 경로의 변형 및 보간을 수행합니다.