생성형 AI, 세상 모든 견종 NFT를 만들 수 있을까?

2024. 9. 13. 07:50AI 이야기
임현경 (Hyun Kyung Lim)

'요술 방망이'라는 AI, 직접 써보니...

생성형(Generative) AI의 등장 이후 주변이 온통 AI 얘기로 떠들썩합니다. 대부분 새로운 기능이 얼마나 놀라운지, 발전된 기술이 무엇을 가능하게 할지에 대한 이야기죠. 들려오는 소문으로는 AI가 명령어만 입력하면 어떤 결과물이든 원하는 대로 뚝딱 나오는 ‘요술 방망이’처럼 느껴집니다. 정말 그럴까요? 생성형 AI 미드저니(Midjourney)를 사용하면서 직접 알아봤습니다. 

 

PFP NFT 344개 나와라, 뚝딱!

우선 미드저니와 함께 세상 모든 개를 위한 PFP(profile picture) NFT를 만들어보자는 목표를 세웠습니다. 요크셔테리어 한 마리와 함께 살고 있는 저를 포함해 pxd에는 반려견을 둔 동료들이 많은데요. 반려인들이 메신저나 소셜 미디어에 자랑할 수 있는 나만의 귀여운 반려견 NFT를 만들어보자는 것이 출발점이었죠. NFT 발행을 위해 필요한 PFP는 전 세계 견종의 수와 같은 344개입니다. 

보통 이렇게 많은 PFP를 만드는 경우에는 효율성을 위해 하나의 이미지를 기준으로 정해놓습니다. 여기에 더할 꾸밈 요소를 여러 종류 만들어 조합하죠. 기본형 아바타에 눈 모양, 액세서리 등을 어떻게 추가하느냐에 따라 새로운 아바타가 만들어지는 것처럼요. 하지만, 귀 모양부터 털의 결까지 저마다 다른 견종의 PFP를 만들기 위해서는 이런 방법을 사용하기 어렵습니다. 정형화된 형태에서 벗어나 개성을 표현하는 능력이 필요하기 때문이죠. 생성형 AI의 위력을 확인해 볼 기회입니다. 

 

스타일부터 골라보자

먼저 AI와 함께 PFP의 스타일을 고릅니다. 어떤 그림체가 귀여운 개의 모습을 잘 보여줄 수 있을까요? 미드저니의 파라미터 중 레퍼런스의 스타일을 인지하고 이에 맞게 새로운 이미지를 만들어주는 ‘스타일 레퍼런스(Style reference)’를 사용해 봅니다. ‘sref’에 ‘random’을 덧붙이면, 미드저니가 이미 학습한 데이터에서 무작위로 선정한 스타일로 이미지를 만들죠. 한 번에 여러 스타일을 보고 싶어서 프롬프트에 ‘--r 8’을 추가했습니다. 8번 작업을 반복해 달라, 즉 여덟 종류의 스타일을 뽑아달라는 의미입니다.

‘요크셔테리어 한 마리, 무작위로 고른 스타일을 레퍼런스 삼아서, 8번 반복’ 

위 내용을 담은 프롬프트를 입력하자, 팝아트, 애니메이션, 유화 등 다양한 그림체의 이미지가 나왔습니다. 

 

여러 번 반복하며 다양한 스타일을 비교했을 때 분홍빛 팝아트 스타일(위 이미지에서 첫 번째)이 가장 마음에 들었습니다. 해당 이미지의 프롬프트인 ‘sref 3719839071’을 가지고 동일한 그림체로 더 많은 이미지를 생성해 보기로 합니다. 같은 스타일 안에서도 색감이나 구도를 다르게 적용하며 가장 PFP에 적합한 이미지를 찾는 거죠. 

 

수백 장의 결과물 중 단색 배경에 목줄을 차고 있는 이미지가 가장 적합하다고 판단했습니다. 단순한 스타일로 일관성을 유지하면서도 견종별 특징을 보여주기에 수월해 보였죠. 팝아트 스타일, 단색 배경, 목줄, 바스트샷. AI 덕분에 효율적으로 PFP의 기본 특징을 정했습니다. 이렇게 고른 이미지를 기준 삼아 다른 견종에도 일괄적으로 적용할 수 있는 최적의 프롬프트를 구성합니다. 

 

최적의 프롬프트를 찾아서

가장 이상적인 구성을 갖춘 이미지의 프롬프트를 확인합니다. 이때 사용한 미드저니의 파라미터는 ‘디스크라이브(Describe)’인데요. 업로드 또는 링크로 입력한 이미지의 특징을 글로 묘사합니다. 4개의 텍스트 프롬프트가 생성되죠. 거꾸로 이 프롬프트를 그대로 입력해 이미지를 생성한다고 해도, 원래의 이미지와 완전히 동일한 결과가 나오지는 않습니다. 그래서 기준 이미지를 참조하도록 ‘sref’를 적용해 최대한 변수를 줄인 뒤 각 프롬프트에 따른 결과를 비교했습니다. 

<1>

3D rendering of a cute Yorkshire Terrier dog portrait with a colorful pink background in a close up shot, featuring a minimalist pop art style with a vibrant color scheme using simple shapes and pastel colors in the style of animal photography at a high resolution with hyper realistic details in high definition. --sref https://s.mj.run/gX0nbNG2dXk --sw 80 --style raw

<2>

A cute Yorkshire Terrier dog with a collar, facing forward, in the style of neon joyful colors, ethereal details, pink background, C4D OC render style, soft natural lighting, simple and elegant space. --sref https://s.mj.run/gX0nbNG2dXk --sw 80 --style raw

<3>

A Yorkshire Terrier dog with a collar, facing forward, in the style of neon joyful colors, ethereal details, pink background, C4D OC render style, soft natural lighting, simple and elegant space. --sref https://s.mj.run/gX0nbNG2dXk --sw 80 --style raw

<4>

An illustration of the face portrait from a front view of a Yorkshire Terrier dog with a pink collar, looking straight to the camera with a happy expression in a colorful pastel neon vibrant gradient background, 3D blender render, high resolution digital photography in the style of Richard Avedon. --sref https://s.mj.run/gX0nbNG2dXk --sw 80 --style raw

1번 프롬프트로 만든 이미지의 구도와 요크셔테리어를 표현하는 방식이 가장 마음에 들지만, 목줄이 보이지 않습니다. 반면 나머지 결과물은 상대적으로 목줄이 도드라져 보입니다. 2~4번 프롬프트를 살펴보니 공통으로 포함된 단어 중 ‘Collar’가 눈에 띕니다. 미드저니는 레퍼런스 이미지에 포함된 요소라 해도 그 명칭을 구체적으로 프롬프트에 넣어야 확실히 인식하는 듯합니다. 이를 토대로 1번의 프롬프트에 표현하고 싶은 대상을 가리키는 명사를 추가했습니다.

3D rendering of a cute (견종) dog with collar and harness portrait with a colorful pink background in a close up shot, featuring a minimalist pop art style with a vibrant color scheme using simple shapes and pastel colors in the style of animal photography at a high resolution with hyper realistic details in high definition. --sref https://s.mj.run/gX0nbNG2dXk --sw 80 --style raw

 

이렇게 구성한 프롬프트를 다른 견종에 적용하면 어떻게 될까요? 

요크셔테리어, 아키타, 비숑 프리제, 달마티안의 이미지를 생성한 결과입니다. 살짝 위를 바라보고 있는 포즈에 앞서 정한 스타일, 목줄까지 잘 표현했습니다. 마침내 최적의 프롬프트를 찾았습니다. 견종만 바꿔서 이미지를 생성하면 PFP NFT 344장을 완성할 수 있을 것 같았지만, 여기서 문제가 생겼습니다. 바로 비숑 프리제가 ‘비숑 프리제처럼 보이지 않는다'는 것이었죠. 

 

AI도 모르는 게 있을 때

 

분명 프롬프트에 영어로 ‘Bichon Frise’를 넣어 생성한 이미지인데 꼭 토이 푸들을 닮았습니다. 곱슬곱슬한 털, 살짝 나온 주둥이 등 뜯어 보면 비숑 프리제의 특징을 갖고 있긴 하지만, 이 모든 것을 조합한 결과물은 우리가 알고 있는 비숑 프리제와 거리가 멉니다. 아무리 여러 번 비숑 프리제 만들어 달라 부탁해도 미드저니가 내놓은 결과는 푸들이었죠. AI가 비숑 프리제에 대해 충분히 학습하지 못했거나, 이름만으로는 비숑 프리제의 개성을 표현하지 못하는 것 같았습니다.

직전 프롬프트에 ‘sref’로 비숑 프리제의 실제 사진 링크를 첨부해서 AI가 참고할 레퍼런스를 알려줍니다. 

3D rendering of a cute bichon prise dog with collar and harness portrait with a colorful pink background in a close up shot, featuring a minimalist pop art style with a vibrant color scheme using simple shapes and pastel colors in the style of animal photography at a high resolution with hyper realistic details in high definition. --sref https://s.mj.run/gX0nbNG2dXk https://s.mj.run/bJvwPHzvnI4 --sw 80 --style raw

 

실사를 참고해 생성한 이미지는 비숑 프리제에 조금 더 가까워졌지만, 색감이나 포즈 역시 레퍼런스의 영향을 받았습니다. 전보다 분홍색이 빠지는 대신 흑백이 강조되고 비숑 프리제의 시선 방향도 달라졌습니다. 작업을 반복해도 같은 현상이 발생합니다. 그나마 미리 정해둔 스타일을 가장 많이 유지하고 있는 2번 이미지를 업스케일링한 뒤 다른 방법을 찾았습니다.

 

미드저니에는 이미지의 일부만 선택해 수정할 수 있는 ‘베리 리전(Vary Region)’ 기능이 있습니다. 포토샵의 올가미 도구(Lasso Tool)와 비슷합니다. 이 기능을 이용해 가로로 퍼진 귀 부분을 지우고 둥글게 만들어 달라는 프롬프트를 입력했습니다. 비숑 프리제의 동그란 두상을 표현할 수 있도록 한 것이죠. 

 

그 결과, 귀 쪽에 있는 털의 양이 조금 줄어들긴 했지만, 기대했던 만큼 완전한 원형은 표현하지 못했습니다. 결국 포토샵의 도움을 받기로 했습니다. 

 

포토샵에서도 생성형 AI를 활용할 수 있습니다. AI가 해결하지 못하는 문제를 또 다른 AI로 풀어보는 거죠. 올가미 도구로 수정하고 싶은 범위를 설정하고 프롬프트를 입력하면 여러 결과물이 나옵니다. 비숑 프리제의 귀 부분을 범위로 잡아준 뒤 ‘지우기', ‘remove’ 등을 입력했더니 드디어 비교적 두상이 동그란 이미지가 만들어졌습니다. 

 

비숑 프리제 실제 사진과 비교해 봐도 위화감이 없을 정도입니다. 하지만 문제는 여기서 끝이 아니었습니다. 

 

답은 결국 ‘반복’에 있다

 

비숑 프리제를 잘 모르는 미드저니가 그보다 더 희귀한 견종의 이미지를 만드는 일이 수월할리 없죠. 대표적인 예가 베들링턴 테리어인데요. 미드저니는 베들링턴의 특징 중 하나인 넓은 미간을 표현하지 못했습니다. 마치 이렇게 생긴 개가 존재한다는 것을 믿지 못하는 것만 같았습니다. 이럴 땐 어떻게 해야 할까요? 

 

일단 비숑 프리제 문제를 풀었던 방법, 스타일 레퍼런스-디스크라이브-베리 리전 과정을 반복합니다. 생성된 이미지의 프롬프트에 ‘베들링턴 테리어'가 포함됐는지 확인하고, 가장 그럴듯한 이미지를 만든 프롬프트를 보완, 수정하며 또 다른 이미지를 생성했습니다. 두상이나 시선 방향이 적절한 이미지가 나오면 여기에서 어색한 부분을 특정해 프롬프트로 수정합니다. 몇 번을 반복했는지 세기를 포기했을 때쯤, 기준으로 삼은 스타일과 비슷한 결과가 나왔습니다.

 

다시 포토샵으로 넘어가 세밀한 보정 작업에 돌입했습니다. 다른 이미지를 가져와 합성하고 AI 도구를 사용해 수정했죠. 이 과정을 반복할수록 결과물은 베들링턴 테리어의 특성인 긴 귀와 두상, 넓은 미간을 갖춰갔습니다. 집요한 후보정 작업을 반복한 끝에, 그럴듯한 베들링턴 테리어가 만들어졌습니다. 

 

이제 AI가 프롬프트로 명령한 대상을 모르는 문제가 발생했을 때 해결할 수 있는 요령을 터득한 것 같습니다. 아직 만들어야 할 PFP가 300여 장이 남아있지만요. 

 

 

말 안 듣는 요술 방망이? 

직접 경험하지 않았다면 생성형 AI를 오해할 뻔했습니다. 요술 방망이인 줄로만 알았을 테니까요. AI는 분명 편리합니다. 사람이 혼자 작업할 때에 비해 훨씬 빠르게, 많은 결과를 만들 수 있습니다. 간단한 프롬프트만으로 멋진 이미지가 만들어지다니 엄청난 혁신처럼 느껴지기도 합니다.

하지만 뭐든지 알아서 뚝딱 만들어주는 요술 방망이는 아닙니다. 현재의 기술로는 결과물이 설정한 스타일에서 벗어나거나 프롬프트를 인식하지 못하는 문제가 빈번히 발생하고, 이로 인해 사람이 끊임없이 프롬프트 또는 이미지를 직접 수정해야만 합니다. 사람이 직접 손으로 들고서 드릴을 갈아 끼우고, 작업 위치를 찾아서 갖다 대야 하는 ‘전동드릴'에 가깝죠.

요술 방망이가 아니라고 실망하기엔 이릅니다. 소문만으로 가졌던 막연한 동경이나 두려움은 사라지고 AI를 도구로서 효과적으로 활용할 수 있는 노하우를 터득했으니까요. 여러분도 직접 AI를 사용해 보며 그 가능성과 한계를 직접 경험해 보는 건 어떨까요? 유용한 전동드릴을 얻을 수 있을 겁니다.

 

 

. 박찬혁 - 프로덕트 디자이너
편집. 임현경 - UX 라이터
그래픽. 지승연 - BX 디자이너