Accepted with verification gates
ADR-0004: Image Recognizer Model Selection — MobileCLIP2-S4
작성일: 2026-05-14 · 범위: Sprint 1 image recognizer 단일 후보 확정 · 선행 결정: ADR-0001, ADR-0002, ADR-0003
Decision
Sprint 1 image recognizer는 MobileCLIP2-S4 단일 후보로 확정한다. ADR-0003에서 image recognizer 후보로 남겨둔 MobileCLIP2-B/S4와 MobileNetV4 Hybrid 중, ADR-0003의 dual-engine retrieval 방향과 가장 잘 맞고 image-text shared embedding 자산을 그대로 재사용할 수 있는 MobileCLIP2-S4를 선택한다.
- 학습 정책: partial fine-tune, image_size 224, 30 epochs, ce_arcface_accuracy_first, head LR 1e-4 / backbone LR 1e-5 (이미
configs/candidates/mobileclip2_s4.yaml에 반영됨). - ONNX export 전
reparameterize_model()호출 필수. - 앱 탑재 artifact는 image encoder ONNX + JSON prototype index. text encoder는 앱에 싣지 않고 build-time index 생성에만 사용.
- k-fold 1번만 돈 현 시점에서는 "Sprint 1 후보 확정"이며, 5-fold + per-class metric + ONNX gate 통과 후 "최종 확정"으로 승격한다.
Why MobileCLIP2-S4
| 관점 | 근거 |
|---|---|
| Pretraining 규모 | DFNDR-2B (~2B image-text)로 pretrain되어, IN-12k 기반 MobileNetV4 대비 약 2배 이상 큰 시각 표현 자산을 가진다. confirmed records 1,841 / 4 classes의 작은 학습셋에서는 pretrain 품질이 final accuracy를 결정한다. |
| ADR-0003 dual-engine과의 정합 | image와 text가 같은 embedding space로 정렬되어 있어, ADR-0003의 fusion 입력으로 사용할 image score와 text score를 같은 단위(cosine similarity)로 다룰 수 있다. 별도 align 단계가 필요 없다. |
| Top-3 + 유사 랜드마크 변별 | contrastive 학습으로 임베딩 공간에서 비슷한 개념을 떨어뜨리는 것이 본업이다. ADR-0001의 hard negative tuning(경복궁/창덕궁 류 한국 전통 건축물 변별) 요구와 잘 맞는다. |
| Out-of-scope reject | cosine similarity threshold가 classification softmax보다 OOD에 견고하다. ADR-0001/0002의 reject gate 정책에 자연스럽다. |
| Caption supervision 활용 | labels_master.json의 name_anchor, visual_feature 영문 caption을 학습 신호로 사용 가능하다.
MobileNetV4 supervised 경로에서는 이 caption을 버려야 한다. |
| 온디바이스 latency | iPhone12 Pro Max 기준 image encoder 19.6ms (text encoder 6.6ms는 앱 미탑재). Sprint 1 latency 목표 1초에 충분히 부합한다. |
| 온디바이스 사이즈 | image encoder ~321.6M params, FP16 ONNX 약 640MB. ADR-0001의 50MB 목표는 hard stop이 아니라 보고 지표이며, 정확도 1순위 정책상 320~640MB 다운로드는 수용 가능 범위로 판단한다(2026 모바일 기준). |
Why Not MobileNetV4 (Hybrid Large / Conv-AA Large in12k)
- caption supervision을 활용할 수 없다. 학습 신호 한 갈래를 버리는 셈이다.
- image embedding 공간이 text encoder와 align되어 있지 않아, ADR-0003 fusion에서 image/text score를 동일 단위로 다루기 어렵다.
- fold 0 결과(아래)에서 MobileCLIP2-S4와 정확도 차이가 크지 않거나 test에서는 오히려 뒤진다.
- 모바일 사이즈 우위는 있지만 정확도 1순위 정책상 결정적 차이가 아니다.
MobileNetV4 Hybrid Large는 fallback 후보로 남긴다. MobileCLIP2-S4가 ONNX gate 또는 5-fold 확장에서
실패하거나, partial fine-tune으로 학습이 불안정해질 경우 즉시 전환한다.
Why Not MobileCLIP2-B / S3
- MobileCLIP2-B (86M, IN-1k 79.4% zero-shot): 더 가벼우나 정확도 한 단계 낮다. accuracy-first 정책상 S4 우선.
- MobileCLIP2-S3 (125M, 80.7%): fold 0에서 val/test 모두 S4 대비 낮음. capacity 대비 이점 없음.
- 둘 다 Sprint 2의 device 분기 후보로 남길 가치는 있다. Sprint 1에서는 S4 단일 트랙으로 통일한다.
Empirical Evidence (Fold 0)
현재 가용한 학습 결과는 fold 0 1회분이다. 4 모델 모두 locked_test_plus_5fold_trainval seed 20260513,
4 classes (mmca_seoul, cheongwadae, naksan_park, myeongdong_cathedral), confirmed 1,841, trainval 1,564, test 277,
holdout_non_confirmed 232에서 동일 split으로 학습됐다. dataset_fingerprint c95c8a5e33cfa6455fd468ac4366a7e8fbd2bee2.
| 모델 | best val_top1 | best val_top3 | final val_top1 | test_top1 | test_top3 | runtime | min train_loss |
|---|---|---|---|---|---|---|---|
| mobileclip2_s4 | 0.9905 | 1.0000 | 0.9746 | 0.9819 | 0.9928 | 928s | 0.3193 |
| mobileclip2_s3 | 0.9873 | 1.0000 | 0.9714 | 0.9567 | 0.9928 | 596s | 0.3029 |
| mobilenetv4_conv_aa_large_in12k | 0.9905 | 1.0000 | 0.9810 | 0.9747 | 0.9964 | 377s | 0.2431 |
| mobilenetv4_hybrid_large | 0.9937 | 1.0000 | 0.9841 | 0.9783 | 1.0000 | 395s | 0.2477 |
이 결과만으로 모델을 확정할 수는 없다. val_top3가 4 모델 모두 1.0으로 saturated이며,
val_top1/test_top1 차이가 fold 분산 안에 들어올 가능성이 높다. test_top1만 보면 mobileclip2_s4가 1위(0.9819),
val_top1만 보면 mobilenetv4_hybrid가 1위(0.9937)다.
따라서 본 ADR의 결정은 fold 0 결과 + ADR-0003과의 아키텍처 정합성 + pretrain 자산의 종합 판단이며,
"수치만으로 가장 좋아서"가 아니다.
Risks & Mitigations
| 리스크 | 완화 |
|---|---|
| 4 클래스에서 측정한 0.99 saturation은 10-15 클래스로 확장 시 깨질 수 있다. | 클래스 추가(특히 시각적으로 유사한 한국 전통 건축물)마다 재학습. 새 fingerprint로 W&B 분리 기록. |
| fold 0만 돌아 모델 간 차이가 fold 분산에 묻혔을 수 있다. | 5-fold 전체 실행을 ONNX export gate 이전에 완료. mean ± std 기준 finalist 재확인. |
MobileCLIP2 ONNX export 전 reparameterize_model() 누락 시 export 실패. |
train.py 또는 export 스크립트에 reparam 강제 step 추가. PyTorch ↔ ONNX cosine 차이 임계 검사. |
| MobileCLIP2 fine-tune 초기 epoch이 불안정 (epoch 1 val_top1 0.64). | partial fine-tune 유지(현재 설정), warmup 추가 검토, head-only 1 epoch 후 backbone unfreeze 옵션 보유. |
| ~640MB FP16 다운로드가 일부 사용자/환경에서 부담. | Sprint 2에서 INT8 양자화 또는 MobileCLIP2-B로 device-tier 분기. Sprint 1은 정확도 우선. |
| Tesla P100 16GB에서 S4 (321M) full fine-tune은 VRAM 부담. | partial fine-tune + batch_size_per_gpu=8 유지. gradient accumulation, FP16 AMP 활용. |
| ADR-0001은 DINOv3 visual teacher + SigLIP2 image-text teacher로 distillation을 명시했다. | 본 ADR은 Sprint 1 student 단독 트랙을 우선한다. teacher distillation은 5-fold + per-class 결과 후 phase3에서 옵션으로 추가하되, MobileCLIP2-S4 자체가 강한 pretrain을 가지므로 KD 미적용도 허용. |
Verification Gates
| Gate | 통과 기준 | 실패 시 조치 |
|---|---|---|
| K-Fold gate | 5-fold mean val_top1 ≥ MobileNetV4-Hybrid 5-fold mean − 1.0%, std ≤ 1.5%. | MobileNetV4-Hybrid로 fallback 전환. |
| Per-class gate | 최저 클래스 val_top1 ≥ 0.90 (특히 cheongwadae 196장 같은 소수 클래스). | 해당 클래스 augmentation 강화, ArcFace margin 조정. |
| OOD gate | holdout_non_confirmed 232장에서 cosine similarity 분포가 confirmed와 분리됨 (시각적 검사 + AUROC smoke). | threshold 보정 또는 dual-engine fusion에서 image score 가중치 하향. |
| ONNX gate | reparam 후 export 성공, PyTorch ↔ ONNX output cosine 차이 ≤ 1e-3, Python local inference 동작. | opset 변경, unsupported op 우회, 또는 MobileNetV4-Hybrid fallback. |
| Demo gate | 사진 입력 → Top-3 percentage 출력 → out_of_scope 안내/log 동작. | Flutter 대신 Python local demo로 fallback (ADR-0001 Demo Ladder). |
Consequences
- Sprint 1의 candidate-repo 학습/평가/ONNX export 트랙이 MobileCLIP2-S4 단일로 단순화된다.
- ADR-0003 dual-engine retrieval에서 image score와 text score를 같은 cosine 단위로 fusion할 수 있다.
- 앱 탑재 artifact는 image encoder ONNX + prototype index JSON 두 종으로 정리된다.
- 5-fold/per-class/ONNX gate 통과 전까지는 "Sprint 1 후보"이며, 통과 후 "최종"으로 승격한다.
- MobileNetV4-Hybrid-Large는 fallback으로 살아 있고, repo와 yaml은 그대로 유지한다.
References
- ADR-0001 Model Architecture
- ADR-0002 Training Model Design
- ADR-0003 Text Encoder and Natural Language Search
- Lightweight Model Reference Audit
- Archived Lightweight Model Search Plan
- apple/MobileCLIP2-S4 model card
- Apple ml-mobileclip repository
- MobileCLIP2: Improving Multi-Modal Reinforced Training (TMLR 2025)