인터넷에서 인기를 끌었던 그래픽 트랜스포머를 아직도 기억하시나요?
최근 이 대형 블로거 Jay Alammar는 자신의 블로그에 인기 있는 Stable Diffusion 모델에 대한 일러스트레이션을 작성하여 이미지 생성 모델의 원리를 처음부터 철저하게 이해할 수 있도록 매우 상세한 정보 비디오 설명을 제공합니다!
글 링크: https://jalammar.github.io/illustrated-stable-diffusion/
영상 링크: https://www.youtube.com/watch?v= MXmacOUJUaw
최근 AI 모델이 보여준 이미지 생성 능력은 사람들의 기대를 훨씬 뛰어넘습니다. 텍스트 설명을 바탕으로 직접 놀라운 시각 효과를 지닌 이미지를 생성할 수 있습니다. 신비롭고 마술적이지만 인간이 예술을 창조하는 방식에 영향을 미쳤습니다.
Stable Diffusion의 출시는 AI 이미지 생성 개발의 이정표입니다. 이는 생성된 이미지 품질이 매우 높을 뿐만 아니라 빠르게 실행될 수 있는 고성능 모델을 대중에게 제공하는 것과 같습니다. 리소스와 메모리도 있습니다. 요구 사항도 낮습니다.
AI 이미지 생성을 시도해 본 사람이라면 누구나 그것이 어떻게 작동하는지 알고 싶어할 것이라고 믿습니다. 이 기사에서는 Stable Diffusion이 어떻게 작동하는지에 대한 미스터리를 밝힐 것입니다.
기능적으로 말하면 Stable Diffusion에는 주로 두 가지 측면이 포함됩니다. 1) 핵심 기능은 입력으로 텍스트 프롬프트만을 기반으로 이미지를 생성하는 것입니다(text2img). 2) 텍스트를 기반으로 이미지를 설명하는 데 사용할 수도 있습니다. 수정합니다(예: 텍스트+이미지로 입력).
아래 그림을 사용하여 Stable Diffusion의 구성 요소, 서로 상호 작용하는 방식, 이미지 생성 옵션 및 매개 변수의 의미를 설명합니다.
Stable Diffusion은 단일 모델이 아닌 여러 구성 요소와 모델로 구성된 시스템입니다.
모델 전체의 관점에서 모델 내부를 살펴보면 텍스트 정보를 숫자 표현으로 변환하여 텍스트의 의미 정보를 캡처하는 텍스트 이해 구성 요소가 포함되어 있음을 알 수 있습니다.
모델은 여전히 거시적 관점에서 분석되고 있으며 나중에 더 많은 모델 세부 정보가 나올 것이지만 이 텍스트 인코더는 특수 Transformer 언어 모델(특히 CLIP 모델) 텍스트라고 대략적으로 추측할 수도 있습니다. 인코더).
모델의 입력은 텍스트 문자열이고, 출력은 텍스트의 각 단어/토큰을 나타내는 데 사용되는 숫자 목록입니다. 즉, 각 토큰이 벡터로 변환됩니다.
그런 다음 이 정보는 내부적으로 여러 구성 요소를 포함하는 이미지 생성기(이미지 생성기)에 제출됩니다.
이미지 생성기는 크게 두 단계로 구성됩니다.
1 이미지 정보 생성기
이 구성 요소는 Stable Diffusion의 독점 비법입니다. 여기에서 많은 성능 향상이 모두 달성됩니다.
이 구성 요소는 여러 단계를 실행하여 이미지 정보를 생성합니다. 여기서 단계는 Stable Diffusion 인터페이스 및 라이브러리의 매개변수이기도 하며 일반적으로 기본값은 50 또는 100입니다.
이미지 정보 생성기는 전적으로 이미지 정보 공간(또는 잠재 공간)에서 작동합니다. 이 기능은 기술적으로 픽셀 공간에서 작동하는 다른 확산 모델보다 빠르게 실행되도록 하며, 이 구성 요소는 UNet 신경으로 구성됩니다. 네트워크 및 스케줄링 알고리즘.
확산이라는 단어는 이 구성 요소의 내부 작동 중에 발생하는 현상을 설명합니다. 즉, 정보가 단계별로 처리되고 최종적으로 다음 구성 요소(이미지 디코더)에서 고품질 이미지가 생성됩니다.
2. 이미지 디코더
이미지 디코더는 이미지 정보 생성자로부터 얻은 정보를 기반으로 그림을 그립니다. 전체 프로세스는 최종 픽셀 이미지를 생성하기 위해 한 번만 실행됩니다.
보시다시피 Stable Diffusion에는 총 세 가지 주요 구성 요소가 포함되어 있으며 각 구성 요소에는 독립적인 신경망이 있습니다.
1) Clip Text는 텍스트 인코딩에 사용됩니다.
입력: 텍스트
출력: 77개의 토큰 임베딩 벡터, 각 벡터에는 768개의 차원이 포함됨
2)UNet + Scheduler정보(잠재) 공간에서 단계별 정보 처리/확산 .
입력: 텍스트 임베딩 및 노이즈로 구성된 초기 다차원 배열(구조화된 숫자 목록, 텐서라고도 함).
출력: 처리된 정보 배열
3) Autoencoder Decoder(Autoencoder Decoder) , 처리된 정보 행렬을 사용하여 최종 이미지를 그리는 디코더입니다.
입력: 처리된 정보 행렬, 차원은 (4, 64, 64)
출력: 결과 이미지, 각 차원은 (3, 512, 512), 즉 (빨간색/녹색/파란색, 너비, 높음)
확산은 아래 그림의 핑크색 이미지 정보 생성기 구성요소에서 발생하는 프로세스입니다. 이 프로세스에는 입력 텍스트를 나타내는 토큰 임베딩과 무작위 초기 이미지 정보 매트릭스(잠재성이라고도 함)도 포함됩니다. 최종 이미지의 정보 매트릭스를 그리려면 이미지 디코더가 필요합니다.
전체 작업 과정은 단계별로 이루어지며, 각 단계마다 관련 정보가 추가됩니다.
전체 과정을 보다 직관적으로 느끼기 위해 랜덤 잠재 행렬을 반쯤 보고 이것이 어떻게 시각적 노이즈로 변환되는지 관찰할 수 있으며, 여기서 이미지 디코더를 통해 시각적 검사가 수행됩니다.
전체 확산 과정에는 여러 단계가 포함되어 있습니다. 각 단계는 입력 잠재 행렬을 기반으로 작동하고 "입력 텍스트"와 "시각적 정보" 모델의 이미지에 더 잘 맞도록 또 다른 잠재 행렬을 생성합니다. 집중적으로.
잠재성을 시각화하여 각 단계에서 이 정보가 어떻게 합산되는지 확인하세요.
전체 과정이 처음부터 시작되어 매우 흥미로워 보입니다.
2단계와 4단계 사이의 프로세스 전환은 마치 노이즈에서 그림의 윤곽이 드러나는 것처럼 특히 흥미로워 보입니다.
확산 모델을 사용하여 이미지를 생성하는 핵심 아이디어는 여전히 기존의 강력한 컴퓨터 비전 모델을 기반으로 하며 충분히 큰 데이터 세트가 입력되는 한 이러한 모델은 임의로 복잡한 작업을 학습할 수 있습니다.
이미 이미지가 있고 약간의 노이즈를 생성하여 이미지에 추가하면 이미지가 훈련 예제로 간주될 수 있다고 가정합니다.
동일한 작업을 사용하면 많은 수의 훈련 샘플을 생성하여 이미지 생성 모델의 핵심 구성 요소를 훈련할 수 있습니다.
위의 예는 원본 이미지(레벨 0, 노이즈 없음)부터 완전히 추가된 노이즈(레벨 4)까지 몇 가지 선택적 노이즈 레벨을 보여줍니다. 영상.
따라서 이 프로세스를 수십 단계에 걸쳐 확산하고 데이터 세트의 각 이미지에 대해 수십 개의 훈련 샘플을 생성할 수 있습니다.
위의 데이터 세트를 기반으로 각 훈련 단계는 다른 모델의 훈련과 유사하며 우수한 성능을 발휘하는 소음 예측기를 훈련할 수 있습니다. 특정 구성에서 실행되면 노이즈 예측기가 이미지를 생성할 수 있습니다.
훈련된 노이즈 예측기는 추가된 노이즈가 포함된 이미지의 노이즈를 제거할 수 있으며 추가된 노이즈의 양도 예측할 수 있습니다.
샘플링의 노이즈는 예측 가능하므로 이미지에서 노이즈를 빼면 최종 이미지는 모델 훈련을 통해 얻은 이미지에 더 가까워집니다.
얻은 이미지는 정확한 원본 이미지가 아니라 분포, 즉 세상의 픽셀 배열입니다. 예를 들어 하늘은 보통 파란색이고, 사람은 눈이 두 개 있고, 고양이는 가리킵니다. 귀 등 생성된 특정 이미지 스타일은 전적으로 훈련 데이터 세트에 따라 달라집니다.
Stable Diffusion은 노이즈 제거를 통해 이미지 생성을 수행할 뿐만 아니라 DALL-E 2 및 Google의 Imagen 모델도 수행합니다.
지금까지 설명한 확산 프로세스에서는 이미지를 생성하기 위해 텍스트 데이터를 사용하지 않는다는 점에 유의하는 것이 중요합니다. 따라서 이 모델을 배포하면 멋진 이미지를 생성할 수 있지만 사용자는 생성되는 이미지를 제어할 수 없습니다.
다음 섹션에서는 모델에서 생성된 이미지 유형을 제어하기 위해 조건부 텍스트를 프로세스에 통합하는 방법을 설명합니다.
이미지 생성 프로세스의 속도를 높이기 위해 Stable Diffusion은 픽셀 이미지 자체에서 확산 프로세스를 실행하도록 선택하지 않고 이미지의 압축된 버전에서 실행하도록 선택합니다. 논문에서도 "잠재공간으로의 출발"이라고 합니다.
후속 이미지 압축 해제 및 드로잉을 포함한 전체 압축 프로세스는 오토인코더를 통해 완료됩니다. 오토인코더는 이미지를 잠재 공간으로 압축한 후 디코더만 사용하여 압축된 정보를 사용하여 이미지를 재구성합니다.
잠재물을 압축하면 노이즈 슬라이스가 픽셀 이미지가 아닌 잠재물의 노이즈에 적용되므로 노이즈 예측기가 실제로 압축된 표현에서 노이즈를 예측하는 데 사용됩니다. (잠재 공간).
순방향 프로세스, 즉 자동 인코더의 인코더를 사용하여 잡음 예측기를 훈련하는 것입니다. 훈련이 완료되면 역 프로세스(오토인코더의 디코더)를 실행하여 이미지를 생성할 수 있습니다.
아래에는 순방향 및 역방향 프로세스가 표시되어 있습니다. 그림에는 모델이 생성해야 하는 이미지의 텍스트 프롬프트를 설명하는 조건 구성 요소도 포함되어 있습니다.
모델의 언어 이해 구성 요소는 입력 텍스트 프롬프트를 토큰 포함 벡터로 변환할 수 있는 Transformer 언어 모델을 사용합니다. 공개된 Stable Diffusion 모델은 ClipText(GPT 기반 모델)를 사용합니다. 본 기사에서는 편의상 BERT 모델을 선택했습니다.
Imagen 논문의 실험에서는 더 큰 언어 모델이 더 큰 이미지 생성 구성 요소를 선택하는 것보다 더 많은 이미지 품질 개선을 가져올 수 있음을 보여줍니다.
초기 Stable Diffusion 모델은 OpenAI에서 출시된 사전 훈련된 ClipText 모델을 사용했지만 Stable Diffusion V2에서는 새로 출시된 더 큰 CLIP 모델 변형 OpenClip으로 전환했습니다.
CLIP 어떻게 훈련하셨나요? ?
CLIP에는 이미지와 캡션이 필요하며 데이터 세트에는 약 4억 개의 이미지와 설명이 포함되어 있습니다.
데이터 세트는 인터넷에서 스크랩한 이미지와 해당 "alt" 태그 텍스트를 통해 수집됩니다.
CLIP은 이미지 인코더와 텍스트 인코더의 조합으로, 이미지와 텍스트 설명을 취하고 두 개의 인코더를 사용하여 데이터를 별도로 인코딩하는 방식으로 학습 프로세스를 단순화할 수 있습니다.
그런 다음 코사인 거리를 사용하여 결과 임베딩을 비교합니다. 처음 훈련을 시작할 때 텍스트 설명이 이미지와 일치하더라도 둘 사이의 유사성은 확실히 매우 낮습니다.
모델이 지속적으로 업데이트됨에 따라 후속 단계에서 이미지와 텍스트를 인코딩하는 인코더에서 얻은 임베딩은 점차 유사해집니다.
이 과정을 전체 데이터 세트에 반복하고 배치 크기가 큰 인코더를 사용하여 마침내 강아지 이미지와 "picture of"라는 문장이 유사성이 있는 임베딩 벡터를 생성할 수 있습니다. 개".
word2vec에서와 마찬가지로 학습 프로세스에는 일치하지 않는 이미지와 캡션의 부정적인 샘플도 포함되어야 하며 모델은 여기에 더 낮은 유사성 점수를 할당해야 합니다.
이미지 생성 프로세스의 일부로 텍스트 조건을 통합하려면 노이즈 예측기의 입력을 텍스트로 조정해야 합니다.
인코딩된 텍스트, 입력 이미지 및 예측 노이즈를 포함한 모든 작업은 잠재 공간에서 이루어집니다.
Unet에서 텍스트 토큰이 어떻게 사용되는지 더 잘 이해하려면 먼저 Unet 모델을 이해해야 합니다.
Layers in Unet 노이즈 예측기(텍스트 없음)
텍스트를 사용하지 않는 확산 Unet의 입력 및 출력은 다음과 같습니다.
모델 내부에는
1. Unet 모델의 레이어는 주로 잠재성을 변환하는 데 사용됩니다.
2. 각 레이어는 이전 레이어의 출력에서 작동합니다(Residual을 통해). 연결) 이를 네트워크 뒤의 처리에 공급합니다.
4. 시간 단계를 레이어에서 사용할 수 있는 시간 단계 임베딩 벡터로 변환합니다.
Layers in Unet Noise Predictor(텍스트 포함)
이제 이전 시스템을 텍스트 버전으로 수정해야 합니다.
주요 수정 부분은 텍스트 입력(용어: 텍스트 조건화) 지원을 추가하는 것, 즉 ResNet 블록 사이에 Attention 레이어를 추가하는 것입니다.
ResNet 블록은 텍스트 내용을 직접 보는 것이 아니라 Attention 레이어를 통해 잠재성 있는 텍스트 표현을 병합하고 다음 ResNet은 이 프로세스 텍스트 메시지를 활용할 수 있다는 점에 유의해야 합니다. .
위 내용은 Jay Alammar가 또 다른 신작을 발표합니다. Stable Diffusion의 초고화질 일러스트레이션을 읽고 나면 "이미지 생성"의 원리를 완전히 이해하게 될 것입니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!