이미지 인페인팅은 사진에서 지우거나 망가진 부분을 주변 픽셀을 보고 그럴듯하게 다시 채우는 기술로, 사람이 도장 툴로 한 땀씩 하던 일을 알고리즘이 대신한다. 원치 않는 물체 지우기, 낡은 사진의 금·스크래치 복원, 마스크로 고른 부분만 프롬프트대로 바꾸는 편집에 쓴다.
| 방식 | 채우는 법 | 잘 맞는 일 |
|---|---|---|
| 확산 기반 | 가장자리 색을 안쪽으로 번지게 함 | 작은 흠집, 날짜 자국 |
| 예제 기반 | 비슷한 조각을 찾아 복사해 넣음 | 반복 무늬, 배경 질감 |
| 딥러닝·디퓨전 | 이미지 의미를 이해하고 새로 그림 | 넓은 영역, 얼굴, 프롬프트 편집 |
작은 흠집이라면 OpenCV에 들어 있는 인페인팅 함수로 코드 몇 줄이면 된다. 다만 전통 방식은 이미지 내용을 이해하지 못해서, 넓게 지우면 뿌옇게 번지고 얼굴 절반이 가려졌을 때 눈·코를 새로 그리지는 못한다. 이런 경우에는 신경망 모델을 써야 한다.
요즘 가장 흔히 쓰는 곳은 Stable Diffusion, FLUX 같은 이미지 생성 모델의 편집 기능이다. Hugging Face Diffusers의 인페인팅 파이프라인에 원본과 마스크를 함께 넘기면, 마스크의 흰 영역만 프롬프트대로 다시 그리고 검은 영역은 그대로 둔다. ComfyUI에서는 같은 과정을 노드로 엮어 폴더 단위 배치 처리도 만들 수 있다.
| 상황 | 이렇게 한다 |
|---|---|
| 배경은 두고 소파만 바꾸기 | image-to-image 대신 인페인팅 |
| 마스크가 작아 디테일이 뭉개짐 | padding_mask_crop 켜기 |
| 배경 인물 자동 제거 | 분할 모델로 마스크 생성 → 인페인팅 |
padding_mask_crop은 마스크 주변을 잘라 키워서 그린 뒤 원본에 다시 얹는다. 업스케일 파이프라인이 따로 필요 없다.
배경 인물을 지우는 파이프라인에서는 결과 품질이 마지막 인페인팅 단계에 가장 크게 좌우되므로, 모델 선택에 가장 신경 써야 한다.
넓은 영역을 채우는 자연스러운 답은 여러 개인데 평가 기준이 되는 정답은 원본 하나뿐이고, 논문은 대개 작은 고정 해상도로 평가한다. 그래서 점수가 좋은 모델도 실제 이미지에서는 실망스러울 수 있으니, 자기 데이터와 해상도로 직접 비교해 봐야 한다.
인페인팅은 원래 없던 정보를 그려 넣기 때문에 복원이 아니라 조작에 쓰일 수 있다. 사진의 맥락을 바꾸거나 실존 인물 이미지를 악의적으로 편집하는 데 악용될 수 있으므로, 제품에 넣을 때는 어떤 편집을 허용할지 정책도 함께 정해야 한다.
가장 흔한 건 지우고 싶은 곳을 브러시로 칠하는 방식이다. 칠한 영역이 곧 마스크가 되고, 나머지는 손대지 않은 채 그 부분만 채운다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| 사진 편집 앱 | 지나가는 사람·전선을 칠하면 주변 배경으로 채워 지운다 |
| 오래된 사진 복원 | 금·스크래치는 OpenCV로, 찢겨 나간 넓은 부분은 신경망으로 채운다 |
| 이미지 생성 작업 | 생성한 그림에서 손·얼굴처럼 어색한 곳만 마스크로 잡아 다시 그린다 |
| 상품·인테리어 이미지 | 배경은 그대로 두고 제품·가구만 프롬프트로 바꾼다 |