Eye
Etiquete cada fotografia pelo que é e pelo que mostra, de capturas de ecrã e recibos a 558 cenas, inteiramente no dispositivo.

Marque e classifique imagens.
Encontre as capturas de ecrã, os recibos e as selfies de um rolo da câmara, as fotografias em que alguém ficou de olhos fechados e as demasiado sensíveis para mostrar. O Eye etiqueta cada fotografia no dispositivo, por isso nenhuma imagem é carregada.
O Eye agrupa as fotografias quase idênticas e escolhe a que fica de cada rajada, sem ninguém de olhos fechados e com os melhores rostos. Um rolo da câmara com quarenta disparos do mesmo momento passa a ser uma só fotografia para ver.
Uma fotografia demora 5,5 ms no Neural Engine de um Mac com M6, por isso 10 000 fotografias demoram menos de um minuto. No Chrome com WebGPU, uma fotografia demora 41 ms.
Etiqueta uma fotografia em 5,5 ms.
O Eye etiqueta uma fotografia em 5,5 ms no Neural Engine de um Mac com M6, e em 41 ms com WebGPU no Chrome. As versões Core ML e LiteRT têm as mesmas notas em seis conjuntos de teste públicos.
Uma fotografia, com a análise completa, num Mac com Apple M6.
| Runtime | Tempo |
|---|---|
| Core ML, Neural Engine | 5,5 ms |
| LiteRT, GPU (Metal) | 30 ms |
| LiteRT.js, WebGPU, in Chrome | 41 ms |
| LiteRT, CPU, 4 threads | 49 ms |
| LiteRT.js, WebAssembly with threads, in Chrome | 176 ms |
Exatidão em conjuntos de teste públicos, com o mesmo código de pontuação para as duas versões
| Conjunto de teste | 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 |
As duas versões dão as mesmas respostas, com poucas milésimas de diferença, em todos os conjuntos. A velocidade foi medida num Mac com Apple M6, e a versão LiteRT ainda não foi medida em telemóveis Android.
Casos de uso
Marque e classifique imagens.
Arrume o rolo da câmara
Separe capturas de ecrã, recibos, documentos e quadros brancos das fotografias tiradas pelas pessoas, para que uma app de galeria os arquive ou proponha apagá-los.
Fique com a melhor de uma rajada
Junte as fotografias quase idênticas num grupo e mostre primeiro a que fica, sem ninguém de olhos fechados. As restantes apagam-se com um toque.
Esconda fotografias sensíveis
Desfoque fotografias explícitas, violentas ou médicas antes que alguém as veja, num álbum de família partilhado ou num formulário de carregamento no navegador. Use o limiar estrito para esconder uma fotografia automaticamente.
Pesquise fotografias pelo que mostram
Encontre todas as fotografias do cão, da praia ou de um recibo entre 558 cenas e os tipos de fotografia. Funciona numa app web ou num backend Node, sem uma API de visão na nuvem.
Recorte uma imagem de capa
Escolha o melhor fotograma de um vídeo ou o melhor recorte quadrado ou panorâmico de uma fotografia para uma miniatura ou um cartão de partilha. O Eye também endireita as fotografias que ficaram de lado.
O que o modelo faz
- Uma chamada a
analyzedevolve etiquetas com confiança, três notas (estética, de escolha e de capa) e as pessoas, os animais de estimação e os rostos da fotografia. A mesma chamada encontra o melhor recorte para qualquer proporção, uma correção de rotação e um embedding. - As etiquetas cobrem o tipo de fotografia (captura de ecrã, recibo, documento, cartão de identificação, quadro branco e outros), a qualidade (nítida, desfocada, bokeh) e as pessoas (fotografia de grupo, retrato, todos a sorrir). Outras cobrem motivos para guardar ou apagar, conteúdo sensível e 558 cenas.
- Cada etiqueta está calibrada para que 0,5 seja o limiar recomendado e 0,9 um limiar estrito. Em 0,5, a etiqueta de captura de ecrã acerta 98% das vezes, a de recibo 100%, a de pessoas 95% e a de olhos fechados 92%.
- As etiquetas de cena acertam 88% das vezes na mediana. Os motivos para guardar ou apagar, como «esquecível» ou «mau enquadramento», são os menos fiáveis, por isso use-os como sugestões.
- Cada rosto recebe as suas próprias etiquetas: olhos fechados, a sorrir, a olhar para a câmara ou para o lado, contente, surpreendido. Por predefinição, o Eye analisa até 20 rostos por fotografia.
Eye.duplicates,Eye.besteEye.similartrabalham sobre uma biblioteca inteira: grupos de quase duplicados, opcionalmente só de fotografias tiradas com segundos de diferença, a que fica de um conjunto e fotografias ordenadas por semelhança.- As análises são guardadas no mesmo JSON em Swift, Kotlin e JavaScript, por isso uma app pode armazená-las e filtrar mais tarde sem carregar o modelo.
partsescolhe o que calcular:photo,layout,facesesharpness. Cada parte é uma ou mais execuções do modelo, por isso deixe de fora aquilo de que não precisa.- 48 MB em Core ML para as plataformas Apple, no Neural Engine, e 66 MB em LiteRT para Android, Linux, Windows, Node e o navegador. O SDK transfere o modelo na primeira utilização e guarda-o em cache.
- No navegador, o Eye corre na GPU através de WebGPU quando o navegador o suporta, e na CPU através de WebAssembly quando não o suporta.
Primeiros passos
Adicione classificação de imagens ao seu app iOS or macOS, Android or web em poucas linhas de código. Docs do 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: etiquetagem e pontuação de fotografias no dispositivo. 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: etiquetagem e pontuação de fotografias no dispositivo.
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: etiquetagem e pontuação de fotografias no dispositivo. 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.
Especificações
- Velocidade
- 5,5 ms por fotografia no Neural Engine (Mac com M6); 41 ms com WebGPU no Chrome
- Exatidão
- No limiar de 0,5: capturas de ecrã com 98% de precisão, recibos com 100%, cenas com 88% na mediana
- Etiquetas
- Tipo de fotografia, guardar ou apagar, qualidade, pessoas, rostos, conteúdo sensível e 558 cenas
- Tamanho no dispositivo
- 48 MB em Core ML (Apple); 66 MB em LiteRT (Android, Linux, Windows, Node, o navegador)
- Plataformas
- iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML); Android, Linux, Windows (LiteRT); o navegador e Node (LiteRT.js)
O Eye foi treinado com fotografias, por isso as notas de ilustrações, capturas de ecrã e imagens muito editadas são menos fiáveis. Os motivos para guardar ou apagar, como «esquecível» ou «mau enquadramento», são os menos fiáveis, por isso use-os como sugestões e use o limiar estrito para tudo o que for automático.
A análise de rostos descreve um rosto e não identifica quem é a pessoa.
FAQ
O que é o Eye?
Etiquete cada fotografia pelo que é e pelo que mostra, de capturas de ecrã e recibos a 558 cenas, inteiramente no dispositivo.
O Eye é executado no dispositivo?
Sim. O Eye é executado no dispositivo, sem qualquer chamada a servidores, por isso os dados ficam com o utilizador.
Que plataformas suporta o Eye?
O Eye é distribuído como um SDK nativo no dispositivo para Swift, Kotlin, JavaScript / TypeScript.
Quanto custa o Eye?
Cada modelo é gratuito para até 100 mil dispositivos ativos mensais. A inferência é ilimitada. Contacte-nos para licenças personalizadas.
Qual é a precisão ou a rapidez do Eye?
O Eye etiqueta uma fotografia em 5,5 ms no Neural Engine de um Mac com M6, e em 41 ms com WebGPU no Chrome. As versões Core ML e LiteRT têm as mesmas notas em seis conjuntos de teste públicos.