計算機視覺專業術語/名詞總結(一)構建知識體系

CV技術指南(公眾號)發表於2021-06-18

 前言:

在計算機視覺中存在很多的專業術語,如先驗知識,語義資訊,embedding,head,neck等。這些術語的解釋無法直接在網上搜到,也沒有在哪一篇論文中定義它們的概念和意義,因此,對於第一次聽到這些術語的讀者來說會非常的困惑。

此外,對於還沒有建立計算機視覺知識體系的讀者來說,也很難理解特徵空間,fine-tuning、預訓練、池化等方面的內容。

本文介紹了很多讀者在其它地方不可能瞭解的內容,通過這些內容相信讀者能更深層次地理解計算機視覺,建立起基本的計算機視覺知識體系。

關注公眾號CV技術指南,及時獲取更多計算機視覺技術總結文章。

 

backbone、head、neck和fine-tune

以一個影像分類的卷積神經網路為例,網路分成兩部分,前部分是由卷積層、歸一化層、啟用層、池化層堆疊的,輸入影像在經過若干層卷積、歸一化層、啟用層和池化層的堆疊後進入全連線層,經過幾次全連線後輸出每個類別的概率值。

在這裡,前面卷積層、歸一化層、啟用層和池化層的堆疊部分屬於backbone。意思是神經網路的軀幹部分,這部分也稱為特徵提取網路。

後面的全連線層的堆疊屬於head。意思是神經網路的頭部,實現模型任務的預測,稱為predictor head,這部分網路也稱為分類網路。

計算機視覺專業術語/名詞總結(一)構建知識體系

 

再以目標檢測中的YOLO_V4中的圖為例。

如上圖所示,在backbone後,常構建特徵金字塔,在特徵金字塔部分做一些處理,如多尺度融合,再將特徵金字塔的輸出進行預測。因此,特徵金字塔這部分放在backbone和head之間,稱為neck(脖子),這裡的Dense Prediction即為head。

關於backbone即常見的經典網路,如VGG,ResNet,MobileNet,ShuffleNet,DenseNet等,當某個模型提到backbone使用的是VGG,即表示使用的是VGG的backbone部分,而不包括VGG的head。

這裡解釋一下為何是這樣。神經網路有多種解釋,其中一種解釋如下,神經網路被認為是在提取特徵,計算機視覺的傳統方法就是人為地設定某些特徵,再進行分類。如HOG特徵,LBP特徵,在提取完特徵後,使用分類器對這些特徵進行分類,如SVM分類器。

這裡的backbone部分則認為是一個特徵提取網路,而head部分則被認為是分類網路,因此特徵提取的部分可以共享,它們的本質都是在提取圖片的特徵,而分類網路則對應到具體的任務,如分類貓狗,分類網路需要從提取的特徵中分成貓狗兩類。

這段話同時也解釋了fine-tune的原理,使用一個預訓練好的backbone,針對你自己的任務,自己搭建相應的分類網路,在訓練時凍結backbone的引數,只訓練分類網路的引數。這是因為預訓練好的backbone已經具備很好的特徵提取能力,因此對於你自己的影像,網路只需要學習如何將提取後的特徵按你定義的類別進行分類。

 

Preprocess和Postprocess

Preprocess為預處理,影像在送入神經網路之前,需要進行一定的處理。

通常的處理是使用opencv中的resize將所有影像縮放到同一尺寸,並根據資料集的標註設定網路的label。此外,如果有必要的話,還會進行資料增強,如調整影像飽和度,映象,加噪聲,隨機掩碼等方式。

預處理的必要性:大部分神經網路在backbone後將資料進行flatten(即將四維的張量變成二維)的操作,再進行全連線,此時全連線層輸入的神經元個數即為flatten後的長度,若輸入的影像的尺寸不一樣,則全連線層輸入的神經元個數無法一致,會報錯。此外,對於沒有全連線層,其它類似的處理部分(除少數外),也會要求backbone後的輸出大小一致。Postprocess指的是對網路預測的結果進行後處理,對於普通的分類網路不需要後處理,但對於目標檢測、語義分割這樣的任務,需要對網路的輸出進行處理,將預測的結果通過影像進行視覺化。

例如目標檢測中的YOLO,其輸出一個7x7x30的張量,輸出98個預測框,但實際一張圖片沒這麼的目標,則需要進行NMS這樣的處理來去除一些不合理的預測框,且我們無法直接看待這些預測框是否準確,就需要將其在原影像上顯示出來,以直觀感受預測的效果如何。

 

先驗知識

在《論文創新的常見思路總結》中我提到,關於特定的類的檢測,我們可以針對這個類別新增很多先驗知識,在《資料增強方法總結》中我提到,資料增強的本質是人為地引入人視覺上的先驗知識。在《CNN視覺化技術總結(一)特徵圖視覺化》中我提到,所謂改進網路都是人的主觀改進,這裡人的主觀即先驗知識。這裡的先驗知識指的是人對於如何識別一張影像或如何識別一個類而關注的內容,引入先驗知識是指設計一些東西讓網路也關注這些內容。例如特徵金字塔中的多尺度融合,人認為大目標應該在低解析度檢測、小目標在高解析度檢測,由此網路在特徵金字塔的不同層預測不同大小的目標。人又認為如果大目標在低解析度檢測,小目標在高解析度檢測,則在低解析度時,小目標還存在,在這裡被當成了背景,同理在高解析度時大目標被當成了背景,這樣不合理,又提出了ASFF處理方式,提升了5-10個百分點。

《特徵金字塔技術總結》

例如人在關注一個事物時,會自動忽略眼睛看到的其它東西,由此提出了注意力機制。例如即便只有上半身,人還是能認出自己熟悉的人,由此提出隨機遮擋等資料增強方式,讓網路在有遮擋的情況下也能正確識別。

例如人是如何識別打籃球這一行為的,人根據籃球、投籃手勢、身體跳躍、籃球運動等一系列的組合識別,因此如何讓網路更好地關注這些特徵提出了Non-Local。

計算機視覺專業術語/名詞總結(一)構建知識體系

 

embedding

在transformer中出現了embedding,在自編碼器中也出現了embedding,還有很多地方也有提到,如何理解embedding?

這裡涉及到神經網路的另一種解釋。神經網路被認為是將影像從高維的畫素空間對映到低維的嵌入空間,即embedding,也可稱為特徵空間。這裡的特徵空間用embedding(向量的形式)來表示。

在編碼器中,網路將影像對映成embedding,即高維影像通過非線性函式的多次對映,可以用低維embedding來表示,在解碼器中,網路將低維embedding對映回影像。

因此,embedding可以認為是某些特徵的濃縮表示形式。

以行人重識別為例,論文認為即便是在不同拍攝角度下,只要是同一個人,神經網路輸出的embedding在某種距離度量方式下就是相近的,而不同的人在某種距離方式下就是很遠的,因此可以通過某種距離度量方式判斷兩個embedding的距離是否在閾值範圍內來判斷是否為同一個人。

 

feature map

字面意思:特徵圖。

根據前面的解釋,神經網路是在將影像從高維畫素空間對映到低維的特徵空間,這個對映是通過一層一層卷積和啟用來進行的,卷積具備提取特徵的能力。

例如在數字影像處理中,我們是通過sobel運算元來檢測輪廓,而sobel運算元可以認為是3x3的卷積的其中一種情況,在這種情況下,它就可以提取影像的輪廓,那在其它情況下就可以提取其它的特徵,因此卷積的過程就是在提取特徵的過程,經過卷積提取特徵和啟用函式的對映後的輸出稱為feature maps。

 

池化

接著上面的解釋來介紹一下池化。

在一張影像中存在很多噪聲和冗餘資訊,噪聲是由相機拍攝過程中由於感測器電路、材料等硬體因素或傳輸過程中產生的,冗餘資訊是指跟具體任務無關的內容。

當我們以整張影像輸入時,需要將這些噪聲、冗餘資訊去除。我們認為這些冗餘資訊和噪聲不是特徵,在神經網路中的卷積和對映過程中,會產生比較低的響應值,因此我們可以通過最大池化選擇最大的響應值進入下一層,因為我們認為只有特徵才會在卷積過程中產生大的特徵值,也稱為響應值。

同樣以sobel為例,當對一個畫素值基本相同的背景進行卷積時,卷積的輸出幾乎為0,而對一個輪廓邊緣進行sobel卷積,則會輸出較大的值。

因此神經網路通過多次最大池化,去除了噪聲和冗餘資訊。這也就是為什麼神經網路的backbone部分基本全是最大池化,而不是平均池化,因為平均池化會將這些冗餘資訊和噪聲繼續傳到下一層。

關於池化更詳細的技術總結,請閱讀《池化技術總結》文章。

 

語義資訊

數字影像是由畫素值組成的,它們本是一堆數字的組合,但就是這樣的組合形成了一幅幅影像,如貓、狗、籃球、米老鼠、眼睛、鼻子等。因此,語義資訊指的是影像的內容,即鼻子,眼睛這樣的影像。

 

總結

本文介紹了很多讀者在其它地方不可能瞭解的內容,通過這些內容相信讀者能更深層次地理解計算機視覺,建立起基本的計算機視覺知識體系。

後面還會總結一些其它的專業術語,並進行解釋。

 

其他文章

欠擬合與過擬合技術總結

神經網路歸一化方法總結

優化函式技術總結

注意力機制總結

特徵金字塔總結

資料增強方法總結

CNN視覺化技術總結

CNN結構演變總結—經典模型

CNN結構演變總結—輕量化模型

CNN結構演變總結—設計原則

池化技術總結

非極大值抑制總結

英文文獻閱讀方法總結

論文創新的常見思路總結

本文來源於公眾號CV技術指南的技術總結系列。

計算機視覺專業術語/名詞總結(一)構建知識體系

相關文章