P7-5.2 Mira 정면 머리 기준 만들기¶
Section ID:
P7-5.2Version:v2026.09.15
같은 인물을 다음 단계에서 다시 사용할 때는 먼저 얼굴·머리 기준을 한 장으로 고정한다. 이 절은 캐릭터 Mira의 정면 머리 기준을 만들고, 이를 바탕으로 카메라 각도가 달라진 참조 묶음을 만든다. 전신·착장·자세는 P7-5.3에서 다룬다.
Mira identity 계약을 먼저 고정한다¶
Mira는 매우 밝은 피치 피부, 부드러운 타원형 얼굴과 V자 턱선, 호박빛이 섞인 갈색 홍채, 짙은 petrol-teal의 볼륨 있는 턱 길이 단발을 가진 성인 여성 캐릭터다. Mira identity 계약 JSON은 얼굴·헤어·기본 착장만 정의하며, 자세·카메라·장면·출력 품질은 정의하지 않는다.
| 계약 필드 | Mira에 고정하는 정보 | 이 절에서 맡기지 않는 정보 |
|---|---|---|
identity_description | 피부색, 얼굴형, 코·입·눈 비율, 호박빛 갈색 홍채, 앞머리와 단발 실루엣 | 포즈, 카메라 방향, 전신 비례 |
rear_hair_identity | 뒷머리 실루엣, 목덜미 헤어라인, 머리색 | 새로운 헤어스타일 생성 |
BF16 정면 머리 생성¶
정면 머리 T2I 생성은 공식 Qwen/Qwen-Image BF16 가중치를 sequential CPU offload로 직접 호출한다. 참조 이미지를 넣지 않으므로, 이 한 장이 이후 모든 비교의 얼굴·헤어 기준이 된다.

정면 얼굴 result.json — T2I 입력 조건과 출력 기록
저장소 루트에서 다음 명령으로 입력 조건을 확인한다. 이 절의 --dry-run 명령은 생성 계획을 출력하며, 실제 GPU 생성을 하려면 --dry-run을 뺀다. 정면 머리 생성기는 실행 계획 출력 전에도 CUDA 사용 가능 여부를 확인하므로 GPU가 인식되는 환경에서 실행한다. 재실행에는 기존 결과와 구분되는 실행 이름을 사용한다.
생성기는 얼굴 일러스트 계약과 Mira identity 계약, seed·step·CFG, 완성 PNG의 해시를 result JSON에 기록한다. 기본값은 1280px·30 step·CFG 4.0이다. 조건을 바꿀 때는 정수리 여백·양쪽 눈과 귀·홍채색·단발 실루엣이 유지되는지 확인한다.
정면 생성기가 고정하는 것과 바꿀 수 있는 것¶
생성기는 identity 계약의 얼굴·헤어 설명과 rendering_contract의 정면 일러스트 지시를 합쳐 prompt를 만든다. 여기에 정면 구도 지시를 덧붙여, 정수리·양쪽 눈·귀가 프레임 안에 들어오게 한다. 캐릭터 특징은 계약이 맡고, 정면 구도는 생성기가 맡는다.
| 구현 요소 | 코드에서 하는 일 | 학습할 때 확인할 점 |
|---|---|---|
| 단일 계약 입력 | identity·화풍·일러스트 지시를 하나의 JSON에서 읽는다 | 특징이 여러 프롬프트 파일에 흩어지지 않아 수정 범위가 분명하다 |
| 고정 seed | torch.Generator에 같은 seed를 넣는다 | step·크기·CFG를 바꾼 비교에서 무작위 변동을 줄인다 |
| 결과 기록 | 입력 계약 해시, prompt, 모델, 크기, step, CFG, 출력 해시를 result JSON에 남긴다 | 좋은 한 장을 고르는 일과 같은 조건으로 다시 만드는 일을 구분할 수 있다 |
| 순차 CPU 오프로딩 | 필요한 모듈을 GPU와 CPU 사이에서 순차적으로 이동한다 | 8GB GPU에서도 실행 범위를 만들지만, 생성 시간은 늘어난다 |
--steps, --size, --cfg는 비교를 위한 조작값이다. 한 번에 하나만 바꾸고 result JSON을 남기면, 결과 차이를 모델의 무작위성보다 그 조건 변화에 더 가깝게 해석할 수 있다.
정면 기준에는 T2I 모델을 쓴다¶
Qwen/Qwen-Image는 텍스트 prompt에서 이미지를 만드는 기반 모델이다. 공식 모델 카드는 Diffusers와 BF16 실행 예시를 제공하며, 다양한 화풍의 이미지 생성을 지원한다고 설명한다. 이 절에서는 참조 이미지가 없는 정면 머리 기준을 만들 때만 사용한다. 따라서 입력 이미지의 우연한 구도나 의상 정보가 얼굴 기준에 섞이지 않는다.
모델 카드의 BF16 예시는 충분한 GPU 메모리를 전제로 한다. 이 생성기는 같은 BF16 가중치를 사용하되 sequential CPU offload를 적용한다. 이는 모델 자체의 품질 기능이 아니라, 제한된 VRAM에서 실행하기 위한 메모리 배치 전략이다. 속도와 VRAM 사용량은 서로 바꿔 얻는 조건이므로, 이 절의 1280px·30 step 결과를 모든 하드웨어에서의 권장 시간이자 품질 보증으로 해석하지 않는다.
Qwen Edit의 이미지 조건과 반복 갱신¶
P7-5.1의 T2I 흐름에 참조 이미지가 더해진다. 정면 상반신을 만들 때는 정면 머리와 상반신 확장 지시를, 카메라 참조를 만들 때는 완성한 정면 상반신과 카메라 지시를 넣는다. 두 실행 모두 QwenImageEditPlusPipeline을 사용하며, 입력 이미지는 편집할 인물의 기준을 제공한다.
flowchart TD
subgraph inputs["입력 조건"]
image["참조 이미지 · Picture 1<br/>정면 머리 또는 정면 상반신"]
prompt["편집 지시<br/>상반신 확장 또는 카메라 조건"]
settings["seed · 출력 해상도<br/>steps · guidance"]
end
subgraph pipeline["Diffusers QwenImageEditPlusPipeline"]
semantic["Qwen2.5-VL<br/>이미지와 지시를 조건 표현으로 변환"]
encode["VAE encode<br/>참조 이미지 → 이미지 latent"]
noise["생성할 이미지의 초기 latent<br/>seed에서 만든 noise"]
transformer["Qwen Image transformer<br/>조건을 보고 갱신 방향 예측"]
scheduler["FlowMatch scheduler<br/>생성할 이미지의 latent 갱신"]
decode["VAE decode<br/>완성 latent → RGB 이미지"]
end
adapters["카메라 참조 실행의 LoRA<br/>Multiple-Angles + Lightning 4-step"]
output["PNG · 실행 JSON 저장"]
review["정면 기준과 대조<br/>얼굴·헤어 · 방향 · 프레이밍"]
image --> semantic
prompt --> semantic
image --> encode
settings --> noise
settings --> scheduler
semantic --> transformer
encode --> transformer
noise --> transformer
adapters -. 가중치에 적용 .-> transformer
transformer --> scheduler
scheduler -. 다음 timestep .-> transformer
scheduler -->|반복 완료| decode
decode --> output --> review
참조 이미지는 두 경로로 처리된다. Qwen2.5-VL은 이미지와 편집 지시를 함께 읽어 조건 표현을 만들고, VAE encoder는 참조 이미지를 형태 정보를 담은 latent로 압축한다. 생성할 이미지의 초기 latent는 seed에서 만든 noise로 따로 준비한다. Transformer는 이 latent와 두 조건을 함께 받아 갱신 방향을 예측하고, scheduler는 timestep에 따라 생성할 latent를 갱신한다. 반복이 끝나면 VAE decoder가 결과를 RGB 픽셀로 바꾼다. 참조 이미지의 픽셀을 그대로 복사하는 과정은 아니므로 얼굴이나 배경도 달라질 수 있다.
도식의 LoRA 연결은 아래 카메라 참조 실행에 해당한다. Multiple-Angles와 Lightning을 transformer에 적용하고 4스텝으로 생성한다. 정면 상반신 생성은 별도의 30스텝 실행이다. BF16과 sequential CPU offload는 가중치의 수치 형식과 메모리 배치를 정하며, 이미지 조건 경로를 추가하거나 인물 보존을 보증하는 설정은 아니다. 출력 PNG는 정면 기준과 대조하고, 실제 입력·prompt·seed·크기·스텝은 실행 JSON으로 확인한다.
이 도식은 Diffusers 구현의 encode_prompt, prepare_latents, transformer 호출과 scheduler 갱신을 기준으로 재구성했다. 확인일: 2026-09-11.
Diffusers QwenImageEditPlusPipeline 구현
상반신 기준에서 15방향 카메라 참조를 만든다¶
정면 머리 기준만 회전시키면 어깨와 이너탑을 새로 추측해야 한다. 그래서 정면 머리를 참조해 어깨가 보이는 상반신 기준 한 장을 먼저 만들고, 그 이미지만 Picture 1로 넣어 카메라 조건을 바꿨다. 이 단계는 새 포즈나 새 착장을 만드는 단계가 아니라, 이후 캐릭터 시트에서 비교할 카메라 참조 묶음을 만드는 단계다.

정면 상반신 Direct V1 Python 생성기는 정면 머리 한 장과 이너탑 설명을 입력으로 사용한다. --size 1280 --steps 30 --seed 62294로 실행하며, 파이프라인에 width=1280, height=1280을 직접 전달한다. 입력 이미지 크기만 바꾸면 출력 크기는 달라질 수 있으므로, 저장 전에 실제 출력이 1280×1280인지 검사하고 result JSON에도 기록한다.
아래 15방향 표는 1280×1280 정면 상반신을 참조한 결과다. 아이레벨 +45°와 엘리베이티드 +45°는 새 1024×1024 결과로 교체했으며, 나머지 13방향은 기존 1280×1280 결과를 유지한다. 모두 4 step으로 생성했으며, 로우앵글 0°는 seed 62295, 나머지 14방향은 seed 62294를 사용했다.
Qwen/Qwen-Image-Edit-2511에 Multiple-Angles LoRA와 Lightning 4-step LoRA를 함께 적용한다. 카메라 prompt는 <sks> [azimuth] [elevation] [distance] 순서로 두며, 표의 모든 결과는 4 step으로 생성했다. 로우앵글 0°는 검수 후 시드를 1 올린 결과를 채택했으므로, 해당 컷은 카메라 조건뿐 아니라 시드도 다르다는 점을 함께 고려한다.
전체 방향의 실행 계획은 다음과 같이 확인한다. 크기·시드·스텝은 생성기의 기본값을 사용한다.
아이레벨과 엘리베이티드의 +45°만 각각 확인하려면 방향을 지정한다.
현재 생성기의 기본값은 토르소 참조·15방향·1024×1024·seed 62294·4 step이며, 실행 라벨은 native1024-v1이다. 이번에 채택한 아이레벨 +45°만 생성하려면 --vertical level --yaw plus-45를, 엘리베이티드 +45°만 생성하려면 --vertical elevated --yaw plus-45를 지정한다. 표에 유지한 기존 1280px 결과는 현재 기본 설정과 다르며, 로우앵글 0°의 채택 결과는 seed 62295를 사용했다. 실제 입력·출력 조건은 각 이미지와 짝을 이루는 result JSON에서 확인한다.
카메라 참조에는 편집 모델과 두 LoRA를 쓴다¶
상반신 기준을 변형하는 단계는 텍스트만으로 새 얼굴을 만드는 작업이 아니라, 한 장의 입력을 유지하며 카메라 조건을 바꾸는 image-to-image 작업이다. 그래서 Qwen/Qwen-Image-Edit-2511을 사용한다. 공식 모델 카드는 이전 판보다 이미지 드리프트 완화와 캐릭터 일관성을 강화했다고 설명하며, 여러 이미지와 prompt를 함께 받는 Diffusers 예시도 제공한다. 여기서는 입력을 Picture 1 한 장으로 제한해, 그 이미지가 얼굴·헤어·어깨·이너탑의 기준 역할을 하게 한다.
Multiple-Angles LoRA는 <sks> [azimuth] [elevation] [distance]라는 정해진 카메라 문법을 추가한다. 이 절은 그중 전방 반원 다섯 yaw, 로우·아이레벨·엘리베이티드 세 수직 시점, medium shot만 선택한다. LoRA가 물체의 완전한 3D 모델을 만드는 것은 아니다. 표에서 identity나 배경이 흔들리면, 그 결과는 회전된 정답이 아니라 같은 입력에 카메라 조건을 적용했을 때의 후보로 검수해야 한다.
Lightning 4-step LoRA는 긴 확산 과정을 네 step으로 줄이는 속도 중심 어댑터다. 이 원고에서는 15개 방향을 빠르게 비교하기 위한 저비용 프로필로만 쓴다. 세부 묘사나 identity가 불안정하면 step 수가 적다는 조건을 먼저 의심하고, 정면 기준과 비교해 재생성 여부를 판단한다.
| 구성 | 이 절에서의 역할 | 고정하지 않는 것 |
|---|---|---|
Qwen-Image | 참조 없이 정면 머리 기준을 생성 | 후속 카메라 회전 |
Qwen-Image-Edit-2511 | 상반신 기준을 입력으로 받아 편집 | 각도를 수치적으로 완벽히 보장하는 3D 변환 |
| Multiple-Angles LoRA | yaw·수직 시점·거리의 카메라 문법 제공 | identity·배경·프레이밍의 완전한 보존 |
| Lightning 4-step LoRA | 15방향 비교 비용을 낮춤 | 고 step 품질과 동등한 결과 |
로우앵글 −90° | 로우앵글 −45° | 로우앵글 0° | 로우앵글 +45° | 로우앵글 +90° |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
아이레벨 −90° | 아이레벨 −45° | 아이레벨 0° | 아이레벨 +45° | 아이레벨 +90° |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
엘리베이티드 −90° | 엘리베이티드 −45° | 엘리베이티드 0° | 엘리베이티드 +45° | 엘리베이티드 +90° |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
로우앵글 −90°에서는 배경이 하늘색으로 바뀌고, 엘리베이티드 −45°에서는 상반신에서 전신으로 구도가 넓어졌다. 시점 변화와 함께 생긴 배경·프레이밍 변형을 구분해 검수한다. 1280px 출력이라는 조건만으로 얼굴의 화면 내 크기나 구도 보존까지 보장되지는 않는다.
체크리스트¶
| 확인할 것 | 스스로 답할 질문 |
|---|---|
| 계약 | result JSON에 Mira identity와 일러스트 계약의 경로·해시가 남아 있는가? |
| 정면 구도 | 정수리 전체, 양쪽 눈과 귀, 목선이 잘리지 않았는가? |
| identity | 피부·얼굴형·호박빛 갈색 홍채·petrol-teal 단발이 계약과 같은 인물로 읽히는가? |
| 재현 | seed, step, CFG, 크기와 오프로딩 조건이 result JSON에 남아 있는가? |
출처와 참고 자료¶
- Qwen, Qwen-Image 모델 카드, Hugging Face, 확인일: 2026-09-05.
- Qwen, Qwen-Image-Edit-2511 모델 카드, Hugging Face, 확인일: 2026-09-05.
- fal, Qwen-Image-Edit-2511 Multiple-Angles LoRA 모델 카드, Hugging Face, 확인일: 2026-09-05.
- lightx2v, Qwen-Image-Edit-2511 Lightning 모델 카드, Hugging Face, 확인일: 2026-09-05.
- Hugging Face, Diffusers QwenImageEditPlusPipeline 소스 코드, GitHub, 확인일: 2026-09-11.














