기타/AI 활용하기 - 스테이블디퓨전

스테이블 디퓨전을 활용하기 위한 세팅 5 (멀티 ControlNet)

codehunter 2024. 6. 2. 00:09

이 글은 개인적은 학습한 내용을 정리하기 위한 글이다.

 

https://www.youtube.com/watch?v=Yq0xJaZs7t8&list=UULFBNpDgpRv0nRJvpmxcbk4mQ&index=13

 

멀티 컨트롤넷 사용법

이다혜님의 제로투 포즈인데 영상에 쓰인 정확한 이미지가 없어 동영상 캡처했다.

 

일단 여자 모델을 하나 생성하자. 

 

저 이미지를 위의 이다혜님의 제로투 포즈로 바꿔보자.

이다혜 이미지 좌측하단의 남성도 포즈 계산이 되면서 생성된 이미지에 영향을 미쳤다. 편집에 들어가서 왼쪽 하단에 보면 포즈 생성에 사용된 사람들 리스트가 있는데 불필요한 포즈가 나온 포즈를 선택해서 삭제해준다.

 

다시 생성해보면 좌측 하단의 사람은 사라졌는데 포즈가 영 어색하다. 이다혜의 포즈에서는 치마에 가려진 모습때문에 제대로 포즈 추출이 안된상태라 팔만 머리 뒤에서 깍지 낀 포즈만 제대로 나왔다. 

 

이럴땐 두번째 Multi ControlNet을 사용하면 좋다고 함. 두번째 컨트롤넷 유닛1을 선택하고 똑같이 이다혜 포즈를 넣어준다. 그리고 openpose가 아니라 외곽선을 추출해주는 콘트롤을 선택한다. canny edge 같은 경우는 노이즈가 많이 생기기 때문에 Threshold를 적절하게 변경을 해 주어야 한다고 함. SoftEdge 같은 경우를 많이 선택하는데 그래도 쓸데 없는 이미지가 생성되기 때문에 편집에서 적절히 편집해주어야 한다.

 

소프트 엣지에 관한 설명은 여기를 참조하면 된다.

 

편집한 이미지

 

얼굴이 깨질걸 대비해서 A디테일러를 켜고 생성해본다. 얼굴 보정이 과하면 빼고 진행한다.

 

이렇게 2가지 이상의 콘트롤넷을 섞어서 쓸수가 있다.

 

해상도가 낮은걸 확인해보고 해상도를 올리려면 이미지를 기타탭으로 보내고 크기를 2로 하게 되면 2배로 이미지 해상도를 올린다. 이때 어떤 도구로 할지를 업스케일러1로 1차로만 수행할수도 있고 업스케일러2로 섞어서 작업할수도 있다. 옆에 있는 업스케일러 2가시성은 가중치값이다.

 

소프트 엣지의 성능의 관한 글은 위의 링크에서 자세히 살펴볼수 있고 여기서 요약을 하자면 SoftEdge_PIDI 를 주로 썼는데 사전처리기의 비교성능은 아래와 같다고 함.

 

견고성: SoftEdge_PIDI_safe > SoftEdge_HED_safe >> SoftEdge_PIDI > SoftEdge_HED 순으로 좋고

최대 결과 품질: SoftEdge_HED > SoftEdge_PIDI > SoftEdge_HED_safe > SoftEdge_PIDI_safe 순으로 좋다고 함

장단점을 고려하여 기본적으로 SoftEdge_PIDI를 사용하는 것이 좋습니다. 대부분의 경우 매우 잘 작동합니다.

 

이렇게 업스케일까지 해봤고 Edge가 아닌 Depth로도 한번 해보자.

컨트롤넷 유닛 0에서 OpenPose는 그대로 두고 컨트롤넷 유닛1을 Depth를 선택한다.

 

미리보기를 실행해보면 (사전처리기와 모델 사이에 있는 빨간색 별모양) 이미지가 가까이 있는것은 하얀색, 멀리 있는것은 어두운 검정색 순으로 처리되어 있는걸 볼수 있다. 이미지의 원근감을 표현할때 사용하는 것이다.

 

일단 아무 프롬프트 없이 먼저 실행해보면 사전처리기 depth_midas 기준으로는 잘 나오는걸 볼 수 있다.

 

depth_leres로 바꾸고 생성해도 비교적 잘 나오는걸 볼 수 있다.

 

영상에서는 모델위치가 좀 위에 있어서 다리를 생성했다고 하는데 난 특별히 위치를 조정하지 않았는데도 다리를 생성하지는 않았다. 복불복인가?

 

암튼 컨트롤넷에서 openpose 만으로 포즈의 일관성을 유지 하기 어려울때 다른 컨트롤넷을 한개 이상 사용하는 멀티 컨트롤넷을 사용하면 어느정도 그 부분을 해결할 수 있다.

 

또한 사람말고 동물들을 edge를 이용해서 외곽선을 추출할때 canny edge 같은 경우는 노이즈가 많은데 그걸 역 이용해서 오히려 털의 세세한 모양까지 추출한다고 함

 

사전처리기를 canny로 바꾸게 되면 Low Threshold와 High Threshold 라는 항목이 생긴다. 이 값을 조정함에 따라 노이즈 정도가 차이가 난다고 함. (저해상도 이미지를 캡쳐해서 썼더니 노이즈가 많이 안생김)

 

scribble 같은 경우는 이미지를 대충 그린 낙서 같은 이미지로 변경해서 디테일함은 오히려 AI한테 맡기고 대략적인 외곽선의 느낌으로 파생 이미지를 뽑을때 사용하면 좋을거 같다.

 

또한 scribble 는 캔버스 기능이 있어서 낙서 그림을 직접 그려서 이미지를 생성하는 기능이다.

 

이번엔 프롬프트를 좀 넣어서 생성해 봤다.

 

체크포인트는 henmixrealV10

 

프롬프트는

best quality, (photorealistic:1.4), (RAW photo, best quality), (realistic, photo-realistic:1.3), masterpiece, hamburger

 

네거티브는 빼고

 

사람을 기본으로 하는 체크포인트인데도 햄버거가 잘 나오는걸 볼 수 있다.

 

현재 툴상으로는 컨트롤넷이 0~2까지 3개가 있는데 설정 > 좌측 컨트롤넷 > ControlNet Unit Number에 보면 갯수가 3으로 나와 있어서 그런것인데 최대 10개까지 넣을수 있다. 하지만 갯수가 많아지는만큼 이미지 생성속도는 떨어지게 된다.

 

정리글로 영상에서는 깃허브의 설명란을 정독해볼것을 추천한다.