AI 이미지/AUTOMATIC1111

FreeU: 더 멋진 이미지

하늘이푸른오늘 2023. 12. 18. 17:28

FreeU는 잡음 제거기를 수정하여 이미지 품질을 향상시키는 스테이블 디퓨전용 애드온(Addon)입니다. 이글에서는 FreeU의 작동 원리과 AUTOMATIC1111 및 ComfyUI 에서 적용하는 방식을 알아보겠습니다.

이 글의 목차는 아래와 같습니다.

FreeU 란?

FreeU란 스테이블 디퓨전의 U-Net 잡음 제거기를 수정하여, 이미지 생성 프로세스를 향상시키는 기법으로, Chenyang Si 등이 저술한 FreeU: Free Lunchj in Diffusion U-Net에서 기술되어 있습니다.

Chenyang 은 이 논문에서, 잡음제거기의 효과를 아래와 같이 두가지로 분류할 수 있다고 하였습니다.

  • 이미지의 백본(backbone)을 통하여 레이어별 전체적인 구성을 제어하는 신호전파(signal propagation)
  • 스킵 연결(skip connection)을 통하여 이미지에 미세한 디테일을 추가하는 신호전파

FreeU 기법은 U-Net에 있는 연결을 수정한다(출처: 논문)

계수 b를 높여서 신호를 향상시키면, 이미지 품질이 향상되지만, 이미지가 지나치게 부드러워질 수 있습니다. 따라서 스킵 연결의 신호 전파를 제어하기 위해 축척 계수 s를 도입하였습니다. 이는 (푸리에 공간에서) 스킵 연결의 저주파 기여도를 억제함으로써, 이미지 전반의 구성에 대한 영상을 축소시킵니다.

FreeU의 기본 매개변수는 백본 기능을 향상시키고(s>1) 스킵 연결 기능의 저주파 요소 건너뛰기를 억제합니다(b <1).

FreeU의 효과

FreeU를 사용하면 이미지의 일관성이 높아지게 됩니다. 애니용 모델의 경우, 이미지 선명도와 콘트라스트가 약간 높아지는 경향이 있습니다.(RevAnimated 모델)

FreeU 없을 경우 FreeU를 적용한 경우
FreeU 없을 경우 FreeU를 적용한 경우

사실적인 모델의 경우, 채도가 높은 이미지를 생성하는 경향이 있습니다.(RealisticVision 모델)

FreeU 없을 경우 FreeU를 적용한 경우

SDXL 모델에 FreeU를 사용할 경우에도 약간 채도가 높은 이미지가 생성됩니다.(JaggernautXL 모델)

FreeU 없을 경우 FreeU를 적용한 경우

위의 이미지들은 ComfyUI  워크플로로 생성한 이미지입니다. 아래의 파일을 사용하면 워크플로를 불러올 수 있습니다.

freeU_compare_SD1.5.json
0.02MB
freeU_compare_SDXL.json
0.02MB

AUTOMATIC1111에서 FreeU 사용하기

AUTOMATIC1111 은 스테이블 디퓨전을 사용하기 위한 가장 대중적은 무료 소프트웨어입니다. 원래 맥이나 구글 Colab에도 설치할 수 있지만, 제 블로그에서는 Windows에 설치하는 방법만 다룹니다. 스테이블 디퓨전에 대해 잘 모르시면 초보자 가이드를 참고하시고, 스테이블 디퓨전 기본이론을 알아두시면 이 글을 이해하시는데 도움이 되실겁니다.

FreeU 확장 설치

Automatic1111에서는 FreeU extension을 설치하여야만 사용할 수 있습니다. 설치하는 방법은 다음과 같습니다.

1. AUTOMATIC1111 을 시작하고 Extension 탭을 눌러 들어갑니다.

2. [Install from URL] 탭을 클릭하고, [URL for extension's git repository]필드에 아래 내용을 입력합니다.
    https://github.com/ljleb/sd-webui-freeu

3. [Install] 버튼을 누릅니다.

4. 설치가 완료되었다는 메시지가 뜰때까지 기다린 후, AUTOMATIC1111을 새로 시작합니다.

FreeU 사용방법

1단계: txt2img 탭 설정

모델: Anything v5
프롬프트: a 25 year old mage, dress, full body, magic, lightning, rim light, moon, night
부정적 프롬프트: disfigured, deformed, ugly, nsfw
이미지 크기: 512x768

2단계: FreeU 활성화

txt2img에서 아래쪽으로 내려가 FreeU 영역을 펼칩니다. 먼저 Enable 체크박스를 활성화시키고, 그 오른쪽 드롭박스에서 아래와 같이 설정합니다.

  • v1.5 models: SD1.4 Recommendations
  • v2.1 models: SD2.1 Recommendations
  • SDXL models: SDXL Recommendations

다음으로 드롭박스 오른쪽에 있는 체크박스를 클릭해 줍니다. 

3단계: 이제 [Generate] 버튼을 누르면 이미지가 생성됩니다. 

아래 4개의 이미지중 위 2개는 FreeU를 활성화시킨 상태에서 생성하였고, 아래 2개는 끈 상태에서 생성한 영상입니다.

다른 설정은 그대로 두고 모델만 SDXL(animeArtDiffusionXL)로 바꿔서 생성해 본 결과입니다.

자세히 들여다보면 FreeU가 없을 경우, 일관성이 떨어지는 게 보이는데, FreeU를 사용할 경우 결함이 많이 줄어드는 것 같네요. 그다지 속도에 영향을 미치지도 않으니 가능하다면 사용하는 게 좋을 것 같습니다.

ComfyUI에서 FreeU 사용하기

ComfyUI도 스테이블 디퓨전을 사용할 수 있는 웹UI중 하나입니다. AUTOMATIC1111보다 가볍고 훨씬 자유롭게 커스토마이징이 가능해서 점점 사용자가 늘고 있습니다. ComfyUI가 익숙하지 않으신 분들은 ComfyUI 설치 및 기본적인 사용방법초보자 가이드를 읽어보시면 도움이 되실겁니다.

ComfyUI에서 FreeU를 사용하는 방법은 간단합니다. 아래와 같이 [Load Checkpoint] 노드와 [KSampler] 노드 사이에 [FreeU_v2] 커스톰 노드를 끼워 넣으면 됩니다.

1단계: 아래의 워크플로 그림을 다운로드 받은 후, ComfyUI 캔버스에 Drag&Drop 합니다.

FreeU_Workflow

필요시에는 ComfyUI를 최신 버전으로 갱신하거나, 빠진 커스톰 노드를 설치하거나, 혹은 모든 커스톰 노드를 갱신해야 할 수 있습니다.

2단계: 체크포인트 모델을 선택합니다. 아래는 CrystalClearXL을 선택한 결과입니다.

아래는 [FreeU_v2] 노드에 필요한 추천 설정값입니다. 추천 설정값은 논문 저자의 Github에서 가져왔습니다.

  • Stable Diffusion v1.4
    b1: 1.3, b2: 1.4, s1: 0.9, s2: 0.2
  • Stable Diffusion v1.5
    b1: 1.5, b2: 1.6, s1: 0.9, s2: 0.2
  • Stable Diffusion v2.1
    b1: 1.4, b2: 1.6, s1: 0.9, s2: 0.2
  • SDXL
    b1: 1.3, b2: 1.4, s1: 0.9, s2: 0.2 

FreeU v1과 FreeU v2 의 차이

FreeU는 v1과 v2  두가지 버전이 있습니다.

특히 v2에서는 백본(backbone) 축척 계수를 계산하는 공식이 갱신되었으며, 백본 피처 레이어의 값 범위를 고려합니다. ㅊ 구체적으로 FreeU v1 논문의 식 3가, FreeU v2 논문에서는 식 3과 식 4로 변경되었습니다. 

제 비교 및 생각

아래는 [Efficiency Nodes]를 사용한 SD1.5용 제 기본 워크플로로 생성한 이미지(왼쪽)와, 이 워크플로에 FreeU를 끼워넣어 생성한 이미지(오른쪽)을 비교한 것입니다. 오른쪽이 채도가 높다는 점 외에는 뚜렷한 차이는 없지만, FreeU를 끼워넣은 편이 좀 더 풍부하다는 느낌적 느낌이네요. 사실 이정도면 구지 FreeU를 끼워넣어야 하나 싶습니다.

비교해 보고 싶으시면 좌우측 사진을 각각 ComfyUI에 불러들여서 시험해 보시면됩니다.

이상입니다. 이 글은 https://stable-diffusion-art.com/freeu/ 을 번역하고 일부 예제는 제가 생성한 것으로 대체하여 작성한 글입니다.

===