DINOv2 way worse than SigLIP in k-NN. Is this expected? [R]
Our take
The recent Reddit post detailing unexpectedly poor performance of DINOv2 in a k-NN retrieval setting for fine-grained car classification raises a crucial question about the practical application of large, self-supervised vision models. The user’s experience, achieving only 41% accuracy with DINOv2 Giant compared to 92% with SigLIP2, highlights a potential disconnect between theoretical promise and real-world usability, especially when deployed in downstream tasks like this. It’s a timely observation, particularly as the AI community increasingly explores leveraging pre-trained models for various applications. This resonates with discussions around practical AI implementation showcased in articles like [20 AI Agents Rebuilt My Wife's Website For $8. I Never Typed a Word.] and the considerations around building reliable AI systems, as discussed in [Presentation: The Multi-Agent Approach: Building Reliable and Controllable Software Development Automation]. The core issue isn't just about the models themselves, but about how effectively they translate into tangible results in specific, often niche, applications.
The user’s initial thought regarding cosine vs. Euclidean distance being the culprit is quickly dismissed by the L2 normalization step, demonstrating a careful and methodical approach to troubleshooting. The likely explanation, as the user suggests, is DINOv2’s self-supervised training methodology. Contrastive learning, as employed by SigLIP, inherently shapes the embedding space to be highly amenable to similarity-based retrieval, essentially pre-optimizing it for tasks like k-NN. DINOv2, on the other hand, while incredibly powerful for representation learning, likely requires a more specialized, potentially task-specific, fine-tuning process (a "trained head") to truly unlock its potential for retrieval. This isn't a condemnation of DINOv2 – it remains a valuable tool – but rather a reminder that choosing the right tool for the job is paramount. Furthermore, the author’s small dataset (175 train / 132 test) may exacerbate the difference in performance, as larger datasets can sometimes smooth over these kinds of discrepancies. It's important to consider how the model's inherent biases interact with the limited data available.
The implications extend beyond just car classification. Many researchers and practitioners are eager to leverage the impressive capabilities of models like DINOv2 across a wide range of visual tasks. However, this particular case serves as a cautionary tale: simply substituting a large, self-supervised model for a smaller, contrastively-trained model isn’t a guaranteed path to improved performance. It necessitates a deeper understanding of the underlying training paradigms and the potential need for fine-tuning or adaptation. This aligns with the broader conversation around managing expectations and ensuring that AI solutions deliver on their promises, as we see explored in [COLM 2026 Decision Discussion [R]]. The focus shouldn’t solely be on model size or architectural complexity; instead, it needs to shift towards understanding how these models behave in specific contexts and how to best tailor them for optimal performance.
Ultimately, the user’s experience underscores the importance of empirical evaluation and a nuanced understanding of the strengths and weaknesses of different vision models. It’s a call for more rigorous benchmarking and a greater emphasis on task-specific adaptation strategies. The question remains: how can we better predict and mitigate these discrepancies between pre-training objectives and downstream task performance, ensuring that the immense potential of self-supervised vision models is fully realized across diverse applications? Addressing this challenge will be crucial for moving beyond theoretical breakthroughs and achieving practical, impactful results.
Doing a bachelor thesis on fine-grained car classification (telling apart VW Golf generations from listing photos). Simple setup: frozen encoder → embeddings → weighted k-NN.
On my small dataset (175 train / 132 test):
- SigLIP2 SO400M: ~92%
- CLIP ViT-L: ~59%
- DINOv2 Giant: ~41%
I thought maybe it was a cosine vs euclidean thing, but my embeddings are L2-normalized so both give the same ranking. Tried both, DINOv2 stays at 41%.
I get that SigLIP was trained contrastively so its space is basically built for cosine similarity, while DINOv2 is self-supervised and probably needs a trained head to shine. But a 50 point gap still feels huge to me.
Anyone here tried DINOv2 with a linear probe on something fine-grained? Does it actually catch up or is it just not the right tool for retrieval?
Also open to tips if there's some obvious thing I'm missing (wrong layer, wrong pooling, etc).
[link] [comments]
Read on the original site
Open the publisher's page for the full experience