Eye
Étiquetez chaque photo selon sa nature et son contenu, des captures d'écran et tickets de caisse jusqu'à 558 scènes, entièrement sur l'appareil.

Taguez et classez les images.
Retrouvez dans une pellicule les captures d'écran, les tickets de caisse et les selfies, les photos où quelqu'un a les yeux fermés et celles trop sensibles pour être montrées. Eye étiquette chaque photo sur l'appareil, donc aucune image n'est envoyée.
Eye regroupe les prises quasi identiques et choisit, dans chaque rafale, celle à garder : personne n'y a les yeux fermés et les visages y sont les plus réussis. Une pellicule de quarante prises du même moment devient une seule photo à regarder.
Une photo prend 5,5 ms sur le Neural Engine d'un Mac équipé d'une puce M6, donc 10 000 photos prennent moins d'une minute. Dans Chrome avec WebGPU, une photo prend 41 ms.
Étiquette une photo en 5,5 ms.
Eye étiquette une photo en 5,5 ms sur le Neural Engine d'un Mac M6, et en 41 ms avec WebGPU dans Chrome. Les versions Core ML et LiteRT obtiennent les mêmes scores sur six jeux de test publics.
Une photo, l'analyse photo complète, sur un Mac avec une puce Apple M6.
| Runtime | Temps |
|---|---|
| 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 |
Exactitude sur des jeux de test publics, avec le même code d'évaluation pour les deux versions
| Jeu de test | 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 |
Les deux versions donnent les mêmes réponses à quelques millièmes près sur chaque jeu. La vitesse est mesurée sur un seul Mac avec une puce Apple M6, et la version LiteRT n'est pas encore mesurée sur des téléphones Android.
Cas d'usage
Taguez et classez les images.
Trier la pellicule
Séparez les captures d'écran, tickets de caisse, documents et tableaux blancs des photos que les gens ont prises, pour qu'une application de galerie les range ou propose de les supprimer.
Garder la meilleure photo d'une rafale
Regroupez les prises quasi identiques et affichez d'abord celle à garder, où personne n'a les yeux fermés. Le reste se supprime d'un seul geste.
Masquer les photos sensibles
Floutez les photos explicites, violentes ou médicales avant que quiconque ne les voie, dans un album familial partagé ou un formulaire d'envoi dans le navigateur. Utilisez le seuil strict pour masquer une photo automatiquement.
Chercher des photos par leur contenu
Retrouvez toutes les photos du chien, de la plage ou d'un ticket de caisse parmi 558 scènes et les types de photo. Cela fonctionne dans une application web ou un backend Node, sans API de vision dans le cloud.
Recadrer une image de couverture
Choisissez la meilleure image d'une vidéo, ou le meilleur recadrage carré ou panoramique d'une photo, pour une vignette ou une carte de partage. Eye remet aussi à l'endroit les photos tournées sur le côté.
Ce que fait le modèle
- Un seul appel
analyzerenvoie des tags avec un indice de confiance, trois scores (esthétique, sélection et couverture) et les personnes, animaux de compagnie et visages présents sur la photo. Le même appel trouve le meilleur recadrage pour n'importe quel format, une correction de rotation et un embedding. - Les tags couvrent le type de photo (capture d'écran, ticket de caisse, document, pièce d'identité, tableau blanc et plus), la qualité (nette, floue, bokeh) et les personnes (photo de groupe, portrait, tout le monde sourit). D'autres couvrent les raisons de garder ou de supprimer, le contenu sensible et 558 scènes.
- Chaque tag est calibré pour que 0,5 soit le seuil recommandé et 0,9 un seuil strict. À 0,5, un tag capture d'écran est juste 98 % du temps, un tag ticket de caisse 100 %, personnes 95 % et yeux fermés 92 %.
- Les tags de scène sont justes 88 % du temps en médiane. Les raisons de garder ou de supprimer, comme « sans intérêt » ou « mauvais cadrage », sont les moins fiables : réservez-les aux suggestions.
- Chaque visage reçoit ses propres tags : yeux fermés, sourire, regard vers l'objectif ou ailleurs, joie, surprise. Par défaut, Eye analyse jusqu'à 20 visages par photo.
Eye.duplicates,Eye.bestetEye.similartravaillent sur toute une photothèque : groupes de quasi-doublons, éventuellement limités aux photos prises à quelques secondes d'intervalle, la photo à garder d'un ensemble, et des photos classées par similarité.- Les analyses s'enregistrent dans le même JSON en Swift, Kotlin et JavaScript, pour qu'une application puisse les stocker et filtrer plus tard sans charger le modèle.
partschoisit ce qui est calculé :photo,layout,facesetsharpness. Chaque partie demande une ou plusieurs exécutions du modèle, alors laissez de côté ce dont vous n'avez pas besoin.- 48 MB en Core ML pour les plateformes Apple, sur le Neural Engine, et 66 MB en LiteRT pour Android, Linux, Windows, Node et le navigateur. Le SDK télécharge le modèle à la première utilisation et le met en cache.
- Dans le navigateur, Eye tourne sur le GPU via WebGPU quand le navigateur le prend en charge, et sinon sur le CPU via WebAssembly.
Prise en main
Ajoutez classification d'images à votre application iOS or macOS, Android or web en quelques lignes de code. Docs 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: Eye : étiquetage et notation des photos sur l'appareil. 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: Eye : étiquetage et notation des photos sur l'appareil.
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: Eye : étiquetage et notation des photos sur l'appareil. 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.
Spécifications
- Vitesse
- 5,5 ms par photo sur le Neural Engine (Mac M6) ; 41 ms avec WebGPU dans Chrome
- Exactitude
- Au seuil de 0,5 : captures d'écran précises à 98 %, tickets de caisse à 100 %, scènes à 88 % en médiane
- Tags
- Type de photo, garder ou supprimer, qualité, personnes, visages, contenu sensible et 558 scènes
- Taille sur l'appareil
- 48 MB Core ML (Apple) ; 66 MB LiteRT (Android, Linux, Windows, Node, navigateur)
- Plateformes
- iOS 18+, macOS 15+, tvOS 18+, visionOS 2+ (Core ML) ; Android, Linux, Windows (LiteRT) ; le navigateur et Node (LiteRT.js)
Eye est entraîné sur des photos : les scores des illustrations, des captures d'écran et des images très retouchées sont donc moins fiables. Les raisons de garder ou de supprimer, comme « sans intérêt » ou « mauvais cadrage », sont les moins fiables : réservez-les aux suggestions et utilisez le seuil strict pour tout ce qui est automatique.
L'analyse des visages décrit un visage et n'identifie pas la personne.
FAQ
Qu'est-ce que Eye ?
Étiquetez chaque photo selon sa nature et son contenu, des captures d'écran et tickets de caisse jusqu'à 558 scènes, entièrement sur l'appareil.
Eye fonctionne-t-il sur l'appareil ?
Oui. Eye s'exécute sur l'appareil, sans appel serveur : les données restent chez l'utilisateur.
Quelles plateformes Eye prend-il en charge ?
Eye est livré sous forme de SDK natif sur l'appareil pour Swift, Kotlin, JavaScript / TypeScript.
Combien coûte Eye ?
Chaque modèle est gratuit jusqu'à 100k appareils actifs mensuels. L'inférence est illimitée. Contactez-nous pour des licences sur mesure.
Quelle est la précision ou la vitesse de Eye ?
Eye étiquette une photo en 5,5 ms sur le Neural Engine d'un Mac M6, et en 41 ms avec WebGPU dans Chrome. Les versions Core ML et LiteRT obtiennent les mêmes scores sur six jeux de test publics.