차량·동물 13종만 배운 작은 디퓨전 모델을 바닥부터 — 진짜 숫자로 따라가기
그림 그리는 AI(Stable Diffusion)는 사실 지우개의 달인이에요. 먼저 깨끗한 사진에 노이즈(모래폭풍 같은 점)를 조금씩 더해서 완전히 뭉개버립니다. 그리고 그걸 거꾸로 한 단계씩 지워서 원래 그림으로 되돌리는 법을 연습하죠.
이 페이지에서는 차량·동물 13종만 배운 작은 모델을 바닥부터 만들어, 노이즈에서 그림이 태어나는 과정을 진짜 숫자와 함께 따라가 봅니다.
큰 사진 전체 대신, 물체가 들어있는 네모(bounding box)만 잘라 가운데 오게 했어요. 작은 그림이라도 대상이 선명해야 모델이 잘 배웁니다.
10400장COCO 사진에서 객체만 잘라냄13종동물 10 + 차량 3, 이것만 잘 그림64×64×3작게 줄여 빨리 학습
한 장의 진짜 얼룩말 사진에 노이즈를 점점 더해봤어요. 단계 t가 커질수록
원본은 사라지고 모래폭풍만 남습니다. 이건 학습이 아니라 정해진 공식이에요.
1000노이즈를 더하는 칸 수cosine단계마다 얼마나 더할지 정하는 곡선1.0거의 100% 원본0.4923절반쯤 뭉개짐2e-09사실상 0% — 완전 노이즈
x_t = √ᾱ·원본 + √(1-ᾱ)·노이즈 —
ᾱ(남은 원본 비율)만 알면 어느 단계든 한 번에 노이즈를 섞을 수 있어요.모델이 하는 일은 딱 하나예요: "이 뭉개진 그림에 더해진 노이즈가 뭐였을까?"를 맞히기. 노이즈를 맞히면 그걸 빼서 한 단계 더 깨끗하게 만들 수 있죠. 이 일을 1000번 반복합니다.
모델 구조는 UNet — 그림을 점점 작게 줄였다가(요약) 다시 키우며(복원) 세부를 채우고, 멀리 떨어진 픽셀끼리도 정보를 주고받는 어텐션을 넣었어요.
37.1M노이즈를 예측하는 신경망 크기노이즈 섞인 그림 + 단계 t지금 얼마나 뭉개졌는지 알려줌더해진 노이즈 추정이걸 빼면 한 단계 깨끗해짐학습은 단순해요. 그림에 무작위 단계 t의 노이즈를 섞고, 모델에게 맞혀보라 한 뒤,
틀린 만큼(예측 노이즈와 진짜 노이즈의 차이) 혼내줍니다. 이걸 수만 번 반복하면
노이즈를 점점 잘 맞히게 돼요.
16,200배치를 본 횟수0.1107노이즈 예측이 서툴 때0.0584노이즈를 잘 맞히게 됨이제 진짜 마법! 아무 노이즈에서 시작해, 모델이 "여기 섞인 노이즈는 이거야"라고 조금씩 알려주면 그만큼 지웁니다. 1000번 지우고 나면 노이즈가 그림으로 변해요.
무엇을 그릴지 정해주지 않은 무조건부 생성이라, 배운 13종 중 아무거나 닮은 게 나와요. 조금 흐릿하지만 동물·차량 같은 형태와 색이 보입니다.
지금은 "아무거나" 그렸지만, 다음 페이지에서는 "고양이를 그려줘"처럼 원하는 종류를 골라 그리게 만들고(조건부 생성 + CFG), 마지막엔 진짜 Stable Diffusion처럼 작은 잠재공간에서 더 빠르게 그리는 법 (잠재공간 디퓨전)을 배웁니다.
바닥부터 직접 구현 · 모든 숫자는 실제 실행 결과