생성형 AI 기반 멀티모달 Vision AI 서비스 개발 과정 · 최종 프로젝트
PickSight
카메라로 상품을 인식해 가격 조회·결제까지 잇는 통합 무인 매장 인식 시스템
열린집합 임베딩 검색 · 미등록 상품 실시간 등록 · 오결제 0 안전 결제
98.6%
Recall@1
90.3%
안전 자동통과
0%
오결제율
~150ms
인식 지연 p95
Contents

목차

Part 01 · Overview

프로젝트 개요 · 스펙

프로젝트
PickSight — 통합 시각 인식 상품 인식 시스템
과정
생성형 AI 기반 멀티모달 Vision AI 서비스 개발 과정
개발 · 기간
변찬우 (1인) · 7월 22일 ~ 7월 28일 (7일)
도메인
도서 인식(구현) → 포장식품 · 냉장 등 확장
데이터
비저작권 합성 샘플 6품목 · 갤러리 / 쿼리 (manifest 관리)
핵심 스택
SigLIP2 임베딩 · CSLS 검색 · FAISS · EasyOCR · Python
모듈
embedding · search · decision · registration · ocr · kiosk · manager
키오스크(인식·결제) · 관리자(등록·수집)
산출물
인식 엔진 · 데모 웹앱 · 개발 대시보드
진행률
9개 작업 / 4단계 · 100% 완료
Part 02 · Problem

배경과 문제 정의

무인 소매·독립 서점은 바코드·전용 코드 관리가 번거롭고 코드 없는 상품도 많습니다. 상품은 계속 늘고, 오인식은 그대로 금전 사고가 됩니다.

🏷️
바코드·코드 관리 부담
상품마다 부착·수동 모드 전환 — 운영 인력 부담
📕
코드 없는 상품
독립 출판물 등 ISBN·바코드 없는 상품 관리 불가
📈
끝없이 늘어나는 품목
신상품·개정판·유사 디자인 — 고정 분류로 감당 불가
⚠️
오인식 = 금전 사고
잘못 인식하면 곧 오결제 — ‘틀리지 않음’이 최우선
Part 03 · Solution

카메라만으로 인식부터 결제까지

카메라에 상품을 비추면 인식 → 가격 조회 → 장바구니·결제가 이어지고, 못 알아본 상품은 그 자리에서 등록해 카탈로그를 키웁니다.

1
📷
상품 촬영
카메라로 표지·상품을 비춤
2
🧠
시각 인식
임베딩 → 카탈로그 유사도 검색
3
🛡️
안전 판정
확신할 때만 자동결제
4
🧾
가격·결제
상품 DB에서 가격 조회 → 결제

하나의 엔진, 여러 도메인

도서 인식에서 출발해 포장식품·냉장 등 여러 도메인을 하나의 공유 인식 엔진으로 다룹니다. 도메인 차이(증강·검증·임계값)는 어댑터로 흡수하고 인식 코어는 공유합니다.

Part 03 · Core Design

확장성과 안전을 만드는 네 가지 원칙

01
열린집합 임베딩 검색
상품을 고정된 N개 클래스로 분류하지 않고, 이미지를 벡터로 바꿔 카탈로그와 유사도 검색으로 식별한다.
02
미등록 상품 실시간 등록
미등록 상품을 모델 재학습 없이 임베딩 벡터만 추가해 그 자리에서 등록 — 상품이 늘어도 파국적 망각이 원리적으로 없다.
03
안전 우선 3단 결정
‘오인식 = 금전 사고’. 확신할 때만 자동결제, 애매하면 확인, 카탈로그 밖이면 거절한다.
04
능동 등록 루프
키오스크가 못 알아본 상품을 관리자 등록 대기열로 넘겨, 매장이 스스로 카탈로그를 키운다.
Part 04 · Architecture

시스템 아키텍처 — 하나의 공유 인식 엔진

카메라 입력
표지·상품 촬영
SigLIP2 임베딩
1152-d · L2 정규화
CSLS 검색
허브 완화 · top-k
3단 결정
유사도 + margin
가격 조회
상품 DB
결제
장바구니·합계
OCR 텍스트 추출 — 제목 대조 · 2차 신호(선택). 애매할 때만 호출해 3단 결정을 보강.

검출 신호 — sim = top1 유사도(확신도), margin = top1−top2(후보 분리도). 절대 유사도만으로는 ‘확신에 찬 오인식’을 못 거르므로 margin이 애매·오인식을 차단하는 핵심 신호입니다.

Part 04 · Tech Stack

사용 기술과 엔지니어링 판단

기술 구성
임베딩
SigLIP2 So400m (1152-d) · 무학습(frozen)
검색
코사인 + CSLS 허브 완화 · 대규모 FAISS
등록 증강
다중 뷰(회전·글레어·띠지·명도) 평균 벡터
OCR
EasyOCR — 등록 보조 · 인식 2차 신호
메타 조회
알라딘 도서 OpenAPI (가격·ISBN·표지)
데모 서버
Python 표준 라이브러리 · 추가 의존성 0
기획 → 구현 : 핵심 판단
표지 식별 모델
· 초기 기획: DINOv3 + ArcFace 메트릭 러닝
채택: SigLIP2 무학습(frozen) — R@1 98.6% 달성, 등록은 재학습 없이 실시간 유지
자동결제 게이트
· 절대 유사도만으로 판정
top1−top2 margin 병용 — ‘확신에 찬 오인식’ 차단
등록 참조 이미지
· 현장 촬영 사진
표준 상품 이미지(알라딘 표지) — 배경 허브 오인식 제거
Part 05 · Data & API

데이터 구조 · 참조 API

데이터 구조 (DB)
books
도서 ID · ISBN · 제목/저자/출판사 · 정가/판매가
상품·가격 정보
embeddings
도서 ID · 특징 벡터 · 뷰 종류 · 출처
표지 식별용 참조
transactions
거래 ID · 시각 · 인식/확정값 · 신뢰도
결제·정확도 추적
참조 API (도서 메타데이터)
알라딘 OpenAPI
표지 · 정가/판매가 · ISBN · 출판 정보 (구현 연동)
카카오 책 검색
표지 · 가격 · ISBN
네이버 책 검색
도서 메타데이터
국립중앙도서관 ISBN
표준 서지정보
Google Books
해외서 메타 보강

표지 임베딩과 제목·저자(OCR)를 함께 대조해 식별 — 비슷한 표지에 강하고, 신간은 등록만으로 즉시 인식됩니다.

Part 06 · Progress

개발 추진 계획 · 진행 현황

4
단계
9
작업 (완료)
7
모듈
100%
진행률

단계별 진행
인식 엔진임베딩 · 유사도 검색 · 증강 (2 작업)
100%
안전 결정3단 결정 · 오결제 0 캘리브 (2 작업)
100%
등록 · 능동학습실시간 등록 · 미등록 수집 (3 작업)
100%
데모 앱키오스크 · 관리자 (2 작업)
100%

추진 계획 — 인식 엔진 → 안전 결정 → 등록·능동학습 → 데모 앱 · 7월 22일 ~ 7월 28일 (7일)

Part 06 · Dev Management

대시보드 기반 개발 관리 — 단일 소스로 컨텍스트를 고정

개발 전 과정을 단일 소스(status.js)로 관리하고 대시보드로 시각화해, 사람과 AI 코딩 도구가 공유하는 컨텍스트를 일관되게 유지했습니다.

개발 대시보드 탭 투어GIF · 자동재생
개발 대시보드 — 6개 뷰 순회 (개요·마일스톤·구조도·흐름도·일정·작업)
단일 소스 (SSOT)
status.js 하나가 작업·마일스톤·단계·일정·모듈·문서의 원천 — 상태가 흩어지지 않는다
대시보드 6뷰
개요·마일스톤·구조도·흐름도·일정·작업 자동 렌더 · 변경 시 자동 반영
추적성
각 작업이 산출 문서(결과·명세·아키텍처)로 링크 — 근거가 항상 연결
컨텍스트 일관성
진행·의사결정(피봇)·범위(MVP as-is/to-be)를 한 곳에 고정 → 컨텍스트 드리프트 방지

컨텍스트 엔지니어링 관점 — 구조화된 단일 상태가 사람과 AI 코딩 도구가 공유하는 ‘컨텍스트’가 되어, 일관되고 재현 가능한 개발(형상관리)을 뒷받침합니다.

Part 07 · Demo ①

비추면 인식되고, 자동으로 담긴다

인식 데모GIF · 자동재생
카메라 인식 → 자동 담김 · 실시간 재생

책을 카메라에 비추면 SigLIP2 임베딩 → 유사도 검색으로 상품을 찾고, 유사도·margin이 모두 충분하면 곧바로 장바구니에 담깁니다.

판정
자동담김 (auto)
신호
sim 0.619 · margin 0.13
결과
가격 자동 조회 · 합계 갱신
Part 07 · Demo ②

틀리느니 되묻는다 — 오결제 0의 방어선

3단 결정 데모정지 이미지
‘확인’ 사례 — 표지가 비슷한 후보(0.66·0.62·0.61)가 근접해 margin이 낮아, 자동결제 대신 후보 확인을 요청.
자동결제
유사도·margin 모두 충분 → 즉시 담김
확인
애매(margin 낮음) → 후보 제시, 사람이 선택
미등록(거절)
유사도 낮음(카탈로그 밖) → 수집·등록으로
Part 07 · Demo ③

못 알아본 상품을, 재학습 없이 즉시 등록

미등록 상품 실시간 등록 데모GIF · 자동재생
수집 → 관리자 등록(OCR·알라딘 자동 채움) → 임베딩 추가 · 실시간 재생
등록 직후 재인식정지 이미지
등록 직후 재인식 성공 · sim 0.752
1수집
키오스크가 못 알아본 이미지가 대기열로
2자동 채움
OCR 제목 초안 + 알라딘 가격·ISBN·표지
3임베딩 추가
가중치 미변경 · 기존 데이터 무손상
4자가 테스트
재인식 검증 후 판매 활성화
Part 07 · Results

무학습 상태로 달성한 안전 운영점

98.6%
Recall@1
1위 후보가 정답
100%
Recall@5
상위 5 안에 정답
90.3%
안전 자동통과
오결제·FA 0 유지
0% · 0%
오결제 · FA
최우선 안전 지표
~150ms
인식 지연 p95
임베딩+검색

안전 운영점 — 쿼리 처리 분포
자동결제 (안전)
90.3
확인·거절
9.7
오결제
0
해석

오결제·false-accept 0을 지키는 운영점에서 90% 이상을 자동결제로 처리합니다.

다중 뷰 증강이 안전 자동통과율을 유의하게 끌어올렸고, 나머지(애매·닮은 미등록)는 확인으로 위임하거나 2차 신호로 자동통과 전환이 가능합니다.

※ SigLIP2 무학습(frozen) · 데모 카탈로그 기준 · 도메인/규모 확대 시 동일 프로토콜로 재검증

Conclusion

미등록 상품 실시간 등록으로 확장성과 안전을 동시에

핵심 성과
상품 정체성을 가중치가 아닌 카탈로그 임베딩에 둬 신규 등록이 기존을 훼손하지 않음
오결제 0을 최우선으로, 유사도·margin으로 자동 / 확인 / 거절을 가름
미등록 → 수집 → 등록 → 재인식까지 end-to-end 동작 (키오스크·관리자)
향후 확장
규모
수만→수십만: FAISS ANN 인덱스 (정확도 무관·학습 불필요)
도메인
포장식품·냉장: 동일 엔진 + 증강·임계값·바코드 폴백 어댑터
정확도
OCR/VLM·기하검증 ‘두 신호 합의’로 자동통과 상향

🔒제출용 보안·저작권 점검 — API 키·시크릿 노출 없음(.env 제외 · .env.example 공란) · 저작권 이미지 없음(비저작권 합성 샘플 6종) · 하드코딩 비밀·민감 로직 미검출.
PickSight · 변찬우 · 감사합니다