이 글은 개인적으로 학습한 내용을 정리하기 위한 글이다.
https://www.youtube.com/watch?v=MvAnxje_XFQ&t=2s
영상 초반에 앞으로는 Forge가 연구용으로만 제공된다고 하고 기존 WebUI 방식으로 다시 사용하는게 좋다고 하는 내용이 나와 깜짝 놀랐다. 아무튼
ComfyUI (이하 콤피) 에서 콘트롤넷을 사용하기 위해서는 기존 WebUI에서 작업하던 방식을 알면 좋은데 여기를 참조해서 기본 방식으로 살펴보면
이전에 ControlNet을 사용할때 참고용 이미지 한장이 주어지고
사전 처리기를 선택하고 관련 모델을 선택하면 사전 처리 이미지가 보였다. 그리고 사전 처리가 필요없을때(이미 추출한 뼈대 그림이나 뎁스 그림을 바로 쓸때), none으로 함
이렇게 이미지를 이용해서 ControlNet을 사용하기 위해서는 사전 처리가 필요하다.
그래서 ControlNet콤피에서는 사전처리기(preprocessor)를 설치해야 한다.
매니저에서 ControlNet을 검색해서 설치한다.
이 preprocessor 개발 사이트에 가보면
Controlnet_AUX
https://github.com/Fannovel16/comfyui_controlnet_aux
웹 UI에서 쓰던 다양한 모델들을 사용할수가 있다고 함
본격적으로 작업에 들어가기전에 몇가지 유용한 커스텀 노드를 설치하도록 하자.
rgthree
Comfyroll Studio
이렇게 전 처리기(comfyui_controlnet_aux), rgthree, Comfyroll Studio 3가지를 설치 했다면 이제 작업할 준비가 끝난것이다.
콘트롤넷 중에 외곽 추출을 하는 Canny 를 써보자.
Load Image, Preprocessor(Canny Edge)를 사용해서 사전처리 이미지를 얻었다. 이 사전 처리된 이미지를 이용해서 이미지를 생성해보자.
기본 플로우도 있는 상태에서 기본 플로우의 체크 포인트 모델은 orangemix를 사용했고 프롬프트들은 다음과 같다.
긍정 프롬프트
(((((ultra realistic:1.3)), (best quality:1.3), ultra_detailed, (hyper detailed), (high quality), (good anatomy:1.2), surdres:1.2, masterpiece, intricate details, ((wide_shot:1.2)), (((beautiful gorgeous cute Korean woman:1.4, kpop idol, korean beauty, korean mixed))), (makeup:0.5), sexy, (best body), 1girl, solo, small head, withdrawn face, highres, small hands, woman hand,))),
BREAK
orange color hair, orange color eyes, large breasts, elegant body,
BREAK
(((orange single color bodysuit:1.2))), ((orange color background:1.5)),
BREAK
cowboy shot, standing, ID picture,
부정 프롬프트
(low quality:2), (normal quality:2),(worst quality:2), ugly, analogphoto, jpeg artifacts, ugly face, out of frame, mutation, mutated, disfigured, deformed, long neck, (Dimple chin, Cleft chin), strabismus, crossed eyes, squint, multiple views, multiple panels, multiple pussy, blurry, bad art, bad anatomy:1.4, blurred, gloss, latex, BREAK (((watermark, letterbox, text))), cropped, ((multiple views)),
이제 베이스 플로우와 이 기능을 합치기 위해 Apply ControlNet(Advanced) 노드라는 것을 추가해야 한다.
그리고 Apply ControlNet(Advanced) 노드를 추가한뒤 위에서 작업 완료된 Image가 인풋값으로 들어가야 하고 Controlnet 항목에는 Preprocessor 로 Canny를 알려주기 위한 Load ControlNet Model 노드를 추가해서 세팅해준다.
그럼 남은 항목이 인풋 positive와 negative가 있는데 이걸 기본 베이스 플로우에서 가져오는것이다. 다시 보기 좋게 배열해서 구성이 어떻게 되는지 살펴보자. 아웃풋 positive와 negative는 ksampler로 들어가게 되는것이다. 이러면 거의 외곽선에 베이스를 둔 새 이미지가 생성되는데 외곽선이 워낙세세히 추출되었기 때문에 원본과 비슷한 이미지가 생성된다.
여기서 중간 팁하나 시작하기 전에 설치한 rgthree 커스텀 노드에 유용한 노드가 하나 있는데 Image Comparer 라고 이미지 두개를 비교해볼수 있는 노드이다.
생성된 이미지와 외곽선 전처리를 한 이미지를 비교해서 같이 볼수도 있다.
그런데 이렇게 많은 콘트롤넷에 있는 preprocessor를 다 외우고 있을수는 없다.
그래서 약간의 편의기능이 추가되어 있는데 빈화면에서 마우스 오른쪽 클릭해서
Add Node > ControlNet Preprocessors 안에 원하는 메뉴를 찾을수 있다. 위에서 사용한 Canny도
Add Node > ControlNet Preprocessors > Line Extractors > Canny Edge에 포함되어 있는걸 알수 있다.
그밖에도 같은 메뉴창에서 soft-Edge, Lineart, anime Lineart등등도 볼수 있다.
그리고 포즈작업시 많이 사용하는 openpose도
Add Node > ControlNet Preprocessors > Faces and Poses Estimators > 밑에 많이 보던 DensePose, DWPose, OpenPose 등도 볼수 있다.
DWPose를 한번 사용해보자.
DWPose Estimator 노드를 배치하고 Apply ControlNet를 통해서 작업을 하려면 기존에 작업하던 Canny가 이미 결과처리되서 KSampler로 들어가고 있어서 뭔가 추가적인 ControlNet을 쓰려면 Multi ControlNet을 사용해야 한다. 그림처럼
1차 외곽선처리 결과의 Positive와 Negative가 다시 2차의 오픈포즈의 Positive와 Negative에 입력으로 들어가고 2차 결과값이 KSampler의 입력값으로 들어가는걸 볼수 있다. 마치 사슬처럼 연속적으로 연결되는걸 볼수 있다.
(DWPose에서 에러가 발생해서 OpenPose로 썼는데 그건 잘 작동했다.)
이렇게 외곽선 추출, 뼈대 추출을 동시에 적용하는것처럼 2가지 이상의 ControletNet을 연속적으로 쓰는걸 Multi ControlNet 이라 한다.
그런데 이정도만 작업해도 노드가 벌써 많아진걸 느낄수 있다.
Comfyroll 커스텀 노드 중에 CR Apply ControlNet, CR Multi-ControlNet Stack 노드가 있는데 CR Multi-ControlNet Stack을 사용하면 이 안에 여러개의 콘트롤넷이 합쳐져 있는걸 알수있다.
쓰는 방법은 직관적으로 이해가 가능한데 콘트롤 1에 Canny를 쓰고 콘트롤 2에 Openpose를 사용한다면 preprocessor를 배치하고 해당 이미지들을 받아서 차례대로 세팅만 하면 된다. 이런식으로 CR Multi-ControlNet Stack 자체도 여러개를 써서 콘트롤넷을 원하는 만큼 추가할수 있다.
하지만 ControlNet을 무작정 많이 연결을 한다고 해서 퀄리티 좋은 이미지가 생성된다는 보장은 없고 적당히 조절해야 한다.
이렇게 preprocessor가 정상적으로 동작을 하고 있는데 전체적으로 정상적으로 설치됐는지 확인하는 방법이 있다고 함.
매트릭스가 설치된 폴더 \ Data \ Packages \ ComfyUI \ custom_nodes \ comfyui_controlnet_aux \ tests 안에 보면 json파일이 하나 있는데 새 작업창을 열고 해당 json을 로드하면 모든 Preprocessor가 로드된걸 볼수 있는데 테스트할 이미지를 추가해서 넣어봐서 잘 작동하는지 테스트해볼 수 있다. 나는 역시 DWPose에서 에러가 나는걸 볼 수 있는데 해결 방법으로는 설치한 모듈 페이지를 찾아가서... 예를 들면 나같은 경우는 DWPose이므로 아래 사이트가 되겠는데
https://github.com/Fannovel16/comfyui_controlnet_aux
문제가 생긴 사이트로 가서 보면 requirements.txt파일이 보이는데 패키지가 작동하는데 필요한 버전과 파일명이 써져있는 파일이다.
매트릭스가 설치된 폴더 \ Data \ Packages \ ComfyUI \ custom_nodes \ comfyui_controlnet_aux 폴더를 CMD창으로 실행해서 이동한뒤에 pip install -r requirements.txt 명령어을 실행하면 자동으로 필요한 패키지들을 재설치를 진행하게 된다.
그런다음 모듈을 재설치하면 된다고는 하는데 해결은 안됐다.
일단 이 문제는 해결하지 않고 대체제인 openpose를 사용해서 당분간 넘어갈 예정이다. 스테이블 매트릭스가 워낙 자주 업데이트가 일어나기 때문이다. 전에도 몇번 문제가 있었던것들도 업데이트이후에 해결되는 경우를 많이 봐와서 안정화 되기 전까지는 그냥 쓸 것이다.
'기타 > AI 활용하기 - 스테이블디퓨전' 카테고리의 다른 글
스테이블 디퓨전을 활용하기 위한 세팅 7 (Comfy UI 세팅하기) (0) | 2024.06.21 |
---|---|
스테이블 디퓨전을 활용하기 위한 세팅 5 (멀티 ControlNet) (0) | 2024.06.02 |
스테이블 디퓨전을 활용하기 위한 세팅 4 (Forge 에 ControlNet 모델 설치) (0) | 2024.05.25 |
스테이블 디퓨전을 활용하기 위한 세팅 3 (Stable diffusion Forge) (2) | 2024.05.23 |
스테이블 디퓨전을 활용하기 위한 세팅 1 (1) | 2024.05.15 |