Stable Diffusion에서 시드는 어떤 역할을 하나요?

작성자 업데이트 2 분 소요

시드는 모든 생성의 출발점인 무작위 노이즈를 초기화하는 정수입니다. 시드, 프롬프트, 모델, 설정, 소프트웨어가 모두 같으면 Stable Diffusion은 같은 이미지를 만들어 냅니다. 시드만 바꾸면 같은 프롬프트로 다른 구도를 얻을 수 있습니다. Automatic1111과 이 사이트에서는 -1로 설정하면 무작위 시드가 선택됩니다.

시드가 중요한 이유

확산 과정은 노이즈에서 시작하며, 모든 이미지는 그 노이즈와 설정값으로부터 결정론적으로 정해집니다. 시드는 그 노이즈를 만드는 레시피입니다. 그래서 시드는 Stable Diffusion을 익히는 데 가장 유용한 도구입니다. 시드를 고정하고, 한 가지만 바꾸고, 비교하세요. 저희 아티스트 스타일 비교가 바로 이 방법으로 만들어졌습니다. 아티스트 1,731명에 고정된 프롬프트 네 개, 프롬프트마다 고정된 시드 하나씩을 쓰고 아티스트 이름만 바꿨기 때문에, 눈에 보이는 차이는 오직 아티스트 이름이 만든 효과입니다.

실전 활용법

  1. 마음에 드는 구도가 나올 때까지 시드를 -1로 두고 생성합니다.
  2. 이미지 정보에서 시드를 확인해(Automatic1111은 PNG 메타데이터와 이미지 아래에 시드를 기록합니다) 시드 입력란에 붙여 넣습니다.
  3. 이제 프롬프트나 네거티브 프롬프트를 단어 하나씩 다듬습니다. 구도는 대체로 유지되고 디테일만 달라집니다.
  4. ancestral 계열이 아닌 샘플러(Euler, DDIM, DPM++ 2M)를 쓰면 스텝 수나 CFG를 바꿔도 같은 시드에서 비슷한 이미지가 나오므로 설정을 공정하게 비교할 수 있습니다. Euler a 같은 ancestral 샘플러는 스텝마다 새 노이즈를 더하기 때문에 이미지가 달라집니다.

이 사이트의 프롬프트 예시에는 거의 모든 이미지에 시드가 함께 적혀 있어, 이미 검증된 결과에서 출발할 수 있습니다.

재현이 안 되는 경우

  • 모델이나 LoRA가 다를 때: 노이즈는 같아도 노이즈를 제거하는 모델이 달라 이미지가 바뀝니다. 약하게 적용한 LoRA라면 조금, 모델이 다르면 완전히 바뀝니다.
  • 이미지 크기가 다를 때: 노이즈 텐서의 형태가 달라지므로 시드가 같아도 전혀 다른 그림이 나옵니다.
  • GPU나 소프트웨어 버전이 다를 때: 미세한 부동소수점 오차로 디테일이 달라질 수 있습니다. GPU 제조사가 다르면 Automatic1111은 난수 생성 소스를 CPU로 설정하지 않는 한 노이즈 자체를 다르게 만들어 냅니다.
  • Automatic1111에는 variation seed, Clip skip, Eta noise seed delta처럼 결과를 바꾸는 추가 설정이 있습니다. 정확히 재현하려면 이 값들도 똑같이 맞추세요.

시드를 중심으로 변형 만들기

Automatic1111에는 variation seed와 variation strength 슬라이더가 있습니다. 0.1~0.3으로 설정하면 포즈와 색감은 같고 조금씩만 다른 닮은꼴 이미지들이 나와 손이나 얼굴이 가장 잘 나온 것을 고르기에 좋습니다. X/Y/Z plot에서 한 축에 시드를, 다른 축에 프롬프트 단어를 두면 비교 그리드를 한 번의 실행으로 만들 수 있습니다.

자주 묻는 질문

시드 숫자가 클수록 좋은가요?

아니요. 시드는 노이즈 패턴에 붙은 이름표일 뿐 품질 설정이 아닙니다. 7이든 4,294,967,295든 차이가 없습니다. 중요한 것은 같은 결과를 다시 얻을 수 있다는 점뿐입니다.

같은 시드를 쓰면 다른 사이트에서도 같은 이미지가 나오나요?

그 사이트가 같은 모델, 크기, 샘플러, 스텝 수, CFG, 소프트웨어를 쓸 때만 가능합니다. Automatic1111을 설치한 두 환경 사이에서는 대개 일치하지만, 서로 다른 서비스 사이에서는 거의 일치하지 않습니다.

이 사이트의 도구에서는 왜 같은 시드인데 다른 이미지가 나오나요?

공개 도구는 모든 요청에 자체 네거티브 프롬프트, 디테일 LoRA, 스텝 수, 샘플러를 적용하고, 인페인팅은 이미지를 1024px에 맞춰 리사이즈합니다. 그래서 로컬 환경에서 얻는 결과와 달라집니다. 사이트 안에서는 같은 요청에 같은 시드를 쓰면 결과가 재현됩니다.