FLUX.1 Kontext 로 이미지 편집하기
FLUX.1 Kontext, nunchaku
FLUX.1은 Black Forest Labs에서 만든 이미지 생성 모델로 자연어를 이해하며 뛰어난 성능을 가지고 있습니다.
용도에 따라 모델이 나눠져 있는데 최근에 공개된 FLUX.1 Kontext는 다양한 이미지 편집기능을 제공하는 이미지 생성 모델입니다. 챗지피티처럼 프롬프트를 입력해 사용할 수 있으며 스타일 변화, 요소 추가, 변경, 이미지에 있는 객체의 일관성을 유지하며 이미지 생성 등이 가능합니다.
Dev 버전만 오픈소스로 공개가 되었고 Pro 버전과 Max 버전은 비용을 내고 API를 통해 사용해야 합니다.
이 글에서는 코랩 T4 환경에서 ComfyUI를 실행하고 FLUX.1 Kontext Dev 버전을 사용합니다. 특히 빠른 생성 속도를 위해 성능이 뛰어난 4bit 양자화 SVDQuant 모델을 이용하는데 이를 위해 nunchaku 엔진을 사용해야 합니다. 그리고 step수를 줄이기 위해 터보 lora를 사용합니다.
아래의 주피터노트북 파일을 사용하면 됩니다. 파일 다운로드, 설치 등이 파일에 포함 되어 있어서 코랩에서 열고 전체 코드 실행을 한 다음 마지막 셀에서 출력되는 cloudflare 주소로 접속하면 됩니다.
모델은 int4와 fp4가 있는데 fp4는 blackwell gpu (rtx 50 시리즈) 에서 사용 가능합니다. 위의 주피터노트북 파일은 int4 모델을 다운로드 받게 되어 있습니다.
nunchaku 설치 워크플로
주피터노트북 파일에서 명령어로 코랩에 맞는 휠로 설치하도록 되어 있어서 당장은 따로 설치할 필요가 없지만 환경이 다르거나 다른 버전을 설치하려면 명령어를 바꾸거나 아래처럼 설치용 워크플로를 이용해야합니다.
nunchaku를 설치하기 위한 워크플로를 불러와 실행해줍니다. 이 워크플로는 환경에 알맞게 nunchaku를 설치해줍니다.

설치를 하면 ComfyUI를 재시작 해야 됩니다.
명령어로 설치하려면 아래 명령어처럼 설치하면 되고 nunchaku release에서 설치할 버전과 사용환경을 찾아 주소를 pip install 뒤에 넣어줍니다.
!pip install https://github.com/mit-han-lab/nunchaku/releases/download/v0.3.2dev20250701/nunchaku-0.3.2.dev20250701+torch2.7-cp311-cp311-linux_x86_64.whl
ComfyUI에서 nunchaku를 사용하기 위한 ComfyUI-nunchaku 노드도 주피터노트북 파일에서 설치하게 되어있는데 공식 문서에 설치 방법, 노드의 값들에 대한 설명이 잘 나와있습니다.
Flux kontext dev nunchaku 워크플로
아래 워크플로는 ComfyUI-nunchaku 깃허브에서 제공하는 예시 워크플로를 약간 수정해서 만들었습니다.
우선 Nunchaku FLUX DiT Loader 노드의 값들을 코랩과 호환되도록 맞춰놨습니다. 코랩에서는 불가능하지만 Ampere GPU (RTX 30 시리즈) 이상이면 attention으로 flash-attention2 (설치 해야 됨), data_type으로 bfloat16을 사용할 수 있습니다.

다음으로 ComfyUI-Unload-Model 커스텀 노드를 추가했습니다. 메모리 문제인지 이 노드를 이용해 텍스트 인코딩 후 클립 모델을 unload해야 이미지가 제대로 생성됩니다. ComfyUI Manager를 이용해 설치할 수 있는데 설치 후 재시작-새로고침을 해 줘야 해서 주피터노트북 파일에 설치 명령어를 넣어둬 미리 설치하게 했습니다.

워크플로를 살펴보면 이미지가 FluxKontextImageScale 노드를 통과해 Flux 모델에 적합한 크기 (1024×1024 등)으로 바뀌고 인코드되서 Ksampler 노드로 들어갑니다.
그래서 생성되는 이미지의 크기가 FluxKontextImageScale 노드를 통과한 이미지의 크기와 같게 되는데 크기를 직접 지정하려면 Ksampler의 잠재 데이터에 빈 잠재 이미지 노드를 연결하면 됩니다.

turbo lora를 이용해 20 스텝에서 8스텝으로 줄였고 이미지 1장 당 50초 정도 걸립니다.
Flux kontext 사용 예시
우선 이미지 하나를 업로드하고 간단한 프롬프트로 편집해보겠습니다. 정밀한 프롬프트 예시는 comfyui wiki나 Black Forest Labs 등에서 찾아볼 수 있습니다.
객체 수정, 추가, 지우기




배경 바꾸기


스타일 변환




텍스트 수정, 추가




캐릭터 유지


캐릭터 유지는 객체의 특징 (외모, 옷 등)을 유지하면서 이미지를 생성하는 것입니다. 간단한 이미지 편집보다는 타율이 낮은 것 같습니다.
원래 이미지와 다른 크기로 이미지를 만들기 위해 빈 잠재 이미지 노드를 연결했습니다.
이미지 여러 장 사용
이 워크플로는 이미지 넣는 곳이 2개 있습니다. 비활성화 된 이미지 입력 노드를 활성화하고 이미지를 넣으면 두 장의 이미지가 Image Stitch 노드에서 붙여져 하나의 이미지가 됩니다. Stitch 노드를 추가하면 2개 이상도 이어 붙일 수 있습니다. 이미지를 이어 붙이는 다른 커스텀노드를 사용해도 됩니다.
단순히 이미지를 이어 붙인 것이기 때문에 수작업으로 이미지를 이어 붙여서 1장의 입력 이미지로 쓰는 것과 차이가 없습니다. 프롬프트를 잘 짜야 원하는 이미지를 얻을 수 있고 각 이미지 간의 상대적 크기와 생성할 이미지의 크기에 따라 영향을 받습니다.
다른 방법은 이미지 각각을 인코딩하고 여러 개의 Reference Latent를 이용해 연결하는 것입니다.
아래는 이미지 2장을 이 방법으로 연결하는 워크플로입니다. 이 역시 노드를 추가하면 이미지를 더 넣을 수 있습니다.
스타일 전송
입력 이미지의 스타일로 새로운 이미지를 생성합니다. 프롬프트에 입력 이미지의 스타일에 대한 설명이 들어가야 잘 되는 것 같고 스타일이 별로 안 비슷한 경우도 자주 나옵니다.


코랩 T4에서는 데이터 타입으로 bfloat16을 사용하지 못하는 등의 제약이 있고 한 장당 50초 정도로 꽤 시간이 걸립니다. 간단하게 소규모로 사용한다면 크게 상관이 없겠지만 제대로 사용하려면 RTX 30 시리즈 이상의 GPU를 사용하는 것이 좋을 것 같습니다.
그리고 양자화된 모델을 사용하면 메모리를 덜 쓰고 속도가 빠르지만 성능이 떨어집니다.