**스테이블 디퓨전**(Stable Diffusion)은 2022년에 출시된 딥 러닝, 텍스트-이미지 모델이다. 텍스트 설명에 따라 상세한 이미지를 생성하는 데 주로 사용되지만 인페인팅, 아웃페인팅, 이미지 생성과 같은 다른 작업에도 적용할 수 있다.

스테이블 디퓨전은 심층 생성 신경망의 일종인 잠재 확산 모델이다. 코드 및 모델 가중치가 공개되었으며 최소 8GB VRAM이 있는 일반 GPU가 장착된 대부분의 소비자 하드웨어에서 실행할 수 있다. 이는 클라우드 서비스를 통해서만 액세스할 수 있었던 DALL-E 및 Midjourney와 같은 이전의 독점 텍스트-이미지 모델에서 출발했다.

## 개발
스테이블 디퓨전의 개발은 스타트업 회사인 스태빌리티 AI(Stability AI)에서 자금을 지원하고 형성했다. 이 모델의 기술 라이선스는 뮌헨의 루트비히 막시밀리안 대학교의 CompVis 그룹에서 출시되었다. 개발은 런웨이(Runway)의 패트릭 에세르(Patrick Esser)와 CompVis의 로빈 롬바흐(Robin Rombach)가 주도했으며, 이들은 이전에 스테이블 디퓨전에서 사용된 잠재 확산 모델 아키텍처를 발명한 연구자 중 하나였다. 스태빌리티 AI는 또한 EleutherAI와 LAION(스테이블 디퓨전이 훈련된 데이터 세트를 수집한 독일 비영리 단체)을 프로젝트의 후원자로 인정했다.

2022년 10월 스태빌리티 AI는 라이트스피드 벤처 파트너스(Lightspeed Venture Partners)와 코트 매니지먼트(Coatue Management)가 주도한 라운드에서 1억 100만 달러를 모금했다.

## 기술

### 아키텍처
스테이블 디퓨전은 LMU 뮌헨의 CompVis 그룹에서 개발한 LDM(잠재 확산 모델)이라는 일종의 확산 모델(DM)을 사용한다. 2015년에 도입된 확산 모델은 훈련 이미지에서 가우스 잡음의 연속 적용을 제거하는 목적으로 훈련된다. 이는 일련의 노이즈 제거 자동 인코더로 생각할 수 있다. 스테이블 디퓨전은 VAE(Variational Autoencoder), U-Net 및 선택적 텍스트 인코더의 세 부분으로 구성된다. VAE 인코더는 이미지를 픽셀 공간에서 더 작은 차원의 잠재 공간으로 압축하여 이미지의 보다 근본적인 의미를 포착한다. 가우스 노이즈는 순방향 확산 중에 압축된 잠재 표현에 반복적으로 적용된다. ResNet 백본으로 구성된 U-Net 블록은 순방향 확산의 출력을 역방향으로 제거하여 잠재 표현을 얻는다. 마지막으로 VAE 디코더는 표현을 다시 픽셀 공간으로 변환하여 최종 이미지를 생성한다.

잡음 제거 단계는 텍스트 문자열, 이미지 또는 다른 형식에 따라 유연하게 조절될 수 있다. 인코딩된 조건 데이터는 교차 주의 메커니즘을 통해 노이즈 제거 U-Net에 노출된다. 텍스트 조건을 지정하기 위해 사전 훈련된 고정 CLIP ViT-L/14 텍스트 인코더를 사용하여 텍스트 프롬프트를 임베딩 공간으로 변환한다. 연구원들은 LDM의 장점으로 훈련 및 생성을 위한 계산 효율성 향상을 지적한다.

U-Net에 8억 6천만 개의 매개변수가 있고 텍스트 인코더에 1억 2천 3백만 개의 매개변수가 있는 스테이블 디퓨전은 2022년 기준으로 상대적으로 가벼운 것으로 간주되며 다른 확산 모델과 달리 소비자 GPU에서 실행될 수 있다.

23년 7월 26일 stability ai 에서 공식적인 업그레이드 버전 SDXL 을 출시했다. SDXL 이전 SD1.5 가 학습 파라미터가 약 1억개인 반면에 SDXL 은 6.6억개로 6배를 넘는 파라미터로 학습한 모델이다. 기본적인 해상도는 1024 x 1024 를 지원하며 이미지의 디테일과 정확도를 높이기위한 Refiner 모델과 vae도 따로 제공한다.

SDXL은 SD 1.5 와 비교해서 뛰어난 성능을 보여주고, 실제로 세계적으로 많이 사용하는 것은 사실이지만, 속도가 SD 1.5 쓰던 사람들에게는 느리게 느껴질정도다. SDXL 터보도 출시되었으나 여러모로 불안정하다는 평도 있는편, 사용할 모델이나 로라도 아직 적은것이 현실이다.

### 훈련 데이터
스테이블 디퓨전은 웹에서 스크랩한 커먼 크롤(Common Crawl) 데이터에서 파생된 공개적으로 사용 가능한 데이터 세트인 LAION-5B에서 가져온 이미지와 캡션 쌍에 대해 교육되었다. 여기서 50억 개의 이미지-텍스트 쌍은 언어를 기준으로 분류되고 해상도에 따라 별도의 데이터 세트로 필터링되었다. 워터마크를 포함할 것으로 예측된 가능성 및 예측된 "미적" 점수(예: 주관적인 시각적 품질). 이 데이터 세트는 Stability AI로부터 자금을 지원받는 독일 비영리 단체인 LAION에 의해 생성되었다. 스테이블 디퓨전 모델은 LAION-5B의 세 가지 하위 집합인 laion2B-en, laion-high-solution 및 laion-aesthetics v2 5+에서 훈련되었다. 모델 교육 데이터에 대한 제3자 분석에 따르면 사용된 원본 데이터 세트에서 가져온 1,200만 개의 이미지 중 작은 하위 집합 중에서 이미지 샘플 크기의 약 47%가 100개의 서로 다른 도메인에서 나온 것으로 나타났으며 핀터레스트가 8.5%를 차지했다. WordPress, Blogspot, Flickr, DeviantArt 및 위키미디어 공용과 같은 웹사이트가 그 뒤를 따르다. 바이에리셔 룬드펑크(Bayerischer Rundfunk)의 조사에 따르면 허깅 페이스에서 호스팅되는 LAION의 데이터 세트에는 대량의 개인 정보 및 민감한 데이터가 포함되어 있는 것으로 나타났다.

### 훈련 절차
모델은 처음에 laion2B-en 및 laion-high-solution 하위 집합에서 훈련되었으며, 마지막 몇 라운드의 훈련은 LAION-Aesthetics v2 5+에서 수행되었다. 인간은 자신이 자신을 얼마나 좋아하는지 평가하라고 하면 평균적으로 10점 만점에 5점 이상을 줄 것이다. LAION-Aesthetics v2 5+ 하위 집합은 저해상도 이미지와 LAION-5B-WatermarkDetection에서 80% 이상의 확률로 워터마크가 있는 것으로 식별된 이미지도 제외했다. 최종 훈련 라운드에서는 분류자 없는 확산 지침을 개선하기 위해 텍스트 조건 조정의 10%를 추가로 줄였다.

이 모델은 아마존 웹 서비스에서 256개의 Nvidia A100 GPU를 사용하여 총 150,000 GPU 시간 동안 $600,000의 비용으로 훈련되었다.

### 제한사항
안정 확산에는 특정 시나리오에서 성능 저하 및 부정확성 문제가 있다. 모델의 초기 릴리스는 512×512 해상도 이미지로 구성된 데이터 세트에서 훈련되었다. 즉, 사용자 사양이 "예상" 512×512 해상도에서 벗어날 때 생성된 이미지의 품질이 눈에 띄게 저하된다. 나중에 스테이블 디퓨전 모델의 버전 2.0 업데이트에서는 768×768 해상도의 이미지를 기본적으로 생성하는 기능이 도입되었다. 또 다른 과제는 LAION 데이터베이스의 팔다리 데이터 품질이 좋지 않아 인간 팔다리를 생성하는 것이다. 데이터베이스에 대표적인 특징이 부족하여 모델이 사람의 팔다리와 얼굴을 이해하도록 충분히 훈련되지 않았으며 모델이 이러한 유형의 이미지를 생성하도록 유도하면 모델이 혼란스러울 수 있다. 2023년 7월에 출시된 스테이블 디퓨전 XL(SDXL) 버전 1.0은 기본 1024x1024 해상도를 도입하고 팔다리 및 텍스트 생성을 개선했다.

개별 개발자의 접근성도 문제가 될 수 있다. 애니메이션 캐릭터 생성("waifu diffusion")과 같이 데이터 세트에 포함되지 않은 새로운 사용 사례에 맞게 모델을 사용자 정의하려면 새로운 데이터와 추가 교육이 필요하다. 추가 재교육을 통해 생성된 스테이블 디퓨전의 미세 조정된 적응은 의료 영상부터 알고리즘으로 생성된 음악에 이르기까지 다양한 사용 사례에 사용되었다. 그러나 이러한 미세 조정 프로세스는 새 데이터의 품질에 민감한다. 저해상도 이미지 또는 원본 데이터와 다른 해상도는 새로운 작업을 학습하는 데 실패할 뿐만 아니라 모델의 전반적인 성능을 저하시킬 수 있다. 모델이 고품질 이미지에 대해 추가로 훈련을 받더라도 개인이 가전제품에서 모델을 실행하는 것은 어렵다. 예를 들어, waifu-diffusion을 위한 훈련 프로세스에는 최소 30GB의 VRAM이 필요하다. 이는 약 12GB에 불과한 엔비디아의 지포스 30 시리즈와 같은 소비자 GPU에서 제공되는 일반적인 리소스를 초과한다.

스테이블 디퓨전의 제작자는 모델이 주로 영어 설명이 포함된 이미지에 대해 훈련되었기 때문에 알고리즘 편향의 가능성을 인정한다. 결과적으로 생성된 이미지는 사회적 편견을 강화하고 서구적 관점에서 나온 것이다. 제작자는 모델에 다른 커뮤니티 및 문화의 데이터가 부족하다는 점을 지적했다. 이 모델은 다른 언어로 작성된 프롬프트에 비해 영어로 작성된 프롬프트에 대해 더 정확한 결과를 제공하며, 서양 또는 백인 문화가 기본 표현인 경우가 많다.

### 최종 사용자 미세 조정
모델의 초기 훈련의 한계를 해결하기 위해 최종 사용자는 보다 구체적인 사용 사례에 맞게 생성 출력을 미세 조정하기 위한 추가 훈련을 구현하도록 선택할 수 있다. 이 프로세스는 개인화라고도 한다. 사용자가 접근할 수 있는 미세 조정을 스테이블 디퓨전 모델 체크포인트에 적용할 수 있는 세 가지 방법이 있다.

## 기능
스테이블 디퓨전 모델은 출력에 포함되거나 생략될 요소를 설명하는 텍스트 프롬프트를 사용하여 처음부터 새로운 이미지를 생성하는 기능을 지원한다. 확산-노이즈 제거 메커니즘을 통해 텍스트 프롬프트("안내 이미지 합성" 프로세스)에 설명된 새로운 요소를 통합하기 위해 모델에서 기존 이미지를 다시 그릴 수 있다. 또한 이 모델을 사용하면 다양한 오픈 소스 구현이 존재하는 이러한 기능을 지원하는 적절한 사용자 인터페이스와 함께 사용할 때 인페인팅 및 아웃페인팅을 통해 기존 이미지를 부분적으로 변경하는 프롬프트를 사용할 수 있다.

스테이블 디퓨전은 10GB 이상의 VRAM으로 실행하는 것이 좋지만 VRAM이 적은 사용자는 기본 float32 대신 float16 정밀도로 가중치를 로드하여 더 낮은 VRAM 사용량으로 모델 성능을 절충할 수 있다.

### 텍스트를 이미지로 변환
"txt2img"로 알려진 스테이블 디퓨전 내의 텍스트-이미지 샘플링 스크립트는 샘플링 유형, 출력 이미지 크기 및 시드 값을 포함하는 다양한 옵션 매개변수 외에도 텍스트 프롬프트를 사용한다. 스크립트는 프롬프트에 대한 모델의 해석을 기반으로 이미지 파일을 출력한다. 생성된 이미지에는 눈에 보이지 않는 디지털 워터마크가 태그되어 사용자가 스테이블 디퓨전에 의해 생성된 이미지를 식별할 수 있다. 단, 이미지 크기를 조정하거나 회전하면 이 워터마크의 효과가 사라진다.

각 txt2img 생성에는 출력 이미지에 영향을 미치는 특정 시드 값이 포함된다. 사용자는 생성된 다양한 출력을 탐색하기 위해 시드를 무작위로 선택하거나 동일한 시드를 사용하여 이전에 생성된 이미지와 동일한 이미지 출력을 얻을 수 있다. 사용자는 샘플러의 추론 단계 수를 조정할 수도 있다. 값이 높을수록 시간이 오래 걸리며, 값이 작을수록 시각적 결함이 발생할 수 있다. 또 다른 구성 가능한 옵션인 분류자 없는 안내 척도 값을 사용하면 사용자는 출력 이미지가 프롬프트에 얼마나 밀접하게 부합하는지 조정할 수 있다. 보다 실험적인 사용 사례에서는 더 낮은 스케일 값을 선택할 수 있는 반면, 보다 구체적인 출력을 목표로 하는 사용 사례에서는 더 높은 값을 사용할 수 있다.

추가 text2img 기능은 사용자가 텍스트 프롬프트의 특정 부분에 부여된 가중치를 수정할 수 있도록 하는 스테이블 디퓨전의 프런트 엔드 구현을 통해 제공된다. 강조 표시를 사용하면 사용자는 키워드를 대괄호로 묶어 키워드에 강조를 추가하거나 줄일 수 있다. 프롬프트 부분에 가중치를 조정하는 또 다른 방법은 "부정 프롬프트"이다. 부정적인 프롬프트는 스태빌리티 AI의 자체 드림스튜디오 클라우드 서비스를 포함한 일부 프런트 엔드 구현에 포함된 기능으로, 사용자가 이미지 생성 중에 모델이 피해야 하는 프롬프트를 지정할 수 있다. 지정된 프롬프트는 사용자가 제공한 긍정적인 프롬프트 또는 모델이 원래 훈련된 방식으로 인해 이미지 출력 내에 존재할 수 있는 바람직하지 않은 이미지 특징일 수 있으며, 인간 손이 일반적인 예이다.

### 이미지 수정
스테이블 디퓨전에는 텍스트 프롬프트, 기존 이미지 경로, 0.0에서 1.0 사이의 강도 값을 사용하는 또 다른 샘플링 스크립트인 "img2img"도 포함되어 있다. 스크립트는 텍스트 프롬프트 내에 제공된 요소도 포함하는 원본 이미지를 기반으로 새 이미지를 출력한다. 강도 값은 출력 이미지에 추가된 노이즈의 양을 나타낸다. 강도 값이 높을수록 이미지 내에서 더 많은 변형이 생성되지만 제공된 프롬프트와 의미상 일치하지 않는 이미지가 생성될 수 있다.

원본 이미지에 노이즈를 추가하는 img2img 기능은 이미지 데이터의 시각적 특징을 변경하고 익명화하는 데이터 익명화 및 데이터 증대에 잠재적으로 유용하다. 동일한 프로세스가 이미지 해상도를 높이고 잠재적으로 이미지에 더 많은 세부 정보를 추가하는 이미지 업스케일링에도 유용할 수 있다. 또한 이미지 압축을 위한 도구로 스테이블 디퓨전이 실험되었다. JPEG 및 WebP와 비교하여 스테이블 디퓨전에서 이미지 압축에 사용되는 최근 방법은 작은 텍스트와 얼굴을 보존하는 데 한계가 있다.

img2img를 통한 이미지 수정에 대한 추가 사용 사례는 스테이블 디퓨전 모델의 수많은 프런트 엔드 구현을 통해 제공된다. 인페인팅에는 사용자가 제공한 레이어 마스크로 묘사된 기존 이미지의 일부를 선택적으로 수정하는 작업이 포함되며, 이는 제공된 프롬프트에 따라 새로 생성된 콘텐츠로 마스크된 공간을 채운다. 인페인팅(Inpainting) 사용 사례를 위해 특별히 미세 조정된 전용 모델은 스테이블 디퓨전 2.0 출시와 함께 Stability AI에 의해 생성되었다. 반대로, 아웃페인팅은 이미지를 원래 크기 이상으로 확장하여 제공된 프롬프트에 따라 생성된 콘텐츠로 이전의 빈 공간을 채운다.

"length2img"라는 깊이 기반 모델이 2022년 11월 24일 스테이블 디퓨전 2.0 출시와 함께 도입되었다. 이 모델은 제공된 입력 이미지의 깊이를 추론하고 텍스트 프롬프트와 깊이 정보를 기반으로 새로운 출력 이미지를 생성한다. 이를 통해 생성된 출력에서 원본 입력 이미지의 일관성과 깊이가 유지될 수 있다.

### 컨트롤넷
컨트롤넷(ControlNet)은 추가 조건을 통합하여 확산 모델을 관리하도록 설계된 신경망 아키텍처이다. 이는 신경망 블록의 가중치를 "잠긴" 복사본과 "훈련 가능한" 복사본으로 복제한다. "학습 가능한" 복사본은 원하는 조건을 학습하는 반면 "잠긴" 복사본은 원래 모델을 유지한다. 이 접근 방식은 이미지 쌍의 작은 데이터 세트를 사용한 교육이 생산 준비 확산 모델의 무결성을 손상시키지 않도록 보장한다. "제로 컨볼루션"은 가중치와 편향이 모두 0으로 초기화된 1×1 컨볼루션이다. 훈련 전에 모든 제로 컨볼루션은 제로 출력을 생성하여 컨트롤넷으로 인한 왜곡을 방지한다. 어떤 레이어도 처음부터 훈련되지 않는다. 원래 모델을 안전하게 유지하면서 프로세스는 여전히 미세 조정 중이다. 이 방법을 사용하면 소규모 또는 개인용 장치에서도 교육이 가능하다.

## 라이선스
DALL-E와 같은 모델과 달리 스테이블 디퓨전은 모델(사전 훈련된 가중치)과 함께 소스 코드를 사용할 수 있도록 한다. 모델(M)에 RAIL(Responsible AI License)의 일종인 Creative ML OpenRAIL-M 라이선스를 적용한다. 이 라이선스는 범죄, 명예훼손, 희롱, 신상 털기, "미성년자 착취", 의학적 조언 제공, 법적 의무 자동 생성, 법적 증거 생성, "... . 사회적 행동 또는 ... 개인 또는 성격 특성 ... [또는] 법적으로 보호되는 특성 또는 범주"에 속한다. 사용자는 생성된 출력 이미지에 대한 권리를 보유하며 상업적으로 자유롭게 사용할 수 있다.