Adobe가 내 첫 100개 벡터를 거부했습니다. 해결책은 단 하나의 설정이었습니다.
요약
Adobe Illustrator에서 비트맵을 벡터로 변환할 때, '폴리곤 모드' 대신 '스플라인 모드'를 사용해야 부드러운 곡선을 유지할 수 있습니다. 또한, 생성 모델의 JPEG 출력을 트레이싱하기 전 '이진화(binarise)' 과정을 거치면 가장자리 문제를 해결하여 합격률을 크게 높일 수 있습니다.
핵심 포인트
- 벡터 변환 시 폴리곤 모드보다 스플라인 모드가 정확함.
- JPEG 기반 이미지의 경우, 이진화를 통해 경계선 오류를 방지할 수 있음.
- 이진화는 평면 예술에 적합하며 컬러 일러스트레이션에는 부적합함.
- 트레이싱 후 패스를 사용하여 미세한 각도 부정확성을 보정하는 것이 좋음.
저는 처음 그린 백 개의 벡터를 잘못 추적했습니다.
심각하지는 않았습니다. 기술적으로는 정확했습니다. 모든 파일이 열렸고, 모든 경로가 닫혔으며, 아무것도 손상되지 않았습니다. 그런데도 Adobe는 거의 모든 파일을 '들쭉날쭉한 가장자리(jagged edges)'라는 동일한 코멘트와 함께 거부했습니다.
'들쭉날쭉한 가장자리'가 품질 판단이 아니라는 것을 이해하는 데 터무니없이 오랜 시간이 걸렸습니다. 그것은 기하학적 형태에 대한 문자 그대로의 설명이었고, 그 기하학적 문제는 저의 잘못이었습니다.
추적에는 모드가 있으며, 기본 설정이 잘못되었습니다
비트맵을 벡터화할 때, 트레이서(tracer)는 모든 가장자리를 어떻게 근사할지 결정합니다. 여기에는 두 가지 옵션이 있습니다:
- 폴리곤 모드 (Polygon mode): 곡선을 많은 짧은 직선 세그먼트로 근사합니다.
- 스플라인 모드 (Spline mode): 가장자리에 실제 베지에 곡선(Bezier curves)을 맞춥니다.
폴리곤 모드는 더 빠르고 썸네일에서는 괜찮아 보입니다. 원의 경우, 작은 크기에서 통과할 수 있을 만큼 충분한 면을 가진 폴리곤이 됩니다. 확대해 보면 부드러운 곡선은 계단 모양이 됩니다.
저는 제 파일 중 하나에서 그 차이를 측정했습니다. 폴리곤 모드는 0개의 곡선과 33,520개의 직선 세그먼트를 생성했습니다. 같은 원본을 스플라인 모드로 처리했을 때는 4,088개의 베지에 곡선과 35개의 선 세그먼트가 나왔습니다.
이것이 전체 거부 사유였습니다. 마켓플레이스 리뷰어가 확대해서 보면, 3만 3천 개의 작은 직선으로 만들어진 원을 보고 '들쭉날쭉하다'고 말합니다. 그들이 틀리지 않았습니다. 저는 그들에게 계단 모양을 건네주면서 그것을 원이라고 부르고 있었던 것입니다.
스플라인 모드로 전환하는 것은 한 줄의 변경이었습니다. 또한 제 합격률에서 가장 큰 도약이었습니다.
하지만 스플라인만으로는 충분하지 않았습니다
여기가 또 다른 라운드의 실패를 가져온 부분입니다.
제 원본 이미지는 생성 모델(generative model)에서 나왔기 때문에 JPEG 형식으로 출력됩니다. JPEG는 손실 압축(lossy) 방식입니다. 이미지의 모든 가장자리에는 부드러운 안티앨리어싱 그라디언트, 즉 모양에서 배경으로 흐릿해지는 픽셀 경사면이 있습니다.
트레이서가 이 그라디언트를 보면, 하나의 가장자리를 보는 것이 아닙니다. 두 개의 가장자리, 즉 경사면의 시작과 끝을 봅니다. 그래서 단단한 채우기(solid fill) 대신 모든 모양 주변에 얇은 고리 형태를 추적합니다. 제가 추정한 모양들은 속이 비어 있고, 자세히 살펴보아야만 보이는 희미한 이중 윤곽선이 있었습니다.
해결책은 이미지를 트레이싱하기 전에 이진화(binarise)하는 것이었습니다. 즉, 모든 픽셀을 완전히 내부 또는 완전히 외부 중 하나로 강제하고 그 사이의 그라디언트는 없애는 것입니다. 그렇게 하자 해당 작업물들의 합격률이 10개 중 3개에서 10개 중 10개로 올랐습니다.
다만, 이것을 배우는 데 한 배치(batch)가 걸린 주의할 점이 있습니다. 이진화는 평면적인 단색 아이콘에는 적합하지만 컬러 일러스트레이션에는 적합하지 않습니다. 만약 컬러 캐릭터를 이진화하면 그것은 단일 색상의 실루엣으로 납작해집니다. 제가 정한 규칙은 다음과 같습니다: 평면 예술(flat art)은 이진화하고, 컬러 아트는 그대로 둡니다.
아무도 언급하지 않는 정리 단계
좋은 스플라인 트레이스라 할지라도 작은 부정확성이 남습니다. 완벽하게 90도 각져야 하는 모서리가 87.4도로 나오는 경우가 있습니다. 수직이어야 하는 선이 아주 조금 틀어져 있는 경우도 마찬가지입니다.
트레이싱 후에 실행할 수 있는 패스가 있는데, 이 패스는 근사 축각(near-axis angles)을 정확히 0도, 45도 또는 90도로 맞춰줍니다. 중요한 세부 사항은 이것이 픽셀 수준에서 손실이 없다는 것입니다. 제가 전후를 비교해 보니 변화는 픽셀의 0.01%에서 0.05% 사이였습니다. 깨끗한 기하학적 형태를 얻으면서도 이미지를 유지할 수 있습니다.
교훈
제가 거절당했던 대부분의 사례는 예술적인 문제가 아니었습니다. 그것들은 마치 예술 문제인 것처럼 포장된 설정 문제입니다.
트레이서에는 모드가 있습니다. 입력은 전처리(pre-processing)가 필요합니다. 출력은 정규화 패스(regularisation pass)가 필요합니다. 이 중 어느 것도 프롬프트에 포함되어 있지 않으며, '그냥 벡터화하세요'에서 멈추는 어떤 튜토리얼에도 없습니다.
만약 AI 아트를 트레이싱하다가 모서리가 들쭉날쭉해서 거절당한다면, 먼저 모드를 확인하세요. 모양이 속이 빈 것처럼 보인다면, 설정을 만지기 전에 입력을 수정하세요. 그리고 모서리가 거의 맞을 것 같다면, 그것을 위한 패스가 있습니다.
저는 정확한 스크립트, 이진화 규칙, 그리고 정규화 설정을 'Pipeline Starter Kit'에 담았습니다:
이것은 제가 모든 것을 구축한 1 CPU 서버, GPU가 없는 환경에서 작동합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기