AI 실시간 그림 그리기 – ComfyUI

지난 글에서 LCM 로라를 활용하여 스테이블 디퓨전 그림 생성속도를 엄청나게 빠르게 끌어올리는 방법을 알아봤습니다. 그리고 이 LCM LoRA의 빠른 그림 생성 속도를 활용하면 AI 실시간 그림 그리기가 가능하다고 말씀드렸는데요, 본 글에서는 ComfyUI에서 실제로 그림을 실시간으로 그려보도록 하겠습니다.

ComfyUI LCM 로라 세팅

오늘은 ComfyUI에서 AI 실시간 그림을 그려야 하는데요, 이를 가능케 하기 위해서는 LCM 로라 세팅을 먼저 해주셔야 합니다. LCM 로라가 빠른 그림 생성을 가능토록 하는 구체적인 원리에 대해서 조금 더 자세히 알고 싶으신 분들은 아래 글을 참고해주시기 바랍니다.

LCM LoRA 다운로드

위 글에도 안내드리고 있지만, ComfyUI에서 LCM 로라를 이용하기 위해 먼저 LCM 로라 모델을 다운받아 ComfyUI가 설치된 디렉토리의 LoRA 모델 폴더로 이동해주어야 합니다. LCM 로라 모델을 아래의 허깅페이스 페이지에서 다운로드 받을 수 있습니다.

ComfyUI의 LoRA 모델 폴더 기본 위치는 아래와 같습니다. 단, 파일을 옮긴 후 파일명을 꼭 아래와 같이 변경해주시기 바랍니다.

LCM 로라 모델 이동 위치 : ComfyUI 설치위치/models/loras/

SDXL LCM 로라 모델 이름 : lcm-lora-sdxl.safetensors

SD1.5 LCM 로라 모델 이름 : lcm-lora-sd1-5.safetensors

LCM LoRA 워크플로우

이제 ComfyUI에서 LCM 그림을 그릴 준비가 완료되었습니다. LCM 로라를 활용해보도록 하겠습니다.

ComfyUI LCM 로라 워크플로우

기본(default) 워크플로우에서 LoRA 로더만 추가하여 적용하면 간단하게 LCM 로라를 적용한 빠른 이미지 생성을 테스트해 볼 수 있습니다. Load LoRA 노드에서 lcm-lora-sd1-5.safetensors를 불러온 뒤, KSampler에서 sampler_name을 lcm으로 선택합니다. 위 예시 이미지에서는 해당 설정값으로 스텝을 5단계로 줄여 생성하였음에도 고품질의 결과 이미지가 생성된 것을 확인할 수 잇습니다.

AI 실시간 그림 그리기

위에서는 LCM 로라를 적용해 그림을 빠르게 생성하는 것을 알아보았습니다. 이번에는 LCM 로라를 활용해 AI 실시간 그림을 그려보고자 합니다. 이를 실현하기 위해서는 컨트롤넷의 스크리블(scribble) 노드를 추가해야 합니다.

ControlNet Scribble

먼저 scribble을 사용하기 위해 아래 페이지에서 scribble 모델을 다운받아 ComfyUI의 ControlNet Model 폴더로 옮겨줍니다.

컨트롤넷 scribble 모델 다운로드

Scribble 모델 이동 위치 : ComfyUI 설치위치/models/controlnet/

AI 실시간 그림 워크플로우

이제 본격적으로 AI 실시간 그림을 그리기 위해 아래와 같이 workflow를 작성합니다. 앞서 위에서 작성한 워크플로우와 비교해 아래의 붉은 색 박스들(ControlNet 부분)이 추가되었습니다.

ComfyUI AI 실시간 그림 워크플로우

Load ControlNet Model 노드에서는 위에서 다운받은 scribble 모델을 할당하고, 긍정 및 부정 프롬프트(CLIP Text Encode)의 출력단을 Apply ControlNet 노드를 통과해 KSampler로 연결되도록 합니다. 마지막으로 Canvas Tab 노드를 추가하여 Apply ControlNet 노드의 image 입력단과 연결시켜 줍니다.

Canvas Tab 설치 화면

Cnavas Tab 노드는 커스텀 노드로 추가해야 하며, ComfyUI Manager에서 위와 같이 canvas를 검색하여 간편하게 설체가 가능합니다. ComfyUI Manager 설치 및 커스텀노드 설치 방법에 대해 자세한 안내가 필요하신 분들은 아래를 참고하시기 바랍니다.

이제 정말 모든 준비를 마쳤습니다. 실시간 그림을 그리기 위해 CanvasTab의 Edit 버튼을 누르면 새 창이 열리면서 아래와 같이 그림판 같은 인터페이스가 등장합니다.

CanvasTab

이렇게 새로 뜨는 창의 canvas에 그림을 그리면 그 즉시 ComfyUI의 CanvasTab 노드에 반영됩니다. 그럼 ComfyUI에서는 실시간으로 반영되는 내가 그림을 기반으로 다시 LCM 로라를 적용해 AI 실시간 그림으로 재생성 해주는 원리입니다.

AI 실시간 그림을 그리기 위해 샘플러와 Queue 세팅을 아래 이미지를 참고하여 다음과 같이 바꿔줍니다. KSampler의 seed값은 fixed, steps는 5~8 사이를, Sampler_name은 lcm으로 설정합니다. Queue에서는 Extra options를 활성화하고, 그 아래 Auto Queue를 함께 활성화 합니다.

ComfyUI 세팅

ComfyUI에서 AI 실시간 그림을 그리는 원리는 위 세팅값에서 추론해볼 수 있습니다. Auto Queue가 활성화 되어 있는 경우 ComfyUI는 실시간으로 Queue Prompt(WebUI의 Generate)를 계속 실행해주게 됩니다. 그런데 ComfyUI의 특이한 점은 Queue Prompt를 눌러 생성을 실행하더라도, 워크플로우 상 이전 설정값과 변경이 없는 부분은 재실행하지 않습니다. 즉, Auto Queue가 활성화 되더라도 ComfyUI는 워크플로우상 변경이 있을 때만 그 부분부터 다시 실행을 하게 됩니다. KSampler 시드값을 고정(fixed)로 해 두었으므로, 이제 우리가 워크플로우 상 변화를 줄 수 있는 부분을 프롬프트와 CanvasTab의 이미지로 제한한 상황입니다.

ComfyUI AI 실시간 그림 그리기

따라서 위 그림과 같이 자동 이미지 생성이 활성화된 상태에서는 프롬프트를 작성하거나, 그림을 그리면 실시간으로 워크플로우가 업데이트되면서 ComfyUI가 새로 그림을 그려냅니다. 그런데 LCM 로라를 적용한 상태이므로 새로 그리는 속도가 매우 빠르기 때문에 실제로 거의 실시간으로 그림이 생성됩니다. 위 그림은 실제로 위의 세팅을 한 상태에서 그림을 그리는 상황입니다. 비루한 그림실력이지만, Scribble 덕분에 ComfyUI가 프롬프트를 참고하여 스케치를 그럴듯한 그림으로 만들어줍니다. 실시간으로 그림을 그리는 모습을 녹화하면 다음과 같습니다.

AI 실시간 그림 그리는 모습