취향은 가중치에 없습니다

AI 가상 인물의 얼굴이 계속 흔들려서, 이미지 생성을 로컬로 내려 LoRA를 학습해 보기로 했습니다. 하루를 쓰고 원래 자리로 돌아왔는데 막힌 곳이 예상과 달랐습니다. 사진 품질은 오히려 통과했습니다 — 모공도 남고 손도 안 깨졌습니다. 학습이 실패한 절반은 데이터였고(14장 중 고유 이미지가 10장, 나머지는 체크섬이 같은 중복), 남은 절반이 진짜 벽이었습니다. 얼굴이 예쁘지 않았습니다. 아시아 얼굴 LoRA를 얹으면 얼굴은 올라오는데 피부가 플라스틱이 됩니다. 오픈 모델이 가진 건 능력이고, 상업 모델이 하나 더 가진 건 사람이 평가해 가르친 취향의 층입니다. 그건 가중치로 배포되지 않습니다.

2026.09.26 · 6분

긴 머리의 사람이 고개를 돌리는 사이 얼굴이 여러 겹으로 번져, 이목구비가 한 장에 고정되지 않는다.Photo: Windah Limbai · Unsplash

AI로 세운 가상 인물의 사진을 두 달째 ChatGPT로 뽑고 있었습니다. 문제는 하나였습니다. 같은 사람이 계속 같은 얼굴로 안 나옵니다. 레퍼런스 이미지를 첨부하고 같은 사람이라고 적어도, 각도와 표정이 바뀌면 얼굴이 흔들립니다.

해법은 명확해 보였습니다. 로컬로 내려서 그 얼굴로 LoRA를 학습하면 됩니다. 가중치에 얼굴을 새기면 어떤 각도에서도 같은 사람이 나옵니다. 맥에서 무료로 돌고, 프롬프트 검열도 없습니다.

하루를 썼고, 원래 자리로 돌아왔습니다. 되돌아온 이유가 예상과 달라서 적어둡니다.

로컬이 이긴 칸부터

먼저 밝혀둘 것은, 로컬이 못 한 게 아니라는 점입니다.

SDXL 실사 체크포인트 하나(RealVisXL V5.0, 6.94GB)를 받아 첫 장을 뽑았을 때 통과 기준 세 개를 다 넘겼습니다. 피부에 모공과 잔털이 남아 있고, 조명이 부드럽게 번지고, 한국인 얼굴이 가중치 조정 없이 나왔습니다. 손은 프레임 밖으로 빠졌고 글자나 로고는 하나도 안 생겼습니다.

이건 상업 서비스와 비교해서 밀리지 않는 수준입니다. 장당 40~70초에 전기값만 듭니다.

그래서 얼굴 학습으로 넘어갔습니다. 사진 14장, 1500스텝, rank 16. 두 시간 뒤에 나온 LoRA로 장소를 바꿔가며 네 장을 뽑았습니다.

넷 중 둘만 같은 사람이었습니다.

실패의 절반은 데이터였습니다

원인을 찾다가 학습 폴더의 체크섬을 확인했습니다.

37eec6bd…  3장이 완전히 같은 파일
87f2d546…  2장이 완전히 같은 파일

14장 중 고유 이미지는 10장이었습니다. 같은 파일이 세 번 들어가면 그 컷에 세 배 가중치를 준 것과 같습니다.

더 큰 문제는 남은 10장이었습니다. 원본끼리 이미 얼굴이 서로 달랐습니다. 애초에 로컬로 내려온 이유가 레퍼런스 방식은 각도가 바뀌면 얼굴이 흔들린다였는데, 그 흔들린 결과물을 그대로 학습 데이터로 넣은 것입니다.

흔들린 원본으로 학습하면 모델은 흔들린 평균을 배웁니다. 그 평균은 아무도 아닙니다.

이건 고칠 수 있는 실패입니다. 중복을 빼고 얼굴이 일치하는 것만 남겨 다시 돌리면 됩니다. 문제는 그다음에 발견한 쪽이었습니다.

얼굴이 예쁘지 않았습니다

로컬 결과물을 원본 옆에 놓고 보니, 일관성 이전에 다른 게 걸렸습니다. 얼굴이 매력적이지 않았습니다.

정확히 적으면 이렇습니다. 원본의 얼굴은 큰 눈, 또렷한 이목구비, 작은 얼굴 — 광고 모델이나 아이돌 쪽의 상입니다. 로컬 결과물은 실제로 있을 법한 평범한 얼굴이었습니다. 사진으로서는 오히려 더 정직한데, 쓰려던 용도에는 안 맞습니다.

이건 프롬프트로 좁힐 수 있는 폭이 아니었습니다. korean 같은 인종 토큰은 미학이 아니라 인구 평균을 지정합니다. supermodel, editorial beauty photography 같은 어휘로 밀어봐도 한계가 분명했습니다.

그래서 이 장르의 정석이라는 조합을 찾아봤습니다. 아시아 얼굴 전용 LoRA 세 개를 검토하고, 샘플을 직접 받아 봤습니다.

천장이 보였습니다. 얼굴은 확실히 예뻐지는데 피부가 플라스틱이 됩니다. 모공이 사라지고, 사진이 아니라 렌더링이 됩니다. 로컬이 애초에 이겼던 칸을 그 LoRA가 도로 가져갑니다.

두 칸을 동시에 못 가집니다

여기서 구조가 보였습니다.

사진 품질얼굴 미학
실사 체크포인트 단독✅❌
+ 아시아 얼굴 LoRA❌✅

둘이 서로를 상쇄합니다. 실제로 겪은 장면이 하나 있습니다. 제가 부정 프롬프트에 plastic skin, airbrushed, doll-like를 적어뒀는데, 그 LoRA가 만드는 얼굴이 정확히 그것입니다. 제가 원하는 것을 제가 직접 누르고 있었습니다.

마지막으로 img2img를 시도했습니다. 원본 이미지를 출발점으로 삼고 배경만 바꾸는 방식입니다. 변형 강도를 0.55로 두면 얼굴은 유지되는데 배경이 안 바뀌고, 0.7로 올리면 배경은 바뀌는데 얼굴도 같이 바뀝니다. 슬라이더 하나가 이미지 전체에 똑같이 걸리기 때문입니다.

세 갈래가 전부 같은 곳에서 막혔습니다.

배포되지 않는 층

그래서 무엇이 차이를 만들었나.

오픈 모델이 가진 것은 능력입니다. 빛이 어떻게 떨어지는지, 피부가 어떤 질감인지, 천이 어떻게 접히는지. 이건 가중치에 들어 있고 누구나 받아서 씁니다.

상업 모델이 하나 더 가진 것은 취향입니다. 무엇을 매력적이라고 볼지, 어떤 얼굴이 좋은 얼굴인지. 이건 사람이 결과물을 평가해서 가르친 층이고, 모델 가중치로 배포되지 않습니다. 오픈 생태계에서는 커뮤니티가 그 층을 LoRA로 메우려 하는데, 제가 본 플라스틱 얼굴이 그 대체재의 현재 수준입니다.

능력은 복제됩니다. 취향은 복제가 훨씬 더 어렵습니다.

이게 파라미터 수나 해상도 문제가 아니라는 점이 중요합니다. 다음 세대 모델로 올려도 올라가는 건 주로 앞 칸입니다.

되돌아온 자리

그래서 접었습니다. 다만 항복이 아니라 범위 조정이라고 적어두고 싶습니다.

원래 로컬로 내려간 이유는 얼굴 일관성이었습니다. 매력도는 이미 상업 모델이 주고 있었으니까요. 그런데 작업 중에 우선순위가 뒤집혔습니다. 일관성보다 매력도가 먼저라고 판단한 순간, 로컬은 애초에 풀려던 문제가 아니게 됩니다.

정리하면 이렇습니다.

  • 얼굴을 만드는 일 — 상업 모델. 여기는 취향의 층이 필요합니다
  • 만들어진 얼굴을 다루는 일 — 로컬. 업스케일, 배경 교체, 같은 얼굴 대량 변주

로컬은 두 번째에서 여전히 유효합니다. 다만 그걸 하려면 일관된 얼굴 15장을 먼저 확보해야 합니다. 제가 가진 14장은 서로 다른 사람이었고, 그게 모든 실패의 출발점이었습니다.

순서가 뒤집혀 있었던 셈입니다. 도구를 바꾸기 전에 재료를 고쳤어야 했습니다.

남는 질문

오픈 모델을 검토할 때 보통 벤치마크 점수와 파라미터 수를 봅니다. 그 숫자들은 능력을 잽니다.

하지만 쓰려는 곳에 취향의 층이 필요한 작업이라면, 그 숫자는 답을 주지 않습니다. 해상도가 두 배가 되어도 "무엇이 좋은가"는 안 따라옵니다.

그래서 요즘은 먼저 이걸 묻습니다. 이 작업에서 좋고 나쁨을 판정하는 것이 규칙인가, 취향인가.

규칙이면 오픈 모델로 내려도 됩니다. 취향이면, 하루를 아낄 수 있습니다.