홈으로 🏠

ComfyUI를 활용한 실시간 이미지 생성 시스템 구축하기

ComfyUI는 Stable Diffusion을 기반으로 한 강력한 이미지 생성 도구입니다. 이 글에서는 ComfyUI를 활용하여 실시간으로 이미지를 생성하는 시스템을 구축하는 방법을 상세히 알아보겠습니다. 이 시스템은 웹 인터페이스를 통해 사용자 입력을 받아 즉시 이미지를 생성하고 표시할 수 있습니다.

1. 시스템 구성 요소

실시간 이미지 생성 시스템은 다음과 같은 구성 요소로 이루어집니다:

2. 시스템 구축 단계

2.1 ComfyUI 설정

  1. ComfyUI 리포지토리를 클론합니다:

    git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI
  2. 필요한 의존성을 설치합니다:

    pip install -r requirements.txt
  3. 원하는 Stable Diffusion 모델을 'models/checkpoints' 폴더에 다운로드합니다.

  4. ComfyUI를 API 모드로 실행합니다:

    python main.py --listen

2.2 웹 서버 설정 (Flask 사용 예시)

  1. Flask와 필요한 라이브러리를 설치합니다:

    pip install flask requests
  2. Flask 애플리케이션 코드 예시:

    from flask import Flask, request, jsonify
    import requests
    
    app = Flask(__name__)
    
    @app.route('/generate', methods=['POST'])
    def generate_image():
        prompt = request.json['prompt']
        comfy_response = requests.post('http://127.0.0.1:8188/prompt', json={
            "prompt": {
                "3": {
                    "inputs": {
                        "text": prompt,
                        "clip": ["4", 0]
                    },
                    "class_type": "CLIPTextEncode"
                },
                "4": {
                    "inputs": {
                        "ckpt_name": "v1-5-pruned.ckpt"
                    },
                    "class_type": "CheckpointLoaderSimple"
                }
                // ... 추가 설정
            }
        })
        return jsonify({'image_url': comfy_response.json()['url']})
    
    if __name__ == '__main__':
        app.run(debug=True)

2.3 프론트엔드 구현

기본적인 프론트엔드 구현 예시:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>실시간 이미지 생성</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
    <h1>실시간 이미지 생성</h1>
    <input type="text" id="prompt" placeholder="프롬프트를 입력하세요">
    <button onclick="generateImage()">이미지 생성</button>
    <div id="result"></div>

    <script>
    function generateImage() {
        var prompt = $('#prompt').val();
        $.ajax({
            url: '/generate',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({prompt: prompt}),
            success: function(response) {
                $('#result').html('<img src="' + response.image_url + '">');
            }
        });
    }
    </script>
</body>
</html>

3. 시스템 최적화 및 확장

3.1 캐싱 구현

자주 요청되는 프롬프트에 대한 결과를 캐싱하여 응답 시간을 단축할 수 있습니다. Redis와 같은 인메모리 데이터베이스를 사용하여 구현할 수 있습니다.

3.2 로드 밸런싱

여러 ComfyUI 인스턴스를 실행하고 Nginx와 같은 로드 밸런서를 사용하여 요청을 분산시킬 수 있습니다. 이를 통해 시스템의 처리량을 늘릴 수 있습니다.

3.3 비동기 처리

이미지 생성 작업을 비동기적으로 처리하고, 웹소켓을 사용하여 실시간으로 진행 상황을 클라이언트에 전달할 수 있습니다.

4. 보안 고려사항

5. 사용 예시

결론

ComfyUI를 활용한 실시간 이미지 생성 시스템은 다양한 창의적 애플리케이션에 활용될 수 있는 강력한 도구입니다. 이 시스템을 구축함으로써, 사용자의 아이디어를 즉각적으로 시각화하고, 창의적 과정을 가속화할 수 있습니다. 지속적인 최적화와 보안 강화를 통해, 더욱 효율적이고 안전한 시스템으로 발전시킬 수 있을 것입니다.