reject threshold가 약함
현재 threshold 0.25는 앱 화면 캡처, 애매한 전경 이미지도 통과시킨다. top-1 score만으로 reject를 결정하면 Sprint 1 시연 중 과감한 오답이 나올 수 있다.
Sprint 1 Demo Test
MobileCLIP2-S4 기반 Streamlit 데모앱을 로컬 CPU 환경에서 실행하고, 이미지 인식·자연어 검색·상세 페이지 흐름이 시연 가능한지 확인한 기록이다. 이 문서는 정량 벤치마크가 아니라, 2026-05-15 새벽에 수행한 1차 수동 smoke test와 로그를 근거로 한다.
핵심 시연 흐름은 동작한다. 청와대, 종묘, 낙산공원 대표 이미지는 Top-1로 맞았고, “Royal Ancestral Shrine” 같은 명확한 영어 alias 검색도 종묘를 1순위로 반환했다. 상세 페이지도 대표 이미지, 설명, 별칭, 태그, 좌표, 지도 링크까지 표시된다.
다만 현재 점수는 calibrated probability가 아니다. 앱은 cosine 또는 fusion score를 0-100%로 변환해 보여준다. 따라서 “79%”는 정답 확률 79%가 아니라 score 0.789를 사용자 친화적으로 표시한 값이다. 1차 데모 전에는 저신뢰·애매함 판단을 top-1 점수만이 아니라 top-1/top-2 margin까지 함께 보도록 보강하는 것이 좋다.
| 항목 | 확인 내용 |
|---|---|
| 앱 위치 | C:\Users\hi\Downloads\종설_작업중\landmark-demo-app |
| 앱 형태 | Streamlit 단일 페이지. 이미지, 자연어, 이름 검색 탭과 landmark 상세 페이지. |
| 모델 | best.pt 기반 MobileCLIP2-S4. 데모 화면 기준 backend는 PyTorch, device는 CPU. |
| 점수 방식 | 이미지 단독은 class prototype cosine. 자연어 단독은 text encoder score 0.6 + keyword score 0.4 fusion. |
| 근거 자료 | 사용자 제공 스크린샷 11장, logs/demo.jsonl의 24개 실행 로그. |
| 시간대 | 로그는 UTC로 2026-05-14 15:53-16:03, 한국 시간으로 2026-05-15 00:53-01:03 구간. |
| 케이스 | 기대 결과 | 관측 결과 | 판정 | 메모 |
|---|---|---|---|---|
청와대 이미지 124124.jpg |
청와대 Top-1 | 청와대 0.789, 경복궁 근정문 0.074, 명동성당 0.057. 화면 표시 79%, 처리 639ms. | Pass | top-1과 top-2 margin이 매우 커서 대표 성공 케이스로 적합. |
종묘 이미지 종.jpg |
종묘 Top-1 | 종묘 0.679, 청와대 0.142, 보현산 신각 0.128. 화면 표시 68%, 처리 580ms. | Pass | 전통 건축물 간 혼동 후보가 있지만 margin은 충분히 큼. |
낙산공원 성곽 이미지 test.jpg |
낙산공원 Top-1 | 낙산공원 0.636, 광화문 0.194, 청계천 0.163. 화면 표시 64%, 처리 574-593ms. | Pass | 성곽/공원 이미지 시연에 사용하기 좋음. |
영어 자연어 Royal Ancestral Shrine |
종묘 Top-1 | 종묘 0.694, 보현산 신각 0.329, 세종대왕 동상 0.310. | Pass | alias 기반 keyword score가 정확히 작동한 케이스. |
한국어 자연어 미술관 |
국립현대미술관 서울 Top-1 | 국립현대미술관 서울 0.790, 보현산 신각 0.469, 청와대 0.346. | Pass | 한국어 단일 명사 keyword 검색은 안정적으로 보임. |
| 상세 페이지 | 랜드마크 정보 확인 가능 | 청와대, 종묘, 낙산공원 상세 페이지에서 대표 이미지, 별칭, 태그, 위치, Google Maps 링크 확인. | Pass | Sprint 1 기술 시현 흐름을 완성하는 데 충분함. |
| 경복궁/광화문 전경 + 뒤쪽 청와대 | 애매함 또는 후보 제시 | 청와대 0.351, 광화문 0.257, 청계천 0.213. 화면 표시 35%, 처리 557ms. | Needs calibration | 청와대가 배경에 보여 완전히 틀렸다고 단정하기는 어렵지만, top-1 점수와 margin이 낮아 “확실하지 않음” UI가 더 적절함. |
| 앱 화면 캡처 이미지 | 범위 외 입력 | 국립현대미술관 서울 0.326, 낙산공원 0.250, 보현산 신각 -0.007. 현재 below_threshold=false. |
Fail | 이미지 자체가 랜드마크 사진이 아니므로 reject 또는 후보 보기 상태여야 함. |
영어 자연어 art gallery |
국립현대미술관 서울 Top-1 또는 후보 상위 | 보현산 신각 0.325, 국립현대미술관 서울 0.267, 청와대 0.243. | Fail | 영어 일반 표현에서 keyword hit가 없고 text tower score만으로 오판. 영어 alias/keyword 보강이 필요. |
한국어 자연어 돌담있는곳 |
낙산공원 후보 상위 | 보현산 신각 0.511, 국립현대미술관 서울 0.423, 낙산공원 0.390. | Fail | 띄어쓰기 없는 설명형 질의는 keyword 분해가 약함. “성곽”, “돌담”, “야경”, “낙산” 동의어 사전 필요. |
현재 threshold 0.25는 앱 화면 캡처, 애매한 전경 이미지도 통과시킨다. top-1 score만으로 reject를 결정하면 Sprint 1 시연 중 과감한 오답이 나올 수 있다.
“Royal Ancestral Shrine”처럼 catalog alias에 가까운 표현은 잘 되지만, “art gallery”처럼 일반 명사형 질의는 keyword score가 0이 되어 text tower만 남는다.
“돌담있는곳”은 낙산공원을 3순위로만 반환했다. 띄어쓰기, 동의어, 복합 명사 처리가 없으면 자연어 검색 시연 가치가 약해진다.
화면의 %는 사용자 친화 표시이지만 실제 calibrated probability가 아니다. 내부 문서와 개발자 모드에서는 raw score와 margin을 함께 봐야 한다.
top1 < 0.45 또는 top1 - top2 < 0.12이면
바로 정답처럼 보이지 말고 “확실하지 않지만 가까운 후보입니다” 상태로 표시한다.
이 숫자는 1차 로그 기반 가설이며, 최종값은 holdout/수동 케이스로 조정한다.
mmca_seoul에 “art gallery”, “art museum”, “modern art museum”, “contemporary art”를 추가하고,
naksan_park에 “stone wall”, “fortress wall”, “city wall”, “night view”를 추가한다.
demo-regression-v1로 묶어,
asset 재빌드나 threshold 변경 후 같은 결과를 비교한다.
지금 데모는 “MobileCLIP2-S4를 온디바이스 후보 모델로 고정하고, image encoder와 text tower를 함께 써서 사진 검색과 자연어 검색을 하나의 UI에서 보여줄 수 있다”는 메시지를 전달하기에 충분하다. 성공 장면은 청와대, 종묘, 낙산공원 이미지와 종묘 영어 alias 검색을 사용한다.
반대로 “art gallery”, “돌담있는곳”, 앱 화면 캡처, 경복궁/광화문 전경 이미지는 개선 과제로 보관한다. 이 케이스들은 실패라기보다 Sprint 1 다음 단계에서 threshold, keyword catalog, 범위 외 입력 정책을 조정할 수 있는 기준점이다.