Una card di titolo generata per Xiaomi-Lens-0 con il sottotitolo "Un modello 4B che scrive le maschere come token" e quattro card che riportano parametri 4B, Apache 2.0, maschere Pixel e PR di Transformers aperta, sopra un banner che riporta "Rilasciato il 21 ottobre 2026 - nessun post di lancio", con il logo OrcaRouter nell'angolo in basso a destra.
Engineering & Research

Xiaomi-Lens-0 vuole entrare nei Transformer di serie — e il suo Mask Decoder è l'ostacolo

Autore

Magnus Corvin

Data di pubblicazione

Ultimi modelli · 20Vedi tutti i modelli →
Benchmark: Artificial Analysis · aggiornato ogni giorno
Torna a tutti gli articoli

Oggi alle 12:01 UTC, una pull request numero 50028 è stata aperta contro huggingface/transformers con il titolo meno eclatante del repository: "Add Xiaomi-Lens-0". Non è uno stub. Il diff arriva a 19 file e 4.251 righe aggiunte, 2.199 delle quali in un unico file di modeling, più 552 righe di test e una pagina di documentazione di 143 righe. Il suo stato è la parte insignificante — aperta, non revisionata, non unita. Il modello che c'è dietro è la parte interessante, e se ne sta su Hugging Face da sei giorni senza alcun post di lancio allegato. Xiaomi-Lens-0 è un modello multimodale da 4B costruito su Qwen3.5-4B che scrive le maschere di regione come token, e la conseguenza pratica è limitata ma reale: finché non viene rilasciata una modifica come questa, non è possibile caricarlo con una classe Transformers standard.

Quel divario — tra un modello scaricabile e un modello ordinario — è ciò che decideranno le prossime settimane. Tutto ciò che segue separa quanto Xiaomi ha pubblicato da quanto propone una PR di un framework, perché si tratta di due livelli di certezza diversi e finora la copertura li ha messi sullo stesso piano.

Cosa ha effettivamente rilasciato Xiaomi e quando

Il rilascio è avvenuto a pezzi nell'arco di cinque giorni, il che è in parte il motivo per cui è stato letto come un rilascio di ricerca anziché come un lancio di prodotto.

• Articolo — "Xiaomi-Lens-0 Technical Report", arXiv:2610.23279, inviato il 16 ottobre 2026, revisionato il 19 ottobre.

• Pesi e codice — pubblici il 21 ottobre su SeerRay-Lab/Xiaomi-Lens-0 su Hugging Face, con un repository di inferenza corrispondente su GitHub.

• Licenza — Apache 2.0 sui pesi, con i pesi di base Qwen3.5-4B anch'essi Apache 2.0. La scheda attribuisce la base ad Alibaba Cloud e le modifiche a Xiaomi.

• Team — accreditato come Xiaoai Plus e il team SeerRay, che è il gruppo di comprensione visiva di Xiaomi.

• Dimensione — 4B ovunque nel titolo e nel testo del paper e della card; i metadati di Hugging Face riportano 5B parametri in BF16. Xiaomi non spiega la discrepanza, e l'interpretazione onesta è che "4B" descriva il backbone linguistico mentre il checkpoint completo con la torre visiva arriva a un valore più alto.

• Hosting — la barra laterale della scheda indica che il modello non è distribuito da alcun provider di inferenza. Non esiste un'API di prima parte né un endpoint ospitato da chiamare.

• Trazione — 723 download nell'ultimo mese e 25 like sul repository Hugging Face, sei giorni dopo la pubblicazione dei pesi.

Quello che non sono riuscito a trovare è stato un lancio: nessun post sul blog Xiaomi, nessun thread del team, nessuna pagina prodotto. La copertura risale al report tecnico e agli articoli di settore pubblicati dopo la comparsa dei pesi. Questo è importante per chiunque cerchi di datare il modello — il 16 ottobre è il paper, il 21 ottobre è l'artefatto, e nessuno dei due è un annuncio.

A screenshot of the Hugging Face model card for SeerRay-Lab/Xiaomi-Lens-0 captured October 27 2026, showing the apache-2.0 licence badge, arxiv:2610.23279, a Safetensors panel reading 'Model size 5B params' and 'Tensor type BF16', a sidebar note reading 'This model isn't deployed by any Inference Provider', 723 downloads last month, and a paper entry marked 'Published 12 days ago'.

Una maschera è un token, non un secondo modello

Il modo abituale per ottenere maschere di pixel da un modello visione-linguaggio è attaccarci un segmentatore. Si ottengono box o punti dal lato linguistico, li si passa a qualcosa come un decoder in stile SAM e si paga il prezzo di una seconda rete, di un secondo insieme di pesi e di un secondo forward pass.

Xiaomi-Lens-0 salta quel passaggio. Il modello genera uno speciale token <|mask|>, e lo stato nascosto del token — quello che il paper chiama latente visivo — viene usato come query rispetto alla griglia di patch dell'encoder visivo. Un singolo layer di raffinamento Transformer, una proiezione lineare, un prodotto scalare rispetto a ciascuna patch, poi due passaggi di upsampling con convoluzione trasposta e una sigmoide. Le feature delle patch vengono estratte prima dello spatial merger, quindi la griglia è ancora a grana fine, e vengono calcolate una volta per immagine e riutilizzate da ogni token mask nella risposta.

L'addestramento è a due fasi e non sorprende una volta che l'architettura è chiara. La prima fase congela il backbone e addestra solo il decoder delle maschere su dati interni più Objects365, LVIS, PACO, PhraseCut e la famiglia RefCOCO. La seconda fase affina congiuntamente backbone e decoder con l'obiettivo standard next-token più una loss di maschera che combina BCE per pixel e Dice.

La conseguenza che vale la pena considerare non è il risparmio di parametri. È che le maschere possono comparire all'interno del ragionamento, non solo nella risposta finale. Xiaomi addestra su tracce di ragionamento fondate in cui una catena di pensiero fa riferimento a regioni ed emette maschere man mano che procede, ed è per questo che un modello 4B può rispondere a "quale di queste due è quella che dovrei raccogliere" con una maschera collegata al passaggio intermedio anziché solo all'ultima frase.

La tabella di benchmark, letta correttamente

I numeri principali sono solidi e sono tutti di Xiaomi. A oggi non esiste alcuna voce su Artificial Analysis, nessun posizionamento nell'arena e nessuna riproduzione di terze parti. Considerate quanto segue come un'affermazione del fornitore con un'appendice insolitamente dettagliata, non come un fatto misurato.

• Segmentazione referenziale — 81,4 cIoU medio sulle otto split RefCOCO / RefCOCO+ / RefCOCOg, contro 78,6 per Qwen3-VL-Seg 4B. SAM 3, mediato sulle stesse otto split nella tabella di Xiaomi, si attesta a circa 71,7.

• Comprensione referenziale — un guadagno medio di 5,6 punti in Prec@0.5 rispetto al backbone Qwen3.5-4B, con RefCOCO+ in aumento di 7,6 punti.

• Grounding multi-istanza su COCO 2017 — F1 medio 63,9, superiore a 63,0 di GroundingPI e 46,5 di Qwen3-VL 4B.

• Segmentazione basata su ragionamento — 68,0 gIoU su ReasonSeg Test, il migliore tra i modelli confrontati.

• Riferimento embodied — 87,0 gIoU su RoboRefIt TestA.

• Conteggio — 50,6 su CountQA, in aumento di 6,8 rispetto al 43,8 del backbone.

Due di questi meritano un secondo sguardo, perché i riassunti che circolano li appiattiscono.

Il primo è il grounding multi-istanza su COCO. Xiaomi-Lens-0 batte GroundingPI sulla F1 media, ma alla soglia permissiva di IoU 0,50 in realtà perde — 80,4 F1 contro 81,2. La vittoria arriva dall'estremo severo: 27,4 F1 a IoU 0,95 contro 22,8. È una differenza qualitativa significativa. Il modello produce maschere più precise, non più numerose, e una pipeline che controlla solo la sovrapposizione permissiva non vedrà il miglioramento.

Il secondo è LensBench, il benchmark da 1.200 unità e 4.800 istruzioni che Xiaomi ha creato e pubblicato insieme al modello. Copre immagini generali, aeree, di guida e panoramiche con revisione umana, ed è la cosa più utile del rilascio per chiunque lavori al di fuori di RefCOCO. È anche il test in cui il modello appare meno eccezionale. Sulle immagini generali, Qwen3.8-Max è in testa con 74,2 cIoU contro i 63,9 di Xiaomi-Lens-0. Sulle istruzioni implicite il modello si classifica quinto, dietro Qwen3.8-Max, GPT-5.6-Sol, Gemini-3.6-Flash e Seed-2.1-Pro. Xiaomi ha pubblicato un benchmark che il proprio modello non domina completamente, il che vale più di quanto avrebbe fatto un risultato impeccabile.

A generated single-column scoreboard titled 'Xiaomi-Lens-0 - the scoreboard' with six rows: Parameters 4B, 5B in BF16 metadata; Base model Qwen3.5-4B; Licence Apache 2.0; Referring segmentation 81.4 mean cIoU; COCO multi-instance F1 63.9; Hosted API none; with a footer reading 'Vendor-reported figures; no independent scores yet.' and the OrcaRouter logo bottom-right.

Dove il modello 4B fallisce davvero

La modalità di guasto non è casuale. È lo scarto tra una descrizione che nomina la cosa e una descrizione che la sottintende.

• Da esplicito a implicito — il cIoU della maschera scende da 71,4 a 54,7, e la Prec@0.5 del box da 85,0 a 70,0 su LensBench.

• Target multipli in scene panoramiche — la porzione peggiore del paper, dove box Prec@0.5 scende da 81,3 a 48,7 e cIoU da 71,8 a 48,9.

• Regioni piccole, occluse e ambigue — la scheda specifica esplicitamente che, in questi casi, le previsioni possono non rilevare oggetti o produrre riquadri e maschere imprecisi.

• Conteggio — 50,6 su CountQA è un miglioramento di 6,8 punti e resta più o meno un lancio di moneta, con modi migliori.

C'è anche un'avvertenza di natura meccanica che morderà chiunque integri questo in un prodotto. Le maschere vengono decodificate sulla tela dell'immagine del processore, non sul tuo file originale. Se ridimensioni prima dell'inferenza e dimentichi di invertire la mappatura, la maschera ritorna con la forma corretta ma nel posto sbagliato. La scheda dice di preservare il ridimensionamento e la mappatura delle coordinate; non dice cosa succede quando non lo fai, e la risposta è un errore silenzioso dall'aria del tutto plausibile.

Cosa cambia la pull request, e cosa no

La PR 50028 è in corso dal 23 ottobre — quattro commit, l'ultimo dei quali è arrivato circa un minuto prima dell'apertura della pull request. Aggiunge un file di configurazione, un file modulare, un file di modellazione da 2.199 righe, un processore, uno script di conversione dei pesi, auto-mappature per modello, processore di immagini e tokenizer, una pagina di documentazione e 552 righe di test. Un bot CI ha già richiesto la suite di test lenti per xiaomi_lens0. Non ci sono revisioni.

Se viene integrato, cambiano tre cose. Il caricamento diventa AutoModel e AutoProcessor invece di un pip install -e . sul repository di Xiaomi. Il modello entra nella documentazione che le persone leggono davvero. E diventa idoneo per gli strumenti dell’ecosistema — quantizzazione, adapter, framework di training — che presuppongono l’esistenza di una classe Transformers prima di toccare un checkpoint.

Se viene integrato, quattro cose non cambiano. Richiede ancora una GPU CUDA con bfloat16 e FlashAttention-2. Non ha ancora un endpoint ospitato. La decodifica delle maschere passa ancora attraverso il processore anziché una semplice chiamata di generazione. E i numeri restano esattamente come riportati dal fornitore oggi, perché un porting del framework è un evento di packaging, non una valutazione.

Vale anche la pena essere schietti sullo stato. Una PR aperta non è una funzionalità. Transformers esegue i merge secondo i propri tempi, i maintainer non si sono espressi, e i port di queste dimensioni passano abitualmente attraverso diversi giri prima di approdare. Chiunque oggi scriva "Xiaomi-Lens-0 ora funziona in Transformers" si sbaglierebbe di un merge.

Cosa serve per gestirlo questa settimana

Il percorso ufficiale è il pacchetto di Xiaomi stesso, e presuppone una vera macchina con GPU.

• Configurazione — Python 3.10 o successivo, CUDA con bfloat16 e FlashAttention-2, poi pip install -r requirements.txt e pip install -e . all'interno del repository di inferenza.

• Immagine singola — infer.py accetta un checkpoint, un'immagine, una query testuale e un percorso di output, e scrive un'immagine annotata più il testo generato.

• Formato di output — i riquadri sono normalizzati in un intervallo 0–1000 all'interno dei tag <bbox>, le maschere sono emesse come token <|mask|> all'interno dei tag <mask>, e qualsiasi cosa all'interno di un blocco thinking è esclusa dall'overlay finale.

• Serving — il supporto vLLM esiste ma viene eseguito come due servizi co-locati, la generazione di testo sulla porta 8000 e la decodifica delle maschere sulla 8001, con il client sulla stessa macchina perché passa un percorso di immagine anziché byte. Se si sovrascrive MAX_PIXELS, entrambi i servizi devono avere lo stesso valore.

Esistono due percorsi della community e nessuno dei due è di Xiaomi. Un pacchetto PyPI chiamato xiaomi-lens-mnn reimplementa l'inferenza su MNN per CPU in fp16 o int8, senza dipendenza da torch, e un pacchetto di nodi ComfyUI non ufficiale riporta un output identico bit per bit rispetto al codice ufficiale. Entrambi sono segnali utili — in particolare il port MNN, perché suggerisce che l'architettura è abbastanza semplice da essere reimplementata anziché solo wrappata.

Xiaomi non pubblica alcun dato sulla VRAM, nessuna misura della latenza e nessun numero di throughput. Per un modello da 4B i pesi non sono il problema; lo sono il vision tower ad alta risoluzione e il passaggio di decodifica delle maschere, e nessuno dei due ha un costo pubblicato. Misura prima di dimensionare una flotta su questa base.

Chi dovrebbe scaricarlo questa settimana

Se ti servono maschere accurate a livello di pixel da una descrizione in linguaggio naturale e hai il controllo dell'hardware, questa è una delle migliori opzioni da 4B disponibili con una licenza permissiva, e i pesi sono accessibili senza restrizioni. I risultati sulle istruzioni esplicite sono competitivi con modelli diverse volte più grandi, l'architettura elimina un'intera seconda rete dalla pipeline e Apache 2.0 significa che la revisione legale è breve.

Se oggi ti serve un endpoint di segmentazione ospitato, non è questo. Xiaomi-Lens-0 non è nel catalogo OrcaRouter — non lo eroghiamo, e nulla qui va interpretato come un'asserzione contraria. Quello che eroghiamo è il set di confronto. Se la vera domanda è se un modello aperto da 4B batte un modello vision ospitato sulle tue immagini, il metodo onesto è eseguire Lens-0 in locale e chiamare il lato ospitato tramite un'unica chiave. Qwen3-VL-8B-Instruct, ad esempio, è disponibile a $0.18 per milione di token di input e $0.70 per milione di output, passati al prezzo di listino del provider senza ricarico, e la stessa chiave raggiunge il resto del catalogo se vuoi un secondo parere o un failover automatico quando un provider degrada. Quel confronto sui tuoi dati vale più di qualsiasi tabella nel paper.

A screenshot of the OrcaRouter model page for Qwen3 VL 8B Instruct captured October 27 2026 in English, showing the qwen/qwen3-vl-8b-instruct identifier, a vision-capable 8B model with 131K context, input pricing of $0.18 per 1M tokens, output pricing of $0.70 per 1M tokens, and a zero-data-retention badge.

Cosa cambierebbe questa valutazione?

Quattro cose, in ordine approssimativo di quanto conterebbero.

Un merge della PR 50028, perché trasforma un artefatto di ricerca in qualcosa che un normale ambiente Python può caricare. Una valutazione indipendente su LensBench o RefCOCO condotta da qualcuno che non sia Xiaomi, perché i numeri attuali hanno un solo autore e le stesse porzioni deboli del paper suggeriscono che la media nasconda una varianza reale. Un percorso nativo per le maschere in vLLM o SGLang che riduce l'architettura a due servizi a un unico endpoint, ovvero la differenza tra una demo e un deployment. E un'offerta hosted da chiunque, che renderebbe il modello una voce di elenco anziché un progetto.

Fino ad allora la descrizione corretta è precisa: Xiaomi-Lens-0 è un modello 4B reale, scaricabile, con licenza Apache-2.0, con un approccio alla segmentazione insolito e ben documentato, vecchio di sei giorni, con numeri solidi forniti dal vendor, un benchmark pubblicato che non lo lusinga e un porting del framework proposto anziché già rilasciato. È una cosa più utile da sapere sia di «Xiaomi ha appena sfornato un killer di Segment Anything» sia di «non c'è niente da vedere finché non viene integrato».