Dataset Operations · Current

Data and Text Labeling Guide

이 문서는 MobileCLIP2-S3/S4 계열 모델을 우리 데이터셋에 multi-task fine-tuning하기 위한 현재 라벨링 기준이다. 현재 기준은 catalog.json을 먼저 만들고, 그 catalog를 입력으로 labels.json을 생성하는 흐름이다. 이미지별 Vision AI 작업은 최소 라벨 판단에 집중하고, caption_set은 Python 후처리가 catalog의 scene_group template을 기준으로 만든다.
왜 caption이 필요한가? MobileCLIP2 계열 모델은 이미지 인코더와 텍스트 인코더를 함께 가진 embedding 모델이다. 같은 landmark 이미지와 그 landmark를 설명하는 한/영 caption을 가까운 embedding 방향으로 학습시키면, 이미지 인식과 자연어 검색을 같은 표현 공간에서 함께 개선할 수 있다.

현재 결정

앞으로의 라벨링은 image-label classification만을 위한 작업이 아니라 image-text contrastive 학습까지 가능한 데이터셋을 만드는 작업이다. 단, 모든 이미지마다 긴 caption을 사람이 직접 쓰지 않는다. landmark 단위 catalog.json에 기준 어휘와 scene_group별 caption template을 만들고, 이미지별 labels.json에는 주 피사체, 품질, scene_group, training_role 같은 판단 결과를 남긴다.

이전 Sprint 1 기준은 기존 학습방식용 old guide로 보존했다. 왜 그 방식을 썼는지도 old guide에 남겨 두었다.

2026-06-08 기준 변경 이유

라벨링 산출물 지도

이름이 비슷해서 헷갈리기 쉬운 산출물을 먼저 분리한다. 핵심은 “사진 1장에 붙는 정보”와 “랜드마크 1개에 붙는 검색 사전”을 구분하는 것이다.

산출물 저장 단위 현재 목적 모델/앱에 미치는 영향
이미지 라벨 이미지 1장 이 사진이 어떤 landmark의 confirmed positive인지, hard case인지, OOS/저품질인지 결정한다. 이미지 분류, prototype 품질, train/val/test split, confidence policy.
이미지 caption set 이미지 1장 catalog.json을 기준으로 name_anchor와 visual_feature를 자동 생성한다. image-text contrastive 학습과 자연어 검색 embedding 품질.
랜드마크 catalog 랜드마크 1개 공식명, 별칭, 시각 설명, scene_group, caption template, query example을 모은다. labels.json 생성, text index, keyword bonus, 검색 회귀 테스트.
회귀 테스트 fixture 입력 케이스 1건 수정 후 이미지/텍스트 검색과 신뢰도 정책이 깨졌는지 확인한다. 시연 안정성, 실패 재발 방지.

이미지 record 필수 필드

이미지 record는 모델이 “무엇을 정답으로 배워야 하는가”와 “무엇을 정답으로 배우면 안 되는가”를 나누는 기준이다. 잘못된 confirmed 하나는 classification과 contrastive 학습을 동시에 오염시킬 수 있다.

{
  "image_id": "gwanghwamun_001",
  "file_name": "images/gwanghwamun_001.jpg",
  "landmark_id": "gwanghwamun",
  "label_status": "confirmed",
  "scope_status": "in_scope",
  "landmark_visibility": "dominant",
  "multi_landmark_present": true,
  "background_landmark_ids": ["cheongwadae"],
  "confusing_with": ["gyeongbokgung_geunjeongmun", "cheongwadae"],
  "scene_group": "night_view",
  "view_type": "front_exterior",
  "time_condition": "night",
  "distance_scale": "medium",
  "quality_status": ["ok"],
  "training_role": "train_positive",
  "source_group_id": "",
  "caption_set": []
}
필드 권장 값 왜 필요한가
label_status confirmed, uncertain, rejected confirmed만 기본 학습 positive로 사용한다. uncertain은 사람이 다시 본다.
scope_status in_scope, similar_out_of_scope, out_of_scope_other, screen_or_document 지원 범위 밖 이미지를 현재 지원 class 중 하나로 억지 답하지 않도록 평가한다.
landmark_visibility dominant, clear_partial, small_background, background_only, not_visible 배경에 보이는 landmark를 positive로 잘못 학습하지 않기 위한 핵심 필드다.
confusing_with 예: ["gwanghwamun", "gyeongbokgung_geunjeongmun"] hard negative pair와 혼동 분석을 위한 구조화 필드다. caption text에 상대 이름을 넣지 않는다.
source_group_id Optional. 확실한 같은 원본/crop/resize/연속 장면일 때만 작성 수동 필수 입력이 아니다. 기관 코드나 파일 prefix만으로 넓게 묶지 않는다. 모르면 빈 문자열로 둔다.
quality_status ok, blurry, dark, low_resolution, occluded, cropped_too_much 저품질 입력을 positive 학습에 넣을지, confidence/OOS 평가로 뺄지 결정한다.
training_role train_positive, low_weight_positive, calibration_only, eval_only, exclude Top-1 중심 학습에 강하게 넣을 이미지와 OOS/저품질/검수 보류 이미지를 분리한다.

Caption set 기준

Multi-task 학습에서 caption은 보조 설명이 아니라 image-text 학습 pair의 정답이다. 현재 최종 labels.json에는 name_anchorvisual_feature만 둔다. function, contrast_with, viewpoint는 이미지별 caption_set에 넣지 않는다. 기능 설명과 비교 설명은 catalog.json에서 관리한다.

"caption_set": [
  {
    "caption_type": "name_anchor",
    "target": "gwanghwamun",
    "text_ko": "광화문 사진",
    "text_en": "Gwanghwamun Gate photo"
  },
  {
    "caption_type": "visual_feature",
    "target": "gwanghwamun",
    "text_ko": "넓은 광장 앞에 있는 큰 궁궐 문과 흰 돌담, 어두운 기와지붕이 보인다.",
    "text_en": "A large palace gate in front of a broad plaza, with white stone walls and dark tiled roofs."
  }
]
caption_type 현재 처리 이유
name_anchor 최종 labels.json에 포함 랜드마크 이름과 이미지 embedding을 직접 연결한다. “사진/photo”만 쓰지 않고 이름을 포함한다.
visual_feature 최종 labels.json에 포함 사진에서 보이는 색, 재료, 형태, 구도만 학습시킨다. catalog의 scene_group template에서 가져온다.
function labels.json에서는 금지, catalog에 보관 기능 설명은 자연어 검색에는 유용하지만 이미지에 직접 보이지 않는 의미일 수 있다.
viewpoint labels.json에서는 금지, scene_group/view_type으로 기록 view 정보는 caption_type을 늘리지 않고 구조화 필드와 visual_feature template으로 처리한다.
contrast_with labels.json에서는 금지, catalog/priority에 보관 비교 문장은 검수에는 좋지만 상대 landmark 이름이나 특징이 caption embedding을 오염시킬 수 있다.

landmark catalog.json 기준

catalog.json은 이미지 1장용 caption이 아니라 landmark 1개를 대표하는 기준 파일이다. 앱의 자연어 검색, keyword bonus, text index, caption template, hard negative 후보 검수에 함께 쓰인다.

{
  "landmark_id": "naksan_park",
  "landmark_name_ko": "낙산공원",
  "landmark_name_en": "Naksan Park",
  "alias_ko": ["낙산공원", "낙산 성곽길", "성곽 산책로"],
  "alias_en": ["Naksan Park", "fortress wall trail"],
  "visual_description_ko": "언덕 위 성곽과 돌담길이 이어지고 높은 전망이 보이는 공원이다.",
  "visual_description_en": "A hillside park with stone fortress walls and an elevated city view.",
  "allowed_scene_groups": ["fortress_wall_trail", "night_view", "wide_city_view", "other"],
  "caption_templates": {
    "fortress_wall_trail": {
      "text_ko": "언덕 위 돌 성곽과 산책로가 이어지고 도시 전망이 보인다.",
      "text_en": "A stone fortress wall trail continues along a hill with a city view."
    }
  },
  "confusing_landmark_ids": [],
  "query_examples_ko": ["돌담 있는 공원", "성곽 산책로", "야경 보이는 성곽"],
  "query_examples_en": ["stone wall park", "fortress trail", "night view city wall"]
}

텍스트 검색 오염 방지

catalog.json의 검색 문장과 caption은 embedding/text index에 직접 들어갈 수 있으므로, 정답 landmark 자체가 아닌 지명, 주변 장소, 근접 관계를 검색 단서로 쓰지 않는다. “경복궁 근처”, “국립현대미술관 옆”, “서울 도심”, “near Gyeongbokgung” 같은 문장은 실제 검색에서 주변 landmark 점수를 잘못 올릴 수 있어 금지한다.

Hard negative 운영

Hard negative는 그냥 틀린 예시가 아니라 모델이 실제로 헷갈릴 만한 예시다. 광화문과 근정문처럼 둘 다 궁궐, 기와, 단청, 문 구조가 보이면 random negative보다 훨씬 중요한 학습 신호가 된다.

혼동쌍 기록할 차이 기록 위치
광화문 vs 경복궁 근정문/근정전 바깥 주 출입문과 궁궐 내부 건물/문 차이. confusion_prior_v1.json, confusing_with, catalog의 contrast_descriptions.
청와대 vs 궁궐 전경 푸른 지붕과 산 배경은 비슷하지만 건물 용도와 구도가 다름. 배경이면 background_landmark_ids, 주 피사체가 아니면 small_background 또는 background_only.
조계사 vs 보현산신각 큰 사찰 공간과 작은 산신각 구조 차이. 정답 landmark의 고유 시각 특징만 caption template에 쓰고, 상대 이름은 구조화 필드에만 둔다.
덕수궁 vs 창경궁 궁궐 계열이지만 전각 구성과 마당/숲 비중이 다름. 세부 class는 landmark_id로, 앱 grouping은 parent_landmark_id 같은 catalog metadata로 처리한다.

라벨링 프롬프트

아래 프롬프트는 새 기준의 기본 템플릿이다. 자동 생성 결과는 바로 학습에 넣지 말고 사람이 label_status, caption 사실성, hard negative 여부를 다시 확인한다.

공통 입력 파일: confusion prior

표준 입력 파일

confusion_prior_v1.json

catalog.json 작성과 이미지별 labels.json 생성에 함께 쓰는 혼동 후보 기준 파일이다. 내려받은 파일은 그대로 Dataset/confusion_prior_v1.json으로 Dataset 루트에 둔다.

JSON 다운로드


라벨링 제작 흐름
1. Dataset/confusion_prior_v1.json을 Dataset 루트에 둔다
2. landmark별 catalog.json을 먼저 만든다
3. 이미 존재하는 catalog.json을 기준으로 이미지 라벨 + caption 생성 프롬프트를 실행해 labels.json을 만든다
4. validator와 사람 검수로 학습 투입 여부를 확정한다.

1. landmark catalog.json 생성 프롬프트

이 프롬프트는 각 랜드마크의 catalog.json을 만드는 기준이다.
catalog는 자연어 검색, 이미지 caption template, hard negative 후보, 라벨러 기준어를 함께 제공한다.

역할 정리
  • catalog.json: landmark 1개의 이름, 별칭, 시각 기준어, scene_group, caption template, query 예시를 담는다.
  • confusion_prior_v1.json: 공통 입력 파일이다. catalog 작성 시에는 confusing_landmark_ids 후보를 정하는 데 참고한다.
  • contrast_descriptions: caption_set으로 직접 들어가지 않는다. 검수와 confusion prior 작성 참고용이다.
[역할]
너는 Landmark Assistant의 catalog.json 작성자이자 시각 정보 검수자다.

[목표]
landmark 1개에 대해 Dataset/<landmark_id>/catalog.json을 작성한다.
이 catalog.json은 다음 용도로 사용된다:

1. 이미지별 labels.json 생성 시 caption_set 자동 생성 기준
2. scene_group별 visual_feature caption template 기준
3. 자연어 검색을 위한 alias, query_examples, visual_description 기준
4. confusing_with와 hard negative 후보 구성 기준
5. 라벨러가 같은 시각 특징을 같은 표현으로 쓰게 만드는 기준 어휘집

중요:
이 프롬프트는 별도의 “텍스트 카탈로그” 파일을 만들기 위한 것이 아니다.
최종 산출물은 Dataset/<landmark_id>/catalog.json이다.

[입력]
- landmark_id: 랜드마크의 고유 ID
- landmark_name_ko: 한국어 공식 명칭
- landmark_name_en: 영어 공식 명칭
- landmark_category: 건물/공간 유형
  예: museum, temple, palace, palace_gate, park, stream, tower, statue, cathedral 등
- candidate_landmark_ids: 전체 landmark_id 목록
- confusion_prior_v1.json: 표준 입력. 전체 landmark 간 헷갈릴 수 있는 쌍 목록
- reference_images: 대표 이미지. 선택 사항이지만 있으면 시각 묘사 정확도 향상
- optional_user_notes: 사용자가 제공한 추가 정보. 없으면 빈 값

[confusion_prior_v1.json 사용 규칙]
1. 현재 landmark_id와 관련된 항목만 참고한다.
2. priority가 high 또는 medium인 관련 pair는 confusing_landmark_ids 후보로 우선 고려한다.
3. priority가 low인 pair는 catalog_notes에 참고만 남기고, 확실하지 않으면 confusing_landmark_ids에 넣지 않는다.
4. confusion_prior의 reason_ko, labeling_note_ko는 라벨링 주의사항이다.
5. confusion_prior의 상대 landmark 이름, 별칭, 영문명은 visual_description, caption_templates, query_examples에 직접 넣지 않는다.
6. confusing_landmark_ids에는 반드시 candidate_landmark_ids 안에 있는 id만 넣는다.

[자료 조사 규칙]
1. 웹 검색 또는 외부 자료 접근이 가능한 환경이라면 catalog 작성 전에 landmark 정보를 조사한다.
2. 우선순위는 다음과 같다:
   1순위: 공식 홈페이지, 공공기관, 박물관/미술관/문화재청/지자체 등 공식 출처
   2순위: 신뢰 가능한 관광/문화 정보 사이트
   3순위: 대표 이미지 또는 사용자가 제공한 reference_images
   4순위: 일반 검색 결과
3. 이 catalog의 핵심은 위치 정보가 아니라 시각 정보이다.
4. 주소, 주변 지명, 근처 landmark, 행정구역 정보는 최종 검색 텍스트와 visual_description에 넣지 않는다.
5. reference_images가 있으면 시각 묘사는 reference_images를 최우선으로 한다.
6. reference_images가 없고 외관을 확신할 수 없으면 색상, 재질, 형태, 구조를 구체적으로 단정하지 않는다.
7. 확실하지 않은 시각 정보는 visual_description, key_visual_terms, caption_templates에 넣지 않는다.
8. 불확실성은 catalog_notes에 기록한다.
9. 모델의 기억만으로 구체적 외관을 지어내지 않는다.

[작성해야 할 필드]

1. alias_ko / alias_en
- 공식명, 약칭, 통칭, 영문 약어, 흔한 표기 변형을 포함한다.
- 주변 landmark 기반 표현이나 주소성 표현은 넣지 않는다.

2. visual_description_ko / visual_description_en
- 이미지로 확인 가능한 외관 중심 설명이다.
- 색상, 재질, 형태, 구조, 지붕, 외벽, 기둥, 타워 형태, 조형물, 입면 등을 쓴다.
- 1~3문장으로 짧고 반복 가능하게 작성한다.
- 다른 landmark와의 비교 문장은 쓰지 않는다.

3. function_description_ko / function_description_en
- 기능/용도를 1문장으로 짧게 작성한다.
- 역사 설명은 최소화한다.

4. key_visual_terms_ko / key_visual_terms_en
- visual_description에서 추출한 핵심 시각 용어이다.
- 이미지 caption template과 라벨링 기준 어휘로 쓰인다.
- 같은 특징을 여러 표현으로 바꿔 쓰지 않는다.

5. allowed_scene_groups
- 이 landmark에서 반복적으로 등장하는 장면 유형 목록이다.
- lower_snake_case로 작성한다.
- 보통 6~12개 정도가 적절하다.
- 과도하게 세분화하지 않는다.
- 가능한 경우 other를 포함한다.

예:
- front_exterior
- side_exterior
- wide_view
- night_view
- courtyard_view
- detail_roof
- interior
- other

6. caption_templates
- scene_group별 visual_feature caption template이다.
- Python 후처리가 이미지별 caption_set의 visual_feature를 만들 때 사용한다.
- 각 scene_group마다 text_ko와 text_en을 작성한다.
- caption에는 정답 landmark의 시각 특징만 쓴다.
- confusing landmark 이름, 별칭, 비교 문장, 주변 위치 표현은 넣지 않는다.

7. confusing_landmark_ids
- candidate_landmark_ids 중 시각적으로 혼동될 가능성이 있는 landmark_id 목록이다.
- confusion_prior_v1.json의 high/medium pair를 우선 참고한다.
- 확실하지 않으면 무리해서 넣지 않는다.
- 새로운 landmark_id를 만들지 않는다.

8. contrast_descriptions
- confusing_landmark_ids의 각 항목과 1:1로 작성한다.
- 이 필드는 caption_set에 직접 들어가지 않는다.
- 사람이 catalog를 검수하거나 confusion_prior_v1.json을 보강할 때 참고하는 설명이다.
- text_ko/text_en에는 target landmark의 이름, 별칭, 주변 지명, 고유명사를 직접 쓰지 않는다.
- 비교 대상은 target_landmark_id 필드로만 표시한다.

9. query_examples_ko / query_examples_en
- 사용자가 실제로 입력할 만한 자연어 검색 질의 예시이다.
- 한국어와 영어를 각각 최소 6개 작성한다.
- 별칭/약어형, 시각 묘사형, 기능/용도형, 오기/구어형을 모두 포함한다.
- 주변 landmark 이름, 주소성 설명은 넣지 않는다.

10. visual_confidence
- high: reference_images 또는 공식 자료로 외관을 명확히 확인한 경우
- medium: 일부 자료는 있으나 시각 특징이 제한적으로만 확인되는 경우
- low: reference_images가 없고 외관 정보가 부족한 경우

11. catalog_notes
- 자료 부족, reference_images 부재, 시각 정보 불확실성, low priority confusion 참고 등을 짧게 기록한다.
- 특별한 메모가 없으면 []로 둔다.

[작성 원칙]
1. 모든 class에 걸리는 일반어만 반복하지 않는다.
   나쁜 예: 큰 건물, 예쁜 장소, modern building, famous place
   좋은 예: 붉은 목조 기둥과 기와지붕, 수직 베이지 타일 외벽, 상부 전망대가 있는 타워형 구조물
2. Top-1 검색을 목표로 해당 landmark에 강하게 연결되는 고유 시각 단서를 먼저 쓴다.
3. 같은 시각 특징은 catalog 전체에서 같은 용어로 유지한다.
4. visual_description에서 사용한 핵심 시각 용어는 key_visual_terms에 반드시 반영한다.
5. key_visual_terms에서 정한 기준어는 caption_templates에서도 같은 표현으로 사용한다.
6. contrast_descriptions는 검수 참고용이며 caption_set에 넣지 않는다.
7. scene_group별 caption_templates는 짧고 일관된 문장으로 작성한다.
8. 확실하지 않은 외관 특징은 쓰지 않는다.

[query_examples 규칙]
query_examples_ko와 query_examples_en은 각각 최소 6개 이상 작성한다.
아래 유형을 모두 포함한다:

1. 별칭/약어형 2개 이상
2. 시각 묘사형 2개 이상
3. 기능/용도형 1개 이상
4. 오기/구어형 1개 이상

예:
- 기와지붕 궁궐 정문
- 붉은 기둥 사찰 건물
- stone wall park
- tower with observation deck
- modern art museum building

[출력 JSON 스키마]
{
  "landmark_id": "",
  "landmark_name_ko": "",
  "landmark_name_en": "",
  "landmark_category": "",
  "alias_ko": [],
  "alias_en": [],
  "visual_description_ko": "",
  "visual_description_en": "",
  "function_description_ko": "",
  "function_description_en": "",
  "key_visual_terms_ko": [],
  "key_visual_terms_en": [],
  "allowed_scene_groups": [],
  "caption_templates": {
    "other": {
      "text_ko": "",
      "text_en": ""
    }
  },
  "confusing_landmark_ids": [],
  "contrast_descriptions": [
    {
      "target_landmark_id": "",
      "text_ko": "",
      "text_en": ""
    }
  ],
  "query_examples_ko": [],
  "query_examples_en": [],
  "visual_confidence": "high | medium | low",
  "catalog_notes": []
}

[출력 규칙]
- JSON만 출력한다.
- 설명문, 마크다운, 코드블록, 주석을 출력하지 않는다.
- trailing comma를 사용하지 않는다.
- 모든 문자열은 큰따옴표를 사용한다.
- candidate_landmark_ids에 없는 ID를 confusing_landmark_ids에 넣지 않는다.
- 확실하지 않은 시각 특징은 쓰지 않는다.

2. 이미지 라벨 + caption 생성 프롬프트

최종 운영 기준은 catalog.jsonlabels.json을 핵심 산출물로 두는 것이다. scene_groups_suggestion.json, scene_only_labels.json, validation_report.json은 검수와 디버깅을 위한 중간 산출물이며 기본적으로 Dataset 폴더에 계속 쌓아두지 않는다. 전체 프롬프트와 복사 버튼은 이미지 라벨 + caption 생성 프롬프트 페이지에서 확인한다.

프롬프트의 핵심 구조
  • confusion_prior_v1.json은 전체 랜드마크 간 헷갈릴 수 있는 관계를 담는 표준 입력이다.
  • Vision AI는 이미지별 scene_group, label_status, visibility, training_role 같은 최소 라벨만 판단한다.
  • Python 후처리가 catalog.json을 기준으로 caption_set, confusing_with, landmark_id, image_id를 채운다.
  • 헷갈리는 대상 이름은 caption text에 넣지 않고, confusing_withconfusion_prior_v1.json으로만 관리한다.
파일 역할 보관 기준
Dataset/<landmark_id>/catalog.json 랜드마크 이름, 별칭, 시각 기준, scene_group caption template, confusing 후보를 담는 기준 파일 필수 최종 산출물
Dataset/<landmark_id>/labels.json 학습 코드가 직접 읽는 이미지별 라벨, caption_set, quality, training_role 파일 필수 최종 산출물
Dataset/confusion_prior_v1.json 전체 클래스 간 헷갈릴 수 있는 쌍을 미리 정의하는 hard negative 후보 지도 표준 전역 입력
scene_groups_suggestion.json, scene_only_labels.json, validation_report.json scene_group 제안, Vision AI 최소 라벨, 검증 결과 debug output 또는 실패 분석용

3. 학습 투입 전 검수 프롬프트

[역할]
너는 Landmark Assistant 데이터 품질 리뷰어다.
아래 이미지 라벨, caption_set, catalog.json이 multi-task fine-tuning에 들어가도 되는지 검토한다.

[검토 기준]
- confirmed인데 주 피사체가 약하거나 배경 landmark만 보이는가?
- captions 단일 객체를 사용했는가? 사용했다면 schema error로 needs_fix다.
- caption_set에 허용 타입인 name_anchor와 visual_feature만 있는가?
- function, contrast_with, viewpoint caption_type이 labels.json에 들어갔는가? 들어갔다면 needs_fix다.
- caption이 이미지에 실제로 보이지 않는 내용을 말하는가?
- 한국어/영어 caption 중 하나만 있고 다른 언어 coverage가 부족한가?
- hard negative가 필요한데 confusing_with나 confusion_prior_v1.json에 반영되지 않았는가?
- source_group_id가 기관 코드나 파일명 prefix 전체처럼 너무 넓게 잡혀 있는가? 없다면 그 자체로 문제 삼지 않는다.
- training_role이 label_status, visibility, quality_status와 모순되는가?
- OOS, screenshot, blur, noise가 positive 학습에 섞였는가?
- caption/catalog/query text에 근처 지명, 주변 landmark 이름, 주소성 설명이 들어가 text search를 오염시키는가?
- Top-1 학습에 중요한 구분 단서가 빠져 모든 caption이 “전통 건물”, “관광지”처럼 일반어로만 되어 있는가?

[출력]
{
  "verdict": "pass | needs_fix | reject",
  "critical_issues": [],
  "recommended_fixes": [],
  "fields_to_recheck_by_human": [],
  "short_summary_ko": ""
}

작업 순서

  1. Dataset 루트에 confusion_prior_v1.json을 둔다.
  2. 각 class의 catalog.json을 먼저 만든다. 이름, alias, visual_description, scene_group, caption_template을 확정한다.
  3. 이미지별 label_status, 주 피사체, 품질, view, 배경 landmark를 판단한다.
  4. Python 후처리로 labels.jsoncaption_set을 생성한다. caption_type은 name_anchorvisual_feature만 사용한다.
  5. source_group_id는 필수로 작성하지 않는다. 같은 원본/crop/resize/연속 장면이 확실할 때만 optional로 기록한다.
  6. hard negative pair를 confusing_withconfusion_prior_v1.json 기준으로 검수한다.
  7. 학습 전 audit로 missing file, duplicate, source leakage, caption coverage, OOS 분리를 확인한다.

성능에 가장 도움 되는 우선순위

우선순위 작업 해결하려는 문제
P0 confirmed positive 정리와 배경 landmark 분리 광화문 사진이 청와대나 근정문으로 흔들리는 문제.
P0 catalog 기반 한/영 visual caption template 작성 한국어 자연어 검색이 keyword 보정에 과도하게 의존하는 문제.
P0 hard negative 구조화 궁궐, 사찰, 성곽 계열처럼 시각적으로 비슷한 class 구분.
P1 OOS/저품질/screenshot 회귀 세트 유지 지원 범위 밖 이미지를 확정 답처럼 보여주는 문제.
P1 view_type 균형 보강 정면/낮 사진에는 강하지만 야간/측면/먼 거리에서 약한 문제.

변경 이력 및 관련 문서

문서 작성 날짜 용도
Data and Text Labeling Guide 2026-06-08 catalog-first 흐름, caption_set 2종 제한, confusion_prior_v1 표준 입력, MobileCLIP2-S3/S4 공통 라벨링 기준으로 최신화.
Image Label + Caption Prompt 2026-06-08 이미 존재하는 catalog.json을 입력으로 labels.json을 생성하는 프롬프트.
Multi-task Fine-tuning and Dataset Labeling 2026-05-20 왜 multi-task가 필요한지, 데이터셋이 어떻게 바뀌어야 하는지 설명하는 배경지식.
Old Labeling Guide: Classification v1 2026-05-20 Sprint 1 classification 중심 라벨링 기준과 그 이유를 보존한 old 문서.
Dataset Contract 2026-05-13 폴더 구조, labels.json 필드, split 정책의 기본 계약.

하지 말아야 할 것