
안녕하세요, SDmaster 입니다. 이미지 생성형 AI로 이미지를 생성할 때 마음에 들지 않는 부분이나 특정 부분만 퀄리티를 높이고 싶은 경험을 해보신 적이 많으실 겁니다.
앞서 작성한 글 중 Inpaint 기능과 비슷해보이지만 Inpaint 기능은 특정 부분을 마스크 처리해서 지운 뒤 새로운 이미지를 덧씌우는 것과 비슷하다고 한다면 Face Detailer는 간단히 말해서 특정 부분을 자동으로 식별하고 추출 후 확대한 뒤 수정하는 기능이라고 보시면 됩니다.
이번 글에서는 상당히 복잡해 보이는 'Face Detailer' node의 파라미터를 뜯어보며 하나 씩 설명해보겠습니다.
1. Automatic111 ADetailer(After Detailer) vs ComfyUI Face Detailer
Automatic111로 스테이블 디퓨전을 입문 하신분은 얼굴 수정에 사용되는 Automatic111의 ADetailer(After Detailer)확장 프로그램에 대해 잘 알고 계시거나 들어보신 적이 있을 것입니다.
이 확장 프로그램과 유사한 기능인 Face Detailer가 ComfyUI에 존재하며 Impact Pack 노드의 일부 중 하나입니다.
따라서 ComfyUI에서 ADetailer를 사용하려면 ComfyUI의 Impact Pack에서 Face Detailer 를 선택해서 사용가능 합니다.
'Impact Pack'은 ComfyUI의 Custom node중 하나이며 ComfyUI Manager을 통해 다운받을 수 있습니다.
2.Face Detailer node 뜯어보기

처음 Face Detailer node를 추가했을 때 전에 사용했던 node들과 달리 너무 많은 파라미터들이 있다고 겁먹지 않으셔도 됩니다.
node안에 있는 파라미터들을 하나하나 뜯어보며 이 복잡해보이는 Face Detailer에 대해 자세히 파헤쳐보겠습니다.
image,model,clip,vae,positive,negative에 대한 설명은 생략하겠습니다.
bbox_detector
간단히 요약하자면 우리가 특정 부분을 수정하려면 원하는 부분을 식별하고 추출해야 하는데 그중 식별하는 역할을 한다고 보시면 됩니다.
(BBox 모델은 바운딩 박스를 사용하여 요소를 식별하는 데 특화된 반면, Segm/person 모델은 마스크를 사용하여 감지합니다.)
bbox_detector든 segm_detector든 두 경우 모두 " Ultral Litic Detector Provider " node를 사용합니다. 이 node를 생성해서 연결 시켜줘야합니다.
특히 BBox Detector의 경우, 특히 bbox/face_yolov8m 및 bbox/hand_yolov8s 모델을 사용한다는 점을 유의해주 셔야 합니다. 반면 segm detector에는 segm/person_yolov8m-seg 모델이 독점적으로 사용됩니다.

bbox_detectoc만을 사용할 경우 앞서 말한 것처럼 박스형태로만 이미지를 식별하고 추출하기 때문에 아래 사진 처럼 sam_model과 segm_detector도 결합해서 같이 사용하셔야 더 디테일한 식별이 가능해집니다.
두 파라미터도 필요한 노드들이 있으며 아래 이미지에서 확인하실 수 있습니다.
추가적으로 sam_model에 대해 설명하자면 Meta AI에서 개발한 모델로 이미지에서 오브젝트의 정확한 위치와 식별이 가능하게 해줍니다. 반면 segm_detector는 오브젝트의 윤곽선을 식별하고 그려주는 역할을 합니다.

guide_size
BBX의 guide_size는 이미지의 face datailer를 바운딩 박스 형태로 얼굴 영역에 초점을 맞춰줍니다. 기본적으로 256으로 설정되어 있으므로 바운딩 박스 얼굴 영역이 256픽셀 미만인 경우 시스템이 자동으로 최소 256픽셀로 업스케일링합니다.
max_size
max_size는 자른 영역이 얼마나 커질 수 있는지에 대한 상한선을 설정합니다(이미지 프리뷰로 볼 수 있습니다).
이 상한은 영역이 너무 커져 다른 문제가 발생하는 것을 방지하기 위한 것입니다. 기본 최대 크기는 768픽셀입니다.
bbox_crop_factor
BBX 자르기 계수는 현재 3으로 설정되어 있습니다. 자르기 계수를 1.0으로 줄이면 자르기 면적이 얼굴 면적과 동일하게 작아집니다. 3으로 설정하면 자르기 영역이 얼굴 영역보다 3배 더 크다는 것을 나타냅니다.

Feather
feater 설정은 이미지 가장자리 또는 칠한 영역이 이미지의 나머지 부분과 매끄럽게 혼합되는 정도를 결정합니다. 저는 보통 5로 설정하는데, 대부분의 경우에 적합합니다. 그러나 이미지의 inpaiting 가장자리가 유난히 거칠다면 이 값을 높여보셔도 좋습니다.
Noise_mask
noise_mask를 활성화하면 모델이 마스크 영역에만 노이즈 및 노이즈 제거 작업을 집중하도록 효과적으로 지시할 수 있습니다. 이렇게 하면 경계 상자가 마스크로 변환되어 노이즈가 적용되고 이후 다듬어지는 영역을 정확하게 나타냅니다.
이 기능은 특히 segm_detector 및 sam_model로 작업할 때 중요합니다.
Force_lnpaint
force_inpain는 이미지의 특정 영역을 추가 디테일로 향상시키는 특수한 도구로 보시면됩니다.
우리는 종종 이미지에서 얼굴에 집중하는데 자동 시스템이 이미 충분히 디테일이 있는 것으로 착각하여 얼굴에 충분한 디테일을 추가하지 못하는 경우가 있습니다. 이 경우 포스 인페인트를 활용해서 추가적인 수정을 진행합니다.
force_inpaint는 이미지의 특정 영역, 특히 자동 설정으로 부족할 때 디테일을 보강하는 데 이상적이라고 볼 수 있습니다.
Drop_size
여러 얼굴이 이미지에 존재할때 특히 유용한 drop_size 설정은 10픽셀과 같이 지정된 크기보다 작은 마스크는 무시하도록 모델에 지시합니다. 이 기능은 이미지에 여러 얼굴이 존재하지만 특히 원하는 큰 얼굴에 초점을 맞춰야 하는 복잡한 이미지에서 매우 유용하게 쓰일 수 있습니다.

BBox_Threshold
bbox_threshold는 얼굴 인식 모델을 미세 조정하는 데 중요한 역할을 합니다. 낮은 수치를 선택하면 감지 프로세스가 더 관대해집니다. 임계값을 변경하면 모델이 얼굴을 인식하고 대체하는 데 필요한 식별 수준이 수정됩니다.
배경에 마스크가 있고 전경에 사람이 있는 이미지를 생각해 보세요. 모델이 마스크를 얼굴과 혼동할 수 있습니다. 이러한 경우 임계값을 높여 마스크가 아닌 명확하게 구분된 얼굴에 초점을 맞추도록 할 수 있습니다. 반대로, 군중 속에서 얼굴이 덜 뚜렷한 여러 얼굴을 대체하려면 bbox_threshold를 낮추면 덜 뚜렷한 얼굴을 식별하는 데도 이용할 수 있습니다.
BBox_Dilation
bbox_dilation을 사용하면 일반적으로 얼굴로 제한된 초기 자르기 영역을 넘어 확장시킬 수 있는 기능입니다.
확장을 늘리면 얼굴 주변의 더 많은 영역이 교체 과정에 포함됩니다. 그러나 이러한 변화는 미묘한 차이가 있는 경우가 많으므로 보다 눈에 띄는 결과를 얻으려면 dilation 계수를 조정해야하는 경우가 많습니다.

Segm/Sam
segm/sam은 기존 바운딩 박스를 보다 정밀한 마스크로 개선하여 얼굴 교체 정확도를 높입니다. 이 정밀도는 바운딩 박스가 머리카락과 겹치는 경우 머리카락을 변경하지 않고 싶을 때 특히 유용합니다. 샘 모델을 사용하면 얼굴에만 집중적으로 교체할 수 있는 장점이 있습니다.
Sam_Detection_Hint
sam_detection_hint 매우 중요한 설정입니다. 얼굴을 식별할 때 모델에 초점을 맞출 위치를 안내합니다. 중앙, 가로(한 면 또는 두 면), 세로(두 면), 직사각형 또는 다이아몬드 형태의 네 면 배열 등 여러 가지 옵션이 있으니 필요에 따라 바꿔가며 사용하실 수 있습니다.
Sam_Dilation
bbox_dilation과 마찬가지로 sam_dilation은 모델이 대체할 마스크 또는 초점 외부의 영역을 조정합니다. 이 확장을 늘리면 마스크 영역이 다시 상자 모양으로 확장됩니다.
Sam_Threshlod
93%로 높게 설정된 sam_threshold는 바운딩 박스와 같은 기능을 하지만 모델의 정밀도로 인해 더 높은 식별 수준을 요구합니다.
Sam_BBox_Expansion
이 설정은 초기 바운딩 박스를 미세 조정하여 얼굴 영역을 추가로 정의합니다. 초기 바운딩 박스가 너무 제한적일 때 박스 확장을 늘리면 모델이 얼굴을 더 많이 캡처할 수 있어 유용합니다.
Sam_Mask_Hint_Use_Negative
sam_detection_hint와 함께 작동하는 이 설정은 힌트에 반응하는 모델의 공격성을 결정합니다. 기본 설정은 0.7입니다.

엄청 복잡해 보이던 FaceDetailer node가 이제는 어느정도 이해가 되셨을 거라고 생각합니다.
이제는 이 node를 활용해 생성된 이미지를 수정할 차례입니다.
다음 글에서는 이 FaceDetailer node를 활용한 워크플로우를 뜯어보는 시간을 가져보도록 하겠습니다.
'ComfyUI > Workflow 뜯어보기' 카테고리의 다른 글
AI가 그린 어색한 손들 ComfyUI로 고쳐보기(feat.MeshGraphormer) (2) | 2024.05.22 |
---|---|
ComfyUI에서 ControlNet의 모든것(Open pose, Cany, Tile...) (0) | 2024.05.17 |
ComfyUI Face Detailer을 이용한 얼굴 보정 워크플로우 (1) | 2024.05.15 |
ComfyUI 인페인트(Inpaint)로 원하는 부분 수정하기 (0) | 2024.04.29 |
ComfyUI 기본 개념과 워크 플로우 뜯어보기 (3) | 2024.04.25 |
생성형 이미지 AI 중 스테이블 디퓨전에 관한 내용을 주로 다룹니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!