前言:
在計(jì)算機(jī)視覺中存在很多的專業(yè)術(shù)語,如先驗(yàn)知識,語義信息,embedding,head,neck等。這些術(shù)語的解釋無法直接在網(wǎng)上搜到,也沒有在哪一篇論文中定義它們的概念和意義,因此,對于第一次聽到這些術(shù)語的讀者來說會非常的困惑。
此外,對于還沒有建立計(jì)算機(jī)視覺知識體系的讀者來說,也很難理解特征空間,fine-tuning、預(yù)訓(xùn)練、池化等方面的內(nèi)容。
本文介紹了很多讀者在其它地方不可能了解的內(nèi)容,通過這些內(nèi)容相信讀者能更深層次地理解計(jì)算機(jī)視覺,建立起基本的計(jì)算機(jī)視覺知識體系。
backbone、head、neck和fine-tune
以一個圖像分類的卷積神經(jīng)網(wǎng)絡(luò)為例,網(wǎng)絡(luò)分成兩部分,前部分是由卷積層、歸一化層、激活層、池化層堆疊的,輸入圖像在經(jīng)過若干層卷積、歸一化層、激活層和池化層的堆疊后進(jìn)入全連接層,經(jīng)過幾次全連接后輸出每個類別的概率值。
在這里,前面卷積層、歸一化層、激活層和池化層的堆疊部分屬于backbone。意思是神經(jīng)網(wǎng)絡(luò)的軀干部分,這部分也稱為特征提取網(wǎng)絡(luò)。
后面的全連接層的堆疊屬于head。意思是神經(jīng)網(wǎng)絡(luò)的頭部,實(shí)現(xiàn)模型任務(wù)的預(yù)測,稱為predictor head,這部分網(wǎng)絡(luò)也稱為分類網(wǎng)絡(luò)。
再以目標(biāo)檢測中的YOLO_V4中的圖為例。
如上圖所示,在backbone后,常構(gòu)建特征金字塔,在特征金字塔部分做一些處理,如多尺度融合,再將特征金字塔的輸出進(jìn)行預(yù)測。因此,特征金字塔這部分放在backbone和head之間,稱為neck(脖子),這里的Dense Prediction即為head。
關(guān)于backbone即常見的經(jīng)典網(wǎng)絡(luò),如VGG,ResNet,MobileNet,ShuffleNet,DenseNet等,當(dāng)某個模型提到backbone使用的是VGG,即表示使用的是VGG的backbone部分,而不包括VGG的head。
這里解釋一下為何是這樣。神經(jīng)網(wǎng)絡(luò)有多種解釋,其中一種解釋如下,神經(jīng)網(wǎng)絡(luò)被認(rèn)為是在提取特征,計(jì)算機(jī)視覺的傳統(tǒng)方法就是人為地設(shè)定某些特征,再進(jìn)行分類。如HOG特征,LBP特征,在提取完特征后,使用分類器對這些特征進(jìn)行分類,如SVM分類器。
這里的backbone部分則認(rèn)為是一個特征提取網(wǎng)絡(luò),而head部分則被認(rèn)為是分類網(wǎng)絡(luò),因此特征提取的部分可以共享,它們的本質(zhì)都是在提取圖片的特征,而分類網(wǎng)絡(luò)則對應(yīng)到具體的任務(wù),如分類貓狗,分類網(wǎng)絡(luò)需要從提取的特征中分成貓狗兩類。
這段話同時也解釋了fine-tune的原理,使用一個預(yù)訓(xùn)練好的backbone,針對你自己的任務(wù),自己搭建相應(yīng)的分類網(wǎng)絡(luò),在訓(xùn)練時凍結(jié)backbone的參數(shù),只訓(xùn)練分類網(wǎng)絡(luò)的參數(shù)。這是因?yàn)轭A(yù)訓(xùn)練好的backbone已經(jīng)具備很好的特征提取能力,因此對于你自己的圖像,網(wǎng)絡(luò)只需要學(xué)習(xí)如何將提取后的特征按你定義的類別進(jìn)行分類。
Preprocess和Postprocess
Preprocess為預(yù)處理,圖像在送入神經(jīng)網(wǎng)絡(luò)之前,需要進(jìn)行一定的處理。
通常的處理是使用opencv中的resize將所有圖像縮放到同一尺寸,并根據(jù)數(shù)據(jù)集的標(biāo)注設(shè)置網(wǎng)絡(luò)的label。此外,如果有必要的話,還會進(jìn)行數(shù)據(jù)增強(qiáng),如調(diào)整圖像飽和度,鏡像,加噪聲,隨機(jī)掩碼等方式。
預(yù)處理的必要性:大部分神經(jīng)網(wǎng)絡(luò)在backbone后將數(shù)據(jù)進(jìn)行flatten(即將四維的張量變成二維)的操作,再進(jìn)行全連接,此時全連接層輸入的神經(jīng)元個數(shù)即為flatten后的長度,若輸入的圖像的尺寸不一樣,則全連接層輸入的神經(jīng)元個數(shù)無法一致,會報錯。此外,對于沒有全連接層,其它類似的處理部分(除少數(shù)外),也會要求backbone后的輸出大小一致。 Postprocess指的是對網(wǎng)絡(luò)預(yù)測的結(jié)果進(jìn)行后處理,對于普通的分類網(wǎng)絡(luò)不需要后處理,但對于目標(biāo)檢測、語義分割這樣的任務(wù),需要對網(wǎng)絡(luò)的輸出進(jìn)行處理,將預(yù)測的結(jié)果通過圖像進(jìn)行可視化。
例如目標(biāo)檢測中的YOLO,其輸出一個7x7x30的張量,輸出98個預(yù)測框,但實(shí)際一張圖片沒這么的目標(biāo),則需要進(jìn)行NMS這樣的處理來去除一些不合理的預(yù)測框,且我們無法直接看待這些預(yù)測框是否準(zhǔn)確,就需要將其在原圖像上顯示出來,以直觀感受預(yù)測的效果如何。
先驗(yàn)知識
在《論文創(chuàng)新的常見思路總結(jié)》中我提到,關(guān)于特定的類的檢測,我們可以針對這個類別添加很多先驗(yàn)知識,在《數(shù)據(jù)增強(qiáng)方法總結(jié)》中我提到,數(shù)據(jù)增強(qiáng)的本質(zhì)是人為地引入人視覺上的先驗(yàn)知識。在《CNN可視化技術(shù)總結(jié)(一)特征圖可視化》中我提到,所謂改進(jìn)網(wǎng)絡(luò)都是人的主觀改進(jìn),這里人的主觀即先驗(yàn)知識。 這里的先驗(yàn)知識指的是人對于如何識別一張圖像或如何識別一個類而關(guān)注的內(nèi)容,引入先驗(yàn)知識是指設(shè)計(jì)一些東西讓網(wǎng)絡(luò)也關(guān)注這些內(nèi)容。 例如特征金字塔中的多尺度融合,人認(rèn)為大目標(biāo)應(yīng)該在低分辨率檢測、小目標(biāo)在高分辨率檢測,由此網(wǎng)絡(luò)在特征金字塔的不同層預(yù)測不同大小的目標(biāo)。人又認(rèn)為如果大目標(biāo)在低分辨率檢測,小目標(biāo)在高分辨率檢測,則在低分辨率時,小目標(biāo)還存在,在這里被當(dāng)成了背景,同理在高分辨率時大目標(biāo)被當(dāng)成了背景,這樣不合理,又提出了ASFF處理方式,提升了5-10個百分點(diǎn)。
《特征金字塔技術(shù)總結(jié)》
例如人在關(guān)注一個事物時,會自動忽略眼睛看到的其它東西,由此提出了注意力機(jī)制。例如即便只有上半身,人還是能認(rèn)出自己熟悉的人,由此提出隨機(jī)遮擋等數(shù)據(jù)增強(qiáng)方式,讓網(wǎng)絡(luò)在有遮擋的情況下也能正確識別。
例如人是如何識別打籃球這一行為的,人根據(jù)籃球、投籃手勢、身體跳躍、籃球運(yùn)動等一系列的組合識別,因此如何讓網(wǎng)絡(luò)更好地關(guān)注這些特征提出了Non-Local。
在transformer中出現(xiàn)了embedding,在自編碼器中也出現(xiàn)了embedding,還有很多地方也有提到,如何理解embedding?
這里涉及到神經(jīng)網(wǎng)絡(luò)的另一種解釋。神經(jīng)網(wǎng)絡(luò)被認(rèn)為是將圖像從高維的像素空間映射到低維的嵌入空間,即embedding,也可稱為特征空間。這里的特征空間用embedding(向量的形式)來表示。
在編碼器中,網(wǎng)絡(luò)將圖像映射成embedding,即高維圖像通過非線性函數(shù)的多次映射,可以用低維embedding來表示,在解碼器中,網(wǎng)絡(luò)將低維embedding映射回圖像。
因此,embedding可以認(rèn)為是某些特征的濃縮表示形式。
以行人重識別為例,論文認(rèn)為即便是在不同拍攝角度下,只要是同一個人,神經(jīng)網(wǎng)絡(luò)輸出的embedding在某種距離度量方式下就是相近的,而不同的人在某種距離方式下就是很遠(yuǎn)的,因此可以通過某種距離度量方式判斷兩個embedding的距離是否在閾值范圍內(nèi)來判斷是否為同一個人。
feature map
字面意思:特征圖。
根據(jù)前面的解釋,神經(jīng)網(wǎng)絡(luò)是在將圖像從高維像素空間映射到低維的特征空間,這個映射是通過一層一層卷積和激活來進(jìn)行的,卷積具備提取特征的能力。
例如在數(shù)字圖像處理中,我們是通過sobel算子來檢測輪廓,而sobel算子可以認(rèn)為是3x3的卷積的其中一種情況,在這種情況下,它就可以提取圖像的輪廓,那在其它情況下就可以提取其它的特征,因此卷積的過程就是在提取特征的過程,經(jīng)過卷積提取特征和激活函數(shù)的映射后的輸出稱為feature maps。
池化
接著上面的解釋來介紹一下池化。
在一張圖像中存在很多噪聲和冗余信息,噪聲是由相機(jī)拍攝過程中由于傳感器電路、材料等硬件因素或傳輸過程中產(chǎn)生的,冗余信息是指跟具體任務(wù)無關(guān)的內(nèi)容。
當(dāng)我們以整張圖像輸入時,需要將這些噪聲、冗余信息去除。我們認(rèn)為這些冗余信息和噪聲不是特征,在神經(jīng)網(wǎng)絡(luò)中的卷積和映射過程中,會產(chǎn)生比較低的響應(yīng)值,因此我們可以通過最大池化選擇最大的響應(yīng)值進(jìn)入下一層,因?yàn)槲覀冋J(rèn)為只有特征才會在卷積過程中產(chǎn)生大的特征值,也稱為響應(yīng)值。
同樣以sobel為例,當(dāng)對一個像素值基本相同的背景進(jìn)行卷積時,卷積的輸出幾乎為0,而對一個輪廓邊緣進(jìn)行sobel卷積,則會輸出較大的值。
因此神經(jīng)網(wǎng)絡(luò)通過多次最大池化,去除了噪聲和冗余信息。這也就是為什么神經(jīng)網(wǎng)絡(luò)的backbone部分基本全是最大池化,而不是平均池化,因?yàn)槠骄鼗瘯⑦@些冗余信息和噪聲繼續(xù)傳到下一層。
關(guān)于池化更詳細(xì)的技術(shù)總結(jié),請閱讀《池化技術(shù)總結(jié)》文章。
語義信息
數(shù)字圖像是由像素值組成的,它們本是一堆數(shù)字的組合,但就是這樣的組合形成了一幅幅圖像,如貓、狗、籃球、米老鼠、眼睛、鼻子等。因此,語義信息指的是圖像的內(nèi)容,即鼻子,眼睛這樣的圖像。
總結(jié)
本文介紹了很多讀者在其它地方不可能了解的內(nèi)容,通過這些內(nèi)容相信讀者能更深層次地理解計(jì)算機(jī)視覺,建立起基本的計(jì)算機(jī)視覺知識體系。
責(zé)任編輯:haq
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87849 -
機(jī)器視覺
+關(guān)注
關(guān)注
161文章
4369瀏覽量
120280
原文標(biāo)題:計(jì)算機(jī)視覺專業(yè)術(shù)語解析
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論