20240708 視覺大模型

參考網站:

萬字長文帶你全面解讀視覺大模型 - 知乎

一.DINO

1."YOLO"(You Only Look Once)和"DINO"(DIstillation of knowledge)是兩種不同的模型,針對不同的任務和學習目標。以下是它們學習到的特征的主要區別:

  1. 任務目標:

    • YOLO: YOLO是一種目標檢測模型,旨在在圖像中檢測和定位多個物體。YOLO的訓練目標是通過回歸網絡預測圖像中每個物體的邊界框及其類別概率。
    • DINO: DINO主要是一種自監督學習方法,專注于學習圖像表示。DINO的目標是通過對比損失來訓練模型,使相似的圖像在嵌入空間中更加接近。
  2. 學習方法:

    • YOLO: YOLO使用有監督學習,通過最小化目標檢測任務中的損失函數,使得模型能夠準確地定位和分類圖像中的物體。
    • DINO: DINO采用自監督學習方法,通過對比損失來約束網絡學習圖像特征,使得相似圖像的表示更加接近。
  3. 特征表示:

    • YOLO: YOLO學習用于目標檢測的圖像特征,這些特征應該有助于準確地定位和分類圖像中的物體。
    • DINO: DINO學習的是通用的圖像表示,旨在捕捉圖像中的語義和結構信息。這些表示可以在多個任務中使用,而不僅僅局限于目標檢測。
  4. 應用領域:

    • YOLO: YOLO主要用于目標檢測任務,在實時目標檢測和物體定位方面表現出色。
    • DINO: DINO主要關注圖像表示學習,可以用于多個領域,包括圖像分類、特征學習等。

總體而言,YOLO和DINO是為不同任務設計的模型,它們學習的特征主要取決于其任務目標。 YOLO側重于目標檢測,而DINO側重于通用圖像表示學習。

2.DINO(Distillation via Noisy-Labels)模型是一種基于自監督學習的視覺表示學習方法,它主要依靠教師-學生(Teacher-Student)架構進行訓練。下面是DINO模型的大致算法實現過程:

  1. 數據預處理

    • 對輸入圖像進行數據增強,生成兩個視圖(View1和View2),這兩個視圖是對同一張原始圖像的不同變換,例如隨機裁剪、翻轉、色彩變換等。
  2. 模型結構

    • 設定兩個相同的模型:教師網絡(Teacher)和學生網絡(Student),它們都采用Transformer或者類似結構,如Vision Transformer (ViT)。
  3. 特征提取

    • 分別將兩個視圖輸入到教師網絡和學生網絡中,提取出對應的特征表示。
  4. 教師網絡更新

    • 教師網絡的參數是對學生網絡參數的指數移動平均(Exponential Moving Average, EMA),在訓練過程中,教師網絡的參數更新較為保守,以維持穩定的學習信號。
  5. 對比學習

    • 計算學生網絡對View1產生的特征向量與教師網絡對View2產生的特征向量之間的 cosine相似度。
    • 通過對比學習 loss,讓學生網絡模仿教師網絡對同一張圖片不同視圖的特征表示,促使兩個網絡學習到一致的特征表示。
  6. 正則化與噪聲標簽

    • DINO模型通過引入噪聲標簽(noisy labels)的概念,即在網絡內部生成偽標簽,來增強模型對噪聲和多樣性的適應能力。
    • 使用歸一化溫度softmax函數對教師網絡的特征向量進行處理,模擬軟標簽,作為學生網絡學習的目標。
  7. 訓練過程

    • 學生網絡的訓練目標是既要模仿教師網絡的特征表示,又要保持不同圖片之間的特征差異性。
    • 更新學生網絡的參數,最小化對比學習loss以及可能的正則化loss。
  8. 迭代訓練

    • 重復以上步驟,不斷迭代訓練,直到模型收斂。

通過這種訓練方式,DINO模型能夠在沒有人工標注的情況下學習到強大的視覺特征表示,這些特征可以用于下游的多項視覺任務,如圖像分類、目標檢測等。

3.DINO(Distillation with Noisy-Labels)和DINOv2是在自監督學習領域中的連續迭代版本,它們都采用了對比學習和教師-學生機制來訓練無監督視覺模型。盡管兩者的核心思想類似,但DINOv2通常會在以下幾個方面有所改進或變化:

  1. 性能優化

    • DINOv2可能針對DINO的基礎架構進行了優化,提升了模型在各種視覺任務上的性能表現,比如提高了模型在標準基準測試上的準確性或擴展了模型對于復雜視覺場景的理解能力。
  2. 算法改進

    • 可能引入了新的訓練策略、損失函數改進或是對模型架構的調整,以促進更好的自監督學習效果和特征表達能力。
  3. 知識蒸餾

    • DINOv2可能進一步強化了知識蒸餾的過程,例如,更有效地利用大型預訓練模型的知識來指導小型模型的訓練,使得小型模型也能獲得類似的表征學習能力。
  4. 數據效率與泛化能力

    • DINOv2可能在提高數據利用效率、減少訓練資源需求以及提升模型在未見過的數據上的泛化能力方面做了針對性改進。
  5. 額外功能或應用場景

    • 隨著技術發展,DINOv2可能會添加新的功能特性,比如更適用于特定任務的微調策略,或者是拓展至其他應用場景,如跨模態學習、實時推理等。

由于具體細節依賴于實際發布的論文和技術文檔,上述區別是基于一般迭代升級的常見方向。要獲得DINO與DINOv2之間精確的技術差異,請查閱相關的官方論文或GitHub項目頁面以獲取最新和詳盡的說明。

全網最強 DINOv2 論文解讀 - 知乎

從 DETR 到 DINO 的進化過程 - 知乎

DINOv2:無需微調,填補 SAM 的空白,支持多個下游任務 - 知乎

DINOv2 by Meta AI

Search · DINOv2 · GitHub

檢測:

https://github.com/IDEA-Research/GroundingDINO

二.DEIT

https://github.com/facebookresearch/deit/tree/colab

DEIT(Data-efficient Image Transformers)并非一個檢測模型,而是用于圖像分類的模型,它基于Vision Transformer(ViT)架構,但更注重于數據效率。不過,我們可以討論一下DEIT在圖像分類任務上的實現過程,因為檢測模型如DETR(DEtection TRansformer)也是基于Transformer結構的,其基本思路有一定的相似性。

DEIT模型算法實現過程概述如下:

  1. 數據預處理

    • 首先,將輸入圖像分割成多個固定大小的patches(塊),每個patch被線性嵌入成一個向量。
    • 將這些嵌入向量拼接在一起,形成一個1D序列,類似于文本中的token序列。
  2. 位置編碼

    • 為了保留圖像的二維結構信息,為每個patch向量附加一個位置編碼,該編碼反映了patch在原始圖像中的位置。
  3. Transformer編碼器

    • 將帶有位置編碼的patch序列送入Transformer的編碼器,編碼器通過多層自注意力機制學習patch之間的關系和全局上下文信息。
  4. 分類頭

    • 編碼器輸出的序列經過一層或多層全連接層(分類頭),生成對應于每個類別的logits(概率分布)。
  5. 訓練過程

    • 使用交叉熵損失函數進行訓練,模型的目標是學習如何根據輸入圖像的patch序列預測正確的類別標簽。
    • DEIT特別注重在有限訓練數據上的表現,可能會使用一些數據增強技術,以及特定的訓練策略來提高模型的數據效率。

在目標檢測任務中,DETR等模型會在此基礎上引入一個解碼器部分,并利用一個特殊的目的token(如CLS token)來生成檢測框和類別標簽,而DEIT專注于圖像分類任務,不涉及檢測框的生成。如果你感興趣的是DETR這樣的檢測模型,其過程會更為復雜,包括了預測固定數量的物體框和類別標簽等步驟。

DEIT(Data-efficient Image Transformers)模型在訓練時采用了一種適應于Transformer架構的數據結構。具體來說,它遵循以下流程:

  1. Patch Embedding:

    • 首先,輸入的RGB圖像會被分割成若干個小的非重疊 patches(通常為正方形)。
    • 每個patch被線性投影(嵌入)成一個低維向量,這一過程類似詞嵌入在自然語言處理中的作用。
  2. Sequence Formation:

    • 所有patch嵌入向量按照它們在原始圖像中的位置順序排列,形成一個1D序列,就像文本中的單詞序列一樣。
  3. Positional Encoding:

    • 由于Transformer對輸入序列的位置信息沒有內在感知能力,因此,每個patch嵌入向量都會附加一個位置編碼,以確保模型能捕捉到圖像的空間布局信息。
  4. Transformer Encoder:

    • 這個形成的序列隨后被饋送到Transformer的編碼器模塊中,編碼器由多層自注意力和前饋神經網絡組成,用于捕獲patch間的長程依賴關系和全局上下文。
  5. Distillation Token (如果適用):

    • 在DEIT中,為了優化數據效率并改進訓練過程,可能還會引入一個額外的“蒸餾Token”,它可以聚合整個圖像的信息,并與教師模型的輸出進行比較,從而通過知識蒸餾技術來指導學生模型的學習。
  6. Training Process:

    • DEIT在訓練時使用標準的監督學習方法,即在ImageNet等大規模圖像分類數據集上,以每個圖像對應的類別標簽作為監督信號。
    • 特別地,DEIT關注于在有限的訓練樣本上達到良好的性能,可能運用數據增強、蒸餾技術和其他訓練策略來提升模型的數據效率。

總之,DEIT模型訓練時的數據結構是一種轉換后的、適合于Transformer處理的序列化形式,其中包含了空間位置信息,并通過自注意力機制來提取圖像特征和進行分類。

三.DETR:

DETR(DEtection TRansformer)模型在訓練時采用了一種新穎的數據結構和訓練方式,主要是為了實現端到端的目標檢測。以下是DETR模型訓練時的數據結構和流程:

  1. 數據預處理

    • 輸入的RGB圖像首先會被分割成多個patches(通常使用卷積神經網絡提取特征圖),然后將這些特征圖展平成1D向量序列。
    • 與此同時,創建一組固定數量的“object queries”(目標查詢向量),它們作為額外的序列元素,用于預測圖像中的目標邊界框和類別。
  2. 位置編碼

    • 類似于BERT等Transformer模型,DETR也為圖像patches和object queries添加了位置編碼,以便模型理解它們在圖像中的位置信息。
  3. Transformer結構

    • 將圖像patches和object queries組成的序列輸入到Transformer模型中。Transformer包含編碼器和解碼器部分。
    • 編碼器負責處理圖像patches序列,學習圖像的全局上下文信息。
    • 解碼器通過自注意力機制,結合編碼器的輸出和object queries,生成一組邊界框坐標和類別預測。
  4. 集合預測

    • DETR模型的輸出不是連續的邊界框預測,而是一個有限長度的有序列表,列表中的每個元素代表一個可能的目標,并包含其類別和坐標信息。
    • 使用 Hungarian 匹配算法將預測結果與 ground truth 進行匹配,以計算訓練損失。
  5. 損失函數

    • DETR使用了一種稱為“集合損失”(Set Prediction Loss)的方法,它包括 bounding box 的L1損失和類別預測的交叉熵損失,同時加入了一種匹配成本來優化預測結果與真實標簽的匹配。
  6. 訓練過程

    • 在訓練期間,模型的目標是通過優化上述損失函數,使得預測的邊界框和類別盡可能接近真實的標注信息。

總之,DETR模型通過Transformer結構處理圖像和object queries的序列化表示,并利用集合預測和匈牙利匹配算法優化訓練過程,從而實現了一種全新的、無需 anchor boxes 和非極大值抑制(NMS)的目標檢測方法。

四.

Swin Transformer是一種專門針對計算機視覺任務優化的Transformer架構,它可以被視為Vision Transformer(ViT)在計算效率和性能上的一個重要升級版。下面我將以通俗易懂的語言為您講解Swin Transformer的工作原理:

1. Transformer的基礎?Transformer原本是用于自然語言處理(NLP)的模型,它通過自注意力機制來理解和處理文本序列。而在Swin Transformer中,這種自注意力機制被巧妙地應用于圖像處理,使模型能夠理解圖像中的各個部分間的關聯。

2. 多尺度感知?在圖像中,物體大小各異,傳統的Transformer直接作用于圖像像素時計算量巨大。Swin Transformer引入了層級結構和滑動窗口(Shifted Window)的概念,實現了對圖像進行多尺度分析。模型會將大圖像切割成多個小窗口,在每個窗口內部計算自注意力,同時通過跨窗口連接機制整合不同窗口間的信息。

3. 層級特征提取?類似于CNN(卷積神經網絡)中的特征金字塔網絡(FPN),Swin Transformer構建了一個層級結構,隨著網絡層數加深,特征圖的空間分辨率逐漸減小,但感受野(能“看”到的圖像范圍)增大,這樣既能捕捉到局部細節又能把握全局上下文。

4. Shifted Window Attention?不同于全局自注意力,Swin Transformer在每個層次中,窗口內的像素會通過自注意力機制相互作用,而在相鄰層之間,窗口會進行一定的位移(Shift),使得窗口之間的信息得以流動,從而實現了在保持較高效率的同時,兼顧了局部和全局信息的融合。

5. 效率優化?通過局部窗口注意力和窗口間的信息傳遞機制,Swin Transformer大幅降低了計算復雜度,尤其適合處理高分辨率的圖像。這樣一來,即使是大規模圖像也能在合理的時間內完成高效處理。

總結來說,Swin Transformer就像一位細心的畫家,他不是一次性看完整幅畫作(全局注意力),而是分塊、分層地觀察并描繪畫面細節(局部窗口注意力),并且在繪畫過程中,他會不斷調整視角(窗口位移),確保不同區塊之間的協調性,從而繪制出既細致入微又整體連貫的藝術作品(高精度的圖像識別結果)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42960.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42960.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42960.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle數據庫表統計信息

oracle數據庫表統計信息未及時更新會導致oracle基于成本的執行計劃可能不是最優,查看執行計劃是沒問題的,但sql實際執行起來確很慢。 查詢oracle數據庫表統計信息最后更新時間: SELECT TABLE_NAME, LAST_ANALYZED,a.* FROM ALL_TAB_STATISTI…

66.Python-web框架-Django-免費模板django-datta-able的分頁的一種方式

目錄 1.方案介紹 1.1實現效果 1.2django.core.paginator Paginator 類: Page 類: EmptyPage 和 PageNotAnInteger 異常: 1.3 templatetags 2.方案步驟 2.1創建一個common app 2.2創建plugins/_pagination.html 2.3 其他app的views.py查詢方法 2.4在AIRecords.html里…

入門 Vue Router

Vue Router Vue Router插件做了什么&#xff1f; 全局注冊 RouterView 和 RouterLink 組件。添加全局 $router 和 $route 屬性。啟用 useRouter() 和 useRoute() 組合式函數。觸發路由器解析初始路由。 標簽介紹 RouterView 加載指定頁面 <RouterLink to"/home"…

必剪APP視頻剪輯的字幕制作方法教程!

你是否還在用pr聽一句打一句的制作字幕&#xff1f;你是否還在用ps做字幕然后拉到pr里一句一句的對時間軸&#xff1f;快別用那些老方法啦&#xff0c;繁瑣又浪費時間&#xff01;今天給大家推薦一個方便速度的制作字幕的方法&#xff0c;趕快來看看吧&#xff01; 第一步&…

【Altium】AD-網絡版一個用戶非人為異常占用多個License的解決方法

【更多軟件使用問題請點擊億道電子官方網站】 1、 文檔目標 當出現一個用戶同時占用多個授權&#xff0c;又無法單獨釋放一個授權的情況下&#xff0c;該如何解決。 2、 問題場景 一個用戶獲取網絡版授權后&#xff0c;AD會自動重復獲取授權&#xff0c;直到該license下所有授…

電視盒子變身NAS之安裝termux

此方法適合安卓4.4到安卓9.0都可以用&#xff0c;我目前測試的設備是安卓9.0的電視盒子 第一步&#xff1a;下載安裝termux https://termux.dev/en/ 或者 https://github.com/termux/termux-app/releases 第二步&#xff1a;把apk安裝到你的機頂盒&#xff0c;使用優盤&…

讀書記錄《SQL從小白到大牛》01

讀書記錄《SQL從小白到大牛》01 接地氣的書名&#xff0c;內容應當值得一讀。 第一篇 SQL基礎 01 一些基礎概念 SQL是結構化查詢語言&#xff08;Structured Query Language&#xff09;&#xff0c;是一套用來輸入、更改和查看關系數據庫內容的命令。數據庫發展經歷三個階…

Python自動化與系統安全

信息安全是運維的根本&#xff0c;直接關系到企業的安危&#xff0c;稍有不慎會造成災難性的后果。比如經年發生的多個知名網站會員數據庫外泄事件&#xff0c;信息安全體系建設已經被提到了前所未有的高度。如何提升企業的安全防范水準是目前普遍面臨的問題&#xff0c;主要有…

Swagger的原理及應用詳解(四)

本系列文章簡介: 在當今快速發展的軟件開發領域,特別是隨著微服務架構和前后端分離開發模式的普及,API(Application Programming Interface,應用程序編程接口)的設計與管理變得愈發重要。一個清晰、準確且易于理解的API文檔不僅能夠提升開發效率,還能促進前后端開發者之…

Greenplum(一)【MPP 架構 數據類型】

1、Greenplum 入門 Greenplum 是基于 MPP 架構的一款分布式分析型數據庫&#xff0c;具備關系型數據庫的特點&#xff0c;因為它處理的是結構化的數據&#xff0c;同時具備大數據分布式的特點。 1.1、MPP 架構 MPP&#xff08;Massively Parallel Processing&#xff09;架構是…

從Java開發者到.NET Core初級工程師學習路線:目錄

C#語言基礎 1.1 C#語法概覽 1.2 變量和數據類型 1.3 運算符和表達式 1.4 控制流語句 1.5 方法和參數 1.6 類和對象 1.7 繼承和多態 1.8 接口和抽象類 1.9 委托和事件 1.10 泛型 1.11 LINQ (Language Integrated Query) 1.12 異步編程 (async/await) 1.13 異常處理 1.14 文件I/O…

IOC、DI<3> IServiceConllection 自定義IOC含屬性注入、多實現注入,方法注入

using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;namespace IOC.Common {public class ZenServiceCollection : IZenServiceCollection{// 記錄IOC注冊的抽象、實現private Di…

SpringSecurity初始化過程

SpringSecurity初始化過程 SpringSecurity一定是被Spring加載的&#xff1a; web.xml中通過ContextLoaderListener監聽器實現初始化 <!-- 初始化web容器--><!--設置配置文件的路徑--><context-param><param-name>contextConfigLocation</param-…

sql注入問題批量處理

問題&#xff1a;SQL注入修改&#xff0c;歷史代碼全是${};無法修改的比如表名&#xff0c;列名&#xff0c;動態排序之類的不改&#xff0c;其他的都要修改完成 背景&#xff1a;新公司第一個任務就是SQL注入的修改&#xff0c;歷史sql全部都是${},一個個調整不太合適只能批量…

機場的出租車問題折線圖

分析并可視化機場離場車輛數數據 本文將詳細介紹如何使用Python的正則表達式庫re和繪圖庫matplotlib對機場離場車輛數數據進行分析和可視化。以下是具體步驟和代碼實現。 數據資源&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1rU-PRhrVSXq-8YdR6obc6Q?pwd1234 提…

Android C++系列:Linux常用函數和工具

1. 時間函數 1.1 文件訪問時間 #include <sys/types.h> #include <utime.h> int utime (const char *name, const struct utimebuf *t); 返回:若成功則為 0,若出錯則為- 1如果times是一個空指針,則存取時間和修改時間兩者都設置為當前時間; 如果times是非空指針…

一個python文件實現openai 轉換請求轉換成 ollama

最近在微軟開源了GraphRAG,項目&#xff0c;是一個很棒的項目&#xff0c;本著研究學習的態度下載了該項目測試&#xff0c;發現目前只可以使用openai chat gpt,或azure open chat gpt,也就是說意味著資料要上傳到第三方網站處理&#xff0c;為了本地的ollama也可以使用特意開發…

輪播圖案例

丐版輪播圖 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title> 基礎輪播圖 banner 移入移出</t…

6000字以上論文參考:基于Java+SpringMvc+Vue技術的實驗室管理系統設計與實現

可參考&#xff1a;基于JavaSpringMvcVue技術的實驗室管理系統設計與實現&#xff08;6000字以上論文參考&#xff09;-CSDN博客 論文參考&#xff1a;

【python】字典、列表、集合綜合練習

1、練習1(字典) 字典dic,dic {‘k1’:‘v1’, ‘k2’: ‘v2’, ‘k3’: [11,22,33]} (1). 請循環輸出所有的key dic {"k1": "v1", "k2": "v2", "k3": [11, 22, 33]} for k in dic.keys():print(k)k1 k2 k3(2). 請循環輸…