OpenAI는 최근 AI 세계에 '지진'을 일으킨 DALL·E 2 시스템을 출시했습니다. 이 시스템은 텍스트 설명을 기반으로 이미지를 생성할 수 있습니다. 이것은 DALL·E 시스템의 두 번째 버전으로, 첫 번째 버전은 거의 1년 전에 출시되었습니다. 그러나 OpenAI 내에서는 DALL·E 2 뒤에 있는 모델을 unCLIP이라고 하며, 이는 원래 DALL·E보다 OpenAI의 GLIDE 시스템에 더 가깝습니다.
저자에게 있어서 DALL·E 2 시스템의 영향력은 알파고와 비슷합니다. 이 모델은 많은 복잡한 개념을 포착하고 이를 의미 있는 방식으로 결합한 것으로 보입니다. 불과 몇 년 전만 해도 컴퓨터가 그러한 텍스트 설명에서 이미지를 생성할 수 있는지 예측하기가 어려웠습니다. Sam Altman은 자신의 블로그 게시물에서 AI에 대한 우리의 예측이 잘못된 것 같으며 업데이트해야 한다고 언급했습니다. 왜냐하면 AI가 단순히 기계적이고 반복적인 작업이 아닌 창의적인 작업에 영향을 미치기 시작했기 때문입니다.
이 기사의 목적은 DALL·E의 첫 번째 및 두 번째 버전과 기타 모델을 포함하여 OpenAI의 텍스트 기반 이미지 생성 모델의 진화 과정을 독자에게 안내하는 것입니다.
DALL·E 첫 번째 버전은 텍스트 입력 및 선택적 이미지 시작 크기 이미지를 기반으로 256×256을 자동 회귀적으로 생성할 수 있는 GPT-3 스타일 변환기 디코더입니다.
이 아보카도 의자를 본 적이 있을 것입니다.
원래 블로그 게시물에서.
GPT와 같은 변환기의 작동 방식을 이해하려면 Jay Alammar의 멋진 시각적 설명을 참조하세요. https://jalammar.github.io/how-gpt3-works-visualizations-animations/
BPE 토큰으로 인코딩된 텍스트(위쪽) ~ 256), 이미지는 dVAE(Discrete Variational Autoencoders)에 의해 생성된 특수 이미지 토큰(1024개)에 의해 인코딩됩니다. dVAE는 256×256 이미지를 32×32 토큰의 그리드로 인코딩하며, 가능한 값은 8192개입니다. dVAE는 생성된 이미지에서 일부 세부 사항과 고주파 기능을 잃으므로 DALL·E는 생성된 이미지에서 일부 기능을 흐리게 하고 매끄럽게 만드는 기능을 사용합니다.
원본 이미지(위)와 dVAE 재구성(아래) 비교. 원본 종이의 이미지.
여기에 사용된 변환기는 64개의 희소 변환기 블록으로 구성된 12B 크기 매개변수를 가진 대형 모델입니다. 내부에는 1) 고전적인 텍스트 간 주의 마스킹 메커니즘, 2)을 포함하는 복잡한 주의 메커니즘 세트가 있습니다. 이미지 대 텍스트 주의, 3) 이미지 대 이미지 희소 주의. 세 가지 주의 유형이 모두 하나의 주의 작업으로 결합됩니다. 이 모델은 2억 5천만 개의 이미지-텍스트 쌍으로 구성된 데이터세트로 학습되었습니다.
GPT-3과 유사한 변환기 디코더는 일련의 텍스트 토큰과 (선택적으로) 이미지 토큰(여기서는 ID가 42인 단일 이미지 토큰)을 가져와 연속적인 이미지(여기서는 ID 1369 다음 이미지 토큰)를 생성합니다.
훈련된 모델은 제공된 텍스트를 기반으로 여러 샘플(최대 512개)을 생성한 다음 이 모든 샘플을 CLIP이라는 특수 모델로 정렬하고 최상위 순위의 샘플을 모델 결과로 선택합니다.
원본 논문의 몇 가지 이미지 생성 예시입니다.
CLIP은 원래 DALL·E의 결과 순위를 매기는 데 사용되는 별도의 보조 모델이었습니다. 이름은 Contrastive Language-Image Pre-Training의 약어입니다.
CLIP의 아이디어는 간단합니다. 저자는 인터넷에서 이미지-텍스트 쌍 데이터세트(400M 크기)를 가져온 다음 이러한 데이터세트에 대한 비교 모델을 훈련했습니다. 대조 모델은 동일한 쌍의 이미지와 텍스트에 대해 높은 유사성 점수를 생성하고(그래서 유사함) 일치하지 않는 텍스트와 이미지에 대해 낮은 점수를 생성할 수 있습니다(특정 이미지가 현재 훈련 배치의 다른 이미지와 동일하기를 원함). 텍스트 쌍 간에 높은 유사성 결과를 얻을 확률은 매우 낮습니다.
모델은 두 개의 인코더로 구성됩니다. 하나는 텍스트용이고 다른 하나는 이미지용입니다. 인코더는 임베딩(객체의 다차원 벡터 표현, 예: 512바이트 벡터)을 생성합니다. 그런 다음 두 개의 임베딩을 사용하여 내적을 계산하고 유사성 점수를 도출합니다. 임베딩이 정규화되었기 때문에 유사성 점수를 계산하는 이 프로세스는 코사인 유사성을 출력합니다. 코사인 유사성은 같은 방향을 가리키는 벡터(두 벡터 사이의 작은 각도)의 경우 1에 가깝고, 직교 벡터의 경우 0, 반대 벡터의 경우 -1에 가깝습니다.
사전 훈련 과정의 비교 시각화(원본 게시물의 사진)
CLIP은 모델 세트입니다. 9개의 이미지 인코더, 5개의 컨벌루션 인코더, 4개의 트랜스포머 인코더가 있습니다. 컨벌루션 인코더는 ResNet-50, ResNet-101 및 RN50x4, RN50x16, RN50x64라고 하는 EfficientNet 유사 모델입니다(숫자가 높을수록 모델이 더 좋습니다). 변환기 인코더는 시각적 변환기(또는 ViT)입니다: ViT-B/32, ViT-B/16, ViT-L/14 및 ViT-L/14@336. 마지막 것은 336×336 픽셀의 해상도로 이미지를 미세 조정했고, 나머지는 224×224 픽셀로 훈련했습니다.
OpenAI는 프로그램을 단계적으로 출시하여 먼저 ViT-B/32 및 ResNet-50을 출시한 다음 ResNet-101 및 RN50x4를 출시하고 2021년 7월에 RN50x16 및 ViT-B/16을 출시한 다음 RN50x64 및 ViT -L /14를 출시했습니다. 2022년 1월, 그리고 2022년 4월 ViT-L/14@336이 마침내 등장했습니다.
텍스트 인코더는 일반 변환기 인코더이지만 마스크된 주의 메커니즘이 있습니다. 이 인코더는 12개의 레이어로 구성되어 있으며, 각 레이어에는 8개의 주의 헤드가 있으며 총 63M개의 매개변수가 있습니다. 흥미롭게도 주의 범위는 76개 토큰에 불과합니다(GPT-3의 경우 2048개 토큰, 표준 BERT의 경우 512개 토큰과 비교). 따라서 모델의 텍스트 부분은 매우 짧은 텍스트에만 적합하며 모델에 큰 텍스트 블록을 넣을 수 없습니다. DALL·E 2와 CLIP은 거의 동일하므로 제한 사항도 동일해야 합니다.
CLIP이 사전 학습된 후에는 다양한 작업에 사용할 수 있습니다(좋은 기본 모델의 장점 포함).
가장 중요한 점은 독자들이 DALL·E에 정렬된 모델을 사용하여 여러 결과를 점수화하고 가장 좋은 것을 선택할 수 있다는 것입니다. 또는 CLIP 함수를 사용하여 그 위에 사용자 정의 분류기를 학습시킬 수 있지만 아직 성공한 사례는 많지 않습니다.
다음으로 CLIP을 사용하여 여러 클래스에 대해 제로샷 분류를 수행할 수 있습니다(모델이 이러한 클래스를 사용하도록 특별히 훈련되지 않은 경우). 이러한 클래스는 모델을 재교육하지 않고도 조정할 수 있습니다.
간단히 말하면, 필요한 만큼 많은 클래스에 대해 그림의 개체를 설명하는 텍스트 데이터 세트를 만들 수 있습니다. 그런 다음 이러한 설명에 대한 텍스트 임베딩이 생성되어 벡터로 저장됩니다. 분류에 이미지가 사용되는 경우 이미지 인코더를 사용하여 이미지 임베딩이 생성되고 이미지 임베딩과 미리 계산된 모든 텍스트 임베딩 간의 내적이 계산됩니다. 가장 높은 점수를 가진 쌍이 선택되고 해당 클래스가 결과가 됩니다.
CLIP을 이용한 제로샷 분류 프로그램입니다.
제로샷 분류 모델은 모델이 특정 카테고리 세트에 대해 훈련되지 않았음을 의미합니다. 분류기를 처음부터 훈련하거나 사전 훈련된 이미지 모델을 미세 조정하는 대신, 이제 사전 훈련된 CLIP을 사용하여 실시간 엔지니어링을 수행할 수 있는 옵션이 있습니다(GPT 모델 사용과 동일).
많은 사람들은 CLIP을 사용하여 이미지를 생성할 수 있다는 사실을 인식하지 못합니다(미리 설정되어 있지 않더라도). 성공적인 사례로는 CLIPDraw 및 VQGAN-CLIP이 있습니다.
CLIPD 그림 예시. 원본 논문의 사진.
VQGAN-CLIP 및 해당 텍스트 프롬프트 생성 예. 원본 논문의 사진.
과정은 DeepDream과 매우 유사하여 간단하고 아름답습니다. 원하는 이미지에 대한 텍스트 설명과 초기 이미지(무작위 임베딩, 스플라인 또는 픽셀의 장면 설명, 구별 가능한 방식으로 생성된 모든 이미지)로 시작한 다음 이미지를 생성하는 루프를 실행하고 안정성 속성에 대한 몇 가지 향상된 기능을 추가하여 결과 이미지의 CLIP 임베딩을 수행하고 이를 이미지를 설명하는 텍스트의 CLIP 임베딩과 비교합니다. 이 차이를 기반으로 손실을 계산하고 경사 하강 프로그램을 실행하여 이미지를 업데이트하고 손실을 줄입니다. 몇 번의 반복 후에 텍스트 설명과 잘 일치하는 이미지를 얻을 수 있습니다. 초기 장면이 생성되는 방식(스플라인, 픽셀, 렌더링 프리미티브, VQGAN의 기본 코드 등 사용)은 이미지 특성에 큰 영향을 미칠 수 있습니다.
CLIPDraw 생성 프로세스: 임의의 베지어 곡선 세트에서 시작하여 곡선의 위치와 색상은 생성된 그래픽이 주어진 설명 프롬프트와 가장 잘 일치하도록 최적화됩니다. 사진은 원본 용지에서 가져온 것입니다.
VQGAN-CLIP 생성 프로세스. 사진은 원본 용지에서 가져온 것입니다.
CLIP 임베딩은 모든 것을 포착하지 못하며 일부 흥미로운 데모는 그 약점을 보여줍니다. 잘 알려진 예 중 하나는 인쇄상의 공격입니다. 이 공격에서는 이미지의 텍스트로 인해 이미지가 잘못 분류될 수 있습니다.
현재 Google의 ALIGN이나 Huawei의 FILIP 등 CLIP과 유사한 구조를 가진 대체 모델이 있습니다.
GLIDE
GLIDE(Guided Language to Image Diffusion for Generation and Editing)는 OpenAI가 출시한 텍스트 기반 이미지 생성 모델로 현재 DALL·E를 물리쳤지만 비교적 주목을 받지 못했습니다. OpenAI 웹사이트에는 전용 게시물도 없습니다. GLIDE는 256×256 픽셀의 해상도로 이미지를 생성합니다.
FID 점수 측면에서 3.5B 매개변수를 갖는 GLIDE 모델(그러나 1.5B 매개변수를 갖는 별도의 업샘플링 모델이 있기 때문에 정확한 숫자는 5B 매개변수인 것 같음)이 12B 매개변수 DALL·E보다 선호됩니다. 또한 DALL· 이자형.
GLIDE의 샘플. 원본 종이의 이미지.
GLIDE 모델을 미세 조정하여 이미지 인페인팅을 수행할 수도 있으므로 DALL·E 2에서 사용되는 강력한 텍스트 기반 이미지 편집이 가능합니다.
GLIDE의 텍스트 조건부 이미지 복구 예. 녹색 영역은 지워지고 모델은 주어진 메시지에 따라 이 영역을 채웁니다. 모델은 주변 환경의 스타일과 조명과 조화를 이루어 사실적인 마감을 만들어냅니다. 예제는 원본 논문에서 따왔습니다.
GLIDE는 출시되면 "DALL·E 2"로 불릴 수 있습니다. 이제 별도의 DALL·E 2 시스템이 출시되면(실제로 논문에서는 unCLIP이라고 하며 GLIDE 자체를 많이 사용함) GLIDE DALL·E 1.5라고 부를 수 있습니다. :)
GLIDE는 다른 이름과 비슷하지만 확산 모델입니다. 간단히 말해서 확산 모델은 일련의 확산 단계를 통해 입력 데이터에 임의의 노이즈를 추가한 다음 역확산 프로세스를 학습하여 노이즈로부터 이미지를 구성합니다.
노이즈 제거 확산 모델이 이미지를 생성합니다.
아래 이미지는 Google이 확산 모델을 사용하여 이미지를 생성하는 모습을 시각적으로 나타낸 것입니다.
확산 모델과 다른 범주의 생성 모델 비교.
먼저 저자는 텍스트 인코더를 사용하여 자연어 설명을 조건으로 한 3.5B 매개변수 확산 모델을 훈련했습니다. 다음으로 그들은 확산 모델을 텍스트 프롬프트에 부트스트래핑하는 두 가지 기술, 즉 CLIP 부트스트래핑과 분류자 없는 부트스트래핑(후자가 더 나은 결과를 얻었음)을 비교했습니다.
분류기 부트스트래핑을 사용하면 분류기의 라벨에 따라 확산 모델을 조절할 수 있으며, 분류기의 기울기를 사용하여 샘플을 라벨쪽으로 안내합니다.
분류자가 없는 부트스트래핑에는 별도의 분류자 모델을 교육할 필요가 없습니다. 이는 레이블이 있거나 없는 확산 모델의 예측 사이를 보간하는 일종의 부트스트래핑입니다.
저자가 말했듯이 분류 없는 안내에는 두 가지 매력적인 속성이 있습니다. 첫째, 별도의(때로는 더 작은) 분류 모델의 지식에 의존하는 대신 단일 모델이 부트스트랩 프로세스 중에 자체 지식을 활용할 수 있습니다. 둘째, 텍스트와 같이 분류기로 예측하기 어려운 정보에 대한 조건을 지정할 때 지침을 단순화합니다.
CLIP 지침에 따라 분류자는 CLIP 모델로 대체됩니다. 이는 이미지의 내적과 이미지 캡션과 관련하여 인코딩된 그래디언트를 사용합니다.
분류기와 CLIP 부트스트래핑에서는 역확산 중에 올바른 그라데이션을 얻으려면 잡음이 있는 이미지에 대해 CLIP을 훈련해야 합니다. 저자는 잡음을 인식하도록 명시적으로 훈련된 CLIP 모델을 사용했으며, 이러한 모델을 잡음이 있는 CLIP 모델이라고 합니다. 잡음이 있는 이미지에 대해 훈련되지 않은 공개 CLIP 모델은 여전히 확산 모델을 안내하는 데 사용될 수 있지만 잡음이 있는 CLIP 안내는 이 접근 방식에 적합합니다.
텍스트 조건부 확산 모델은 노이즈가 있는 이미지 xₜ와 해당 텍스트 캡션 c를 기반으로 다음 확산 단계의 이미지를 예측하는 향상된 ADM 모델 아키텍처입니다.
시각적인 부분은 수정된 U-Net 아키텍처입니다. U-Net 모델은 여러 개의 잔여 레이어와 다운샘플링 컨볼루션을 사용한 다음, 업샘플링 컨볼루션이 포함된 여러 개의 잔여 레이어를 사용하고, 동일한 공간 크기를 가진 레이어를 연결하기 위해 잔여 연결(연결 건너뛰기)을 사용합니다.
원래 U-Net 아키텍처. 사진은 원본 용지에서 가져온 것입니다.
GLIDE는 너비, 깊이 등의 측면에서 원래 U-Net 아키텍처를 다양하게 수정하여 8×8, 16×16 및 32×32 해상도의 여러 Attention 헤드가 있는 글로벌 Attention 레이어를 추가합니다. 또한 시간 단계 임베딩의 투영이 각 잔차 블록에 추가됩니다.
분류자 부트스트랩 모델의 경우 분류자 아키텍처는 최종 출력을 생성하기 위한 8×8 레이어의 어텐션 풀을 갖춘 U-Net 모델의 다운샘플링된 백본 네트워크입니다.
텍스트는 변환기 모델을 통해 일련의 K 토큰(최대 주의 범위는 아직 알려지지 않음)으로 인코딩됩니다.
transformer의 출력은 두 가지 방법으로 사용될 수 있습니다. 첫째, 최종 토큰 임베딩은 ADM 모델의 클래스 임베딩을 대체하는 데 사용됩니다. 두 번째는 토큰 임베딩의 마지막 레이어(K 기능 벡터 시퀀스)를 프로젝션하는 것입니다. 그러면 각 Attention 레이어의 차원이 각 레이어의 Attention 컨텍스트에 연결됩니다.
텍스트 변환기에는 너비가 2048인 잔여 블록이 24개 있으므로 약 1.2B 매개변수가 생성됩니다. 64×64 해상도에 대해 훈련된 모델의 시각적 부분은 2.3B 매개변수로 구성됩니다. 3.5B 매개변수를 사용하는 텍스트 조건부 확산 모델 외에도 저자는 1.5B 매개변수를 사용하여 또 다른 텍스트 조건부 업샘플링 확산 모델을 훈련하여 해상도를 256×256으로 높였습니다(이 아이디어는 DALL·E에서도 사용됩니다).
업샘플링된 모델은 기본 모델과 동일한 방식으로 텍스트를 조건으로 하지만 2048 대신 1024 너비의 더 작은 텍스트 인코더를 사용합니다. CLIP 안내를 위해 그들은 잡음이 많은 64×64 ViT-L CLIP 모델도 훈련했습니다.
GLIDE는 DALL·E와 동일한 데이터 세트로 훈련되며 총 훈련 계산 노력은 DALL·E를 훈련하는 데 사용된 것과 거의 동일합니다.
GLIDE는 모든 설정에서 최적입니다. 심지어 DALL·E가 더 많은 테스트 시간 계산을 사용하여 GLIDE 샘플 품질을 낮추면서(VAE 흐림을 통해) 우수한 성능을 얻을 수 있도록 하는 설정에서도 최적입니다.
모델은 무조건적인 이미지 생성을 지원하도록 미세 조정되었습니다. 이 학습 프로세스는 텍스트 토큰 시퀀스의 20%가 빈 시퀀스로 대체된다는 점을 제외하면 사전 학습과 정확히 동일합니다. 이러한 방식으로 모델은 조건부 텍스트 출력을 생성하는 기능을 유지하지만 무조건 이미지를 생성할 수도 있습니다.
모델은 수리를 수행할 수 있도록 명시적으로 미세 조정되었습니다. 미세 조정 중에 훈련 예제의 임의 영역이 제거되고 마스크 채널과 함께 나머지 부분이 추가 조건 정보로 모델에 입력됩니다.
GLIDE는 제로 샷 생성과 일련의 복구 편집을 사용하여 복잡한 장면을 반복적으로 생성할 수 있습니다.
먼저 "편안한 거실"이라는 프롬프트 이미지를 생성한 다음 수리 마스크를 사용한 다음 커피 테이블 위에 그림, 커피 테이블, 꽃병이 있는 벽에 텍스트 프롬프트를 추가하고, 마지막으로 벽을 소파 위로 옮깁니다. 예제는 원본 논문에서 따왔습니다.
OpenAI는 2022년 4월 6일 DALL·E 2 시스템을 출시했습니다. DALL·E 2 시스템은 원래 DALL·E에 비해 결과를 크게 향상시킵니다. 원본 DALL·E 및 GLIDE에 비해 4배 더 높은 해상도(현재 최대 1024×1024 픽셀)의 이미지를 생성합니다. DALL·E 2 시스템 뒤에 있는 모델을 unCLIP이라고 합니다.
저자들은 포토리얼리즘 측면에서 인간이 unCLIP보다 GLIDE를 약간 더 선호하지만 그 차이는 매우 작다는 사실을 발견했습니다. 유사한 현실감으로 인해 unCLIP은 다양성 측면에서 GLIDE보다 선호되며 이점 중 하나를 강조합니다. GLIDE 자체는 DALL·E 1보다 인기가 높으므로 DALL·E 2는 이전 제품인 DALL·E 1에 비해 크게 개선되었다는 점을 명심하세요.
"클로드 모네의 스타일로 일출 때 들판에 앉아 있는 여우 그림을 그려주세요"라는 요청에 대해 시스템 생성 사진의 두 가지 버전이 있으며 사진은 원본 기사에서 가져온 것입니다.
DALL·E 2를 사용하면 개념, 속성 및 스타일을 결합할 수 있습니다.
원본 기사의 예.
DALL·E 2는 GLIDE의 기능인 텍스트 안내를 기반으로 이미지 편집도 수행할 수 있습니다. 그림자, 반사, 질감을 고려하면서 요소를 추가하고 제거할 수 있습니다.
원본 종이에서 이미지의 특정 위치에 코기를 추가합니다.
DALL·E 2는 원본 이미지의 변형을 생성하는 데에도 사용할 수 있습니다.
이미지의 변형을 생성합니다. 이미지는 원본 텍스트에서 가져온 것입니다.
DALL·E 2에도 몇 가지 문제가 있습니다. 특히, unCLIP은 속성을 객체에 바인딩하는 데 있어서 GLIDE 모델보다 나쁩니다. 예를 들어, unCLIP은 두 개의 별도 개체(큐브)를 두 개의 별도 속성(색상)에 바인딩해야 하는 프롬프트에 직면하는 데 GLIDE보다 더 어렵습니다.
unCLIP도 일관된 텍스트를 생성하는 데 몇 가지 어려움이 있습니다.
또 다른 문제는 unCLIP이 복잡한 장면에서 디테일을 생성하기 어렵다는 점입니다.
모델 내부에 몇 가지 변경 사항이 있습니다. 아래 이미지는 CLIP과 GLIDE의 조합으로, 모델 자체(전체 텍스트 조건부 이미지 생성 스택)는 CLIP 이미지 인코더를 반전시켜 이미지를 생성하기 때문에 논문 내부에서는 unCLIP이라고 합니다.
모델 작동 방식은 다음과 같습니다. CLIP 모델은 개별적으로 학습됩니다. 그런 다음 CLIP 텍스트 인코더는 입력 텍스트(제목)에 대한 임베딩을 생성합니다. 그런 다음 특별한 이전 모델은 텍스트 임베딩을 기반으로 이미지 임베딩을 생성합니다. 그런 다음 확산 디코더는 이미지 임베딩을 기반으로 이미지를 생성합니다. 디코더는 본질적으로 이미지 임베딩을 다시 이미지로 반전시킵니다.
시스템의 매크로 개요. 일부 세부정보(디코더 텍스트 조건 등)는 표시되지 않습니다. 사진은 원본 용지에서 가져온 것입니다.
CLIP 모델은 ViT-H/16 이미지 인코더를 사용합니다. 이 인코더는 너비 1280의 256×256 해상도 이미지와 32개의 변환기 블록을 사용합니다(원본 CLIP 작업에서 가장 큰 ViT-L보다 깊습니다). 텍스트 인코더는 인과 주의 마스크, 너비 1024 및 24개의 변환기 블록이 있는 변환기입니다(원래 CLIP 모델에는 12개의 변환기 블록이 있음). 텍스트 변환기의 주의 범위가 원래 CLIP 모델(76개 토큰)과 동일한지 여부는 불분명합니다.
확산 디코더는 3.5B 매개변수를 갖춘 수정된 글라이드입니다. CLIP 이미지 임베딩이 투영되어 기존 시간 단계 임베딩에 추가됩니다. CLIP 임베딩은 GLIDE 텍스트 인코더의 출력 시퀀스에 연결된 4개의 추가 컨텍스트 토큰에도 투영됩니다. 원래 GLIDE의 텍스트 조건부 경로는 확산 모델이 CLIP이 캡처하지 못한 자연어의 측면을 학습할 수 있도록 허용하므로 유지됩니다(그러나 별로 도움이 되지 않음). 학습 중에 CLIP 임베딩을 0으로 무작위로 설정하는 데 10%의 시간이 소요되었고, 텍스트 캡션을 무작위로 제거하는 데 50%의 시간이 소요되었습니다.
디코더는 64×64 픽셀 이미지를 생성한 다음 두 개의 업샘플링 확산 모델이 이어서 256×256 및 1024×1024 이미지를 생성합니다. 전자는 700M 매개변수를 사용하고 후자는 300M 매개변수를 사용합니다. 업샘플링의 견고성을 향상시키기 위해 훈련 중에 조건부 이미지가 약간 손상됩니다. 첫 번째 업샘플링 단계에서는 가우시안 블러를 사용하고, 두 번째 단계에서는 JPEG 압축 아티팩트, 카메라 센서 노이즈, 쌍선형 및 쌍삼차 보간, 가우시안 노이즈를 비롯한 보다 다양한 BSR 저하를 사용합니다. 모델은 대상 크기의 1/4 크기인 무작위 이미지로 훈련됩니다. 업샘플링 모델에는 텍스트 조건이 사용되지 않습니다.
선험적으로 텍스트 설명을 기반으로 이미지 임베딩을 생성합니다. 저자는 이전 모델의 두 가지 다른 모델 클래스인 자동 회귀(AR) 사전 및 확산 사전을 탐색합니다. 두 이전 모델 모두 1B 매개변수를 가지고 있습니다.
AR 이전에서는 CLIP 이미지 임베딩이 일련의 개별 코드로 변환되고 캡션을 기반으로 자동 회귀 예측이 이루어집니다. 확산 이전에서 연속 임베딩 벡터는 제목을 조건으로 한 가우스 확산 모델을 사용하여 직접 모델링됩니다.
제목 외에도 이전 모델은 제목의 결정적 기능이므로 CLIP 텍스트 임베딩을 조건으로 할 수도 있습니다. 샘플링 품질을 향상시키기 위해 저자는 훈련 중에 이 텍스트 조건 정보를 10% 무작위로 제거하여 AR 및 확산 사전에 대한 분류자 없는 안내 샘플링을 활성화했습니다.
AR 사전 분석의 경우 주성분 분석(PCA)이 CLIP 이미지 임베딩의 차원을 줄입니다. 1024개의 주요 구성 요소 중 319개가 정보의 99% 이상을 유지했습니다. 각 차원은 1024개의 버킷으로 양자화됩니다. 저자는 텍스트 제목과 CLIP 텍스트 임베딩을 시퀀스의 접두사로 인코딩하여 AR 사전을 조정했습니다. 또한 텍스트 임베딩과 이미지 임베딩 사이의 (양자화된) 내적을 나타내는 토큰을 추가합니다. 더 높은 텍스트-이미지 내적은 이미지를 더 잘 설명하는 캡션에 해당하므로 이를 통해 더 높은 내적에서 모델을 조정할 수 있습니다. 내적은 분포의 위쪽 절반에서 샘플링됩니다. 인과적 주의 마스크가 있는 Transformer 모델을 사용하여 생성된 시퀀스를 예측합니다.
확산 사전의 경우 인과 주의 마스크가 있는 디코더 전용 변환기는 다음으로 구성된 시퀀스에서 훈련됩니다.
Transformer의 출력을 사용하여 노이즈 없는 CLIP 이미지 임베딩을 예측하는 최종 임베딩입니다.
확산을 미리 조정하기 위해 내적을 사용하지 마세요. 대신 샘플링 시간의 품질을 향상시키기 위해 두 개의 이미지 임베딩 샘플을 생성하고 내적 및 텍스트 임베딩이 더 높은 샘플을 선택했습니다.
확산 사전은 비슷한 모델 크기와 훈련 계산 감소 측면에서 AR 사전보다 성능이 뛰어납니다. 또한 확산 사전은 GLIDE와의 쌍별 비교에서 AR 사전보다 더 나은 성능을 보였습니다.
저자는 사전확률의 중요성도 조사했습니다. 그들은 서로 다른 신호로 동일한 디코더를 조정하려고 합니다. 1. 텍스트 캡션 및 제로 CLIP 임베딩, 2. 텍스트 캡션 및 CLIP 텍스트 임베딩(이미지 임베딩인 것처럼), 3. 이전 및 CLIP 이미지 임베딩에 의해 생성된 텍스트. 제목만을 기준으로 디코더를 조정하는 것은 분명히 최악이지만, 샘플을 포함하지 않는 텍스트를 조정하면 원하는 결과를 얻을 수 있습니다.
다른 조정 신호를 사용하여 그림은 원본 텍스트에서 가져온 것입니다.
인코더를 훈련할 때 저자는 CLIP 및 DALL-E 데이터 세트(총 6억 5천만 이미지)에서 동일한 확률로 샘플링했습니다. 디코더, 업샘플러 및 이전 모델을 훈련할 때 생성 스택을 훈련할 때 노이즈가 많은 CLIP 데이터 세트가 병합되어 처음에는 샘플 품질이 평가에서 부정적인 영향을 받았기 때문에 DALL-E 데이터세트(약 2억 5천만 개 이미지)만 사용했습니다.
전체 모델 사이즈는 632M 정도 되는 것 같아요. 매개변수(CLIP ViT-H/16 이미지 인코더) + 340M? (CLIP 텍스트 인코더) + 1B(확산 이전) + 3.5B(확산 디코더) + 1B(두 개의 확산 업샘플러) = ~ ~6.5B 매개변수(제대로 기억한다면). 이 방법을 사용하면 텍스트 설명을 기반으로 이미지를 생성할 수 있습니다. 그러나 다른 흥미로운 응용도 가능합니다.
원본 논문의 예.
각 이미지 x는 디코더가 정확한 재구성을 생성하는 데 충분한 이분 잠재 표현(z_i, x_T)으로 인코딩될 수 있습니다. latent z_i는 CLIP이 인식하는 이미지 양상을 기술한 CLIP 이미지 임베딩입니다. 잠재 x_T는 z_i를 조건으로 하는 동안 x에 디코더를 사용하여 DDIM(Denoising Diffusion Implicit Model) 반전을 적용하여 얻습니다. 즉, 이미지 x(또는 x_0과 동일, GLIDE 섹션의 노이즈 제거 확산 모델 체계 참조)를 생성할 때 확산 프로세스의 시작 노이즈입니다.
이 이진 표현을 사용하면 세 가지 흥미로운 작업이 가능합니다.
먼저 디코더에서 θ > 0인 DDIM으로 샘플링하여 지정된 이진 잠재 표현(z_i, x_T)에 대한 이미지 변형을 생성할 수 있습니다. θ = 0이면 디코더는 결정적이 되어 주어진 이미지 x를 재구성합니다. eta 매개변수가 클수록 변화도 커지며, CLIP 이미지 임베딩에서 어떤 정보가 캡처되어 모든 샘플에 표시되는지 확인할 수 있습니다.
이미지의 변화를 살펴보세요.
두 번째로, 이미지 x1과 x2 사이를 보간할 수 있습니다. 이렇게 하려면 CLIP 이미지 임베딩 z_i1 및 z_i2를 가져온 다음 slerp(구형 선형 보간)를 적용하여 중간 CLIP 이미지 표현을 얻어야 합니다. 해당 중간 DDIM 잠재 x_Ti에는 두 가지 옵션이 있습니다. 1) slerp를 사용하여 x_T1과 x_T2 사이를 보간합니다. 2) DDIM 잠재를 궤도의 모든 보간에 대해 무작위로 샘플링된 값으로 수정합니다(무제한 수의 궤도가 생성될 수 있음). . 두 번째 옵션을 사용하여 다음 이미지가 생성되었습니다.
두 이미지의 보간을 탐색해 보세요.
마지막으로 세 번째는 언어 기반 이미지 조작 또는 텍스트 차이입니다. 새로운 텍스트 설명 y를 반영하도록 이미지를 수정하려면 먼저 z_t를 포함하는 CLIP 텍스트와 현재 이미지를 설명하는 제목(아마도 "사진"과 같은 더미 제목 또는 빈 제목)의 z_t0을 포함하는 CLIP 텍스트를 가져옵니다. 그런 다음 텍스트 차이 벡터 z_d = norm(z_t - z_t0)을 계산합니다. 그런 다음 slerp를 사용하여 z_i를 포함하는 이미지 CLIP과 텍스트 차이 벡터 z_d 사이를 회전하고 궤적 전반에 걸쳐 고정된 기본 DDIM 노이즈 x_T가 있는 이미지를 생성합니다.
원본 텍스트와 텍스트의 차이점을 살펴보세요.
저자는 CLIP의 잠재 공간을 탐구하기 위해 일련의 실험도 진행했습니다. 이전 연구에서는 CLIP이 인쇄 공격에 취약한 것으로 나타났습니다. 이러한 공격에서는 텍스트 조각이 개체 위에 오버레이되어 CLIP이 이미지에 설명된 개체가 아닌 텍스트가 설명하는 개체를 예측하게 합니다(Apple의 "iPod" 배너를 기억하시나요?). 이제 저자는 이러한 이미지의 변형을 생성하려고 시도하고 이미지가 올바르게 분류될 확률은 매우 낮지만 생성된 변형이 높은 확률로 정확하다는 것을 발견했습니다. 이 타이틀의 상대적 예측 확률은 매우 높지만 모델은 iPod 그림을 생성하지 않습니다.
공격 사례 인쇄.
또 다른 흥미로운 실험은 점점 더 많은 주성분으로 이미지를 재구성하는 것입니다. 아래 이미지에서 그들은 소수의 소스 이미지의 CLIP 이미지 임베딩을 가져와서 PCA 크기를 늘려 재구성한 다음 DDIM이 있는 디코더를 사용하여 재구성된 이미지 임베딩을 시각화했습니다. 이를 통해 다양한 차원으로 인코딩된 의미 정보를 볼 수 있습니다.
원본 논문의 주요 구성 요소가 점점 더 많아지고 있습니다.
또한 속성 바인딩, 텍스트 생성 및 복잡한 장면의 세부 사항과 관련하여 unCLIP이 겪는 어려움을 명심하세요.
처음 두 가지 문제는 아마도 CLIP 임베딩 속성 때문일 것입니다.
CLIP 임베딩 자체가 속성을 객체에 명시적으로 바인딩하지 않기 때문에 속성 바인딩 문제가 발생할 수 있으므로 디코더는 이미지 생성 시 속성과 객체를 혼동합니다.
원본 기사에서 어려운 제본 문제를 재구성한 또 다른 세트입니다.
CLIP 임베딩이 렌더링된 텍스트의 철자 정보를 정확하게 인코딩하지 않아 텍스트 생성 문제가 발생할 수 있습니다.
디코더 계층 구조는 64×64의 기본 해상도로 이미지를 생성한 다음 업샘플링하기 때문에 낮은 디테일 문제가 발생할 수 있습니다. 따라서 더 높은 기본 해상도를 사용하면 문제가 사라질 수 있습니다(추가 교육 및 추론 계산 비용).
우리는 OpenAI의 텍스트 기반 이미지 생성 모델의 진화를 보았습니다. 이 분야에 종사하는 다른 회사도 있습니다.
DALL·E 2(또는 unCLIP)는 불과 1년밖에 되지 않은 시스템의 첫 번째 버전인 DALL·E 1에 비해 크게 개선되었습니다. 그러나 여전히 개선의 여지가 많습니다.
안타깝게도 이 강력하고 흥미로운 모델은 오픈 소스가 아닙니다. 저자는 그러한 모델이 더 많이 게시되거나 적어도 API를 통해 제공되기를 원합니다. 그렇지 않으면 이러한 모든 결과는 매우 제한된 대상에게만 적용됩니다.
이러한 모델에는 오류가 있을 수 있고, 때로는 잘못된 유형의 콘텐츠가 생성되거나, 악의적인 에이전트에 의해 사용될 수 있다는 것은 부인할 수 없습니다. 저자는 이러한 문제를 어떻게 다룰 것인지 논의할 필요가 있다고 주장한다. 이러한 모델에는 잠재적으로 좋은 용도가 셀 수 없이 많지만 위의 문제를 해결하지 못하여 이러한 탐구가 방해를 받았습니다.
저자는 DALL·E 2(또는 기타 유사한 모델)가 곧 공개 API를 통해 모든 사람에게 제공되기를 희망합니다.
위 내용은 텍스트로 생성된 이미지는 매우 인기가 높으므로 이러한 기술의 발전을 이해해야 합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!