
이미지에 태그를 달고 순위를 매깁니다.
카메라 롤에서 스크린샷, 영수증, 셀카를 찾고, 누군가 눈을 감은 사진과 보여 주기에는 너무 민감한 사진을 골라냅니다. Eye는 모든 사진에 기기에서 태그를 붙이므로, 어떤 이미지도 업로드되지 않습니다.
Eye는 거의 같은 사진들을 묶고, 연사마다 아무도 눈을 감지 않고 얼굴이 가장 잘 나온 한 장을 남길 컷으로 고릅니다. 같은 순간을 마흔 번 찍어도, 카메라 롤에서 볼 사진은 한 장이 됩니다.
M6 탑재 Mac의 Neural Engine에서 사진 한 장에 5.5ms가 걸리므로, 사진 10,000장도 1분이 채 걸리지 않습니다. WebGPU를 쓰는 Chrome에서는 한 장에 41ms입니다.
사진 한 장 태깅에 5.5ms.
Eye는 M6 Mac의 Neural Engine에서 사진 한 장을 5.5ms에, Chrome의 WebGPU에서 41ms에 태깅합니다. Core ML 빌드와 LiteRT 빌드는 공개 테스트 세트 6개에서 같은 점수를 냅니다.
Apple M6 탑재 Mac에서 사진 한 장을 전체 분석한 시간입니다.
| 런타임 | 시간 |
|---|---|
| Core ML, Neural Engine | 5.5ms |
| LiteRT, GPU (Metal) | 30ms |
| LiteRT.js, WebGPU, in Chrome | 41ms |
| LiteRT, CPU, 4 threads | 49ms |
| LiteRT.js, WebAssembly with threads, in Chrome | 176ms |
공개 테스트 세트 정확도, 두 빌드 모두 같은 채점 코드로 측정
| 테스트 세트 | Core ML | LiteRT (CPU) |
|---|---|---|
| KonIQ-10k, aesthetic SRCC | 0.6288 | 0.6291 |
| COCO val2017, person AP50 | 0.3814 | 0.3837 |
| MIT1003, where people look, CC | 0.7153 | 0.7195 |
| CUHK cropping, crop IoU | 0.8244 | 0.8241 |
| WIDER Face val, AP, hard | 0.6806 | 0.6812 |
| CEW, eyes open AUC | 0.9943 | 0.9945 |
두 빌드는 모든 세트에서 천분의 몇 이내의 차이로 같은 답을 냅니다. 속도는 Apple M6 탑재 Mac 한 대에서 측정했으며, LiteRT 빌드는 아직 Android 휴대폰에서 측정하지 않았습니다.
활용 사례
이미지에 태그를 달고 순위를 매깁니다.
카메라 롤 정리
직접 찍은 사진과 스크린샷, 영수증, 문서, 화이트보드를 구분해, 갤러리 앱이 이들을 따로 정리하거나 지우자고 제안할 수 있게 합니다.
연사에서 가장 좋은 한 장 남기기
거의 같은 사진들을 한 묶음으로 모으고, 아무도 눈을 감지 않은 남길 컷을 맨 앞에 보여 줍니다. 나머지는 탭 한 번으로 지울 수 있습니다.
민감한 사진 가리기
가족 공유 앨범이나 브라우저 업로드 양식에서, 선정적이거나 폭력적이거나 의료 관련 사진을 누가 보기 전에 흐리게 처리합니다. 사진을 자동으로 숨기려면 엄격한 기준을 쓰세요.
담긴 내용으로 사진 검색
558가지 장면과 사진 종류를 기준으로 강아지, 해변, 영수증이 찍힌 사진을 모두 찾습니다. 클라우드 비전 API 없이 웹 앱이나 Node 백엔드에서 작동합니다.
표지 이미지 크롭
썸네일이나 공유 카드에 쓸 동영상의 가장 좋은 프레임, 또는 사진의 가장 좋은 정사각형·와이드 크롭을 고릅니다. Eye는 옆으로 누운 사진을 바로 세워 주기도 합니다.
모델이 하는 일
analyze호출 한 번으로 신뢰도가 붙은 태그, 세 가지 점수(심미성, 남길 컷, 표지), 사진 속 사람, 반려동물, 얼굴을 받습니다. 같은 호출이 어떤 화면비에든 맞는 최적의 크롭, 회전 보정, 임베딩도 돌려줍니다.- 태그는 사진 종류(스크린샷, 영수증, 문서, 신분증, 화이트보드 등), 품질(선명함, 흐림, 보케), 사람(단체 사진, 인물 사진, 모두 웃는 얼굴)을 다룹니다. 그 밖에 남길지 지울지의 이유, 민감한 콘텐츠, 558가지 장면 태그가 있습니다.
- 모든 태그는 0.5가 권장 임계값, 0.9가 엄격한 임계값이 되도록 보정되어 있습니다. 0.5에서 스크린샷 태그가 맞을 확률은 98%, 영수증 태그는 100%, 사람은 95%, 눈 감음은 92%입니다.
- 장면 태그는 중앙값 기준 88%의 확률로 맞습니다. “기억에 남지 않음”이나 “어색한 구도” 같은 남길지 지울지의 이유는 신뢰도가 가장 낮으므로, 제안 용도로 쓰세요.
- 얼굴마다 별도의 태그가 붙습니다: 눈 감음, 웃음, 카메라 응시 또는 시선 회피, 기쁨, 놀람. Eye는 기본적으로 사진당 최대 20개의 얼굴을 분석합니다.
Eye.duplicates,Eye.best,Eye.similar는 라이브러리 전체를 대상으로 작동합니다: 거의 같은 사진 묶음(원하면 몇 초 간격으로 찍힌 사진만), 한 세트에서 남길 컷, 유사도순으로 정렬한 사진.- 분석 결과는 Swift, Kotlin, JavaScript에서 똑같은 JSON으로 저장되므로, 앱이 이를 보관해 두었다가 나중에 모델을 불러오지 않고도 필터링할 수 있습니다.
parts로 무엇을 계산할지 고릅니다:photo,layout,faces,sharpness. 파트마다 모델을 한 번 이상 실행하므로, 필요 없는 것은 빼세요.- Apple 플랫폼용 Core ML 빌드는 48MB로 Neural Engine에서 실행되고, Android, Linux, Windows, Node, 브라우저용 LiteRT 빌드는 66MB입니다. SDK는 처음 사용할 때 모델을 내려받아 캐시합니다.
- 브라우저에서 Eye는 WebGPU가 있으면 WebGPU로 GPU에서, 없으면 WebAssembly로 CPU에서 실행됩니다.
시작하기
이미지 분류을(를) 몇 줄의 코드로 iOS or macOS, Android or web 앱에 추가하세요. Eye 문서.
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0")
// target dependency
.product(name: "Eye", package: "desert-ant-core")
import Eye
let eye = Eye()
let photo = try await eye.analyze(contentsOf: photoURL)
if photo.has(.screenshot) || photo.has(.receipt) { archive(photo) }
if photo.has(.sensitive, .strict) { hide(photo) }
photo.scores?.aesthetic // 0.81: better than 81% of photos
let keeper = Eye.best(of: burst)
Add Eye from Desert Ant Labs to this Swift project (iOS, macOS). What it does: 온디바이스 사진 태깅과 점수화. SDK: Swift (iOS, macOS) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme // Swift Package Manager .package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.0.0") // target dependency .product(name: "Eye", package: "desert-ant-core") Reference: - Model page: https://desertant.com/models/eye/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
// build.gradle.kts (Maven Central)
implementation("ai.desertant:eye:4.0.0")
import ai.desertant.eye.Eye
import ai.desertant.eye.Tags
Eye(context).use { eye ->
val photo = eye.analyze(bitmap)
if (photo.has(Tags.DOG) && !photo.has(Tags.BLURRY)) keep(photo)
val groups = Eye.duplicates(library)
}
Add Eye from Desert Ant Labs to this Kotlin project (Android).
What it does: 온디바이스 사진 태깅과 점수화.
SDK:
Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// build.gradle.kts (Maven Central)
implementation("ai.desertant:eye:4.0.0")
Reference:
- Model page: https://desertant.com/models/eye/
- Full catalog and other models: https://desertant.com/llms.txt
Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
npm i @desert-ant-labs/eye @litertjs/core # browser
npm i @desert-ant-labs/eye # Node
import { Eye, Tag } from "@desert-ant-labs/eye";
const eye = await Eye.load();
const photo = await eye.analyze(image);
if (photo.has(Tag.dog) && !photo.has(Tag.blurry)) keep(photo);
const groups = Eye.duplicates(library, { dates });
Add Eye from Desert Ant Labs to this JavaScript / TypeScript project (Web, Node.js). What it does: 온디바이스 사진 태깅과 점수화. SDK: JavaScript / TypeScript (Web, Node.js) Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme npm i @desert-ant-labs/eye @litertjs/core # browser npm i @desert-ant-labs/eye # Node Reference: - Model page: https://desertant.com/models/eye/ - Full catalog and other models: https://desertant.com/llms.txt Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
사양
- 속도
- Neural Engine에서 사진당 5.5ms (M6 Mac); Chrome의 WebGPU에서 41ms
- 정확도
- 임계값 0.5에서: 스크린샷 정밀도 98%, 영수증 100%, 장면은 중앙값 88%
- 태그
- 사진 종류, 남길지 지울지, 품질, 사람, 얼굴, 민감한 콘텐츠, 558가지 장면
- 온디바이스 크기
- Core ML 48MB (Apple); LiteRT 66MB (Android, Linux, Windows, Node, 브라우저)
- 플랫폼
- iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux, Windows (LiteRT); 브라우저와 Node (LiteRT.js)
Eye는 사진으로 학습했기 때문에 일러스트, 스크린샷, 많이 편집한 이미지의 점수는 신뢰도가 떨어집니다. “기억에 남지 않음”이나 “어색한 구도” 같은 남길지 지울지의 이유는 신뢰도가 가장 낮으므로 제안 용도로 쓰고, 자동으로 처리하는 일에는 엄격한 기준을 쓰세요.
얼굴 분석은 얼굴의 모습을 설명할 뿐, 누구인지 알아내지 않습니다.
자주 묻는 질문
Eye은(는) 무엇인가요?
스크린샷과 영수증부터 558가지 장면까지, 사진이 무엇이고 무엇이 담겼는지 태그를 붙입니다. 처리는 전부 기기에서 이뤄집니다.
Eye은(는) 온디바이스로 실행되나요?
네. Eye은(는) 서버 호출 없이 기기에서 실행되므로, 데이터는 사용자의 기기에 그대로 남습니다.
Eye은(는) 어떤 플랫폼을 지원하나요?
Eye은(는) Swift, Kotlin, JavaScript / TypeScript용 네이티브 온디바이스 SDK로 제공됩니다.
Eye의 비용은 얼마인가요?
각 모델은 월간 활성 기기 10만 대까지 무료입니다. 추론은 무제한입니다. 맞춤 라이선스는 문의하기 바랍니다.
Eye은(는) 얼마나 정확하고 빠른가요?
Eye는 M6 Mac의 Neural Engine에서 사진 한 장을 5.5ms에, Chrome의 WebGPU에서 41ms에 태깅합니다. Core ML 빌드와 LiteRT 빌드는 공개 테스트 세트 6개에서 같은 점수를 냅니다.