정수, 문자열 및 부동 변수 노드, GPT 노드 및 비디오 노드를 포함하는 ComfyUI용 사용자 정의 노드 제품군입니다.
중요한
이러한 노드는 Windows에서 ComfyUI가 제공하는 기본 환경과 특히 Cyberes/gradient-base-py3.10:latest docker 이미지를 사용하여 paperspace용 노트북에서 생성한 환경에서 주로 테스트되었습니다. 다른 환경은 테스트되지 않았습니다.
저장소 복제: git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git
ComfyUI custom_nodes
디렉토리에
중요: GPU에서 GPT 노드를 사용하려면 install_dependent bat 파일을 실행해야 합니다. 두 가지 버전이 있습니다: 이전 ggmlv3 모델의 경우 install_dependent_ggml_models.bat , 모든 새 모델(GGUF)의 경우 install_dependent_gguf_models.bat . 한 번에 하나만 사용할 수 있습니다! llama-cpp-python이 GPU를 사용할 수 있도록 하려면 소스 코드에서 컴파일해야 하므로 컴파일하려면 먼저 CUDA와 Visual Studio 2019 또는 2022(내 박쥐의 경우)를 설치해야 합니다. 자세한 내용과 전체 가이드를 보려면 여기로 이동하세요.
Moondream 모델과 함께 GPTLoaderSimple을 사용하려는 경우 Transformers 버전 4.36.2를 설치하는 'install_extra.bat' 스크립트를 실행해야 합니다.
ComfyUI 재부팅
이러한 변경 사항을 되돌려야 하는 경우(다른 노드와의 비호환성으로 인해) 'remove_extra.bat' 스크립트를 활용할 수 있습니다.
ComfyUI는 시작 시 모든 사용자 정의 스크립트와 노드를 자동으로 로드합니다.
메모
llama-cpp-python 설치는 스크립트에 의해 자동으로 수행됩니다. NVIDIA GPU가 있는 경우 jllllll repo 덕분에 더 이상 CUDA BUILD가 필요하지 않습니다. 또한 모든 주요 모델이 지금쯤 최신 버전의 GGUF로 전환했어야 했기 때문에 GGMLv3 모델에 대한 지원을 중단했습니다.
메모
2024년 2월 14일 이후로 노드는 대규모 재작성을 거쳤으며 이로 인해 향후 다른 확장 프로그램과의 충돌을 피하기 위해(또는 적어도 그러기를 바랍니다) 모든 노드 이름이 변경되었습니다. 결과적으로 이전 워크플로는 더 이상 호환되지 않으며 각 노드를 수동으로 교체해야 합니다. 이를 방지하기 위해 자동 교체가 가능한 도구를 만들었습니다. Windows에서는 *.json 워크플로를 (custom_nodes/ComfyUI-N-Nodes)에 있는 migration.bat 파일로 드래그하면 접미사가 _ migrationd인 다른 워크플로가 현재 워크플로와 동일한 폴더에 생성됩니다. Linux에서는 python libs/ migration.py path/to/original/workflow/ 방식으로 스크립트를 사용할 수 있습니다. 보안상의 이유로 원래 작업 흐름은 삭제되지 않습니다." Comfyui-N-Suite에서 이 변경 사항이 적용되기 전에 이 저장소의 마지막 버전을 설치하려면 git checkout 29b2e43baba81ee556b2930b0ca0a9c978c47083 을 실행하세요.
custom_nodes
에서 ComfyUI-N-Nodes
폴더를 삭제하세요.ComfyUIwebextensions
에서 comfyui-n-nodes
폴더를 삭제합니다.ComfyUIstyles
에서 n-styles.csv
및 n-styles.csv.backup
파일을 삭제합니다.ComfyUImodels
에서 GPTcheckpoints
폴더를 삭제합니다.custom_nodes/ComfyUI-N-Nodes
로 이동합니다.git pull
LoadVideoAdvanced 노드를 사용하면 비디오 파일을 로드하고 해당 파일에서 프레임을 추출할 수 있습니다. LoadVideo
animationiff 노드와의 충돌을 피하기 위해 이름이 LoadVideo
에서 LoadVideoAdvanced
로 변경되었습니다.
video
: 불러올 영상 파일을 선택합니다.framerate
: 원래 프레임 속도를 유지할지, 절반 또는 1/4 속도로 줄일지 선택합니다.resize_by
: 프레임 크기 조정 방법('없음', '높이' 또는 '너비')을 선택합니다.size
: 높이 또는 너비로 크기를 조정하는 경우 대상 크기입니다.images_limit
: 추출할 프레임 수를 제한합니다.batch_size
: 인코딩 프레임의 배치 크기입니다.starting_frame
: 시작할 프레임을 선택합니다.autoplay
: 영상 자동재생 여부를 선택합니다.use_ram
: 비디오 프레임 압축을 풀기 위해 디스크 대신 RAM을 사용합니다. IMAGES
: 프레임 이미지를 PyTorch 텐서로 추출했습니다.LATENT
: 빈 잠재 벡터.METADATA
: 비디오 메타데이터 - FPS 및 프레임 수입니다.WIDTH:
프레임 너비.HEIGHT
: 프레임 높이.META_FPS
: 프레임 속도.META_N_FRAMES
: 프레임 수.노드는 지정된 프레임 속도로 입력 비디오에서 프레임을 추출합니다. 선택한 경우 프레임 크기를 조정하고 이를 잠재 벡터, 메타데이터 및 프레임 크기와 함께 PyTorch 이미지 텐서 배치로 반환합니다.
SaveVideo 노드는 추출된 프레임을 가져와 비디오 파일로 다시 저장합니다.
images
: 이미지를 텐서로 프레임화합니다.METADATA
: LoadVideo 노드의 메타데이터입니다.SaveVideo
: 출력 비디오 파일 저장을 전환합니다.SaveFrames
: 프레임을 폴더에 저장하도록 전환합니다.CompressionLevel
: 프레임 저장을 위한 PNG 압축 수준입니다. 출력 비디오 파일 및/또는 추출된 프레임을 저장합니다.
노드는 추출된 프레임과 메타데이터를 가져와 새 비디오 파일 및/또는 개별 프레임 이미지로 저장할 수 있습니다. 비디오 압축 및 프레임 PNG 압축을 구성할 수 있습니다. 참고: LoadVideo를 프레임 소스로 사용하는 경우 원본 파일의 오디오는 유지되지만 Images_limit 및 Starting_frame 이 0인 경우에만 가능합니다.
LoadFramesFromFolder 노드를 사용하면 폴더에서 이미지 프레임을 로드하고 배치로 반환할 수 있습니다.
folder
: 프레임 이미지가 포함된 폴더의 경로입니다. 숫자로 이름이 지정된 png 형식이어야 합니다(예: 1.png 또는 0001.png). 이미지는 순차적으로 로드됩니다.fps
: 로드된 프레임에 할당할 초당 프레임 수입니다. IMAGES
: PyTorch 텐서로 로드된 프레임 이미지 배치입니다.METADATA
: 설정된 FPS 값을 포함하는 메타데이터입니다.MAX_WIDTH
: 최대 프레임 너비.MAX_HEIGHT
: 최대 프레임 높이.FRAME COUNT
: 폴더에 있는 프레임 수입니다.PATH
: 프레임 이미지가 포함된 폴더의 경로입니다.IMAGE LIST
: 폴더에 있는 프레임 이미지 목록입니다(실제 목록은 아니고 n으로 나눈 문자열).노드는 지정된 폴더에서 모든 이미지 파일을 로드하고 이를 PyTorch 텐서로 변환한 다음 설정된 FPS 값이 포함된 간단한 메타데이터와 함께 배치 텐서로 반환합니다.
이를 통해 이전에 추출하고 저장한 프레임 세트를 쉽게 로드할 수 있습니다. 예를 들어 다시 로드하고 처리할 수 있습니다. FPS 값을 설정하면 프레임을 비디오 시퀀스로 올바르게 해석할 수 있습니다.
SetMetadataForSaveVideo 노드를 사용하면 SaveVideo 노드에 대한 메타데이터를 설정할 수 있습니다.
FrameInterpolator 노드를 사용하면 추출된 비디오 프레임 간 보간을 통해 프레임 속도를 높이고 동작을 부드럽게 할 수 있습니다.
images
: 프레임 이미지를 텐서로 추출합니다.METADATA
: 비디오의 메타데이터 - FPS 및 프레임 수입니다.multiplier
: 프레임 속도를 높이는 요소입니다. IMAGES
: 이미지 텐서로 보간된 프레임입니다.METADATA
: 새로운 프레임 속도로 메타데이터를 업데이트했습니다.노드는 추출된 프레임과 메타데이터를 입력으로 사용합니다. 보간 모델(RIFE)을 사용하여 더 높은 프레임 속도에서 추가 중간 프레임을 생성합니다.
메타데이터의 원래 프레임 속도에 multiplier
값을 곱하여 보간된 새 프레임 속도를 얻습니다.
보간된 프레임은 새 프레임 속도가 포함된 업데이트된 메타데이터와 함께 이미지 텐서 배치로 반환됩니다.
이를 통해 기존 비디오의 프레임 속도를 높여 더욱 부드러운 동작과 느린 재생을 달성할 수 있습니다. 보간 모델은 기존 프레임을 단순히 복제하는 것이 아니라 새로운 사실적인 프레임을 만들어 간격을 채웁니다.
원본 코드는 여기에서 가져왔습니다.
기본 노드에는 링크에 제한이 있으므로(예를 들어 내가 이 글을 쓰는 시점에는 "start_at_step"과 다른 ksampler의 "단계"를 함께 연결할 수 없음) 이 제한을 우회하기 위해 이러한 간단한 노드 변수를 만들기로 결정했습니다. 변수는 다음과 같습니다:
이러한 사용자 정의 노드는 GGUF GPT 모델을 사용하여 텍스트 생성을 활성화하여 ConfyUI 프레임워크의 기능을 향상하도록 설계되었습니다. 이 README는 두 개의 사용자 정의 노드에 대한 개요와 ConfyUI 내에서의 사용법을 제공합니다.
다음과 같은 방식으로 모델 GGUF가 있는 경로를 extra_model_paths.yaml 에 추가할 수 있습니다(예):
other_ui: base_path: I:\text-generation-webui GPTcheckpoints: models/
그렇지 않으면 ComfyUI의 모델 폴더에 .gguf 모델을 배치할 수 있는 GPTcheckpoints 폴더가 생성됩니다.
LLava 모델의 경우 'GPTcheckpoints' 폴더의 'Llava' 디렉터리 내에 두 개의 폴더도 생성되었습니다.
clips
: 이 폴더는 LLava 모델용 클립(보통 저장소에서 mm 로 시작하는 파일)을 저장하기 위해 지정됩니다. models
: 이 폴더는 LLava 모델을 저장하기 위해 지정되었습니다.
이 노드는 실제로 4가지 모델을 지원합니다.
GGUF 모델은 Huggingface Hub에서 다운로드할 수 있습니다.
여기 boricuapab의 GGUF 모델 사용 방법에 대한 예를 보여주는 비디오가 있습니다.
다음은 이 노드에서 지원하는 모델의 작은 목록입니다.
LlaVa 1.5 7B LlaVa 1.5 13B LlaVa 1.6 미스트랄 7B BakLLaVa Nous Hermes 2 비전
####Llava 모델의 예:
처음 실행하면 모델이 자동으로 다운로드됩니다. 어쨌든 여기에서 사용할 수 있습니다. 이 저장소에서 가져온 코드
####Moondream 모델의 예:
처음 실행하면 모델이 자동으로 다운로드됩니다. 어쨌든 여기에서 사용할 수 있습니다. 이 저장소에서 가져온 코드
####Joytag 모델의 예:
GPTLoaderSimple
노드는 GPT 모델 체크포인트를 로드하고 텍스트 생성을 위한 Llama 라이브러리의 인스턴스를 생성하는 역할을 합니다. GPU 레이어, 스레드 수, 텍스트 생성을 위한 최대 컨텍스트를 구성하는 인터페이스를 제공합니다.
ckpt_name
: 사용 가능한 옵션에서 GPT 체크포인트 이름을 선택합니다(joytag 및 moondream은 처음 사용할 때 자동으로 다운로드됩니다).gpu_layers
: 사용할 GPU 레이어 수를 지정합니다(기본값: 27).n_threads
: 텍스트 생성을 위한 스레드 수를 지정합니다(기본값: 8).max_ctx
: 텍스트 생성을 위한 최대 컨텍스트 길이를 지정합니다(기본값: 2048). 노드는 Llama 라이브러리의 인스턴스(MODEL)와 로드된 체크포인트(STRING)에 대한 경로를 반환합니다.
GPTSampler
노드는 입력 프롬프트와 다양한 생성 매개변수를 기반으로 하는 GPT 모델을 사용하여 텍스트 생성을 용이하게 합니다. 이를 통해 온도, top-p 샘플링, 페널티 등과 같은 측면을 제어할 수 있습니다.
prompt
: 텍스트 생성을 위한 입력 프롬프트를 입력합니다.image
: Joytag, Moondream 및 Llava 모델에 대한 이미지 입력입니다.model
: 텍스트 생성에 사용할 GPT 모델을 선택합니다.max_tokens
: 생성된 텍스트의 최대 토큰 수를 설정합니다(기본값: 128).temperature
: 임의성에 대한 온도 매개변수를 설정합니다(기본값: 0.7).top_p
: 핵 샘플링의 상위 p 확률을 설정합니다(기본값: 0.5).logprobs
: 출력할 로그 확률 수를 지정합니다(기본값: 0).echo
: 생성된 텍스트와 함께 입력 프롬프트 인쇄를 활성화하거나 비활성화합니다.stop_token
: 텍스트 생성이 중지되는 토큰을 지정합니다.frequency_penalty
, presence_penalty
, repeat_penalty
: 단어 생성 페널티를 제어합니다.top_k
: 생성 중에 고려할 top-k 토큰을 설정합니다(기본값: 40).tfs_z
: 가장 빈번한 샘플에 대한 온도 스케일링 계수를 설정합니다(기본값: 1.0).print_output
: 생성된 텍스트를 콘솔에 인쇄하는 것을 활성화 또는 비활성화합니다.cached
: 캐시 생성 사용 여부를 선택합니다(기본값: NO).prefix
, suffix
: 프롬프트 앞에 추가할 텍스트를 지정합니다.max_tags
: 이는 Joydag가 생성하는 최대 태그 수에만 영향을 미칩니다. 노드는 UI 친화적인 표현과 함께 생성된 텍스트를 반환합니다.
ImagePadForOutpaintingAdvanced
노드는 아웃페인팅 마스크 아래 이 비디오에 표시된 기술을 적용하는 ImagePadForOutpainting
노드의 대안입니다. 색상 교정 부분은 Sipherxyz의 이 사용자 정의 노드에서 가져왔습니다.
image
: 이미지를 입력합니다.left
: 왼쪽에서 확장할 픽셀,top
: 위쪽에서 확장할 픽셀,right
: 오른쪽에서 확장할 픽셀,bottom
: 하단에서 확장할 픽셀입니다.feathering
: 페더링 강도noise
: 노이즈와 복사된 테두리의 강도를 혼합합니다.pixel_size
: 픽셀화 효과의 픽셀 크기pixel_to_copy
: 복사할 픽셀 수(각 측면에서)temperature
: 마스크 부분에만 적용되는 색상 보정 설정입니다.hue
: 마스크 부분에만 적용되는 색상 보정 설정입니다.brightness
: 마스크 부분에만 적용되는 색상 보정 설정입니다.contrast
: 마스크 부분에만 적용되는 색상 보정 설정입니다.saturation
: 마스크 부분에만 적용되는 색상 보정 설정입니다.gamma
: 마스크 부분에만 적용되는 색상 보정 설정입니다. 노드는 처리된 이미지와 마스크를 반환합니다.
DynamicPrompt
노드는 고정 프롬프트를 변수 프롬프트에서 무작위로 선택한 태그와 결합하여 프롬프트를 생성합니다. 이를 통해 다양한 사용 사례에 대한 유연하고 동적인 프롬프트 생성이 가능합니다.
variable_prompt
: 태그 선택을 위한 변수 프롬프트를 입력합니다.cached
: 생성된 프롬프트를 캐시할지 여부를 선택합니다(기본값: NO).number_of_random_tag
: 포함할 임의 태그 수를 "Fixed"와 "Random" 중에서 선택합니다.fixed_number_of_random_tag
: "Fixed"인 경우 number_of_random_tag
인 경우 포함할 무작위 태그 수를 지정합니다(기본값: 1).fixed_prompt
(선택 사항): 최종 프롬프트 생성을 위한 고정 프롬프트를 입력합니다. 노드는 고정 프롬프트와 선택된 무작위 태그의 조합인 생성된 프롬프트를 반환합니다.
variable_prompt
필드를 쉼표로 구분된 태그로 채우세요 fixed_prompt
는 선택 사항입니다. CLIP Text Encode Advanced
노드는 표준 CLIP Text Encode
노드의 대안입니다. 추가/바꾸기/삭제 스타일을 지원하므로 단일 노드 내에 긍정적 프롬프트와 부정적 프롬프트를 모두 포함할 수 있습니다.
기본 스타일 파일은 n-styles.csv
라고 하며 ComfyUIstyles
폴더에 있습니다. 스타일 파일은 A1111(작성 당시)에서 사용된 현재 styles.csv
파일과 동일한 형식을 따릅니다.
참고: 이 노트는 실험적이며 여전히 많은 버그가 있습니다.
clip
: 클립 입력style
: 선택한 스타일에 따라 긍정적인 프롬프트와 부정적인 프롬프트가 자동으로 채워집니다. positive
: 긍정적인 조건negative
: 부정 조건 문제를 보고하거나 개선 사항을 제안하여 이 프로젝트에 자유롭게 기여해 주세요. 이슈를 열거나 GitHub 저장소에 풀 요청을 제출하세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.