微信公眾號:OpenCV學堂
關注獲取更多計算機視覺與深度學習知識
自監督學習
一句話解釋: 讓模型自己從數據中“創造”出學習信號,從而無需人工標注。
它的核心是設計“前置任務”(Pretext Task)。模型要做的就是完成這個任務,而完成任務的“標準答案”就隱藏在海量數據本身之中。
舉例說明:
圖像領域: 最經典的是“完形填空”。例如,將一張圖片的一部分遮住(Mask),讓模型去預測被遮住的部分(如MAE)。或者像DINO系列那樣,讓模型判斷同一張圖的不同“視角”(如旋轉、裁剪后的版本)是否屬于同一物體(對比學習)。

語言領域: 讓模型根據前文預測下一個單詞(GPT系列的做法)。
目標: 通過完成這些任務,強迫模型理解數據背后的深層語義結構,從而學習到通用的特征表示
自蒸餾
一句話解釋: 一個模型“自己教自己”的訓練方法。
傳統知識蒸餾(Knowledge Distillation)是用一個已經訓練好的大模型(教師)去教一個小模型(學生)。而自蒸餾則打破了“教師”必須比“學生”大的限制,通常是同一個網絡在不同狀態(如不同迭代輪次)下互相學習。

核心機制:
模型有兩個“分身”:一個是在學習的學生網絡,一個是不斷累積歷史知識的教師網絡(通常是學生的歷史版本的加權平均,即EMA,指數移動平均)。將同一張圖片的不同增強版本(如原圖和裁剪圖)分別送入學生和教師。
訓練目標:讓學生對一張圖(裁剪圖)的預測結果,盡量去擬合教師對另一張圖(原圖)的預測結果。因為教師是學生自己的“過去版本”,所以整個過程是模型在“自省”和“自我提升”。
目標: 防止模型在訓練中崩塌(Collapse),讓模型學到更魯棒、更通用的特征,同時提高訓練穩定性。
DINOv3中如何工作
理解它們如何協同工作,就能更好地理解DINOv3的偉大之處:它成功地將“自監督范式”與“自蒸餾技巧”融合到了同一個訓練框架中。

框架是自蒸餾的: DINOv3采用了師生網絡(Student-Teacher)結構,通過自蒸餾(學生預測教師的輸出)來更新參數。
任務是自監督的: 它們沒有使用人工標注,而是設計了“圖像級自監督”和“補丁級自監督”任務:
圖像級任務:讓模型判斷不同裁剪出的圖片是否是同一張原圖的一部分(對比學習)。
補丁級任務:利用自蒸餾的“教師”輸出,去引導“學生”關注圖像中的局部細節(Patch)。
結合的效果: 自蒸餾提供了穩定的師生模型結構,而自監督任務則提供了海量的、免費的“學習問題”和“答案”。二者結合,讓DINOv3在不需要任何人工標簽的情況下,學到了極其精細的全局和局部特征。
Gram錨定解決密集特征退化
研究者發現,當自監督模型(如DINOv2)訓練時間過長或參數規模過大時,其補丁級別(patch-level)的特征會逐漸喪失多樣性,不同位置的補丁特征變得過于相似,從而導致密集預測任務的性能下降。
為此,DINOv3提出了一個關鍵的新方法—— "Gram錨定"(Gram Anchoring) 。
它的核心思想:在模型訓練的后期,用一個"錨定"機制來約束模型的補丁特征,防止其退化。

具體做法:引入一個額外的損失函數,促使當前模型的補丁特征間的相似度矩陣(即Gram矩陣),去逼近早期訓練階段表現優異的一個教師模型的補丁特征相似度矩陣。
關鍵區別:它不是簡單地讓當前模型的特征和早期模型的特征一模一樣,而是讓它們之間的"差異程度"保持一致。這既保留了特征不斷進化的能力,又防止了特征的均勻化。
通過Gram錨定,DINOv3成功地讓大規模模型在長時間訓練后,依然能生成高質量的密集特征,在分割、深度估計等任務上實現了大幅超越。
總結
理解DINOv3網絡模型如何訓練的,就是要理解自監督學習、自蒸餾訓練、Gram密集特征錨定三大關鍵點。

推薦閱讀
玩轉YOLOv8~YOLO11全系模型從訓練到推理就靠它了
C#上位機開發專屬OpenCV系統化教程
C#中輕松實現OpenCV算法零代碼開發
深度學習系統化學習路線圖專題(2025版本)
【零代碼】OpenCV C# 快速開發框架演示
正式發布|OpenVINO2025深度學習與大模型部署教程
C#上位機開發專屬OpenCV系統化教程
