인공지능으로 만들어내는 사진은 어떤 원리로 작동하는가
사진에 노이즈를 줄 수 있다면, 반대로 노이즈에서 사진을 만들어 낼 수 있다.
랜덤한 픽셀 값들(즉 노이즈)에서 시작해서 점차 그 노이즈를 점진적으로 변형해서 이미지를 만들어내는 것이다.
그게 이미지 복원이라고 착각할 수도 있는데 이미지 복원과는 아예 다른 로직이다
이미지 복원은 뭐냐. 이미지에 존재했던 정보나 패턴을 기반으로 흐릿하거나 손상된 부분을 원본에 가까운 형태로 돌리는 것이고
AI 생성 이미지는 처음부터 아무 정보가 없는 랜덤한 값 즉 노이즈를 시작점으로 점차적으로 의미있는 형태로 만들어 나가는 것.
이미지 복원은 애초에 원본 이미지가 있지만 AI 생성 이미지는 원본 이미지가 없다가 AI가 만들어낸다는 점이 다른 점 되시겠다.
이 AI 이미지 생성 과정에서는 각각의 인공지능 모델들이 각 과정을 담당한다.
랜덤한 노이즈로 초기화하는 것, 입력받은 프롬프트 텍스트를 벡터 공간에 임베딩하는 과정, 고양이 만들어달라고 하면 그 조건에 맞추어 고양이 이미지를 생성하는 것, 생성된 이미지의 품질을 높이기 위해 후처리 하는 과정, 등등등
스테이블 디퓨전 자체가 인공지능인 것은 아니라는 것. 인공지능은 보다 넓은 기술과 시스템을 의미하고, 스테이블 디퓨전은 머신러닝 모델이다. 스테이블 디퓨전은 AI 기술이 적용되어서 이미지를 생성하지만 AI 그 자체인 것은 아니다.
무튼 그래서 과정이 어떻게 되느냐
1. 프롬프트를 입력받고 나면 그 입력된 프롬프트를 토큰화해서 CLIP 모델로 보낸다.
2. 그렇게 보낸 토큰을 텐서(데이터의 다차원, 고차원 배열)로 변환한다. 그 과정이 임베딩이고, 변환해주는 역할을 하는게 Transformer
3. 그 텐서를 잠재 공간(Latent Space)로 보낸다. latent space는 그 텐서가 저장되고 압축된 정보로서 처리되는 공간이며, 고차원의 텐서에서 저차원 벡터로 변환되어 저장된다.
4. Latent space에서 모델이 그 벡터를 해석하여, 이미지가 생성된다.
`테이블 위에 사과 하나`라고 입력 -> [101001010101001010....] -> 이미지 변환.. -> 이미지 생성 완료
대략 이런 식이다.