日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入理解计算机视觉中的损失函数

發布時間:2023/12/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入理解计算机视觉中的损失函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者丨ronghuaiyang

來源丨AI公園

編輯丨極市平臺

計算機視覺是計算機科學的一個領域,主要研究從數字圖像中自動提取信息。

在過去的十年中,在深度學習方面的創新,大量數據的方便獲取以及GPU的使用已經將計算機視覺領域推到了聚光燈下。它甚至開始在一些任務中實現“超人”的性能,比如人臉識別手寫文本識別。(事實上,如今登機的自動人臉驗證已經變得越來越普遍了。)近年來,我們在網絡架構激活函數損失函數等計算機視覺領域看到了許多創新。損失函數在模型的性能中起著關鍵作用。選擇正確的損失函數可以幫助你的模型學習如何將注意力集中在數據中的正確特征集合上,從而獲得最優和更快的收斂。這篇文章的主要目的是總結一些重要的損失函數在計算機視覺中的使用。你可以在這里:https://github.com/sowmyay/medium/blob/master/CV-LossFunctions.ipynb找到這里討論的所有損失函數的PyTorch實現。

Pixel-wise損失函數

顧名思義,這種損失函數計算預測圖像和目標圖像的像素間損失。損失函數,如MSE或L2損失、MAE或L1損失、交叉熵損失等,大部分都可以應用于在目標變量的每一對像素之間進行預測。由于這些損失函數分別對每個像素向量的類預測進行評估,然后對所有像素進行平均,因此它們斷言圖像中的每個像素都具有相同的學習能力。這在圖像的語義分割中特別有用,因為模型需要學習像素級的密集預測。在U-Net等模型中也使用了這些損失函數的變體,在用于圖像分割時采用加權的像素級交叉熵損失來處理類間不平衡問題。

類不平衡是像素級分類任務中常見的問題。當圖像數據中的各種類不平衡時,就會出現這種情況。由于像素方面的損失是所有像素損失的平均值,因此訓練會被分布最多的類來主導。

Perceptual損失函數

Johnson et al (2016),Perceptual損失函數用于比較看起來相似的兩個不同的圖像,就像相同的照片,但移動了一個像素或相同的圖像使用了不同的分辨率。在這種情況下,雖然圖像非常相似,pixel-wise損失函數將輸出一個大的誤差值。而Perceptual損失函數比較圖像之間的高級感知和語義差異。考慮一個圖像分類網絡如VGG,已經在ImageNet的數以百萬計的圖像數據集上訓練過,第一層的網絡往往提取底層的特征(如線,邊緣或顏色漸變)而最后的卷積層應對更復雜的概念(如特定的形狀和模式)。根據Johnson等人的觀點,這些在前幾層捕獲的低層次特征對于比較非常相似的圖像非常有用。例如,假設你構建了一個網絡來從輸入圖像重構一個超分辨圖像。在訓練期間,你的目標圖像將是輸入圖像的超分辨率版本。你的目標是比較網絡的輸出圖像和目標圖像。為此,我們將這些圖像通過一個預先訓練好的VGG網絡傳遞,并提取VGG中前幾個塊的輸出值,從而提取圖像的底層特征信息。這些低級的特征張量可以通過簡單的像素級損失來進行比較。

用于圖像分類的預訓練的損失網絡

Perceptual損失的數學表示

其中,表示VGG網絡第j層在處理圖像Y時的激活情況,其形狀為。我們使用L2損失的平方,根據圖像的形狀歸一化,比較了ground truth圖像Y和預測圖像Y^的激活情況。

如果你想使用VGG網絡的多個特征映射作為你的損失計算的一部分,只需為多個添加值。

內容-風格損失函數—神經網絡風格轉換

風格轉換是將圖像的語義內容轉換成不同風格的過程。風格轉換模型的目標是,給定一個內容圖像(C)和一個風格圖像(S),生成包含C的內容和S的風格的輸出圖像。

在這里,我們將討論content-style損失函數的最簡單實現之一,該函數用于訓練這種風格的轉換模型。后來的研究中使用了許多內容-風格損失函數的變體。下一節將討論一個這樣的損失函數,稱為“紋理損失”。

內容/風格損失的數學表示

已經發現,CNNs在較高的層次上捕獲內容的信息,而較低的層次更關注單個像素值。因此,我們使用一個或多個CNN頂層,計算原始內容圖像(C)和預測輸出(P) 的激活圖。

作者丨斑頭雁@知乎

來源丨https://zhuanlan.zhihu.com/p/260876366

編輯丨極市平臺

本文僅用于學術分享,如有侵權,請聯系后臺作刪文處理。

導讀

?

本文提出了一種因果干預的新分類器,它具有應用廣泛、無需額外訓練步驟、在缺少預訓練數據集時仍然大幅提高性能等三大優勢。

本文主要介紹我們組被NeurIPS 2020接受的論文Interventional Few-Shot Learning。論文的代碼會在Github上開源:

yue-zhongqi/ifslgithub.com

我們的這篇工作,根據小樣本學習當中的因果關系,提出了一種新的基于因果干預的分類器IFSL,去除了預訓練帶來的摻雜效果,在各種方法上取得了穩定的提升。主要的優勢有:

  • 廣泛適用于各種基于微調(fine-tune)或是元學習(meta-learning)的方法,即插即用;

  • 無需額外的訓練步驟,原來模型咋訓練,加上IFSL還是咋訓練;

  • 如果預訓練數據集不公開,比如一些商用數據集只公開分類器和特征提取器,那么元學習的方法就不適用了,只能用微調。在這種情況下,IFSL還是可以大幅提高性能。

  • 接下來我會具體的來介紹小樣本學習和我們的IFSL。章節導視:

    • 想看小樣本學習介紹的請戳一

    • 因果關系分析的請戳二

    • 直接看實現方法的請戳三

    • 看結果的請戳四

    一、小樣本學習的介紹

    2019年,Open AI Five以碾壓的表現戰勝了Dota2世界冠軍戰隊OG,然而在這令人驚嘆的表現背后,是12.8萬個CPU和256塊P100數個月訓練的結果,相當于不間斷練習了45000年的游戲。很顯然,目前一個魯棒的機器學習模型還難以離開大量的數據、長時間的訓練以及高昂的訓練成本。而小樣本學習就致力于通過極少的訓練數據(1-5個樣本/類)來實現模型的泛化。

    那么,如何進行小樣本學習呢?這一點我們可以觀察人是如何快速學習的。例如一個人玩策略游戲帝國時代很厲害,那么如果去學習諸如星際爭霸的其他策略游戲,就比較容易上手,因為可以運用以前的游戲經驗,一通百通。同樣的,對于機器而言,在少量樣本上快速泛化的核心,就是借助先驗知識

    預訓練是(Pre-training)大家都熟悉且非常有效的獲取先驗知識的方法。具體就是在大型數據集上,學習一個強大的神經網絡作為特征提取器,例如CV里面常見的在ImageNet上預訓練的ResNet網絡,或是NLP里面在Wikipedia上訓練的BERT,都代表一種特征表達的先驗知識。在預訓練基礎上,我們只需在樣本數量少的目標任務中,微調部分(例如只訓練最后一層fc分類器)或者全部網絡的參數,便得到了一個可以解決小樣本學習問題的模型。

    預訓練相當于給了小樣本學習一個好的起點,就像一個人在上課前預習了大量的知識點。不過想要更上一層樓,還需要有效的學習方法元學習(meta learning)的目的就是找到這種方法。具體來說,我們可以從預訓練集中,每次采樣出來一個“沙盒”版小樣本任務,例如選5個類,每個類選5張圖片作為訓練集(support set),再選15張作為測試集(query set),然后我們要求模型在support set訓練的結果,能夠在query set上面取得好的表現。其實這種學習策略在我們身邊隨處可見,例如準備考試的時候,我們會提前做一些模擬測試,了解題型,規劃答題節奏等等,這就是一種元學習。在小樣本學習的實際操作中,我們可以使用元學習訓練一個模型的初始化參數(MAML),或是一個分類器參數的生成網絡(LEO)等等。通過元學習得到的知識,就構成了一種學習方法的先驗知識,在預訓練的網絡之上,進一步提升小樣本學習的表現。

    綜上所述,小樣本學習的解決思路,可以用下面這張圖來概括:我們先在一個大的數據集??上面預訓練一個特征提取網絡??,之后我們既可以直接使用??在每一個小樣本任務中微調(紅色方塊的Fine-Tuning); 也可以進一步使用元學習(Meta-Learning),將??拆成一個個由support set??和query set??組成的沙盒任務??,訓練高效的學習方法??;元學習結束以后,我們就可以用這種高效的學習方法,在小樣本學習的任務中進行微調(綠色方塊的Fine-Tuning)。

    二、亦正亦邪的預訓練

    從上一章的介紹中不難看出,預訓練是小樣本學習中一個核心的環節,無論是基于微調的,還是基于元學習的方法,都以預訓練為開始。那么從常理來說,更強的預訓練,應該會帶來更好的小樣本學習的表現,例如在現有文獻中,使用更深層的神經網絡架構WRN-28-10的微調結果,往往會比相對較淺的ResNet-10表現好很多。然而我們在微調的實驗中發現(見左邊的直方圖),雖然平均WRN-28-10(strong ?)更好,但當query set和support set區別很大的時候,結果是恰恰相反的,淺層的ResNet-10反而表現更佳!這是為什么呢?

    這張圖的右邊是一個??和??區別很大的例子,其中預訓練時候見過的草的顏色是support set里的一個誤導因素,分類器容易踩坑,以草的顏色(見過)而非動物本身(沒見過)作為分類依據。而越強的預訓練模型,這些見過的草,相比于沒見過的動物,就會產生越魯棒的特征,對于分類器就更加誤導了,聰明反被聰明誤。為什么這個問題一直沒有被發現呢?其實就是因為被現有方法基于隨機取樣后平均的評估策略所掩蓋了。我們的工作也首次為這個現象提供了解釋。

    具體來說,剛才講的這個悖論是由小樣本學習當中的因果關系造成的。預訓練在帶來豐富的先驗知識的同時,也成了學習過程中的一個混雜因子(confounder),使得分類器難以找到樣本特征和樣本標注之間真實的因果關系。我們用一張因果圖來具體說明。

    • ?: 這里??代表預訓練的先驗知識,??代表圖片的特征表示,箭頭的意思是,我們用預訓練得到的特征提取器,獲得樣本的特征.

    • ?: 其中C代表一個樣本X在預訓練數據流形上面的投影;一個例子是eigenface,我們將高維的訓練集(),通過PCA找到這些圖片的基(也就是eigenface),這樣一張人臉圖片(),就可以被表示成這些基的線性組合,而線性組合的系數就是??。類似的現象在深度學習的訓練中也會出現,具體可以參考我們論文里面的引用。

    • ?: 當我們用特征??訓練一個分類器預測標簽??的時候,分類器會不可避免的使用??里面的信息;也就是說??是特征里面低維度信息的影響,而??是??里沒有包含的冗余信息帶來的影響。

    在這個因果圖中,注意到??是??和??的共因(??),這樣??被叫做??和??的混雜因子,從而導致觀測到的??,被混雜的關系??污染,而不能反映??和??間真實的因果關系了,剛才分類器被草的顏色迷惑的原因,其實就是分類器使用了??里“草”的語義信息,作為分類獅子的依據。

    那么當存在混雜因子的時候,我們應該如何學習??真實的因果關系呢?這就要用到干預(intervention),即??。干預??會切斷因果圖中所有指向??的箭頭(如下圖),這樣之前產生混雜的這條路??被堵住了,我們就能安全的學習想要的因果關系了。

    我們的這篇工作使用后門調整(backdoor adjustment)來實現??,我們的因果圖對應的后門調整是:

    具體來說,就是對預訓練的知識??進行分層(見圖中的??),每一層有自己的分類器??,然后把每層分類器的結果通過先驗概率??平均起來。關于混雜因子、干預和后門調整的具體介紹,大家可以參考一下我們組王譚寫的:

    https://zhuanlan.zhihu.com/p/111306353

    三、基于干預的去混雜

    上一章講到預訓練在帶來特征表達的先驗知識的同時,也成為了混雜因子而迷惑了分類器的訓練,而我們打算通過對預訓練知識分層,然后用后門調整來找到??和??之間真實的因果關系。這一章我們會來講具體如何實現分層和后門調整。

    我們是從預訓練的神經網絡所自帶的兩個屬性來尋找分層的靈感的:

    1)特征維度,例如ResNet-10是512維的特征,每一個維度代表CNN里面的一個通道,對應了圖片中的一些視覺信息;

    2)預訓練的類別,例如在miniImageNet上預訓練所使用的64個類,那么預訓練所得到的64類分類器,就可以看作對預訓練數據集知識的一種蒸餾(knowledge distillation)。

    基于這些靈感,我們提出了三種不同的實現方案,分別是基于特征的調整(feature-wise adjustment),基于類別的調整(class-wise adjustment)以及兩種結合起來(combined adjustment)。具體這三種調整是如何對應后門調整公式的,大家可以參考論文第三章,這里我只是講一下具體的實現。

    基于特征的調整:將特征向量??劈成??等份,在每一份對應的維度里學一個分類器,最終??是把??個分類器softmax后的概率算個平均。例如把ResNet-10的512維分成4份,每128維為一份,學習4個分類器;

    基于類別的調整:首先我們在預訓練的??個類中,各自算一個平均特征??,即把所有屬于這個類的圖片特征平均一下;對于任務當中的一個樣本特征??,我們用預訓練的分類器算出這個樣本屬于??個類的概率??,使用??和??,我們能算出來一個新的特征向量??;然后我們把原始特征??和這個??拼起來,用來訓練分類器,注意這里只訓練了一個分類器,不過分類器輸入的維度是??維度的二倍;

    結合調整:相當于先做基于類別的調整,再做基于特征的調整。還是以ResNet-10和N=4為例子,對于每一個樣本??,我們算出??以后,把??和??各自劈成4份,然后一一對應的拼起來(比如??的前128維拼上??的前128維),然后訓練4個分類器,??同樣是把4個分類器的輸出概率算個平均。

    可以看到,我們基于干預的這個方法只改變了分類器的架構,因此可以普遍的加入基于微調或元學習的小樣本學習方法,并且無需增加額外的訓練步驟

    四、實驗結果

    普遍適用,漲點明顯】因為我們的方法是在分類器層面的改動,所以可以普遍的加入到各種微調和元學習的方法當中。我們在常用的微調方法(linear,cosine和k-NN),以及5種不同思路的元學習方法上面做了大量的驗證,在miniImageNet和tieredImageNet上面取得了普遍的提高。

    去除預訓練的混雜】我們提出了一種新的Hardness-specific Acc來診斷小樣本學習。對于每一個測試樣本,根據它和訓練集support set的相似程度,我們定義了一個難度系數,這樣我們可以觀察模型在不同測試樣本難度下的表現,而越難的樣本就越容易在上面被預訓練的知識誤導。下圖展示了微調當中baseline和ifsl的hardness-specific acc,可以看到IFSL(實線)在各個難度下都超過了baseline(虛線),說明起到了去除混雜的作用。更詳細的分析可以參考論文。

    幫助模型聚焦物體】模型在做預測的時候,是根據圖片上的哪一部分呢?因此我們提出了CAM-Acc:在一張圖片上先計算Grad-CAM分數(越高代表模型越關注這一部分),CAM-Acc是Grad-CAM分數高于0.9的區域中,在物體bounding box內部的比重。我們來看一下Grad-CAM可視化的結果,以及CAM-Acc的表現。通過可視化和CAM-Acc的分數,可以看到IFSL的模型的確能夠多注意物體本身。當然也有失敗的時候,比如看到當物體太小的時候(螞蟻),baseline和IFSL都只能依賴背景中的context去做預測了。

    結語

    預訓練的先驗知識,是近些年來小樣本學習分數快速提升的重要原因。我們的這篇工作,其實是從因果的角度分析了預訓練對于學習一個分類模型的影響,揭示了基于??的分類器會被先驗知識混雜,想當然的做出預測;而基于干預??的去混雜方法,就是在一個不熟悉的小樣本學習任務中,平衡先驗知識的影響,做到三思而后行。在這個思路下,我們提出了IFSL分類器,簡單、普適且有效

    事實上,這種對先驗知識的處理方法,可以被應用于任何使用預訓練的任務當中,因為下游任務中的訓練數據,比起大規模預訓練來說,都相當于小樣本學習了。也歡迎大家參考我們搭建的因果框架,在使用到預訓練的不同場景中,嘗試去除預訓練知識所帶來的摻雜。

    最后附上我們論文的引用:

    @inproceedings{yue2020interventional,title={Interventional?Few-Shot?Learning},author={Yue,?Zhongqi?and?Zhang,?Hanwang?and?Sun,?Qianru?and?Hua,?Xian-Sheng},booktitle=?{NeurIPS},year={2020} }

    也推薦一波我們組凱爺在因果關系上非常solid的研究:

    https://zhuanlan.zhihu.com/p/259569655

    https://zhuanlan.zhihu.com/p/109657521

    本文僅做學術分享,如有侵權,請聯系刪文。

    干貨下載與學習

    后臺回復:巴塞羅自治大學課件,即可下載國外大學沉淀數年3D Vison精品課件

    后臺回復:計算機視覺書籍,即可下載3D視覺領域經典書籍pdf

    后臺回復:3D視覺課程,即可學習3D視覺領域精品課程

    3D視覺精品課程推薦:

    1.面向自動駕駛領域的多傳感器數據融合技術

    2.面向自動駕駛領域的3D點云目標檢測全棧學習路線!(單模態+多模態/數據+代碼)
    3.徹底搞透視覺三維重建:原理剖析、代碼講解、及優化改進
    4.國內首個面向工業級實戰的點云處理課程
    5.激光-視覺-IMU-GPS融合SLAM算法梳理和代碼講解
    6.徹底搞懂視覺-慣性SLAM:基于VINS-Fusion正式開課啦
    7.徹底搞懂基于LOAM框架的3D激光SLAM: 源碼剖析到算法優化
    8.徹底剖析室內、室外激光SLAM關鍵算法原理、代碼和實戰(cartographer+LOAM +LIO-SAM)

    9.從零搭建一套結構光3D重建系統[理論+源碼+實踐]

    10.單目深度估計方法:算法梳理與代碼實現

    11.自動駕駛中的深度學習模型部署實戰

    12.相機模型與標定(單目+雙目+魚眼)

    13.重磅!四旋翼飛行器:算法與實戰

    14.ROS2從入門到精通:理論與實戰

    重磅!計算機視覺工坊-學習交流群已成立

    掃碼添加小助手微信,可申請加入3D視覺工坊-學術論文寫作與投稿?微信交流群,旨在交流頂會、頂刊、SCI、EI等寫作與投稿事宜。

    同時也可申請加入我們的細分方向交流群,目前主要有ORB-SLAM系列源碼學習、3D視覺CV&深度學習SLAM三維重建點云后處理自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬件選型、深度估計、學術交流、求職交流等微信群,請掃描下面微信號加群,備注:”研究方向+學校/公司+昵稱“,例如:”3D視覺?+ 上海交大 + 靜靜“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進去相關微信群。原創投稿也請聯系。

    ▲長按加微信群或投稿

    ▲長按關注公眾號

    3D視覺從入門到精通知識星球:針對3D視覺領域的視頻課程(三維重建系列三維點云系列結構光系列手眼標定相機標定、激光/視覺SLAM、自動駕駛等)、知識點匯總、入門進階學習路線、最新paper分享、疑問解答五個方面進行深耕,更有各類大廠的算法工程人員進行技術指導。與此同時,星球將聯合知名企業發布3D視覺相關算法開發崗位以及項目對接信息,打造成集技術與就業為一體的鐵桿粉絲聚集區,近4000星球成員為創造更好的AI世界共同進步,知識星球入口:

    學習3D視覺核心技術,掃描查看介紹,3天內無條件退款

    ?圈里有高質量教程資料、可答疑解惑、助你高效解決問題

    覺得有用,麻煩給個贊和在看~

    總結

    以上是生活随笔為你收集整理的深入理解计算机视觉中的损失函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。