본문으로 건너뛰기
기술 소식을 빠르게 전달드립니다
HYUKHO

AI

MOSS-Image 레이아웃 제어: JSON 좌표 사용법과 8단계 가속판 검증 기준

MOSS-Image 레이아웃 제어의 JSON 문구·좌표 지정법과 해상도 변경 시 좌표 조정 방법을 설명합니다. 8단계 가속판의 속도 측정 조건과 문자·배치 정확도를 비교할 절차도 정리했습니다.

· · 4분 · AI

핵심 요약

  • JSON의 `caption`에는 외형을, `text`에는 이미지에 실제로 출력할 문구를 지정합니다.
  • `yxyx`는 y·x 순서의 박스 좌표이며, `abs_centralized`는 캔버스 중심을 원점으로 삼습니다.
  • 8단계판은 원본 SFT에 가속용 LoRA를 적용하며, Steps만 8로 낮추는 실행과는 구별해야 합니다.
  • 가속판을 도입할 때는 생성 시간과 함께 문구·배치 조건을 통과한 결과의 비율을 비교하는 편이 좋습니다.

MOSS-Image 레이아웃 제어는 JSON으로 글자와 객체가 놓일 위치를 지정하는 기능입니다. 커뮤니티가 공개한 8단계 증류 모델은 원본 SFT에 가속용 LoRA를 적용해 쓰는 방식이에요. 사용법과 서비스 운영사가 잰 속도 수치는 공개됐지만, 가속한 뒤에도 문자와 배치 정확도가 얼마나 유지되는지는 아직 추가 검증이 필요합니다. 도입을 검토한다면 생성 속도만 보지 말고, 지정한 문구와 위치가 제대로 재현되는지도 함께 살펴보시길 권합니다.

8단계판은 무엇이고, 속도 수치는 어떤 조건에서 나왔나

공식 SFT는 Base를 선별 데이터로 추가 학습한 모델이고, 기본 설정은 50단계·CFG 3입니다. lodestones/MOSS-Image-SFT-8-steps-dmd는 이 모델을 CFG 없는 8회 네트워크 평가로 증류하는 커뮤니티 프로젝트로 소개돼요. 흔히 헷갈리는 부분이 있습니다. LoRA는 원 모델에 덧붙이는 가중치 어댑터라서, 원본을 그대로 두고 Steps만 8로 낮춰 돌리는 실행과는 전혀 다른 이야기예요.

잡음 타일에서 구와 정육면체가 놓인 이미지로 이어지는 두 경로. 위에는 작은 노드 50개가 열 개씩 묶여 있고, 아래에는 큰 노드 8개가 배열돼 있다.
평가 횟수 차이를 나타낸 개념도이며, 경로 길이는 실행 시간을 뜻하지 않는다.

속도 수치는 Sogni가 보고한 값입니다. RTX 4090, 1024×1024, 모델을 미리 로딩해 둔 조건에서 이미지당 23.8초가 3.3초로 줄었다고 해요. 흔히 인용되는 약 7.2배는 이 자체 측정값을 나눠서 얻은 수치이고, 같은 게시물에서 서비스로 이미지 두 장을 완성하기까지 걸린 시간은 29.7초에서 9.7초로 약 3.1배 차이였습니다.

두 수치는 재는 범위부터 다릅니다.

게다가 서비스 쪽에서 어떤 가중치 리비전을 썼는지, LoRA 강도와 정밀도는 어땠는지 특정하기 어렵습니다. 그래서 3.3초를 내 로컬 환경에서 기대할 시간으로 받아들이는 건 무리라고 봐요.

JSON에 문구와 좌표를 넣는 방법

구조 자체는 단순합니다. summary.caption에는 장면 전체를, items에는 개별 요소를 적어요. 여기서 많이들 섞어 쓰는 게 요소의 caption과 text인데, caption은 그 요소가 어떻게 생겼는지를 설명하는 칸이고 이미지에 실제로 찍혀 나올 문구는 text에 넣어야 합니다. 제목 박스 하나를 지정하면 이런 모양이 돼요.

{
  "summary": {
    "caption": "A poster with a title at the top."
  },
  "items": [
    {
      "label": "text",
      "caption": "Large black title text",
      "text": "MOSS-Image",
      "bbox": [-416, -384, -288, 384]
    }
  ],
  "bbox_format": "yxyx",
  "bbox_coord_space": "abs_centralized"
}

좌표에서 먼저 확인할 것은 순서와 원점이에요. yxyx는 [y_min, x_min, y_max, x_max] 순서이고, abs_centralized는 캔버스 중심을 원점으로 삼는 절대 픽셀 좌표를 뜻합니다. 익숙한 좌상단 기준과 다르니, 1024×1024에서 좌상단 기준으로 바꾸려면 각 값에 512를 더하면 됩니다. 위 박스라면 왼쪽 128, 위쪽 96, 오른쪽 896, 아래쪽 224에 해당하죠.

해상도를 바꿀 때는 축별로 따로 계산합니다. y 좌표에는 '새 높이÷기존 높이'를, x 좌표에는 '새 너비÷기존 너비'를 곱하면 상대 배치가 그대로 유지돼요. 가로·세로를 모두 두 배로 키운다면 네 좌표도 각각 두 배로 늘리면 됩니다. 좌표 규칙과, 생성 크기가 어떤 조건에서 맞아야 하는지는 공식 프로젝트 문서에서 확인할 수 있어요.

가속판을 평가할 때는 '쓸 수 있는 결과의 비율'부터

제가 가장 먼저 보라고 권하는 지표는 속도가 아니라 사용 가능한 결과의 비율입니다. 한 장이 빨리 나와도 손보거나 다시 뽑아야 하는 경우가 잦으면 전체 작업 시간에서 얻는 이득은 줄어들 수 있으니까요. 그렇다고 가속판의 재생성률이 더 높다고 단정할 근거가 공개 자료에 있는 것도 아닙니다. 결국 직접 비교해 봐야 판단할 수 있어요.

구와 정육면체의 목표 위치를 표시한 기준 카드 옆에 생성 결과 여섯 장이 놓여 있다. 배치가 맞는 카드에는 원형 표시가, 겹침이나 누락이 있는 카드에는 렌치 모양 표시가 붙어 있다.
목표 배치와의 일치 여부, 수정할 부분을 함께 살피는 검수 예시.

가속판의 정확도가 유지되는지 확인하려면 아래 순서로 비교하는 편이 좋습니다.

  1. 원본 SFT와 SFT용 가속판의 저장소·리비전·파일명·LoRA 강도·정밀도·실행 설정을 기록합니다.
  2. 동일한 캔버스·JSON·시드 목록으로 생성하되, 제목·가격·날짜·여러 줄 본문이 포함된 입력을 사용합니다.
  3. 오탈자·문구 누락·임의 추가·줄바꿈·박스 이탈·객체 누락을 각각 기록합니다. 사용할 수 있는 결과의 조건을 먼저 정하고, 전체 생성물 중 통과한 비율을 비교합니다.
  4. 모델 로딩을 제외한 생성 시간과 요청 후 결과 파일을 받을 때까지의 시간을 나눠 측정합니다.

1번을 맨 앞에 두는 이유가 있습니다. 설정이 기록되지 않으면 나중에 결과가 달라져도 원인을 짚을 수 없거든요. 4번에서 시간을 둘로 나누는 것도 앞서 본 Sogni 수치처럼 측정 범위가 섞이는 일을 막기 위해서예요.

적용하기 전에는 SFT 가속판 모델 카드에서 현재 Usage를 꼭 확인하세요. 안내된 강도가 파일마다 달라서, lora.safetensors는 1, lora_latest.safetensors는 0.7입니다. 설정을 재현하려면 폐기된 안내나 Base용 설정이 섞여 들어가지 않게 해야 해요. 레이아웃 기능은 아직 실험적이므로, 한글 제목·숫자·문장 부호·여러 줄 본문의 정확도는 별도로 시험해 보는 게 맞습니다.

자주 묻는 질문

1024×1024용 JSON을 다른 해상도에 쓰려면 좌표를 어떻게 바꾸나요?
y 좌표에는 ‘새 높이÷기존 높이’를, x 좌표에는 ‘새 너비÷기존 너비’를 곱합니다. 가로·세로를 모두 두 배로 키우면 네 좌표도 각각 두 배로 조정합니다.
8단계판은 로컬에서도 이미지 한 장을 3.3초에 생성하나요?
3.3초는 Sogni가 RTX 4090·1024×1024·모델 사전 로딩 조건에서 보고한 자체 측정값입니다. 서비스의 가중치 리비전·LoRA 강도·정밀도도 특정하기 어려워 로컬 실행의 예상 시간으로 삼기는 어렵습니다.
가속용 LoRA 파일은 같은 강도로 적용하면 되나요?
안내된 강도는 `lora.safetensors`가 1, `lora_latest.safetensors`가 0.7로 다릅니다. 적용 전 모델 카드의 현재 Usage를 확인해야 합니다.

출처

  1. MOSS-Image 공식 프로젝트
  2. OpenMOSS/MOSS-Image 공식 저장소
  3. MOSS-Image-Base User Guide
  4. OpenMOSS-Team/MOSS-Image-SFT
  5. lodestones/MOSS-Image-SFT-8-steps-dmd
  6. lodestones/MOSS-Image-Base-8-steps-dmd
  7. Layout Composer: Design Images Box by Box
  1. AI가 발견한 PHP 취약점: ‘인터넷 70% 해킹’의 의미와 대응 방법
  2. Decodo Web Data API 무료 플랜: 수집 한도 계산과 자동화 검증 방법
  3. Apple Silicon 로컬 LLM 벤치마크, Uzu 수치와 측정 조건 읽는 법

댓글

Giscus를 연결하면 댓글이 열립니다.