[AINFT 제작기] #1 AI BAYC
이번 글에서는 BAYC NFT를 이용해서 AI BAYC를 만들어보는 과정을 한 번 살펴보겠습니다. BAYC에 대해 궁금하신 분들은 BAYC 유튜브 영상을 통해 시청하셔서 BAYC에 대한 정보를 얻어보세요! 이번 글에서는 AI BAYC를 만들기 위해 Neural Style Transfer 모델이 사용되는데, 이것이 어떤 모델인지 알아보겠습니다.
Neural Style Transfer
내가 찍은 사진에 반 고흐의 “별이 빛나는 밤에”의 작품 스타일을 입힐 수 있을까요? 현실에서 고흐를 만날 수도 없기 때문에 현실성이 없는 이야기처럼 들릴 수 있겠지만, Neural Style Transfer를 이용하면 가능합니다.
Neural Style Transfer는 Neural Network를 이용하여 이미지의 스타일을 변환시켜주는 모델로 Image Style Transfer Using Convolutional Neural Networks 논문을 통해 공개되었습니다. 논문 제목에서 볼 수 있듯이 CNN(Convolution Neural Network)를 이용하는데, 여러 CNN 모델 중에서도 ImageNet 데이터셋으로 사전 학습된 VGG-19 모델을 이용합니다.
스타일 변환을 하기 위해서는 먼저 스타일을 변화할 컨텐츠 이미지(Content Image)와 스타일이 되는 스타일 이미지(Style Image)가 필요합니다. 두 이미지를 이용하여 모델을 학습하고, 스타일이 변환된 이미지를 모델의 출력으로 얻을 수 있습니다. 그렇다면 모델을 어떻게 학습하는지 방법을 살펴보겠습니다.
이미지 스타일이란 무엇일까요?
Neural Style Transfer의 학습 방법을 알기 위해 먼저 해결해야될 질문이 있습니다. 바로 이미지 스타일이란 무엇일까요? Neural Style Transfer에서는 CNN모델의 피쳐맵(Feature Map)을 이용하여 이미지의 스타일을 얻습니다. 피쳐맵이란 컨볼루션 레이어의 출력을 뜻하는 용어입니다. 피쳐맵은 이미지에 대해 컨볼루션 연산을 거친 결과이기 때문에 피쳐맵은 이미지의 특징을 나타낸다고 할 수 있습니다. 이렇게 피쳐맵을 통해 이미지의 특징을 얻는 작업을 특징 추출(Feature Extraction)이라고 합니다.
아래 사진은 고양이 이미지를 입력으로 넣었을 때의 컨볼루션 레이어의 피쳐맵들을 나타낸 것입니다. 얕은 층의 피쳐맵은 이미지의 전체적인 특징을 나타내고, 깊은 층의 피쳐맵은 이미지의 지역적인 특징을 나타냅니다.
따라서 스타일 이미지에 대해서 특징 추출을 수행하면 스타일 이미지의 특징을 얻을 수 있고, 이것을 이미지의 스타일로 이용합니다.
커스텀 손실 함수(Custom Loss Funtion)
앞서 특징 추출과 이미지의 스타일에 대해서 살펴보았는데요, 그렇다면 VGG-19모델을 이용했을 때, 어떤 레이어의 출력을 이용할까요? 글의 초반에 있는 VGG-19의 모델 구조를 보면 컨볼루션 레이어가 conv1_1 부터 conv5_4까지 있습니다. 이 중 컨텐츠 이미지의 특징으로는 conv4_2 레이어의 피쳐맵을 이용하고, 스타일 이미지의 특징으로는 conv1_1, conv2_1, conv3_1, conv4_1, conv5_1 레이어의 피쳐맵을 가중합한 값을 이용합니다.
Neural Style Transfer는 컨텐츠 이미지와 스타일 이미지를 이용하여 학습에 사용할 새로운 Loss함수를 정의합니다. 따라서 모델 학습이 완료가 되면 컨텐츠 이미지를 입력으로 주었을 때 스타일이 변환된 이미지를 출력으로 얻을 수 있습니다.
AI BAYC를 만들어 봅시다.
그럼 Ainize에 배포된 Neural Style Transfer를 이용하여 AI BAYC를 직접 제작해보겠습니다. 링크를 클릭하면 데모 웹페이지에 접속할 수 있고, 웹페이지 하단 부분에서 스타일 변환 작업을 할 수 있습니다. 스타일 변환을 하기 위해서는 컨텐츠 이미지와 스타일 이미지가 필요한데, Original Image에는 컨텐츠 이미지, Style image에는 스타일 이미지를 업로드 할 수 있습니다.
이번 실습에서는 컨텐츠 이미지로 BAYC 캐릭터 이미지, 스타일 이미지로 키스해링의 “날아오르는 천사”작품을 선택하였습니다. 그리고 결과물의 퀄리티는 최대로 설정하였습니다. 높은 퀄리티를 선택할 수록 모델의 학습 시간이 더 늘어나 더 완성도 있는 이미지를 얻을 수 있습니다. 최대 퀄리티를 선택할 경우 대략 2분정도의 작업 시간이 걸립니다.
작업이 완료되면 아래와 같이 스타일이 변환된 컨텐츠 이미지를 출력으로 볼 수 있습니다. 결과 이미지를 살펴보면 BAYC 캐릭터 이미지에 굵은 선을 이용하는 키스해링의 스타일이 잘 반영된 것을 볼 수 있습니다.
Conclusion
지금까지 Neural Style Transfer를 이용하여 AI BAYC를 제작하는 방법을 살펴보았습니다. 스타일 이미지로 어떤 이미지를 업로드하는지에 따라 BAYC 캐릭터의 스타일이 크게 달라질 수 있습니다. 이를 통해 나만의 스타일을 가진 AI BAYC를 생성할 수 있습니다. 다음주에는 Doodles NFT를 이용하여 AI Doodles를 제작하는 과정을 살펴볼 예정입니다. 어떤 AI Doodles가 나올지 궁금하지 않으신가요? 다음 주제도 기대해주세요!
Reference
AI 네트워크는 블록체인 기반 플랫폼으로 인공지능 개발 환경의 혁신을 목표로 하고 있습니다. 수백만 개의 오픈 소스 프로젝트가 라이브로 구현되는 글로벌 백엔드 인프라를 표방합니다.
최신 소식이 궁금하시다면 아래 커뮤니케이션 채널을 참고해주시기 바랍니다. 다시 한 번 감사합니다.
AI네트워크 공식 홈페이지: https://ainetwork.ai/
공식 텔레그램: telegram.com/ainetwork_kr
아이나이즈(Ainize): https://ainize.ai
유튜브: https://www.youtube.com/channel/UCnyBeZ5iEdlKrAcfNbZ-wog
페이스북: https://www.facebook.com/ainetworkofficial/
포럼: https://forum.ainetwork.ai/
AIN Price chart: https://coinmarketcap.com/currencies/ai-network/onchain-analysis/