Community이미지github.com

clip-box — 이미지에서 특정 대상의 위치 찾기

이미지에서 '빨간 사각형', '총액', '커피 머그'와 같은 참조 구문에 대한 경계 상자를 찾고, 이미지 분율, 픽셀 좌표, 보정된 신뢰도(P(IoU >= 0.5)), 그리고 답변을 제어하는 'present' 확률을 반환합니다.

clip-box — 이미지에서 특정 대상의 위치 찾기란 무엇인가요?

`clip-box`는 h2oai/h2o-lightning-4b 의사 결정 모델을 기반으로 한 AI 에이전트 스킬로, 이미지에서 특정 대상의 위치를 경계 상자(bounding box)로 찾아내는 기능을 제공합니다. 이 스킬은 사용자가 `--target` 인자로 참조 구문(예: '빨간 사각형', '총액')을 지정하면 이미지에서 해당 영역의 좌표(분율 및 픽셀), 신뢰도(P(IoU ≥ 0.5)), 그리고 대상이 이미지에 존재하는지 여부를 나타내는 `present` 확률을 반환합니다. Claude Code, Cursor 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, CLI 명령어를 통해 호출됩니다. 특히 'present' 값을 기준으로 답변을 게이팅(gating)함으로써 대상이 없을 때 잘못된 박스를 반환하는 문제를 방지합니다. 이 스킬은 단순히 객체 탐지를 넘어 '의사 결정'에 특화되어 있으며, 신뢰도가 낮은 결과를 자동으로 거절할 수 있어 자동화 워크플로우에 적합합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rodritimecoder/agent-skills/tree/HEAD/multimodal/clip-box

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

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

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

문서

clip-box — 이 이미지에서 어디에 있나요?

이것은 "X는 어디에" 의 첫 진입점입니다. 실제 구현은 decision-model에 있습니다. 동일한 클라이언트가 bool, choice, score, box를 처리하며, clip-box는 이 어휘를 라우팅 가능하게 유지하고 다른 모델이 의사 결정 슬롯을 차지할 때 독립형 심(shim)을 가리킬 수 있는 얇은 진입점입니다.

clip-box --image scene.png --target "빨간 사각형"          # 슬롯 심 :8083
clip-box --image scene.png --target "빨간 사각형" --port 8761   # 독립형 심
decision-model box --image scene.png --target "빨간 사각형"     # 동일한 기능

h2o-lightning은 4B 의사 결정 모델입니다. 확률을 사용하여 타입이 지정된 질문에 답변하며 절대 산문을 생성하지 않습니다. box 질문은 레이블 대신 사각형과 사각형보다 더 중요한 세 가지 숫자를 반환합니다.

필드의미
box이미지의 left, top, right, bottom(분율), 왼쪽 상단 기준
confidenceP(IoU ≥ 0.5) — 박스가 그려진 이미지에 대한 의사 결정 판독값, 모델이 말하는 숫자가 아님
presentP(대상이 전혀 보이는가) — 손대지 않은 이미지에 대한 별도 판독값
found박스가 생성되었는지 여부; 미스인 경우 신뢰도 0으로 전체 이미지 반환

found가 아니라 present를 게이트로 사용하세요. 파란 자전거가 없는 장면에서 요청하면 모델은 found: true, present: 0.111로 다른 무언가를 자신 있게 둘러싼 박스를 반환합니다. '없음'을 알리는 것은 present입니다.

사용법

# API 시작 (box 질문 활성화됨, 슬롯 프론트 포트는 :8083)
h2o-serve --port 8083          # CPU, Q8_0
h2o-serve --backend vulkan     # AMD GPU: 고정 Vulkan 백엔드를 한 번 빌드합니다
h2o-serve --status
h2o-serve --stop

# 질문
clip-box --image scene.png --target "빨간 사각형"
# ACCEPT  box=(0.247, 0.247) -> (0.753, 0.753)  confidence=0.651  present=0.885

clip-box --image scene.png --target "파란 자전거"   # 없음 -> 종료 코드 2
clip-box --image receipt.png --target "총액" # confidence=0.163 < 0.30 -> 거부
clip-box --image scene.png --target "빨간 사각형" --json --crop /tmp/square.png

--json은 accepted, reason, box, pixels(실제 이미지 크기에서 계산), confidence, present, found 및 답변한 model을 반환합니다. 종료 코드 0은 승인, 2는 거부, 1은 요청 오류입니다.

--min-present(기본값 0.5)와 --min-confidence(기본값 0.30)는 게이트를 설정합니다. 둘 다 환경 변수(BOX_MIN_PRESENT, BOX_MIN_CONFIDENCE)로도 사용할 수 있습니다. --crop은 승인된 박스를 저장합니다. Pillow가 필요합니다.

기능, 가정이 아님

box는 심(shim) 기능이지 프로토콜 기능이 아닙니다. llama.cpp의 자체 /v1/systemone은 choice, score, noul만 허용합니다. 의사 결정 슬롯은 다섯 개의 후보 사이를 순환하므로:

decision-model caps
# model       /models/h2o-lightning-4b-Q4_K_M.gguf
# slot        :8083  (box on :8083)
# primitives  bool, choice, score, box

점유자가 h2o가 아니면 caps는 box를 나열하지 않으며 box는 서빙된 모델 이름을 명시하며 거부합니다. 엔드포인트가 대답할 수 없는 질문을 올리는 대신입니다.

실제로 잘하는 것

이 워크스테이션(Q8_0, CPU 백엔드)에서 측정한 합성 장면, 알려진 진실값 사용:

대상IoUconfidencepresent
빨간 사각형, 512×512 중앙0.9760.6510.885
빨간 사각형, 512×1024 세로0.8770.6690.897
빨간 사각형, 1024×512 가로0.8480.7220.895
혼잡한 장면 속 작은 빨간 사각형0.6030.3590.896
"파란 자전거" (없음)—0.1880.111
영수증의 "총액"미스 (박스가 총액 아래)0.1440.899

눈에 띄는 객체, 아이콘, 도형, 단일 이미지: 좋음, 종횡비를 올바르게 처리. 영수증의 빽빽한 작은 텍스트: 놓치며, 낮은 신뢰도가 이를 알려줍니다. 영수증의 금액 값의 경우, 총액 주변을 크롭하거나 의사 결정 API의 choice 질문("TOTAL은 무엇인가요? subtotal/total/tax")을 사용하세요. 동일한 이미지에서 올바르게 점수를 매겼습니다.

이 스킬이 존재하는 이유 (함정)

Pillow. 심은 긴밀성 판독 전에 박스를 그리고 ImportError 시 None을 반환하므로 Pillow가 없는 Python은 모든 박스에 confidence: 0.0으로 답변합니다. h2o-serve는 자체 venv를 구축하고 임포트를 확인합니다.

파일

경로역할
scripts/clip_box.py진입점 — --port/--host를 처리하고 decision-model box에 위임
../hardware/decision-model/scripts/decision_model.py클라이언트: 하나의 box 질문, 두 개의 게이트, 크롭, 종료 코드
../hardware/decision-model/scripts/h2o_serve.py런처: 해시로 고정된 부트스트랩, Pillow-safe venv, CPU/CUDA/Vulkan 백엔드, --status, --stop

상태는 ~/.cache/h2o_lightning_gguf(가중치 + 고정 백엔드)와 ~/.local/share/h2o-lightning/venv에 저장됩니다. 이 두 경로 외에는 아무것도 건드리지 않습니다.

프로토콜 참고사항

  • 여기서 심의 box.mode는 generate입니다: Qwen의 bbox_2d 규칙(0–1000, x 먼저)에 따라 하나의 제약 생성된 결과를 파싱하고 클램핑합니다. edges/hybrid는 가장자리 판독에 학습된 모델이 필요합니다; 이 릴리스에서는 generate를 유지하세요.
  • confidence는 자체 온도를 가진 확률로, 피팅될 때까지 1.0이므로 보수적입니다: 큰 사각형의 거의 완벽한 박스라도 0.65로 읽히며 0.95가 아닙니다.
  • 기본적으로 요청당 하나의 이미지; 심은 images:로 최대 8개까지 허용하며 백엔드는 --image-max-tokens 1024로 시작됩니다.
  • 동일 서버의 의사 결정 측면은 텍스트와 이미지에 대해 /v1/systemone에서 choice / noul / score에 답변합니다; 텍스트에 대한 보정된 결정의 경우 pplx-decider를 선호하세요(여기서 결정 지수 60.06 대 51.38). 기하학에는 이 모델을, 라우팅에는 사용하지 마세요.

관련 스킬