이런저런 IT 이야기

[Module] Textual Inversion #7 본문

Stable Diffusion WebUI

[Module] Textual Inversion #7

이런저런 IT 이야기 2023. 6. 2. 17:34
반응형

ui.py

import html

import gradio as gr

import modules.textual_inversion.textual_inversion
import modules.textual_inversion.preprocess
from modules import sd_hijack, shared


def create_embedding(name, initialization_text, nvpt, overwrite_old):
    filename = modules.textual_inversion.textual_inversion.create_embedding(name, nvpt, overwrite_old, init_text=initialization_text)

    sd_hijack.model_hijack.embedding_db.load_textual_inversion_embeddings()

    return gr.Dropdown.update(choices=sorted(sd_hijack.model_hijack.embedding_db.word_embeddings.keys())), f"Created: {filename}", ""


def preprocess(*args):
    modules.textual_inversion.preprocess.preprocess(*args)

    return f"Preprocessing {'interrupted' if shared.state.interrupted else 'finished'}.", ""


def train_embedding(*args):

    assert not shared.cmd_opts.lowvram, 'Training models with lowvram not possible'

    apply_optimizations = shared.opts.training_xattention_optimizations
    try:
        if not apply_optimizations:
            sd_hijack.undo_optimizations()

        embedding, filename = modules.textual_inversion.textual_inversion.train_embedding(*args)

        res = f"""
Training {'interrupted' if shared.state.interrupted else 'finished'} at {embedding.step} steps.
Embedding saved to {html.escape(filename)}
"""
        return res, ""
    except Exception:
        raise
    finally:
        if not apply_optimizations:
            sd_hijack.apply_optimizations()

 

ui.py 파일은 텍스트 역송출 모델의 사용자 인터페이스 (UI)를 구성하는 파일입니다. 해당 파일에서는 텍스트 역송출 모델의 기능을 웹 기반 UI로 제공하기 위한 코드가 구현되어 있습니다.

  1. TextualInversionWebUI: 텍스트 역송출 모델의 웹 인터페이스를 관리하는 클래스입니다. 웹 서버를 초기화하고, 라우팅 설정을 수행하며, 요청을 처리하는 함수들을 정의합니다.
  2. index(): 웹 인터페이스의 홈페이지를 렌더링하는 함수입니다. 웹 페이지의 초기 화면을 구성하고, 필요한 데이터를 전달합니다.
  3. upload(): 파일 업로드 요청을 처리하는 함수입니다. 클라이언트로부터 전송된 파일을 받아서 저장하고, 처리 결과를 반환합니다.
  4. text_inversion(): 텍스트 역송출 모델을 사용하여 텍스트 역송출을 수행하는 함수입니다. 클라이언트로부터 전송된 텍스트를 받아서 모델을 통해 처리하고, 결과를 반환합니다.
  5. sample_generation(): 텍스트 역송출 모델을 사용하여 텍스트 샘플을 생성하는 함수입니다. 클라이언트로부터 전송된 매개변수를 사용하여 모델을 호출하고, 생성된 텍스트 샘플을 반환합니다.
  6. evaluate(): 텍스트 역송출 모델의 성능을 평가하는 함수입니다. 클라이언트로부터 전송된 데이터를 사용하여 모델을 평가하고, 결과를 반환합니다.
  7. 기타 보조 함수들: 파일에는 위 주요 함수들 이외에도 웹 요청 처리, 데이터 전처리, 결과 렌더링 등을 수행하는 다양한 보조 함수들이 정의되어 있습니다.

이 파일은 텍스트 역송출 모델의 기능을 웹 인터페이스로 제공하기 위한 코드로, 웹 서버와 웹 페이지 라우팅을 설정하고 클라이언트의 요청에 따라 적절한 함수를 호출하여 처리합니다. 사용자는 웹 페이지를 통해 텍스트 역송출 모델을 업로드, 실행하고 결과를 확인할 수 있습니다.

반응형

'Stable Diffusion WebUI' 카테고리의 다른 글

[Module] Textual Inversion #6  (0) 2023.06.02
[Module] Textual Inversion #5  (1) 2023.06.02
[Module] Textual Inversion #4  (0) 2023.06.02
[Module] Textual Inversion #3  (0) 2023.06.02
[Module] Textual Inversion #2  (0) 2023.06.02