學習筆記 深度學習和機器視覺

2021-07-09 06:06:40 字數 3206 閱讀 7614

一直自稱研究方向是「機器視覺、機器學習和深度學習」,然而除了做過幾個相關的專案以外,感覺自己對這個領域並沒有足夠深入的認識和理解。趁著這個假期我要好好補補課了。今天先來看一些high level的內容,看看深度學習近期的最近進展以及其在機器視覺問題中的應用。學習資料**於2023年cvpr的deep learning in computer vision workshop 裡invited speaker的slides,介紹了理論、應用、實現等方面的內容,應該是乾貨滿滿的。對於每乙個talk,我會把內容框架記錄下來(可以check一下對這些點是否有一定了解?),並記下一些個人覺得有趣的點。想看完整內容就戳這個鏈結吧:deep learning in computer vision workshop

顧名思義,bengio的talk主要講了兩個部分:理論進展和attention mechanism。理論進展介紹了:

分布式表示和深度的優點bengio之前的talk裡已經講過不少次了。簡單的說,雖然類似local partition的方法可以得到有用的表示,淺層(2層)的神經網路也可近似任意的函式,但是分布式表示和深度的引入可以使特徵表示和模型變得更加緊湊(compact),達到exponentially more statistically efficient的效果。

接下來提到了在深度學習中凸性質(convexity)可能並不是必要的。因為在高維空間中,鞍點(saddle point)的存在是主要問題,而區域性最小值通常都會很接近全域性最小值了。這部分的內容比較陌生,有興趣可以看看最近的**。

attention 機制方面,講了很多最新的進展。有很多相關的*****都非常有趣,我要找個時間好好看看這個系列了。乙個基本的思路是:我們給每一層引入乙個額外的輸入,這個輸入反應的是之前的乙個加權,來表示它們的關注程度。在所謂的soft-attention中,這個加權的值可以直接通過bp訓練得到。記下幾句有趣的話:

- they (attention mechanism) could be interesting for speech recognition and video, especially if we used them tocapture multiple time scales

- they could be used to help deal withlong-term dependencies, allowing some states to last for arbitrarily long

來自微軟研究院的報告,主要內容:

講座開始引入了一點有趣的motivation:一般我們測試機器是否能夠理解(其實就是訓練對了),方法是給標記標籤然後計算其錯誤率。然而對於含有豐富內容的複雜場景來說,很難定義所有fine-grained的類別。因此,用自然語言的描述來測試對的理解是比較好的方式。

從 word2vec 到 sent2vec:deep structured semantic model (dssm),雖然我們不知道該如何標記乙個句子的語義,但我們知道哪些句子的語義是比較接近的,因此文章通過優化乙個基於相似性的目標函式來訓練模型,使具有相近語義的句子產生距離相近的向量。接著還介紹了很多模型的細節和變種(卷積dssm、遞迴dssm),在此就不贅述了。

其中詞語檢測用了cnn+mil(multiple instance learning)的方法,個人對此比較感興趣,文章在此。

換個口味,我們來看看nvidia關於深度學習和gpu的結合。總的來說,內容上跟nvidia官網上介紹深度學習的slides沒什麼不同。主要介紹了gpu有什麼好處、gpu有多牛,還有一些支援gpu的庫和工具。

一張比較好的圖:

有用的工具:

來看看來自google的報告。這個talk裡面的內容都不太熟悉,但是看起來都非常有意思。主要內容有:

首先來看看peer pressure。這是rahul組最近的乙個工作:the virtues of peer pressure: a ****** method for discovering high-value mistakes。所謂「high-value mistake」,指的是那些我們認為訓練好的模型可以準確**的樣本,結果它卻「犯傻」了。因此這些樣本也叫做「hard positive」,難以答對的樣子。

從頭說起,深度神經網路雖然有很多成功的應用,但同時也被發現很容易犯愚蠢的錯誤(比如上述的high-value mistake)。因此作者提出了peer pressure:整合+對抗訓練(emsembles+adversarial training)的方法,來找到這些錯誤。簡單來說就是,有一組訓練於同樣資料但是初始化或者結構不同的nn分類器(稱作peers),如果乙個樣本出現其中乙個nn輸出與其它都不一致的情況(其它nn淡然都是一致的了),那麼它應該就是high-value mistake。尋找這類錯誤當然是有價值的啦:(1)它可以用在發掘無標籤的資料中(2)可以用來合成新的hard positive樣本。

來自牛津大學的報告,題目看起來還是很吸引人的。大綱如下(略有失望,好像就是講cnn的):

架構:卷積和紋理

性質:對比cnn和視覺幾何

第乙個例子用cnn做ocr,感覺並不是很有趣。乙個challenge是它的類別特別多(90k個類,對應90k個單詞)。他們解決的辦法是增量地訓練網路,即先只訓練5k個類,再逐步新增5k個新的類。。。效果好像還不錯。

第二部分講分辨紋理。提出用cnn的卷積層加上fisher vector(替換全連線層)來做,效果不錯不錯的。

第三部分視覺化,看看就好。

第四部分還不錯,講的是影象變換對特徵表示的影響。除去語義層面上的影響(特徵的不變性跟任務相關),我們通常希望影象的特徵表示不受影象變換的影響,如翻轉和仿射變換。對於乙個特徵表示

ϕ 和影象變換

g ,我們有以下三種情況:

對比了他們的deepid-net和rcnn:

後面詳細的介紹了他們模型的每個環節。總體來說,感覺每個環節都比較tricky,暫時也看不到有什麼insight,故先略過了。之後專門研究object detection時可能還會重新看看他們的工作。

機器視覺學習筆記

ieee鏈結 neumann l.matas j.real time scene text localization and recognition,cvpr 2012。這是text detection庫參照的 沒細讀這篇文章,但是知道是基於er的方法。我想matas大神既然說能實時,方法就確實應該...

機器視覺 halcon學習筆記5

灰度變換 add image運算元,1入口引數是影象變數,2入口引數是影象變數,3入口引數是相加之後的影象 4入口引數是引數1和引數2對應點灰度相加後乘的乙個引數,引數5是偏移量 總結來說就是引數1和引數2對應點灰度值相加後乘上引數4再加上引數5就等於引數3對應點的灰度值 我猜聰明的你肯定可以看懂的...

機器視覺 halcon學習筆記2

畫圓的運算元 有個問題就是這個運算元的輸入函式裡面第乙個引數是乙個視窗變數,所以在使用畫圓這個運算元的時候需要在之前建立乙個視窗,然後將視窗變數作為畫圓運算元的輸入引數 生成圓的運算元 在畫圓運算元結束之後不會直接生成乙個圓形區域,得配合生成運算元來進行區域的生成。在生成函式中四個引數 第乙個 ci...