WallpaperMachine
The wallpapers you love. A new home on your Mac.
군산대 공대 3호관 실내 길안내 웹앱으로 목적지를 찾아 3D 모형과 사진으로 경로를 안내받습니다
Translation pending
AI summary · website and README
LifestyleHTML · JavaScriptGitHub @minjong0910OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
군산대학교 공과대학 3호관(지하 1층 ~ 5층)의 실내 길안내 웹앱입니다. 강의실 번호·교수님 성함·학과 사무실로 목적지를 찾으면, 3D 건물 모형과 실제 사진으로 엘리베이터에서 내려 어느 쪽으로 몇 번째 방인지까지 안내합니다. • 졸업작품 · 김민종 · 손의윤 · 문성일 • 주소 : https://minjong0910.github.io/ — 폰 브라우저에서 바로 동작하고, 설정 → 앱 다운로드로 홈 화면에 앱으로 설치할 수 있습니다. 처음 열 때 약 14MB 를 폰에 저장해 두어 인터넷 없이도 열립니다 (AI 사진 판별만 인터넷이 필요합니다). • 출발 위치는 출입문의 QR(정문·후문·동문·서문)이나 직접 고른 층으로 정합니다. QR 은 앱 주소라서 휴대폰 기본 카메라로 찍으면 앱이 열리고 "○문에 계신가요?" 확인 화면이 뜹니다. • 건의함 : 앱 사진이 실제와 다르면 사용자가 사진을 올리고, AI 가 어디인지 짐작해 두면 관리자가 확인해 승인합니다. AI 가 스스로 확정하지 않습니다(아래 「정확도」).Read the full README ↗
군산대학교 공과대학 3호관(지하 1층 ~ 5층)의 실내 길안내 웹앱입니다. 강의실 번호·교수님 성함·학과 사무실로 목적지를 찾으면, 3D 건물 모형과 실제 사진으로 엘리베이터에서 내려 어느 쪽으로 몇 번째 방인지까지 안내합니다.
미리보기_실행.bat 미리보기 서버를 켠다 → http://localhost:8080 (앱이 열린다)
pwsh -File 도구\오프라인목록.ps1 site/ 를 고쳤으면 — 폰에 저장되는 파일 목록(sw.js)을 새로 쓴다
검사_실행.bat 고친 뒤 올리기 전에 — 파일 검사 + 브라우저 검사 (약 45초)
pwsh -File 검사.ps1 -Full + 1인칭 로드뷰 9가지를 끝까지 재생 (약 4분 더)
앱은 빌드 단계가 없습니다. site/ 폴더가 곧 배포되는 앱이고, 거기 있는 파일을 직접 고칩니다.
필요한 것 : Windows · PowerShell 7(pwsh) · Microsoft Edge (검사가 Edge 헤드리스를 쓴다). Node·Python 은 필요 없습니다.
| 경로 | 내용 |
|---|---|
site/ | 앱 — 이 폴더가 그대로 배포된다 |
site/index.html | 화면 틀(HTML)만. 코드·모양·자료는 아래 파일을 순서대로 부른다 |
site/css/ | 모양 (app.css, 부팅 화면 boot.css) — 크기는 모두 rem, 아래 「화면 크기」 |
site/js/app/ | 앱 코드 25개 파일 (아래 「구조」) |
site/js/vendor/ | three.js r128 · JSZip 3.10.1 · jsQR 1.4.0 |
site/lib/ | TensorFlow.js · MobileNet · Tesseract.js — AI·글자 읽기를 쓸 때만 받는다 |
site/data/photos.js + photos/ | 장소 사진 152곳(한 곳 1장) + 건물·출입문 8장, 그 목록 |
site/data/places.js | AI 가 아는 장소 이름 152곳 (늘 받는 1.4KB) |
site/data/aivec.js · ailib.js | AI 기준 자료 8.5MB · AI 자료집 2MB — 사진으로 찾을 때만 받는다 |
site/3d/ | 「여기가 맞나요?」 화면의 실사 3D (별도 페이지 + 그림 21장) |
site/manifest.webmanifest · site/img/icon-* | 앱 이름("3호관 길안내")·아이콘 — 홈 화면에 설치할 때 쓴다 |
site/sw.js | 인터넷 없이 열기 — 앱 파일 221개(14.3MB)를 폰에 저장 (목록은 도구/오프라인목록.ps1 이 쓴다) |
QR인쇄/ | 출입문 QR 인쇄용 그림 4장(정문_MAIN.png …) + A4 인쇄본 PDF (도구/QR_만들기.ps1 이 만든다) |
tests/ | 자동 검사 (아래 「검사」) |
서버/ | Firestore 보안 규칙 · 콘솔 설정 안내 |
도구/ | AI 자료 넣기 · 인터넷 없이 열기 목록 · 출입문 QR 만들기 · 발표 PDF 만들기 · 라운지 사진 분리 기록 · BLD_사진목록.json(건물·출입문 사진 — 사진을 다시 골라도 이건 그대로 둔다) |
문서/ | 측정 결과 · 한계와 대응 · 발표 자료 · 촬영 안내 |
eval_all.html 등 | 정확도 측정 페이지 (아래 「정확도」) |
batches.json | 사진 1,753장 → 촬영 묶음(층·파일계열·기기). 측정의 기준 |
사진 원본(2.9GB, 사진원본/)은 저장소에 넣지 않습니다.
모든 코드는 브라우저에서 돌아갑니다. 서버는 Firebase(Firestore — 제보·승인 사진, Authentication — 관리자)뿐입니다.
site/index.html 이 부르는 순서가 곧 실행 순서입니다. 앱 코드는 원래 한 파일(1만 6천 줄)이던 것을
기능별로 나눴고, 화면의 onclick="…" 이 함수 이름을 직접 부르기 때문에 대부분 전역 함수입니다
(검사.ps1 이 이름이 겹치지 않는지 확인합니다). 새로 짠 부분은 모듈 객체로 묶었습니다 — SUGAI(AI), SUGDB(서버), QRNAV(QR), NAVGRAPH(길찾기), PWA(설치·오프라인).
| 파일 | 하는 일 |
|---|---|
building.js | 층별 호실 배치 자료(FLOORS_DATA)를 3D 좌표(FLOOR_LAYOUT)로 |
shell.js · ui.js | 화면 전환 go() · 뒤로가기 · 즐겨찾기 · 한/영 · 검색 · 층 버튼 |
view3d.js | 3D 기본 · 장소 좌표 place3D() · 길찾기 그래프 NAVGRAPH · 관리자 후보 평면도 |
overview3d.js · floor-detail.js | 건물 전체 3D(목적지 강조·경로) · 층 상세 |
roadview*.js (8개) | 1인칭 로드뷰 — 층·계단실·지하·옥상·복도를 짓고, 경로를 재생하거나 눌러서 걷는다 |
guide.js | 안내 문장 만들기 buildSteps() — 「내려서 왼쪽으로 도세요 · 오른쪽에서 두 번째 방」 |
photos.js | 장소 사진 목록·표시·관리자 사진 넣기 · 사진 자료 묶음(zip) |
roomfix.js | 관리자 「구성 및 변경」 — 층 지도에서 방을 눌러 번호·이름·메모를 고친다(서버 rooms), 보이는 번호 dispNo() |
suggest.js · sugai.js · sugdb.js · aid.js | 건의함 · AI 판별 · 서버 · AI 자료집 |
qrnav.js · boot.js · zoom.js · start.js | QR · 부팅 화면 · 사진 확대 · 시작 |
pwa.js | 앱 다운로드(설치 안내) · sw.js 등록 · 출입문 QR 주소(?gate=) 받기 — head 에서 일찍 읽는다 |
beforeinstallprompt 를 받아 둠).PWA.install()) — 기기마다 다른 안내 :
안드로이드 크롬·삼성 인터넷은 버튼 한 번에 브라우저 설치 창 · 아이폰·아이패드는 그림 3단계(공유 → 홈 화면에 추가 → 추가, 아이콘·이름과 함께) ·
카카오톡·인스타그램 같은 앱 안 브라우저는 "크롬/사파리로 열기" · 설치 신호가 아직 없는 안드로이드·PC 는 브라우저 메뉴 안내.site/sw.js) — 처음 열 때 site/ 의 파일 221개(14.3MB)를 저장하고, 다음부터는 저장한 것으로 엽니다.
AI 사진 판별 자료(data/aivec.js·ailib.js)와 AI 라이브러리(lib/)는 저장하지 않습니다 — 끊겨 있으면 건의함이
"인터넷이 없어 AI 사진 판별은 쉬어요 — 제보는 그대로 되고, 사람이 확인해요"라고 말하고, 다시 연결되면 다시 받습니다.
파일마다 지문(SHA-256)을 적어 두어, 받은 파일이 목록과 다르면 다시 받고, 새 판이 나오면 바뀐 파일만 받습니다.
site/ 를 고치면 pwsh -File 도구\오프라인목록.ps1 로 목록을 새로 써야 합니다 (안 하면 검사.ps1 이 실패로 알려 줍니다).
미리보기 서버(localhost)에서는 꺼 둡니다 — 고친 파일이 바로 보여야 하니까요 (?sw=1 을 붙이면 켜짐).sw.js 는 첫 화면에 필요한 것(약 700KB)만 먼저 받고 곧바로 넘겨받습니다 — 재 보니 0.4초.
나머지(사진·3D 약 14MB)는 그다음에 배경에서 채웁니다(약 12초). 예전에는 14MB 를 다 받을 때까지 기다려서,
그동안 사용자는 계속 옛 화면을 보고 있었습니다.
② pwa.js 는 새 판이 넘겨받으면 화면을 한 번만 새로 고칩니다. 단 첫 화면일 때만 —
길안내 중이거나 카메라(QR)를 켜는 중이면 미뤄 뒀다가, 첫 화면으로 돌아오거나 앱을 다시 열 때 적용합니다.
처음 설치될 때는 새로 고치지 않습니다(괜히 한 번 깜빡임).
③ 그 새로 고침이 눈에 안 보이게 합니다 — pwa.js 가 sessionStorage에 b3nav_quiet 표시를 남기고,
boot.js 가 그 표시를 보면 켜는 화면(부팅 연출)을 통째로 건너뜁니다. 사용자 눈에는 앱이 한 번만 켜집니다.
사용자가 눌러야 하는 것은 없습니다. 앱을 열면 알아서 최신 판이 됩니다.
※ 옛 판을 지우는 것은 새 판을 다 옮겨 담은 뒤에 합니다. 먼저 지우면 '안 바뀐 파일 옮겨 담기'를 못 해
14MB 를 전부 다시 받게 됩니다.https://minjong0910.github.io/?gate=MAIN (정문 · BACK 후문 · EAST 동문 · WEST 서문).
기본 카메라로 찍으면 앱이 열리고 pwa.js 가 ?gate= 를 떼어 두었다가 QRNAV.fromUrl() 이 확인 화면을 띄웁니다.
앱 안 스캐너로 찍으면 주소를 열지 않고 글자만 읽습니다. 예전 인쇄본(B3NAV1:BLD:MAIN)도 읽습니다.
인쇄 그림은 pwsh -File 도구\QR_만들기.ps1 → QR인쇄/ — 이 PC 에 QR 프로그램이 없어 도구/QR_encode.js 로 직접 만들고,
앱이 쓰는 QR 읽기(jsQR)로 다시 읽어 맞을 때만 저장합니다. 사이트 주소가 바뀌면 qrnav.js 의 SITE_URL 을 고치고 다시 인쇄해야 합니다.설계 기준은 390 × 790 이고, app.css 의 크기는 거의 다 rem 입니다. 1rem = html 의 글자 크기 한 값뿐이라,
그 한 줄만 바꾸면 화면 전체가 같은 비율로 커지고 작아집니다.
html{font-size:16px} — 설계한 그대로 보입니다(안전망 그림이 흔들리지 않게).★ 폰에서만 물체가 통째로 사라지던 진짜 원인 (2026-09-25 해결) — fpEnsureEnvMap() 이 주는 환경맵은
PMREM(CubeUV · mapping 306) 이라 PBR 재질 전용입니다. 폰에서 MeshStandardMaterial 을 MeshPhongMaterial 로
바꿔치면서 이 환경맵을 그대로 넘기면, three.js 가 ENVMAP_TYPE_CUBE_UV 셰이더를 만들고 컴파일에 실패합니다
(콘솔 : SHADER_NAME MeshPhongMaterial … ENVMAP_TYPE_CUBE_UV … syntax error).
컴파일에 실패한 재질은 아무것도 안 그려집니다 — 문짝·난간·의자 다리가 통째로 사라집니다.
데스크톱은 PBR 을 그대로 쓰므로 멀쩡해서, 이 문제는 폰 경로에서만 재현됩니다.
→ 폰 바꿔치기에서 이 환경맵을 뗍니다(view3d.js). 옥상 장면에서만 185개 재질이 이 상태였습니다.
노란 화면·바닥 사라짐 — 1인칭으로 들어갔는데 실내가 안 켜지면(전환이 덜 끝났거나 실내를 못 지었을 때)
조감도의 층 타일이 그대로 보입니다. 그 타일이 「가야 할 층 = 노랑」이라 화면이 통째로 노랗고 바닥이 뚫려 보입니다.
그래서 overview3d.js 는 1인칭에 들어간 순간부터 실내가 보이든 말든 타일을 감춥니다(inFP).
문제 기록(설정) — 기기에서만 나는 문제를 볼 수 있게, 설정에 「문제 기록」 줄을 뒀습니다(pwa.js 의 DIAG).
오류·기기·그래픽칩·해상도 배율·폰재질 여부가 담기고, 그 줄을 누르면 전부 복사됩니다. 평소에는 "이상 없음"만 보입니다.
3D 화질 · 폰에서만 나던 문제 — 폰은 무거움을 줄이려고 view3d.js 에서 MeshStandardMaterial 을
MeshPhongMaterial 로 바꿔치기합니다. 그런데 Phong 에는 envMapIntensity 가 없어 조용히 무시되고
반사 세기(reflectivity)가 기본값 1(최대) 로 남았습니다 → 주변 환경 그림이 재질 색을 덮어써서,
옥상에서는 그 환경이 하늘이라 문·난간이 "투명해 보였습니다"(2026-09-25 에 고침. 데스크톱은 PBR 그대로라 멀쩡해서 재현이 안 됐습니다).
폰에서 계단현상 보정(antialias)도 꺼 두었더니 의자 다리(3.5cm)처럼 얇은 것이 사라져 보여 켰습니다.
폰에서만 나는 문제를 볼 때는 브라우저 폭을 좁힌 뒤 새로고침해야 이 경로가 켜집니다 — 폭만 줄이면 안 켜집니다.
3D 화질 — 해상도 배율은 overview3d.js 의 tunePixelRatio() 가 그때그때 정합니다 :
건물 전체를 밖에서 보는 조감도는 가벼우므로 2배(또렷하게), 1인칭 실내는 무거우므로 1.4배(프레임 지키기).
바닥 격자는 최대로 축소(radius 260)해도 화면을 채우도록 560 으로 넓혀 두었습니다 — 예전 240 이라 뒤가 검게 보였습니다.
font-size:clamp(13.5px, min(4.1vw, 2.03dvh), 19px)
가로는 화면 폭의 4.1%, 세로는 높이의 2.03% 를 재서 작은 쪽을 씁니다 — 폭은 넓은데 키가 작은 폰에서 아래가 잘리지 않습니다.
아주 작거나(13.5px) 아주 크지(19px) 않게 막아 둡니다.px 로 남겨 둔 것 : 테두리·그림자(1~2px 는 굵어지면 안 됨)와 min-width/min-height:44px
(손가락 터치 최소 크기는 기기가 작아도 줄면 안 됨).px 대신 rem 을 쓰세요 (16 으로 나눈 값). 안 그러면 그 부분만 기기에 따라 커지거나 작아집니다.#ph)에는 최소 높이가 있습니다. 예전에는 min-height:0 이라 화면이 짧은 폰에서 높이가 0 이 되어
그 기기에서만 사진이 아예 안 보였습니다.좌표 기준 — +Z = 엘리베이터에서 내려 −X 를 보고 섰을 때 왼쪽 복도. 층 자료의 Top 이 왼쪽 복도입니다
(호실 번호 순서로 추측하면 틀립니다 — 문서/발표자료_모음.txt 20절). 3D 단위는 임의이며 실제 축척이 아닙니다.
"어느 쪽으로 도세요"는 그 사람이 지금 어느 쪽을 보고 서 있느냐에 달려 있습니다. 앱은 세 가지를 구분합니다.
| 상황 | 보고 선 방향 | 안내 문구 |
|---|---|---|
| 2~5층 — 엘리베이터에서 내렸다 | −X (복도 쪽) | 「내려서 왼쪽으로 도세요」 |
| 1층 — 이미 1층에 있다 | +X (엘리베이터를 마주 봄) | 「엘리베이터를 마주 보고 왼쪽으로 도세요」 |
| 1층 — 출입문 QR 로 들어왔다 | 그 문이 향한 쪽 | 「복도로 나와 왼쪽으로 도세요」 |
1층이 다른 이유 : 1층은 엘리베이터를 타고 내리는 층이 아니라 밖에서 걸어 들어오는 층입니다. 1층에 서 있는 사람은 엘리베이터 쪽으로 걸어가 그것을 마주 보므로, 내렸을 때와 좌우가 정반대입니다 (2026-09-24 에 고침 — 그전에는 1층도 '내렸을 때' 기준이라 반대로 안내했습니다).
복도 사진은 도는 방향이 아니라 「목적지가 어느 복도에 있는가」로 고릅니다 (hallCode).
도는 방향으로 고르면 문으로 들어왔을 때 반대 복도 사진이 나옵니다.
복도 이름(1층 왼쪽 복도)은 '내렸을 때' 기준으로 붙은 이름입니다. 그래서 1층처럼 다른 자세를 기준으로
말할 때는 사진 설명에서 좌우를 빼고 1층 복도로만 적습니다 — 안 그러면 "오른쪽으로 도세요" 밑에
"왼쪽 복도"가 적혀 한 화면에서 엇갈려 보입니다.
검사 : tests/check.html 은 내렸을 때 기준만 잽니다(1층은 2층에서 내려온 것으로 계산).
1층에 이미 서 있는 경우는 안전망(tests/golden.html)이 잡습니다.
admins/{UID} 명단에 있는 계정. 규칙은 서버/firestore.rules.apiKey 는 공개용 값 — 막는 일은 규칙이 합니다.)rooms)는 누구나 읽고 관리자만 씁니다. 누가·언제·무엇을 고쳤는지 roomlog 에 남습니다.서버/보안_설정_안내.txt · 2026-10-18 추가분 서버/하루3번_방정보_설정_안내.txt.검사.ps1 은 지금까지 실제로 났던 사고를 잡습니다. 하나라도 걸리면 실패로 끝납니다.
| 검사 | 막는 사고 |
|---|---|
| 부르는 파일·사진 목록의 파일이 모두 있는가 | 파일 빠뜨리고 올림 |
places.js = AI 자료의 장소 | 관리자 목록에서 장소가 빠짐 (v75) |
| 함수 이름이 한 번씩인가 | 같은 이름이 뒤에서 조용히 덮어씀 (v74, fpExitSignTex) |
| 코드에 비밀번호·가짜 진행 문구·글자로 박은 그림이 없는가 | v84 · v85 · 18MB 앱 |
| 첫 화면 1MB 이하 (압축) | 예전 16MB |
| 앱 이름·아이콘 크기·첫 화면 문구·설정 버튼 | 홈 화면에 이름·아이콘이 깨져 보임 |
인터넷 없이 열기 목록(sw.js)이 지금 파일과 같은가 | 고친 뒤 목록을 안 바꿔 폰이 옛 파일을 계속 씀 |
| 출입문 QR 주소 = 이 저장소의 사이트 · 인쇄 그림 4장 | 인쇄해 붙인 QR 이 엉뚱한 곳을 엶 |
앱 검사 tests/check.html | 152곳 접수·이름·층·관리자 목록·3D 위치 · 길안내 좌우·차례 = 사용자 확정 목록·길찾기 그래프 · 실사 3D · 파일마다 문법 |
설치·오프라인 tests/pwa.html | QR 주소로 열기 · 첫 화면 문구(자리·색·누르면 설정) · 기기 흉내 13가지의 설치 안내 · 아이콘 크기 · 14MB 저장 → 인터넷 끊김 흉내에서 앱·사진·3D 가 열리고 AI 는 쉬는가 · 인쇄 QR 4장 다시 읽기 |
안전망 tests/golden.html | 길안내 754가지(한/영) · 사진 160장(바이트) · 화면 글자·모양 · CSS 599개 · 3D 그림 15장이 기록과 같은가 |
로드뷰 tests/roadview.html (-Full) | 경로 미리보기 9가지를 끝까지 재생 · 직접 걸어보기 — 오류 0 |
안전망은 시계를 멈추고 글꼴을 기다려 그리므로, 같은 앱이면 3D 그림까지 점 하나 다르지 않습니다.
일부러 바꾼 화면이면 확인한 뒤 새 기준을 기록합니다 : pwsh -File tests\run_golden.ps1 -Mode capture -Tag v153 (지금 기준은 v152)
(그다음 검사.ps1 · tests/run_golden.ps1 의 기본 -Tag 를 올린다). 검사마다 일부러 망가뜨린 사본으로 실패를 잡는지 확인했습니다.
1. 미리보기_실행.bat
2. http://localhost:8080/gen.html 「생성 시작」 (약 7분) → 생성물/aivec_new.json
3. pwsh -File 도구\AI자료_넣기.ps1 사진·batches.json 과 짝을 확인하고 site/data/aivec.js · places.js 를 쓴다
4. 검사_실행.bat
model/ 폴더(예전 로컬 모델)를 두지 마세요 — 원래 모델과 값이 달라 모든 판별이 틀어집니다 (검사가 막습니다).
사진 AI 모델은 site/ai-model/mobilenet_v2_050_224/ 에 있습니다 (2026-10-21) — tfhub.dev 가 없어지고 Kaggle 은 폰 종류마다 다르게 답해서, Kaggle 이 내주는 같은 모델 파일 그대로(7.9MB)를 받아 두었습니다. sugai.js 의 MODEL_URLS 가 이것을 먼저 쓰고, 검사가 세 파일의 지문(SHA-256)을 지킵니다. 오프라인 저장 목록에서는 뺐습니다(AI 자료처럼 인터넷이 될 때만).
다른 사람이 찍은 사진으로만 잽니다. 같은 사람이 한 번에 찍은 사진(38개 묶음)은 기준에서 빼고 맞힙니다. 처음 온 사용자는 우리가 찍은 사진을 갖고 있지 않기 때문입니다.
2026-09-23 기준 (사진 2,075장 · 4·5층 재촬영 322장을 더한 뒤). 괄호는 재촬영 전(1,753장) 값입니다.
| 종류 | 장수 | 정확한 자리 | 층 | 5등 안 |
|---|---|---|---|---|
| 전체 (강의실 제외) | 1,844 | 55.6% (53.3) | 66.8% (65.6) | 83.9% (82.4) |
| 복도 | 1,189 | 56.8% (55.3) | 67.4% (67.3) | 84.5% (82.7) |
| 라운지·로비 | 210 | 67.1% (64.2) | 80.5% (79.9) | 87.6% (84.9) |
| 복도 — 같은 자리에서 두 장 | 1,178 | 64.9% (61.9) | 74.7% (73.8) | 91.8% (88.2) |
95% 신뢰구간 — 자리 51.7 ~ 58.3%, 층 63.7 ~ 69.9% (촬영 묶음 38개를 통째로 복원추출 2,000번).
재촬영으로 달라진 곳 (가장 나빴던 5층) — 5층 왼쪽 복도 자리 5% → 48% · 층 39% → 63%, 5층 오른쪽 복도 29% → 37% · 47% → 46%, 4층 오른쪽 복도 38% → 61% · 53% → 71%, 창밖 22% → 35%. 두 사람이 다른 날 찍어 촬영자 편중이 풀린 것이 원인입니다.
그래서 앱은 확실할 때만 말합니다 — 1·2등 장소의 유사도 차이(격차)를 확신도로 씁니다. 사진을 반으로 나눠 한쪽에서 문턱을 정하고 다른 쪽에 적용한 값입니다.
| 격차 | 사진의 | 앱이 하는 말 | 시험 결과 (2026-09-23) |
|---|---|---|---|
| ≥ 0.22 | 약 7% | 「아마 여기예요 : ○○」 | 자리 95.2% (재촬영 전 93.1%) |
| ≥ 0.14 | 약 22% | 「층은 ○층 같아요 — 자리는 확실하지 않아요」 | 층 96.1% (재촬영 전 0.16 에서 97.9%) |
| 그 밖 | 「어디인지 알 수 없어요 — 번호판이 보이게 한 장 더」 |
앱의 문턱은 자리 0.22 · 층 0.16 입니다. 반 나눠 검증이 이번에는 층 문턱을 0.14 로 골랐습니다(더 많이 답하고 96.1%). 앱 값(0.16)은 그보다 엄격한 쪽이라 그대로 두었습니다 — 새 사진으로 한 번 더 확인한 뒤 바꿉니다.
1등 유사도는 확신도가 못 됩니다 (유사도로 줄 세우면 상위 10% 도 자리 60.5%) — 그래서 사용자에게 「유사도 %」를 보여 주지 않습니다. 글자 읽기(오독 0건) : 복도 번호판 37% · 엘리베이터 안 층 97% · 비상대피 안내판 층 45%.
2026-09-23 자료(사진 2,075장)로 다시 잰 값입니다. 세 기준선 모두 CNN 과 같은 224px 사진에서 특징만 다르게 뽑았습니다.
| 방식 | 정확한 자리 | 지금 앱과의 차이 (95% 구간) |
|---|---|---|
| 우연 (152곳 중 아무거나) | 0.7% | |
| 가장 흔한 곳만 답하기 | 10.7% | |
| 색 분포 (RGB 8×8×8) | 10.7% | |
| 작은 흑백 사진 16×16 | 20.4% | CNN 이 +35.2%p (+30.6 ~ +38.9) — 의미 있음 |
| CNN — 지금 앱 | 55.6% | |
| CNN · 후처리 없이 정규화만 | 54.9% | 후처리가 +0.7%p (−0.7 ~ +2.0) — 우연과 구분 안 됨 |
| CNN · 주성분 5개 제거 | 56.8% | +1.1%p (−0.1 ~ +2.3) — 9/21 에는 유의했으나(+1.9) 새 사진에서는 아님 → 앱 안 바꿈 |
| 번호판 조각 시점 없이 | 52.8% | 넣은 것이 +2.8%p (+1.0 ~ +4.9) — 의미 있음 |
측정 : eval_all.html 약 90초 · eval_ablation.html 약 10분. 한계와 대응은 문서/한계와_대응.txt.
NAV_M_PER_UNIT 로 거리·시간을 낼 수 있다).onclick 을 이벤트 연결로 바꾸면서 모듈로 옮기는 것이 다음 단계.