← 블로그

Z-Image-Turbo ControlNet 가이드: 정밀한 레이아웃을 위한 Depth, Canny, Pose

Depth, Canny, Pose 모드로 Z-Image-Turbo ControlNet을 마스터하세요. 각 모드의 사용 시점, 강도 설정, 그리고 스타일을 변경하면서도 구도를 유지하는 방법을 알아보세요.

7 min read
Z-Image-Turbo ControlNet 가이드: 정밀한 레이아웃을 위한 Depth, Canny, Pose

안녕하세요, 여러분. 잘 지내고 계신가요? 저는 Dora입니다. 처음으로 막대 그림 포즈로 이미지를 가이드하려 했을 때, 결과물은 마치 중고품 가게에서 탈출한 마네킹처럼 보였어요. 처참하진 않았지만… 뭔가 어색했죠. 저는 모델이 스타일을 납작하게 만들지 않으면서도 구조를 존중해 주길 원했습니다. 그래서 2026년 1월, 몇 가지 실제 작업에서 Z-Image-Turbo 안의 ControlNet을 테스트하며 오후 시간을 보냈어요. 냅킨 스케치를 깔끔한 렌더로 바꾸기, 건물의 형태 유지하기, 분위기를 잃지 않고 캐릭터 포즈 조정하기 같은 작업들이었죠. 이 가이드는 제가 첫날에 있었으면 좋았을 메모들을 정리한 것입니다. 조용하고, 실용적이며, 이것이 당신의 워크플로우에 맞는지 판단하기에 충분한 내용입니다.

ControlNet이란 무엇인가?

ControlNet은 모델이 고유한 스타일로 그림을 그리도록 허용하면서도, 엣지, 깊이, 인체 포즈 같은 구조적 힌트로 이미지 모델을 조종하는 방법입니다. 프롬프트를 더 강하게 밀어붙이거나 부정적 토큰을 쌓는 대신, 장면의 골격을 담은 별도의 “제어” 이미지를 입력합니다. 그러면 모델이 구조와 스타일을 혼합하는데, 이상적으로는 씨름이 훨씬 줄어들죠.

구조와 스타일의 분리

실제로 저는 이렇게 생각합니다:

  • 프롬프트와 모델 체크포인트는 스타일(조명, 텍스처, 분위기)을 담당합니다.
  • ControlNet은 구조(구도, 윤곽, 공간적 관계, 포즈)를 담당합니다.

이 두 가지가 각자의 역할을 유지할 때, 불쾌한 결과가 훨씬 줄어듭니다. 프롬프트 꼼수로 구조를 억지로 강요하려 하면, 보통 이상한 비율이나 반복 과정에서의 드리프트로 대가를 치르게 됩니다.

제어 모드의 작동 방식

각 모드는 입력에서 서로 다른 맵을 추출합니다:

  • Depth(깊이) 모드는 3D 거리를 추정합니다. 모델에게 전경과 배경의 감각을 줍니다.
  • Canny(엣지) 모드는 깔끔한 엣지를 추출합니다. 직접적이지만 신뢰할 수 있습니다.
  • Pose(포즈) 모드는 인체 키포인트와 골격을 찾습니다. 동작이나 프레임 간 일관성에 탁월합니다.

Z-Image-Turbo(2026년 1월 테스트 기준)는 이것들을 요청별로 토글할 수 있는 ControlNet 모드로 제공합니다. 플랫폼마다 이름이 다를 수 있지만 개념은 동일합니다. 공식 내용이 필요하다면, ControlNet 논문Stable Diffusion AUTOMATIC1111 ControlNet 문서가 최고의 출발점입니다.

세 가지 제어 모드 설명

Depth 모드: 3D 공간 관계

Depth 모드는 거리가 중요한 장면에 적합합니다. 건축, 인테리어, 풍경, “이 물체가 저 물체 앞에 있다”는 관계가 유지되어야 하는 모든 것에요. 제 테스트에서 depth는 텍스처와 색상 변화에는 관대했지만 카메라 거리와 큰 형태는 보호했습니다. 깊이 맵을 바꾸지 않고 다른 렌즈 느낌(더 넓은 시야각)을 요청했을 때 저항했는데, 오히려 마음에 들었어요.

현장 메모: 소스 이미지에 어색한 원근감이 있으면 depth가 그것을 기꺼이 유지합니다. 참조 사진이 기울어져 있으면 결과도 기울어집니다. 원근감을 먼저 수정하는 법을 배웠어요.

Canny 모드: 엣지 감지

Canny는 세 모드 중 가장 깔끔합니다. 엣지를 추출하고 내부 텍스처는 무시합니다. 연필 스케치나 와이어프레임이 있을 때 모델이 글자 그대로 선 안에 머물기를 원할 때 사용했습니다. 타이포그래피 블록, 로고, 제품 윤곽을 depth보다 잘 유지했어요. 하지만 취약할 수 있습니다: 강도를 너무 높이면 스타일이 납작해지거나 엣지 주변에 색상 밴딩이 생길 수 있습니다.

현장 메모: 낮은 대비의 엣지는 canny 맵에서 사라지기도 합니다. 스케치를 보내기 전에 대비를 높이기 시작했어요. 작은 변화지만 놀랍도록 효과가 있었습니다.

Pose 모드: 인체 키포인트

Pose 모드는 관절과 사지 위치를 매핑합니다. 얼굴 유사성보다는 신체 리듬, 즉 손의 위치, 무릎의 굽힘, 어깨의 기울기에 관한 것입니다. 스토리보드의 캐릭터 비트를 모형으로 만들 때, pose 덕분에 의상, 조명, 분위기를 바꾸면서도 동작을 읽기 쉽게 유지할 수 있었습니다.

현장 메모: 손이 개선되었지만 포즈의 한계 내에서만요. 골격이 다섯 개의 짧은 손가락이 뭉쳐 있다고 제안하면, 모델은 우아한 손을 만들어 내지 않습니다. Pose는 의도를 보존할 뿐, 해부학적 문제를 스스로 고치지는 않습니다.

각 모드의 사용 시기

Depth: 건축, 풍경

  • 카메라 위치와 스케일이 중요할 때 사용하세요.
  • 적합한 경우: 건물, 인테리어, 환경 속 제품 사진.
  • 정밀한 선작업만 필요할 때는 건너뛰세요: depth는 정교한 로고에 너무 부드러울 수 있습니다.

제가 본 것: depth는 조명 배치를 미묘하게 안내했습니다. 깊이 맵에서 벽이 더 가까이 있으면, 모델은 빛이 그 위에 떨어지는 방식을 존중했어요. 프롬프트에서 조명을 과도하게 지정할 필요가 없었습니다.

Canny: 스케치, 정밀한 형태

  • 깔끔한 실루엣과 신뢰할 수 있는 정렬이 필요할 때 사용하세요.
  • 적합한 경우: UI 목업, 패키징, 선화를 컬러로 변환.
  • 주의할 점: 강도가 너무 높으면 과도하게 제약된 스타일과 평평한 음영.

제가 본 것: canny는 다른 어떤 모드보다 텍스트 박스와 아이콘 간격을 잘 보존했습니다. AI로 최종 텍스트를 설정하진 않겠지만, 레이아웃 아이디에이션에서는 마찰을 크게 줄여줬습니다.

Pose: 캐릭터, 액션 장면

  • 정확한 얼굴보다 바디 랭귀지가 더 중요할 때 사용하세요.
  • 적합한 경우: 키프레임, 만화, 패션 포즈.
  • 적합하지 않은 경우: 얼굴 참조 워크플로우 없이 특정 인물의 엄격한 유사성.

제가 본 것: pose가 멀티 샷 시퀀스를 안정화했습니다. 같은 액션 비트를 유지하면서 다양한 배경과 팔레트를 탐색할 수 있었어요. 정신적 부담이 훨씬 줄었습니다.

API 구현

저는 2026년 1월 말에 모드별로 약 30개의 요청으로 Z-Image-Turbo ControlNet 엔드포인트를 테스트했습니다. 빠르고 일관성 있게 유지하기 위해 입력을 작게(768px) 유지했습니다.

모드 파라미터 선택

대부분의 API는 다음과 같은 것들을 제공합니다:

  • control_mode: “depth” | “canny” | “pose”
  • control_image: 서버가 맵으로 변환하는 맵 또는 소스 이미지
  • prompt / negative_prompt: 스타일 및 콘텐츠 가이드
  • seed: 재현성을 위해

플랫폼이 자동 맵 추출을 제공하는 경우, 일반 이미지를 보내고 control_mode를 설정하면 서버가 depth/canny/pose 맵을 생성합니다.

강도 설정 (0.6에서 시작)

제어 강도는 구조가 얼마나 엄격하게 적용되는지를 결정합니다. 제 기준:

  • 첫 번째 시도에는 0.6 (균형)
  • 스타일 자유도를 더 원할 때는 0.4
  • 로고나 원근감이 중요한 렌더처럼 거의 잠금 정밀도가 필요할 때는 0.8

1.0에서는 종종 경직됨이 보였습니다. 0.2에서는 제어가 거의 없었고요. 0.6이 가장 적절한 지점처럼 느껴졌습니다.

Python 코드 예시

아래는 최소한의 예시입니다. 파라미터 이름이 다를 수 있으니 제공자의 문서를 확인하세요. 패턴은 제가 사용해 본 대부분의 REST 래퍼에서 일관적입니다.

import requests


API_URL = "https://api.z-image-turbo.example/v1/images/generate" # placeholder

API_KEY = "YOUR_API_KEY"


payload = {

"prompt": "sunlit modern living room, warm wood, soft textiles, filmic lighting",

"negative_prompt": "distorted furniture, blown highlights",

"seed": 12345,

"width": 768,

"height": 512,

"control_mode": "depth", # "canny" or "pose"

"control_strength": 0.6,

}


files = {
# 단일 참조 이미지 전송: 서버가 선택한 맵을 추출

"control_image": open("/path/to/reference.jpg", "rb"),

}


headers = {"Authorization": f"Bearer {API_KEY}"}


resp = requests.post(API_URL, data=payload, files=files, headers=headers, timeout=60)

resp.raise_for_status()


with open("out.png", "wb") as f:

f.write(resp.content)

기본 제어 맵에 대한 자세한 내용이 필요하다면, AUTOMATIC1111의 ControlNet 문서OpenMMLab의 MMPose(포즈용)가 신호를 잘 설명하고 있습니다.

워크플로우 예시

스케치에서 완성 작품으로

이 모든 것을 시작하게 한 작은 불만: 느슨한 연필 스케치를 그럴듯하게 만드는 작업은 보통 저녁 한나절을 잡아먹었습니다. canny를 0.6으로 설정하고 스케치 스캔을 보내고, 짧은 스타일 프롬프트(잉크-워시, 차분한 팔레트)를 추가한 다음 변형을 만들도록 했습니다. 첫 번째 결과들은 너무 깔끔해서 거의 무균실 같았어요. 강도를 0.45로 낮추자 원본 선의 약간의 흔들림이 되살아났는데, 더 정직하게 느껴졌습니다. 절약된 시간: 아마 30~40분 정도였지만, 더 큰 승리는 정신적인 것이었어요. 마스크 조작에서의 번거로움이 훨씬 줄었으니까요.

마찰: 대비를 높이기 전까지는 희미한 선들이 엣지 맵에서 사라졌어요. 그 후에는 일관성이 유지되었습니다.

건축 시각화

2026년 1월 22일, 스마트폰 사진으로 찍은 간단한 거실 레이아웃에 depth 모드를 시도해 봤습니다. 목표는 소파와 창문 위치를 유지하면서 재료를 탐색하는 것이었습니다. control_strength를 0.7로 설정하자, 모델은 벽 위치와 창문 격자를 존중하면서 나무 색조와 패브릭 텍스처를 바꿔줬습니다. 0.85로 높이자 재료가 너무 고정되어 보이기 시작했어요. 지나치게 직접적이고 대기감이 떨어졌죠. 대부분의 인테리어 샷에서는 0.6이나 0.65로 결론을 냈습니다.

작은 놀라움: 프롬프트에 렌즈 힌트(“35mm, 얕은 피사계 심도”)를 추가해도 예상보다 효과가 덜했는데, 깊이 맵이 주도권을 쥐고 있었기 때문입니다. 다른 카메라 느낌을 원할 때는 새로운 각도에서 참조를 다시 찍었어요. 덜 영리하지만, 더 신뢰할 수 있었습니다.

캐릭터 컨셉 아트

Pose 모드는 다섯 프레임에 걸쳐 달리는 자세를 반복하는 데 도움이 됐습니다. 같은 캐릭터, 다른 분위기. 포즈 툴에서 만든 빠른 막대 그림을 제어 이미지로 사용하고, 스타일 프롬프트(스트리트웨어, 역광, 황혼)를 겹쳤어요. 손은 반복할수록 개선됐지만 여전히 수정이 필요했습니다. 거기에 맞서 싸우지 않았어요. 내부 작업용으로는 읽을 수 있는 손이면 충분했고, 공개용 아트라면 더 깔끔한 패스에서 손가락을 합성하거나 직접 그렸을 것입니다.

유지된 것: 몸의 곡선과 시선의 방향이 일관되게 유지되었습니다. 그 덕분에 이 세트가 무관한 다섯 장의 이미지가 아닌 하나의 시퀀스처럼 느껴졌습니다.

ControlNet이 저에게 중요한 이유: 구조가 어려운 부분일 때 프롬프트를 세세하게 관리할 필요성을 줄여줍니다. 판단력을 없애는 게 아니에요. 그저 신경 써야 할 부분으로 주의를 옮겨줄 뿐입니다.

이런 분들에게 맞을 수 있습니다:

  • 거친 참조 사진을 갖고 있고 그것이 실제로 결과를 안내해 주기를 원하는 분.
  • 느슨하게 그리지만 제스처를 잃지 않고 깔끔한 렌더를 원하는 분.
  • 스토리보드를 만들 때 스타일이 바뀌어도 포즈가 읽힐 필요가 있는 분.

아마 맞지 않을 분:

  • 추가 단계 없이 정확한 유사성을 원하는 분(얼굴/ID 워크플로우가 필요합니다).
  • 참조 이미지 전처리나 조정을 싫어하는 분.

궁금하다면, 작게 시작하세요. 모드 하나를 선택하고, 강도를 0.6으로 설정한 다음, 프롬프트만 바꾸면서 같은 입력을 다섯 번 실행해 보세요. 무엇이 바뀌고 무엇이 바뀌지 않는지 지켜보세요. 그 움직이지 않음, 그것이 바로 당신의 구조가 말하는 것입니다.

아직도 책상에 메모를 붙여 두고 있습니다: “프롬프트가 아닌 참조를 수정하라.” 이미지가 단순히 진실을 말하고 있을 때 모델과 다투지 않도록 해줍니다.