Dataset Contract
작성일: 2026-05-13 · 최신 표시: 2026-06-13 · 범위: Google Drive / server landmark dataset snapshot
Current Contract
최신 학습 데이터셋은 23개 landmark class와 parent/sub-landmark metadata를 포함한다.
각 landmark 폴더는 catalog.json, labels.json, images/를 중심으로 구성하고,
전체 dataset root에는 통합 confusion_prior_v1.json을 둔다.
2026-05-13의 10~13개 class 가정은 초기 데이터 수령 시점 기록이다.
현재는 Dataset_0601 계열 보강과 S3/S4 실험을 거치며 class 수와 hierarchy가 확장되었다.
일부 오래된 파일은 임시 파일명과 숫자형
landmark_id를 포함하므로 학습 전 canonical manifest로 정규화해야 한다.
이 문서는 데이터 구조와 스키마 계약을 정의한다. 실제 라벨러가 어떤 기준으로
confirmed, hard case, out-of-scope, 자연어 검색용 텍스트를 기록할지는
Data and Text Labeling Guide를 따른다.
Required Layout
Dataset/
confusion_prior_v1.json
cheongwadae/
catalog.json
labels.json
images/
00020.jpg
00021.jpg
naksan_park/
catalog.json
labels.json
images/
00001_b01a7d2f1cc9.jpg
mmca_seoul/
labels.json
images/
00006_1881797b6bed.jpg
dataset root 폴더명은 현재 서버와 학습 스크립트 기준 Dataset으로 둔다.
각 landmark 폴더명은 canonical landmark_id와 같아야 한다.
각 폴더 내부의 labels.json은 해당 landmark의 이미지와만 대응한다.
file_name은 폴더 내부 기준 images/... 상대 경로를 권장한다.
Required labels.json Fields
| 필드 | 필수 여부 | 설명 |
|---|---|---|
image_id |
필수 | 데이터셋 전체에서 unique한 이미지 식별자. |
file_name |
필수 | 각 landmark 폴더 기준 상대 경로. 예: images/00001.jpg. |
landmark_id |
필수 | 학습 class id. train/val/test split은 이 필드로 stratified 처리한다. |
parent_landmark_id |
권장 | 덕수궁/경복궁/창경궁처럼 세부 class가 상위 장소에 속할 때 앱 표시와 group filtering에 사용한다. |
label_status |
필수 | confirmed, uncertain, rejected 중 하나를 사용한다. |
scope_status |
필수 | in_scope, similar_out_of_scope, out_of_scope_other, screen_or_document 중 하나. |
training_role |
필수 | train_positive, low_weight_positive, calibration_only, eval_only, exclude 중 하나. |
quality_status |
권장 | ok, blurry, dark, low_resolution, occluded, cropped_too_much 등. rejection 평가에 사용한다. |
scene_group, view_type |
권장 | catalog의 allowed scene group과 view type 기준으로 이미지의 반복 장면을 묶는다. |
source_group_id |
선택 | 같은 촬영 세션, 같은 원본 URL, 같은 앨범, crop/resize 변형이 확실할 때만 쓰는 split leakage 방지용 그룹. |
confusing_with |
권장 | Dataset/confusion_prior_v1.json과 catalog를 기준으로 주입되는 hard negative 후보 id 목록. |
caption_set |
권장 | name_anchor와 visual_feature 중심의 한/영 caption. rejected/exclude는 빈 배열. |
Split Policy
- 여러 JSON을 병합하기 전 landmark별 canonical id를 확정하고, 폴더명도 같은 값으로 둔다. 예:
cheongwadae,naksan_park. - canonical id 변경은
file_name을 바꾸지 않으면 이미지 파일 매핑을 깨지 않는다. image_id가 기존 id를 포함하면original_image_id를 보존하고 canonicalimage_id를 재생성한다.- master manifest의 image path는
<landmark_id>/images/...로 저장해 landmark 간 파일명 충돌을 막는다. - 기본 split은 class별 stratified
train 70% / val 15% / test 15%로 둔다. - 같은 촬영 세션, 같은 원본 URL, 같은 블로그/앨범, 연속 촬영, crop/resize 변형은 같은 split에 묶는다.
source_group_id는 확실한 출처/중복 묶음이 있을 때만 사용한다. 파일명 패턴만으로 자동 생성하지 않는다.label_status=confirmed만 supervised class training에 사용한다.uncertain은 기본 학습에서 제외하고, 별도 robustness check에 둔다.rejected,exclude,calibration_only는 confidence threshold와 out-of-scope rejection 평가에 사용한다.
Negative Evaluation Set
저신뢰 입력 처리는 별도 평가 세트로 다룬다. 최소 구성은 비랜드마크, 서울 외 장소, 유사하지만 정답이 아닌 랜드마크, AI 생성 이미지, 흐림/어두움/잘림 이미지다. negative 데이터가 부족하면 reject AUROC나 coverage@accuracy를 완전한 검증 결과로 주장하지 않는다.
현재 negative 데이터는 아직 준비되지 않았다. 우선 수집 대상은 한국 전통 건축물 중 외형이 비슷한 범위 외 장소와 지정 랜드마크와 혼동될 수 있는 hard negative다. 예: 궁궐, 성문, 전통 지붕, 석축, 광장 구조가 유사한 이미지. 이 데이터는 closed-set Top-3 학습의 필수 조건은 아니지만, 범위 외 입력을 모두 지원 범위 외로 안내하기 위한 confidence threshold 검증에는 필요하다.
Audit Metrics
| 검사 | 목적 | 실패 시 조치 |
|---|---|---|
| missing file count | labels.json과 실제 이미지 일치 확인 | 해당 record 제외 또는 파일 복구 |
| class count / min count | 학습 가능한 class balance 확인 | 소수 class augmentation 또는 split 조정 |
| duplicate hash | train/test leakage 방지 | 중복 그룹 단위 split |
| source group leakage | 같은 촬영 출처가 train/test에 동시에 들어가는 문제 방지 | source_group_id 기준 split 재생성 |
| negative coverage | confidence threshold와 "판독 불가" 평가 가능성 확인 | negative_type별 추가 수집 또는 평가 범위 축소 |
| image decode | 깨진 파일과 특이 format 확인 | RGB 변환 캐시 생성 |
| caption coverage | image-text retrieval 후보 생성 가능성 확인 | landmark_name 기반 fallback candidate 생성 |