얼굴 복원 모델은 손상된 인물 사진을 선명하게 만들어주지만, 그 과정에서 사진 속 사람의 얼굴을 조용히 바꿔놓기도 합니다. 실용적인 출발점으로는 자연스러운 정리를 원할 때 GFPGAN이 무난하고, 인물의 동일성을 더 세밀하게 조절해야 한다면 CodeFormer가 유리합니다. 2026년에 발표된 연구들은 참조 이미지 기반, 디퓨전 기반, 엣지 디바이스 친화형 복원기로 나아가고 있지만, 아직은 두 기존 구현을 그대로 대체할 수준의 즉시 사용 가능한 선택지는 아닙니다.
모델 이름보다 사진의 손상 유형부터 보자
얼굴 복원은 일반적인 업스케일링과 다릅니다. 초해상도 모델이 이미지 전체를 확대하면서 사라진 질감을 추정한다면, 블라인드 얼굴 복원 모델은 학습된 얼굴 사전 지식까지 활용해 더 이상 남아 있지 않을 수 있는 눈, 피부, 머리카락과 같은 특징을 재구성합니다. 덕분에 결과는 더 그럴듯해지지만, 원래 인물과 다른 얼굴이 만들어질 위험도 생깁니다.
| 입력 또는 목표 | 먼저 사용해볼 모델 | 이유 | 가장 먼저 확인할 점 |
|---|---|---|---|
| 특징이 알아볼 수 있고 약간 흐린 인물 사진 | GFPGAN | 공식 비교 자료에서 v1.3은 비교적 품질이 높은 입력에 자연스럽게 사용할 수 있다고 설명합니다 | 점이나 머리카락 질감은 유지하면서 피부만 깔끔해졌는가? |
| 얼굴이 매우 작거나 심하게 손상된 경우 | CodeFormer | w 값으로 재구성을 얼마나 받아들일지 조절할 수 있습니다 | 새로 만들어진 눈과 입이 여전히 원래 인물의 것처럼 보이는가? |
| 실존 인물이며 닮은 정도가 가장 중요한 경우 | 더 높은 w 값의 CodeFormer | 일반적으로 w가 높을수록 입력 이미지에 대한 충실도가 높아집니다 | 새로 만들어진 얼굴보다 흐릿한 원본을 남기는 편이 낫지 않은가? |
| 얼굴과 배경이 함께 손상된 경우 | 배경 향상을 켠 CodeFormer 또는 별도의 전체 이미지 업스케일러 | CodeFormer는 얼굴이 아닌 영역을 Real-ESRGAN에 맡길 수 있습니다 | 얼굴과 배경의 경계, 그리고 머리카락이 자연스럽게 이어지는가? |
| 전용 얼굴 복원보다 이미지 전체 확대가 필요한 경우 | Real-ESRGAN | 기본적으로 전체 이미지를 복원하고 확대하는 모델이며, 선택적으로 얼굴 향상을 적용할 수 있습니다 | 얼굴 향상이 유용한 원본 질감까지 덮어쓰지는 않는가? |
| 모바일 또는 임베디드 환경에서 실시간 추론이 필요한 경우 | CFRNet 주목 | 개발진은 256×256 소비자용 NPU를 목표로 합니다 | 공개되어 있고 지원되는 체크포인트가 실제로 있는가? |
신중하게 작업하려면 손대지 않은 원본을 보관하고 복사본을 복원한 뒤, 확대된 결과를 평가하기 전에 얼굴을 100% 배율로 비교하는 것이 좋습니다.
이 간단한 선택표만으로는 부족한 경우
약한 흐림이나 작은 결함이 있는 AI 생성 얼굴이라면, 큰 폭의 재구성 없이 정리하는 것이 목표일 때 GFPGAN부터 시도해보세요. 얼굴이 뒤틀렸거나 매우 작거나 심하게 손상됐다면 CodeFormer가 더 유용한 첫 실험이 될 가능성이 큽니다. 충실도 설정을 통해 복원과 원본 보존 사이의 선택을 눈으로 확인할 수 있기 때문입니다.
스캔 이미지 전체에 퍼진 긁힘이나 색바램은 별도의 문제입니다. GFPGAN과 CodeFormer는 얼굴에 초점을 맞추므로 얼굴과 배경을 나눠 처리한 다음 헤어라인, 안경, 합성된 질감을 따로 확인해야 합니다. 얼굴이 여러 개이거나 액세서리가 특이한 경우에는 사용 중인 래퍼가 지원한다면 정렬된 얼굴 또는 중앙 얼굴 옵션을 활용하세요.
더 선명해졌다고 해서 이를 “복원된 증거”라고 부르면 안 됩니다. 원본에서 픽셀이 사라진 부분은 복원기가 그럴듯한 얼굴을 추정해 채운 것입니다. 가족 기록 사진에서도 중요한 구분이며, 법률·저널리즘·신원 확인과 관련된 작업에서는 특히 주의해야 합니다.
GFPGAN, CodeFormer, 2026년 연구는 완성도가 서로 다르다
GFPGAN과 CodeFormer는 정식으로 공개된 오픈소스 연구 구현입니다. 공식 GFPGAN 저장소에는 Python 3.7 이상, PyTorch 1.7 이상, 사전 학습 가중치와 명령줄 추론 방법이 안내되어 있습니다. CodeFormer 저장소에는 로컬 추론, 전체 이미지 및 동영상 모드, 0부터 1까지 조절하는 충실도 가중치가 문서화되어 있습니다.
아래의 2026년 프로젝트들은 동등한 호스팅 제품이라기보다 연구 방향을 보여주는 사례에 가깝습니다. 연결된 논문 자료만으로는 다운로드 가능한 작업 흐름, 운영용 API, 명확한 라이선스, 예측 가능한 과금 체계를 모두 갖췄다고 보기 어렵습니다.
| 프로젝트 | 새로운 점 | 논문에 제시된 근거 | 현재 시점의 해석 |
|---|---|---|---|
| CFRNet | 고정점 연산자로 학습한 2.0M 파라미터 ResNet 계열 복원기 | HiSilicon Hi3402 NPU에서 INT8 사이클당 23 ms, 300장 테스트 세트 | 2026년 6월 5일 제출됨. 검증된 GFPGAN 대체재는 아님 |
| HDRFace | 손상된 입력과 중간 복원 결과에서 고차원 표현을 추출 | SD V2.1-base와 Qwen-Image로 구현 | 2026년 5월 14일 제출됨. 원문에는 호스팅 API나 가격 정보가 없음 |
| IConFace | 동일 인물의 참조 이미지 최대 세 장을 선택적으로 조건으로 사용 | 참조 이미지 호환성과 사람이 검수한 동일성 벤치마크에서 선도적인 결과를 보고 | 2026년 8월 5일 수정됨. 유망한 참조 이미지 작업 흐름이지만 기존 모델을 바로 대체하는 기준선은 아님 |
GFPGAN의 장점과 얼굴이 달라지는 지점
GFPGAN은 사전 학습된 생성형 얼굴 사전 지식을 사용해 손상된 얼굴을 복원합니다. 공개된 방법론에는 StyleGAN2 기반 사전 지식도 포함됩니다. 공식 README는 v1.3이 더 자연스러운 결과를 내고 매우 낮은 품질의 입력을 더 잘 처리한다고 설명하면서, v1.3이 항상 v1.2보다 좋은 것은 아니며 인물의 동일성을 약간 바꿀 수 있다고 경고합니다. GFPGAN의 라이선스는 Apache License 2.0입니다.
공식 버전 비교는 수치 벤치마크가 아니라 정성적 비교입니다. v1.2는 더 선명하지만 간혹 부자연스럽고, v1.3은 더 자연스럽지만 선명도가 높지는 않다고 설명합니다. 따라서 원본 얼굴의 전체적인 형태가 맞는 경우 GFPGAN은 합리적인 첫 시도입니다. 다만 CodeFormer처럼 동일성과 재구성 사이를 명시적으로 조절하는 다이얼은 제공하지 않습니다.
CodeFormer의 충실도 가중치가 실제로 조절하는 것
CodeFormer는 블라인드 얼굴 복원을 위해 코드북 조회 트랜스포머를 사용합니다. 핵심 조절 항목은 충실도 가중치 w이며, 문서상 범위는 [0, 1]입니다. 개발진은 w가 작을수록 일반적으로 더 품질이 좋아 보이는 결과가 나오고, 클수록 입력 이미지의 인물 동일성과 내용에 대한 충실도가 높아진다고 설명합니다.
w는 품질 슬라이더가 아니라 선택의 균형점입니다. 값이 낮으면 세부 묘사를 새로 만들어 더 깔끔한 얼굴을 만들 수 있고, 값이 높으면 원본을 더 충실하게 보존하는 대신 흐림, 압축 손상과 같은 문제가 그대로 보일 수 있습니다. CodeFormer의 전체 이미지 경로는 복원한 얼굴을 장면에 다시 합성하는데, README는 이 과정에서 얼굴과 배경의 경계에 있는 머리카락 질감이 손상될 수 있다고 경고합니다.
CodeFormer는 NTU S-Lab License 1.0을 적용합니다. 호스팅 엔드포인트와 저장소의 조건이 같을 것이라고 가정하지 말고, 재배포나 상업적 통합 전에 라이선스를 확인하세요.
공개 벤치마크가 말해주는 범위
공개된 유용한 근거는 있지만, 모든 모델과 손상 유형을 아우르는 2026년 통합 정면 비교 순위표가 있는 것은 아닙니다. 반복 디퓨전 복원을 다룬 2023년 ICCV 논문은 CelebA-HQ에서 다른 기준 모델들과 함께 GFPGAN과 CodeFormer를 평가했습니다.
한 합성 손상 표에서 논문은 다음 수치를 제시했습니다.
| 모델 | PSNR | ArcFace 동일성 점수 |
|---|---|---|
| GFPGAN | 26.95 | 0.59 |
| CodeFormer | 25.70 | 0.75 |
| 논문 제안 방법인 IDM | 27.42 | 0.87 |
이 수치는 특정 프로토콜에 따른 결과일 뿐, 2026년의 보편적인 순위를 뜻하지 않습니다. 같은 논문도 자체 데이터 세트, 손상 생성 과정, 구현과 평가 방식을 사용했습니다. 최신 복원기가 왜 진정성에 초점을 맞추는지 이해하는 데는 도움이 되지만, 특정 가족 사진에서 어떤 모델이 가장 좋은 결과를 낼지 예측해주지는 않습니다.
얼굴이 플라스틱처럼 보이지 않게 파라미터 조절하기
‘플라스틱 얼굴’ 문제는 복원 강도, 인물 동일성, 합성을 하나의 조절값으로 해결하려 할 때 생깁니다. 실제로는 서로 다른 판단입니다.
CodeFormer에서 시작하기 좋은 설정 조합
이미지나 모델을 바꾸기 전에 같은 입력을 세 가지 설정으로 처리해보세요.
w 범위 | 예상되는 결과 | 이럴 때 사용 |
|---|---|---|
0.3–0.5 | 더 적극적인 재구성과 더 많은 가상 세부 묘사 | 눈이나 입이 크게 무너졌고, 원래 인물과의 동일성도 이미 불확실한 경우 |
0.5–0.7 | 눈에 보이는 개선과 입력 충실도 사이의 절충 | 일반적인 첫 비교가 필요한 경우 |
0.8–1.0 | 원본에 더 가깝고, 원래 손상이 더 많이 남음 | 최대한의 선명도보다 닮은 정도가 중요한 경우 |
이 범위는 문서에 설명된 경향을 바탕으로 한 것이며, 모든 래퍼에서 같은 결과를 보장하지는 않습니다. CodeFormer README는 정렬된 얼굴 복원에 w=0.5, 전체 이미지 향상에 w=0.7, 예시 동영상 명령에 w=1.0을 사용합니다.
결과가 밀랍 가면처럼 보인다면 먼저 더 높은 w 값을 비교해보세요. 호스트에서 지원한다면 얼굴 표시 강도나 블렌드를 낮추고, 원본 주변부가 더 많이 포함된 크롭도 시도할 수 있습니다. 복원된 크롭이 선명하더라도 원본 질감을 일부 다시 섞으면 얼굴이 화면에 붙여놓은 것처럼 보이는 느낌을 줄일 수 있습니다.
처리 결과를 비교할 때 확인할 항목
- 동일성: 눈 사이 간격, 코 너비, 입 모양, 얼굴 윤곽, 특징적인 점이나 흔적.
- 질감: 모공, 주근깨, 수염 자국, 머리카락 가닥, 필름 그레인.
- 액세서리: 안경, 귀걸이, 모자, 얼굴을 가로지르는 머리카락.
- 장면과의 통합: 조명, 색상, 그레인, 얼굴과 배경의 경계.
- 반복성: 두 번째 처리에서 얼굴이 다시 바뀌지는 않는가.
GFPGAN은 같은 w 다이얼을 제공하지 않습니다. 모델 버전과 표시/블렌드 조절 기능을 보수적으로 사용하세요. 공식 저장소는 v1.3을 두 번 실행할 수 있다고 설명하지만, 반복 복원은 어디까지나 실험으로 다루는 편이 좋습니다. 두 번째 처리에서 동일성이나 질감이 달라진다면 첫 번째 결과를 유지하세요.
로컬 실행: 강력한 제어권과 오래된 의존성
로컬 추론을 사용하면 이미지가 내 컴퓨터 밖으로 나가지 않습니다. 대신 Python, PyTorch, 모델 가중치, CUDA, 얼굴 검출 패키지와 파일 권한을 직접 관리해야 합니다.
GFPGAN 로컬 실행
공식 저장소에는 별도의 CUDA 확장이 필요하지 않은 간단한 설치 방법이 안내되어 있습니다.
git clone https://github.com/TencentARC/GFPGAN.git
cd GFPGAN
pip install basicsr
pip install facexlib
pip install -r requirements.txt
python setup.py develop
wget https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth \
-P experiments/pretrained_models
python inference_gfpgan.py -i inputs/whole_imgs -o results -v 1.3 -s 2
README에는 Python >=3.7과 PyTorch >=1.7이 필요하다고 적혀 있습니다. NVIDIA GPU와 CUDA는 문서화된 설치 과정에서 선택 사항입니다. 이 명령은 폴더 입력, 최종 배율, 배경 업샘플링, 중앙 얼굴만 처리하는 옵션, 정렬된 얼굴 처리, 확장자 자동 인식을 지원합니다.
CodeFormer 로컬 실행
CodeFormer의 공식 환경 구성은 조금 더 복잡합니다.
git clone https://github.com/sczhou/CodeFormer
cd CodeFormer
conda create -n codeformer python=3.8 -y
conda activate codeformer
pip3 install -r requirements.txt
python basicsr/setup.py develop
python scripts/download_pretrained_models.py facelib
python scripts/download_pretrained_models.py CodeFormer
저장소에는 PyTorch >=1.7.1과 CUDA >=10.1이 필요하다고 나와 있습니다. dlib은 검출기와 얼굴 크롭 경로에서 선택적으로 사용되며, 문서에 소개된 Windows 및 Mac 동영상 작업 흐름에는 FFmpeg가 필요합니다.
512×512 정렬 얼굴을 처리하는 공식 예시는 다음과 같습니다.
python inference_codeformer.py -w 0.5 --has_aligned \
--input_path inputs/cropped_faces
전체 이미지 향상에는 README에서 -w 0.7을 사용하며, 선택적으로 --bg_upsampler realesrgan과 --face_upsample을 추가합니다. 저장소는 신뢰할 수 있는 VRAM, 처리량, 지연 시간 요구사항을 공개하지 않았으므로 특정 최소 하드웨어를 단정하기보다 실제 사용할 환경에서 직접 테스트해야 합니다.
API 비용과 통합 방식
호스팅 추론은 프로토타입을 만들기 쉽지만, 가격과 라이선스는 별도로 판단해야 합니다.
시점이 명시된 호스팅 비용표
공식 GFPGAN Replicate 페이지, CodeFormer Replicate 페이지, Real-ESRGAN Replicate 페이지에는 대략적인 비용이 표시되어 있습니다. 가격은 2026년 9월 1일에 확인했습니다. 두 얼굴 모델은 Nvidia L40S에서 일반적으로 3초 안에 완료된다고 안내하지만, 실제 추정치는 입력에 따라 달라집니다.
| 호스팅 모델 | 표시 비용 | $1당 대략적인 실행 횟수 |
|---|---|---|
tencentarc/gfpgan | $0.0020/run | 500 |
sczhou/codeformer | $0.0028/run | 357 |
nightmareai/real-esrgan | $0.0020/output image | 500 |
CodeFormer Replicate 페이지에는 해당 API 버전을 상업적으로 사용할 수 없다고 명시되어 있습니다. 이는 해당 호스팅 배포에 적용되는 내용이므로, 다른 제공업체를 이용한다면 그곳의 약관을 별도로 확인해야 합니다.
fal CodeFormer API 문서는 해당 엔드포인트를 상업적 사용 가능으로 표시하고 있습니다. 또한 기본값이 0.5인 fidelity, 기본값이 2인 upscale_factor, 선택적 얼굴 업스케일링, 정렬, 중앙 얼굴 선택, 시드 값을 제공합니다. 가격은 공개하지 않으므로 fal의 비용을 Replicate의 추정치로 유추해서는 안 됩니다.
간단한 호스팅 API 작업 흐름
fal 문서에는 JavaScript 클라이언트를 사용하는 작업 흐름이 소개되어 있습니다.
import { fal } from "@fal-ai/client";
const result = await fal.subscribe("fal-ai/codeformer", {
input: {
image_url: "https://example.com/input.jpg",
fidelity: 0.7,
upscale_factor: 2,
face_upscale: true
},
logs: true
});
console.log(result.data);
오래 걸리는 작업을 위해 같은 문서에서 큐 제출, 상태 확인, 결과 조회, 웹훅 콜백도 제공합니다. FAL_KEY나 이에 준하는 제공업체 키는 브라우저나 모바일 코드가 아니라 서버에 보관하세요.
실제 사용자들이 여전히 겪는 문제
수집된 사용자 스레드, 설치 사례, 업스케일링 오류 보고를 보면, 얼굴은 보기 좋아졌지만 더 이상 같은 사람처럼 보이지 않는 문제와 로컬 통합 오류가 반복해서 언급됩니다. 이는 통제된 벤치마크가 아니라 실제 작업 과정에서 나온 보고입니다.
“CodeFormer는 얼굴을 고친다기보다 새로운 얼굴을 ‘만들어내는’ 경향이 있는 것 같습니다.” — u/TheMemo, r/StableDiffusion
실무적으로 얻을 수 있는 교훈은 간단합니다. 대표적인 얼굴 샘플로 결과를 비교하고, 배치 파이프라인을 운영한다면 실행 환경을 고정하세요.
FAQ: GFPGAN과 CodeFormer 얼굴 복원
오래된 사진에는 GFPGAN과 CodeFormer 중 어느 쪽이 더 좋은가요?
일반적인 기준으로는 얼굴을 알아볼 수 있고 자연스러운 정리가 목표라면 GFPGAN부터 시작하고, 손상이 심하거나 닮은 정도를 조절하는 일이 더 중요하다면 CodeFormer를 사용하세요.
동일성을 보존하려면 CodeFormer의 충실도 값을 얼마로 설정해야 하나요?
w 값이 높을수록 입력 이미지에 대한 충실도를 우선하고, 낮을수록 더 깔끔하지만 더 많이 만들어낸 결과를 선호합니다. 0.5, 0.7, 0.9를 비교한 뒤 눈이 가장 선명한 결과가 아니라 특징적인 요소를 가장 잘 보존한 결과를 선택하세요.
업스케일링 전에 복원해야 하나요?
실용적인 작업 흐름으로는 복사본의 얼굴을 먼저 복원한 다음 완성된 이미지를 업스케일링하는 방식부터 시작하는 것이 좋습니다. Real-ESRGAN에 얼굴 향상을 함께 적용하는 작업 흐름은 예외가 될 수 있지만, 이 경우에도 인물 동일성과 얼굴·배경 경계를 확인해야 합니다.
완전히 흐려진 세부 정보를 이 모델들이 되살릴 수 있나요?
처음부터 기록되지 않은 정보를 어떤 모델도 안정적으로 복원할 수는 없습니다. GFPGAN과 CodeFormer는 그럴듯한 얼굴 세부 정보를 생성할 수 있으므로, 눈이나 입이 선명해졌다고 해서 원본의 세부 정보가 실제로 복구됐다는 뜻은 아닙니다.
2026년 모델들은 GFPGAN이나 CodeFormer를 대체할 준비가 되었나요?
연결된 논문들은 엣지 배포, 고차원 조건 부여, 동일 인물 참조 이미지 활용 등 중요한 방향을 보여줍니다. 하지만 아직 기존 모델과 같은 수준의 로컬 및 호스팅 작업 문서를 갖춘 폭넓은 대체재가 나온 것은 아닙니다.
CodeFormer Replicate API를 상업적으로 사용할 수 있나요?
CodeFormer Replicate 페이지에는 해당 API 버전을 상업적으로 사용할 수 없다고 적혀 있습니다. 원본 저장소에는 별도의 NTU S-Lab License 1.0이 적용되며, 다른 제공업체는 다른 조건을 제시할 수 있습니다.
결국 선택의 핵심은 생성과 제어 사이의 균형이다
대표적인 크롭 세 장을 골라보세요. 약한 흐림, 심한 흐림, 긁힘이 있는 저해상도 인물 사진이면 충분합니다. GFPGAN과 CodeFormer를 w=0.5, 0.7, 0.9로 실행하고, 모든 결과 옆에 원본을 함께 놓은 뒤 인물 식별에 중요한 특징이 바뀐 결과는 제외하세요. 배경까지 복원이 필요하다면 전체 이미지 확대는 별도의 업스케일러에 맡기는 편이 좋습니다.
다음 단계로는 Real-ESRGAN 다운로드 및 GUI 가이드와 무료 AI 동영상 업스케일러 가이드를 참고해보세요.