Community이미지github.com

이미지 편집 충실도 및 인체 해부학

모든 이미지 모델(Qwen-Image, Nano Banana / Gemini Image, GPT Image, Seedream, Flux / Kontext, Kling O3 image, Midjourney, Stable Diffusion 등)에서 사람과 장면이 포함된 이미지를 생성하고 편집하기 위한 모델-무관 규칙입니다. 모든 사람의 손상되지 않은 인체 해부학, 첨부된 참조 이미지에 대한 엄격한 충실도, 참조 간 부품 전송, 픽셀 차이 비교 및 결함 검사를 다룹니다.

이미지 편집 충실도 및 인체 해부학란 무엇인가요?

이 스킬은 모든 이미지 생성 또는 편집 모델에서 적용되는 모델-비종속 규칙 세트입니다. 이미지에 사람이 포함되거나 참조 이미지를 사용할 때, '사진 편집', '머리 바꾸기', '이 물체를 저 사진에 넣어줘'와 같은 요청을 처리할 때 사용합니다. 주요 규칙은 1) 모든 사람의 인체 해부학적 정확성(머리 하나, 눈 두 개, 팔 두 개, 다리 두 개, 손가락 다섯 개 등) 보장, 2) 참조 이미지에 대한 엄격한 충실성(요청된 부분만 변경, 사람 수, 배경, 사물 유지), 3) 한 참조에서 다른 참조로의 단일 부품 전송(예: 자켓, 얼굴), 4) 변경 사항과 원본 간의 픽셀 차이를 계산하고 변경 영역만 붙여넣는 `ref_diff.py` 스크립트를 통한 정밀 검사 및 복구입니다. 각 모델의 특정 스킬과 함께 사용되며, 모델에 따라 네거티브 프롬프트 또는 긍정적 문장을 통해 규칙을 적용하는 방법을 설명합니다.

지원 대상✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/daniil-kzn/qwen-image-2-skill/tree/HEAD/image-edit-fidelity

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

이미지 편집 충실도 및 해부학 (모든 모델)

이 규칙은 모든 이미지 모델에 적용됩니다. 결과물이 충족해야 할 조건과 확인 방법을 설명합니다. 모델별 스킬(qwen-image-2, storyboard-keyframes, fal-runner 등)은 엔드포인트, 파라미터, 제한 사항 및 프롬프트 스타일을 제공합니다. 모델별 스킬이 존재하는 경우, 두 가지 모두(해당 스킬의 파라미터와 이 충실도 규칙)를 따릅니다. 준비된 편집 지침은 references/edit-patterns.md에 있습니다.

주어진 모델에 대한 규칙을 표현하는 방법:

  • 네거티브 프롬프트 필드 (Qwen, Seedream, Stable Diffusion, Kling): §1과 §2의 해부학 및 충실도 목록을 여기에 넣습니다.
  • 네거티브 프롬프트 필드 없음 (GPT Image, Nano Banana / Gemini, Flux Kontext 및 대부분의 명령-편집 모델): 프롬프트에 긍정적인 문장으로 작성합니다(예: "각 사람은 머리 하나, 두 팔, 두 다리를 가집니다", "방, 가구 및 물건은 정확히 그대로 유지됩니다"). 마지막에 하나의 짧은 제외 문장을 추가합니다(예: "사람이나 물체를 추가하거나 제거하지 마십시오"). 프롬프트에 긴 "X 금지, Y 금지" 목록을 붙여넣지 마십시오. 많은 모델이 명명된 객체를 그리기 때문입니다.
  • 프롬프트 재작성 (Qwen enable_prompt_expansion, Model Studio prompt_extend, "magic prompt" 옵션): 편집 시에는 비활성화합니다. 재작성기는 참조에 없는 소품과 스타일을 추가합니다.
  • 출력 크기를 결정하는 입력은 모델마다 다릅니다(Qwen: 마지막 이미지; 다른 모델: 첫 번째 이미지 또는 명시적 크기 필드). 스키마를 확인하고 출력이 기본 참조 이미지의 종횡비와 크기를 따르도록 합니다.
  • 길이 제한은 모델마다 다릅니다(Qwen fal 편집 800자). KEEP 절이 맞지 않으면, 변경될 가능성이 가장 높은 항목(§2 단계 2)부터 유지합니다.

1. 인체 해부학: 항상 온전하게

모든 출력의 모든 사람은 정상적인 인체 해부학적 구조를 가져야 합니다. 정확히 머리 하나, 두 눈, 코 하나, 입 하나, 두 귀, 목 하나, 어깨에 부착된 두 팔, 각각 다섯 개의 손가락이 있는 두 손, 엉덩이에 부착된 두 다리, 두 발. 추가되거나 누락된 머리, 팔다리, 손 또는 손가락이 없어야 합니다. 등, 가슴, 배 또는 다른 사람에게서 자란 팔다리가 없어야 합니다. 융합된 신체가 없어야 합니다. 잘못된 방향으로 구부러진 관절이 없어야 합니다. 이는 텍스트-이미지 및 편집, 배경 인물 및 양식화된 이미지(만화, 코믹, 그림)에도 적용됩니다. 단, 사용자가 명시적으로 인간이 아닌 생물을 요청한 경우는 제외됩니다. 신체가 손상된 이미지는 다른 부분이 아무리 좋아도 결함입니다.

손상되는 이유: 확산 모델은 신체가 겹치는 영역(포옹, 손잡기, 군중, 아이를 안은 사람), 손이 작거나 숨겨진 영역, 복잡한 포즈에서 어느 팔다리가 누구의 것인지 추적을 놓칩니다. 프롬프트에서 이를 방지하고 확인 단계에서 발견합니다.

  1. 프롬프트. 각 사람에 대해 각 팔과 손의 위치와 역할을 설명합니다(예: "그녀의 오른손은 가슴 높이에서 컵을 잡고 있고, 그녀의 왼팔은 몸 옆에 편안하게 늘어져 있습니다"). 다리의 위치도 설명합니다(예: "서서, 체중이 왼쪽 다리에 실림", "앉아서 다리를 꼬고 있음"). 여러 사람이 있을 때는 신체 수를 명시합니다(예: "정확히 세 명의 사람, 각각 머리 하나, 두 팔, 두 다리"). 자연스러운 해부학을 스타일 문장에 포함시킵니다(예: "해부학적으로 정확한 인체, 자연스러운 비율"). 접촉을 정확히 설명합니다: 누구의 손이 누구의 어깨에 얹혀 있는지.
  2. 신체를 읽기 쉽게 유지하는 구성. 두 손이 모두 보이거나 명확히 숨겨진(주머니, 등 뒤, 프레임 밖) 포즈를 선호합니다. 팔이 서로 얽히는 것을 피하고, 한 사람이 다른 사람 바로 뒤에 서 있는 것을 피하고, 프레임에 의해 모호하게 잘린 팔다리를 피합니다. 사람이 많을수록 신체가 작아지고 오류가 더 많아집니다. 요청이 허용하는 한도 내에서 인원을 최소로 유지합니다. 군중 속에서는 배경 인물을 작고 단순하게 유지하고, 명확한 물체에 의해 부분적으로 가려지도록 합니다.
  3. 해부학 제외 목록 (네거티브 프롬프트 또는 네거티브 필드가 없는 경우 하나의 긍정 문장): 추가 팔다리, 추가 팔, 추가 다리, 추가 손, 추가 손가락, 누락된 손가락, 두 개의 머리, 추가 머리, 추가 눈, 융합된 신체, 몸통에서 나온 팔다리, 기형 손, 기형 해부학.
  4. 편집. 포즈, 의류를 변경하거나 사람을 추가할 때 신체 부위가 추가되거나 손실되어서는 안 됩니다. KEEP 절(§2)에 "동일한 해부학: 각 사람에 대해 머리 하나, 두 팔, 두 다리"를 추가합니다. 포즈 편집은 가장 위험이 큰 편집입니다. 편집된 사람뿐만 아니라 프레임 안의 모든 사람을 확인합니다.
  5. 표시 전 모든 사람 확인 (각 신체를 전체 크기로 자르고 확대; 작은 배경 인물 포함): 머리, 눈, 팔, 손, 다리, 발의 수를 셉니다. 보이는 모든 손의 손가락 수를 셉니다. 각 팔다리를 해당 어깨 또는 엉덩이까지 추적하고 올바른 신체에 속하는지 확인합니다. 등, 가슴 또는 목에서 자란 팔다리, 합쳐진 손, 두 사람 사이의 세 번째 다리, 꼬인 관절을 찾습니다. 확인 노트에 사람별 개수를 기록합니다(예: "P1: 머리 1개, 팔 2개, 손 2개(5+5), 다리 2개: 확인" ).
  6. 수정. 작은 손 또는 손가락 오류: 해당 손 주변을 자른 이미지에 대한 편집 패스를 실행합니다(예: "왼손 수정: 손가락 다섯 개, 자연스러운 포즈, 컵을 잡고 있음"). 그런 다음 자른 이미지를 다시 붙여넣습니다(ref_diff.py --paste-back). 추가되거나 누락된 팔다리 또는 머리: 더 간단한 포즈, 더 적은 겹침 및 단계 1의 팔다리 설명과 함께 재생성합니다. 신체가 손상된 이미지를 완성된 결과물로 절대 표시하지 마십시오. 사용자가 어쨌든 초안을 보고 싶어하는 경우, 결함을 명시하십시오.

2. 참조 충실도: 요청한 부분만 변경

사용자가 참조 이미지를 첨부할 때마다 참조는 사실(ground truth)이며, 요청은 그 위에 적용되는 최소한의 차이(diff)입니다. 사용자가 변경을 요청하지 않은 모든 것은 그대로 유지됩니다. 사람 수와 신원, 포즈와 위치, 의복, 방이나 거리, 가구와 주변 물체, 그 수와 위치, 프레임 구성과 카메라 각도, 빛의 방향과 색상, 스타일과 질감, 모든 텍스트. "보기 좋은" 편집이지만 사람을 추가하거나, 의자를 옮기거나, 창문을 변경했다면 실패한 편집입니다. 대부분의 모델은 전체 프레임을 다시 렌더링하며 자유롭게 "개선"할 수 있으므로, 충실도를 명시적으로 요청한 다음 확인해야 합니다.

  1. 무엇이든 작성하기 전에 참조를 목록화합니다. 전체 크기로 보고(작은 영역은 자르기) 프로젝트 폴더에 reference_inventory.md를 작성합니다:
    • 프레임 구성: 쇼트 크기, 카메라 높이와 각도, 각 프레임 가장자리에 닿는 것, 종횡비, 픽셀;
    • 사람: 정확한 수; 각 사람에 대해, 프레임 내 위치(왼쪽/중앙/오른쪽, 전경 또는 배경), 포즈, 시선, 손, 머리부터 발까지의 의복, 머리카락, 나이, 들고 있는 것;
    • 배경: 방 또는 장소, 벽, 창문, 문, 바닥, 위치가 표시된 가구;
    • 물체: 보이는 모든 항목에 대해 수, 색상 및 위치(예: "컵"이 아닌 "테이블 위 컵 3개");
    • 빛: 광원 방향, 경도, 색온도, 그림자, 시간대;
    • 스타일: 사진 또는 일러스트레이션, 그레인, 색보정, 피사계 심도;
    • 텍스트 및 로고, 원문 그대로. 그런 다음 이를 CHANGE(사용자가 요청한 것만)와 KEEP(나머지 모두)의 두 목록으로 나눕니다. 요청 범위가 모호한 경우(예: "더 아늑하게": 가구? 조명? 둘 다?), 모델이 결정하도록 하기 전에 생성하기 전에 사용자에게 물어보십시오.
  2. 변경 + 유지로 편집 프롬프트를 작성합니다. 첫 번째 문장: 요청된 변경 사항을 구체적이고 국소적으로 설명합니다(무엇, 어디에, 얼마나 큰지, 프레임의 어느 쪽인지). 그런 다음 KEEP에서 작성된 보존 절을 추가합니다. "다른 모든 것"보다는 구체적인 항목을 명명합니다(예: "정확히 두 명의 사람을 유지: 왼쪽의 회색 스웨터를 입은 남자와 오른쪽의 파란 드레스를 입은 여자, 동일한 얼굴, 포즈 및 위치. 세 개의 흰색 컵이 있는 나무 테이블, 왼쪽 창문, 오른쪽 책장, 창문에서 들어오는 따뜻한 빛, 프레임 구성 및 카메라 각도를 변경하지 않고 그대로 유지합니다. 사람이나 물체를 추가하거나 제거하지 마십시오."). 길이 제한 아래에서는 변경될 가능성이 가장 높은 항목(사람 수와 신원, 편집 영역 근처의 물체, 배경 건축물, 프레임 구성)을 유지합니다. 변경 사항만 자세히 설명하고, 전체 장면을 새로운 단어로 다시 설명하지 마십시오. 모델이 다시 그리도록 유도할 수 있습니다.
  3. 참조를 보호하는 설정:
    • 프롬프트 재작성 끄기;
    • 출력 크기 = 참조의 종횡비 및 크기; 다른 종횡비는 모델이 내용을 새로 만들거나 자르도록 강제합니다.
    • 출력 크기를 결정하는 위치에 기본 참조를 배치하고, 프롬프트에서 해당 번호로 호출합니다. 변경에 필요한 참조만 첨부하십시오. 각 추가 이미지는 또 다른 표류 원인입니다.
    • 모델이 제공하는 경우 마스크 또는 인페인팅 모드 사용: 변경할 영역만 마스킹합니다.
    • 충실도 제외 목록: 추가 인물, 누락된 인물, 다른 인물, 변경된 배경, 추가된 물체, 제거된 물체, 다른 프레임 구성, 다른 조명, 여기에 §1의 해부학 목록을 추가합니다.
    • 초안에는 저렴한 티어 사용; 명령이 유지될 때까지 호출당 하나의 출력, 그 다음에는 2-3개.
  4. 참조와 비교하여 확인하고, 단독으로 확인하지 않습니다. python3 ~/.claude/skills/image-edit-fidelity/scripts/ref_diff.py <reference> <output> --allow x0,y0,x1,y1 (변경이 발생했어야 하는 영역, 참조 픽셀 단위)를 실행합니다. 이 스크립트는 해당 영역 외부에서 그리드 셀별로 얼마나 변경되었는지 보고하고, 나란히 비교 이미지와 히트맵을 생성합니다. 그런 다음 reference_inventory.md를 출력에 대해 한 줄씩 검토합니다: 사람 수와 신원, 각 물체와 그 위치, 배경, 조명, 프레임 구성, 텍스트. 변경된 KEEP 항목은 작은 것이라도 결함입니다.
  5. 전체 프레임을 재생성하는 대신 수리합니다. 변경 사항은 올바르지만 나머지가 표류한 경우, 변경된 영역만 원본에 다시 붙여넣습니다: ref_diff.py <reference> <output> --allow <box> --paste-back final.png (가장자리 페더링, 프레임의 나머지 부분은 참조에서 픽셀 단위로 가져옴). 변경 자체가 잘못된 경우, CHANGE 문장을 더 구체화하고 표류한 항목을 이름별로 KEEP에 추가합니다. 재시도당 하나의 항목만 변경합니다.
  6. 보고: 사용자에게 무엇이 변경되었는지와 무엇이 유지되었는지 확인했는지 보고합니다. 허용된 편차가 있다면 명시합니다.

3. 한 참조에서 다른 참조로 부품 전송

사용자가 소스 참조에서 한 요소(자켓, 램프, 얼굴, 로고, 하늘)를 가져와 대상 참조에 넣도록 요청할 때, 정확히 두 가지 일이 발생합니다: 명명된 요소가 소스에서 복사되고, 대상에서 명명된 위치가 그것으로 대체됩니다. 그 외에는 어떤 방향으로도 이동하지 않습니다:

  • 소스에서, 명명된 요소만 가져옵니다: 배경, 다른 사람이나 물체, 색상, 조명, 스타일 또는 프레임 구성은 가져오지 않습니다.
  • 대상에서, 명명된 위치만 변경합니다: 사람, 그들의 수, 얼굴, 포즈, 의복, 물체, 배경, 조명, 프레임 구성 및 텍스트는 대상에 그대로 유지됩니다(대상의 목록에서 작성된 §2 KEEP 목록).
  • "맞추기 위해" 무엇이든 추가하지 마십시오(추가 소품, 존재하지 않는 물체의 그림자, 새로운 사람). 유일하게 허용되는 적응은 요소 자체가 대상의 원근감, 크기 및 조명을 취하여 대체된 위치에 자연스럽게 배치되는 것입니다.

방법:

  1. 대상을 목록화(§2)하고 소스의 요소를 정확히 설명합니다(무엇, 색상, 재질, 모양, 반드시 유지되어야 하는 세부 사항: 단추, 프린트, 로고).
  2. 업로드하기 전에 소스를 요소 주변으로 빡빡하게 자릅니다(모델의 최소 변 길이 준수, Qwen의 경우 384px). 모델이 다른 것을 빌려올 수 없도록 합니다. 대상 이미지를 출력 크기를 결정하는 위치에 배치합니다.
  3. 프롬프트 구조: "이미지 1에서 [핵심 특징이 있는 요소]만 가져옵니다. 이미지 2에서 [정확한 위치: 누구의, 어느 쪽, 어떤 물체]를 그것으로 대체하고, 이미지 2의 원근감, 크기 및 조명에 맞춥니다. 이미지 1(그 배경, 사람, 색상 또는 조명)에서 다른 것은 아무것도 가져오지 마십시오. 이미지 2의 다른 모든 것은 정확히 그대로 유지됩니다: [대상 목록의 KEEP 항목, 사람 수, 얼굴, 포즈, 물체, 배경, 프레임 구성]. 사람이나 물체를 추가하거나 제거하지 마십시오." 모델이 기본 이미지를 먼저 요구하는 경우 이미지 번호를 바꿉니다.
  4. ref_diff.py <target> <output> --allow <대체된 위치의 상자>로 확인합니다: 상자 외부의 변경 사항은 결함입니다. --paste-back으로 수리합니다. 또한 전송된 요소를 소스 크롭과 비교합니다: 모양, 색상, 프린트 및 세부 사항이 일치해야 합니다.

머리 바꾸기

이미지 1의 사람 머리를 이미지 2의 사람에게 바꾸는 것은 이 규칙의 가장 엄격한 경우입니다. 대상 사람의 경우 머리만 교체됩니다: 얼굴, 얼굴 특징, 얼굴 피부, 머리카락 및 귀는 이미지 1에서 가져옵니다. 머리 각도, 기울기, 시선 방향, 크기 및 장면의 조명은 대상을 따라 기존 목 위에 머리가 위치하도록 합니다. 대상 사람의 다른 모든 것은 이미지 2에 그대로 유지됩니다: 몸, 체격, 목과 어깨, 의복, 포즈, 머리 아래 액세서리. 다른 사람들은 자신의 머리와 다른 모든 것을 유지합니다. 배경, 물체 및 프레임 구성은 변경되지 않습니다. 이미지 1에서 머리 외의 어떤 것(그 의복, 몸, 배경, 다른 사람)도 출력에 나타나지 않습니다.

  • 호출 전에, 모호한 부분(모자, 안경, 헤드셋)만 사용자와 해결합니다. 존재하고 대상에 같은 것이 있거나 또는 의도된 것으로 간주되는 경우에만 해결합니다. 그렇지 않으면 머리만 교체하고 다른 것은 해석하지 않습니다.
  • 바꾸기에 대한 프롬프트(위의 구조 참조): "이미지 1의 사람(남자/여자)의 머리(얼굴, 얼굴 특징, 피부, 머리카락, 귀)만 가져와서 이미지 2의 사람(남자/여자)의 머리를 교체합니다. 이미지 2 사람의 몸, 목, 어깨, 의복, 포즈 및 손은 그대로 유지합니다. 이미지 1에서 머리 외에는 아무것도 가져오지 마십시오. 이미지 2의 배경, 다른 사람 및 물체는 변경하지 않은 채로 둡니다."
  • --allow 상자는 대상 사람의 머리 주변입니다. 다른 곳의 변경 사항은 결함입니다. --paste-back은 항상 대상 사람의 머리를 새로운 머리로 교체하고 몸, 배경 및 다른 사람들은 참조(대상)에서 그대로 유지합니다.
  • 확인: a. 대상 사람의 몸과 포즈를 확인합니다. 변경되었다면 결함입니다. b. 바뀐 머리의 얼굴 특징을 소스 머리와 비교합니다: 얼굴 모양, 눈, 코, 입, 머리카락 색상 및 스타일, 귀. 차이가 있다면 결함입니다. c. 조명, 피부 톤이 대상 장면과 일치하는지 확인합니다. 이는 합법적인 및 적응 대상입니다. d. 배경 및 다른 사람들이 대상과 일치하는지 확인합니다.

4. 모든 편집은 ref_diff.py로 확인

python3 ~/.claude/skills/image-edit-fidelity/scripts/ref_diff.py <reference_path> <output_path> --allow x0,y0,x1,y1 --paste-back final.png를 실행합니다. reference_inventory.md를 통해 확인을 수행합니다. §3 단계 4-6의 확인을 반복합니다.

암기 사항:

  • §1의 해부학 규칙은 텍스트-이미지 및 편집을 포함한 모든 생성에 적용됩니다.
  • §2의 참조 충실도 규칙은 참조 이미지가 첨부된 모든 편집에 적용됩니다.
  • §3의 부품 전송 규칙은 한 참조에서 다른 참조로 요소를 이동하는 특수한 경우를 다룹니다.
  • 모든 확인은 ref_diff.py 스크립트를 사용합니다.

관련 스킬