Desert Ant Labs

Eye

Classification d'imagesBêta

É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.

5,5 ms
Par photo
Neural Engine, Mac avec une puce Apple M6
41 ms
Dans Chrome
WebGPU, même Mac
98 %
Précision sur les captures d'écran
au seuil de 0,5 ; tickets de caisse 100 %
48 MB
Téléchargement
Core ML ; 66 MB LiteRT

Une photo, l'analyse photo complète, sur un Mac avec une puce Apple M6.

RuntimeTemps
Core ML, Neural Engine5,5 ms
LiteRT, GPU (Metal)30 ms
LiteRT.js, WebGPU, in Chrome41 ms
LiteRT, CPU, 4 threads49 ms
LiteRT.js, WebAssembly with threads, in Chrome176 ms

Exactitude sur des jeux de test publics, avec le même code d'évaluation pour les deux versions

Jeu de testCore MLLiteRT (CPU)
KonIQ-10k, aesthetic SRCC0,62880,6291
COCO val2017, person AP500,38140,3837
MIT1003, where people look, CC0,71530,7195
CUHK cropping, crop IoU0,82440,8241
WIDER Face val, AP, hard0,68060,6812
CEW, eyes open AUC0,99430,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 analyze renvoie 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.best et Eye.similar travaillent 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.
  • parts choisit ce qui est calculé : photo, layout, faces et sharpness. 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.

iOS, macOS
Installation
// 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")
Exemple - Swift
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)
Construire avec un prompt
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.
Android
Installation
// build.gradle.kts (Maven Central)
implementation("ai.desertant:eye:4.0.0")
Exemple - Kotlin
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)
}
Construire avec un prompt
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.
Web, Node.js
Installation
npm i @desert-ant-labs/eye @litertjs/core   # browser
npm i @desert-ant-labs/eye                  # Node
Exemple - TypeScript
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 });
Construire avec un prompt
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.

Ressources