來源丨機(jī)器學(xué)習(xí)AI算法工程 編輯丨極市平臺(tái) 目錄[1] SIFT(尺度不變特征變換)
1、SIFT(尺度不變特征變換)1.1 SIFT特征提取的實(shí)質(zhì)
1.2 SIFT特征提取的方法1. 構(gòu)建DOG尺度空間: 模擬圖像數(shù)據(jù)的多尺度特征,大尺度抓住概貌特征,小尺度注重細(xì)節(jié)特征。通過構(gòu)建高斯金字塔(每一層用不同的參數(shù)σ做高斯模糊(加權(quán))),保證圖像在任何尺度都能有對(duì)應(yīng)的特征點(diǎn),即保證尺度不變性。 2. 關(guān)鍵點(diǎn)搜索和定位: 確定是否為關(guān)鍵點(diǎn),需要將該點(diǎn)與同尺度空間不同σ值的圖像中的相鄰點(diǎn)比較,如果該點(diǎn)為max或min,則為一個(gè)特征點(diǎn)。找到所有特征點(diǎn)后,要去除低對(duì)比度和不穩(wěn)定的邊緣效應(yīng)的點(diǎn),留下具有代表性的關(guān)鍵點(diǎn)(比如,正方形旋轉(zhuǎn)后變?yōu)榱庑危绻眠吘壸鲎R(shí)別,4條邊就完全不一樣,就會(huì)錯(cuò)誤;如果用角點(diǎn)識(shí)別,則穩(wěn)定一些)。去除這些點(diǎn)的好處是增強(qiáng)匹配的抗噪能力和穩(wěn)定性。最后,對(duì)離散的點(diǎn)做曲線擬合,得到精確的關(guān)鍵點(diǎn)的位置和尺度信息。 3. 方向賦值: 為了實(shí)現(xiàn)旋轉(zhuǎn)不變性,需要根據(jù)檢測(cè)到的關(guān)鍵點(diǎn)的局部圖像結(jié)構(gòu)為特征點(diǎn)賦值。具體做法是用梯度方向直方圖。在計(jì)算直方圖時(shí),每個(gè)加入直方圖的采樣點(diǎn)都使用圓形高斯函數(shù)進(jìn)行加權(quán)處理,也就是進(jìn)行高斯平滑。這主要是因?yàn)镾IFT算法只考慮了尺度和旋轉(zhuǎn)不變形,沒有考慮仿射不變性。通過高斯平滑,可以使關(guān)鍵點(diǎn)附近的梯度幅值有較大權(quán)重,從而部分彌補(bǔ)沒考慮仿射不變形產(chǎn)生的特征點(diǎn)不穩(wěn)定。注意,一個(gè)關(guān)鍵點(diǎn)可能具有多個(gè)關(guān)鍵方向,這有利于增強(qiáng)圖像匹配的魯棒性。 4. 關(guān)鍵點(diǎn)描述子的生成: 關(guān)鍵點(diǎn)描述子不但包括關(guān)鍵點(diǎn),還包括關(guān)鍵點(diǎn)周圍對(duì)其有貢獻(xiàn)的像素點(diǎn)。這樣可使關(guān)鍵點(diǎn)有更多的不變特性,提高目標(biāo)匹配效率。在描述子采樣區(qū)域時(shí),需要考慮旋轉(zhuǎn)后進(jìn)行雙線性插值,防止因旋轉(zhuǎn)圖像出現(xiàn)白點(diǎn)。同時(shí),為了保證旋轉(zhuǎn)不變性,要以特征點(diǎn)為中心,在附近領(lǐng)域內(nèi)旋轉(zhuǎn)θ角,然后計(jì)算采樣區(qū)域的梯度直方圖,形成n維SIFT特征矢量(如128-SIFT)。最后,為了去除光照變化的影響,需要對(duì)特征矢量進(jìn)行歸一化處理。
SIFT特征提取算法 1.3 SIFT特征提取的優(yōu)點(diǎn)
1.4 SIFT特征提取的缺點(diǎn)
1.5 SIFT特征提取可以解決的問題:目標(biāo)的自身狀態(tài)、場(chǎng)景所處的環(huán)境和成像器材的成像特性等因素影響圖像配準(zhǔn)/目標(biāo)識(shí)別跟蹤的性能。而SIFT算法在一定程度上可解決:
近來不斷有人改進(jìn),其中最著名的有 SURF(計(jì)算量小,運(yùn)算速度快,提取的特征點(diǎn)幾乎與SIFT相同)和 CSIFT(彩色尺度特征不變變換,顧名思義,可以解決基于彩色圖像的SIFT問題)。 2、HOG(方向梯度直方圖)2.1 HOG特征提取的實(shí)質(zhì)通過計(jì)算和統(tǒng)計(jì)圖像局部區(qū)域的梯度方向直方圖來構(gòu)成特征。Hog特征結(jié)合SVM分類器已經(jīng)被廣泛應(yīng)用于圖像識(shí)別中,尤其在行人檢測(cè)中獲得了極大的成功。 2.2 HOG特征提取的方法
2.3 HOG特征提取特點(diǎn)
3、SIFT和HOG的比較共同點(diǎn): 都是基于圖像中梯度方向直方圖的特征提取方法 不同點(diǎn): SIFT 特征通常與使用SIFT檢測(cè)器得到的興趣點(diǎn)一起使用。這些興趣點(diǎn)與一個(gè)特定的方向和尺度相關(guān)聯(lián)。通常是在對(duì)一個(gè)圖像中的方形區(qū)域通過相應(yīng)的方向和尺度變換后,再計(jì)算該區(qū)域的SIFT特征。 HOG特征的單元大小較小,故可以保留一定的空間分辨率,同時(shí)歸一化操作使該特征對(duì)局部對(duì)比度變化不敏感。 結(jié)合SIFT和HOG方法,可以發(fā)現(xiàn)SIFT對(duì)于復(fù)雜環(huán)境下物體的特征提取具有良好的特性;而HOG對(duì)于剛性物體的特征提取具有良好的特性。 筆者曾做過一個(gè)自然場(chǎng)景分類的實(shí)驗(yàn),發(fā)現(xiàn)SIFT的準(zhǔn)確率比HOG高,而如果檢測(cè)像人這種剛性的object,HOG的表現(xiàn)要比SIFT好。 4、SIFT/HOG與神經(jīng)網(wǎng)絡(luò)特征提取的比較眾所周知,隨著深度學(xué)習(xí)的發(fā)展,通過神經(jīng)網(wǎng)絡(luò)提取特征得到了廣泛的應(yīng)用,那么,神經(jīng)網(wǎng)絡(luò)提取的特征與傳統(tǒng)的SIFT/HOG等特征提取方法有什么不同呢? 4.1 神經(jīng)網(wǎng)絡(luò)提取到的特征我們知道,對(duì)于一副圖像,像素級(jí)的特征沒有任何價(jià)值,而如果特征是一個(gè)具有結(jié)構(gòu)性(或者說有含義)的時(shí)候,比如摩托車是否具有車把手,是否具有車輪,就很容易把摩托車和非摩托車區(qū)分,學(xué)習(xí)算法才能發(fā)揮作用。 早期,兩個(gè)科學(xué)家Bruno Olshausen和 David Field通過實(shí)驗(yàn)研究了這個(gè)問題,發(fā)現(xiàn)一個(gè)復(fù)雜圖像往往由一些基本結(jié)構(gòu)組成。比如下圖:一個(gè)圖可通過用64種正交的edges(可以理解成正交的基本結(jié)構(gòu))來線性表示。比如樣例的x可以用1-64個(gè)edges中的三個(gè)按照0.8,0.3,0.5的權(quán)重調(diào)和而成。而其他基本edges沒有貢獻(xiàn),均為0 。 這就是神經(jīng)網(wǎng)絡(luò)每層提取到的特征。由于是通過神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)到了,因此也是無監(jiān)督的特征學(xué)習(xí)過程(Unsupervised Feature Learning) 。直觀上說,就是找到make sense的小patch再將其進(jìn)行combine,就得到了上一層的feature,遞歸地向上learning feature。在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就會(huì)completely different了。 4.2 傳統(tǒng)特征提取方法與神經(jīng)網(wǎng)絡(luò)特征提取的比較觀點(diǎn)1: 傳統(tǒng)特征提取方法的研究過程和思路是非常有用的,因?yàn)檫@些方法具有較強(qiáng)的可解釋性,它們對(duì)設(shè)計(jì)機(jī)器學(xué)習(xí)方法解決此類問題提供啟發(fā)和類比。有部分人認(rèn)為(也有部分人反對(duì))現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)與這些特征提取方法有一定類似性,因?yàn)槊總€(gè)濾波權(quán)重實(shí)際上是一個(gè)線性的識(shí)別模式,與這些特征提取過程的邊界與梯度檢測(cè)類似。同時(shí),池化(Pooling)的作用是統(tǒng)籌一個(gè)區(qū)域的信息,這與這些特征提取后進(jìn)行的特征整合(如直方圖等)類似。通過實(shí)驗(yàn)發(fā)現(xiàn)卷積網(wǎng)絡(luò)開始幾層實(shí)際上確實(shí)是在做邊緣和梯度檢測(cè)。不過事實(shí)上卷積網(wǎng)絡(luò)發(fā)明的時(shí)候,還沒有這些特征提取方法。 觀點(diǎn)2: 深度學(xué)習(xí)的數(shù)據(jù)需求量大對(duì)于視覺來說是個(gè)偽命題。許多研究成果已經(jīng)表明深度學(xué)習(xí)訓(xùn)練得到的模型具有很強(qiáng)的遷移能力,因此在大數(shù)據(jù)集上訓(xùn)練完成的模型只要拿過來在小數(shù)據(jù)集上用就可以,不需要完全重新訓(xùn)練。這種方式在小數(shù)據(jù)集上的結(jié)果往往也比傳統(tǒng)方法好。 觀點(diǎn)3: 還是需要重新訓(xùn)練的,只能說大數(shù)據(jù)集訓(xùn)練好的模型提供了一個(gè)比較好的參數(shù)初始化。而且卷積前幾層提取特征僅僅是對(duì)分類問題是對(duì)的,但是對(duì)于一些dense prediction還是不一樣,畢竟提取特征不一定有用,還是task dependent。 觀點(diǎn)4: 深度學(xué)習(xí)是一種自學(xué)習(xí)的特征表達(dá)方法,比SIFT/HOG這些依靠先驗(yàn)知識(shí)設(shè)計(jì)的feature的表達(dá)效果高。早在13年大家都發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)的最后一層的local特征和SIFT性質(zhì)差不多,但是表達(dá)能力強(qiáng)太多。SIFT能做的事情CNN都能做,表達(dá)效果也強(qiáng),那深度學(xué)習(xí)取代SIFT是遲早的事情(或者說已經(jīng)發(fā)生的事情)。深度神經(jīng)網(wǎng)絡(luò)識(shí)別率的提高不需要建立在需求大量訓(xùn)練樣本的基礎(chǔ)上,拿pre-train好的模型直接用就可以了。在一些沒有訓(xùn)練樣本的應(yīng)用(圖像分割(image stithing)/ 立體匹配(stereo mathing)) ,可以把卷積層的activation提取出來做stitching的local feature(感覺是一個(gè)可以探索的方向)。未來還有SIFT/SURF這種固定特征提取算法的生存空間嗎?除非是嵌入式這種計(jì)算資源極端受限的情況,但是現(xiàn)在大家都在試著implement CNN FPGA甚至ASIC了。 觀點(diǎn)5: 2016年ECCV上舉辦的一個(gè)local feature的工作會(huì),發(fā)現(xiàn)在核心匹配問題上,CNN并沒有什么突破性的進(jìn)展。在Oxford大學(xué)的VGG組提供的Hpatch數(shù)據(jù)集上,發(fā)現(xiàn)rootsiftpca效果最好,如圖: 那么提出兩個(gè)問題:(1)現(xiàn)在流行的特征學(xué)習(xí)方法siamese或triplet等結(jié)構(gòu)是否缺失了什么?(2)雖然CNN可以挖掘patch里面包含的信息并建立對(duì)于復(fù)雜幾何和光照變化的不變性,但是這種學(xué)習(xí)到的不變性是否過度依賴于數(shù)據(jù)而無法有效泛化到真實(shí)匹配場(chǎng)景中所遇到的影像之間的復(fù)雜變化呢? 5、其他傳統(tǒng)特征提取的方法(SURF、ORB、LBP、HAAR)SURF、ORB、LBP可以參考文章: 圖像特征檢測(cè)描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代碼實(shí)現(xiàn) https://link.jianshu.com/?t=http://lib.csdn.net/article/opencv/41913 5.1 SURF前面提到SITF的缺點(diǎn)是如果不借助硬件加速或?qū)iT的圖像處理器很難達(dá)到實(shí)現(xiàn),所以人們就要想辦法對(duì)SITF算子進(jìn)行改進(jìn),SURF算子便是對(duì)SIFT的改進(jìn),不過改進(jìn)之后在算法的運(yùn)行時(shí)間上還是沒有質(zhì)的飛躍。后面要介紹的ORB特征描述算子在運(yùn)行時(shí)間上才是一種質(zhì)的飛躍。 SURF主要是把SIFT中的某些運(yùn)算作了簡化。SURF把SIFT中的高斯二階微分的模板進(jìn)行了簡化,使得卷積平滑操作僅需要轉(zhuǎn)換成加減運(yùn)算,這樣使得SURF算法的魯棒性好且時(shí)間復(fù)雜度低。SURF最終生成的特征點(diǎn)的特征向量維度為64維。 5.2 ORBORB特征描述算法的運(yùn)行時(shí)間遠(yuǎn)優(yōu)于SIFT與SURF,可用于實(shí)時(shí)性特征檢測(cè)。ORB特征基于FAST角點(diǎn)的特征點(diǎn)檢測(cè)與描述技術(shù),具有尺度與旋轉(zhuǎn)不變性,同時(shí)對(duì)噪聲及透視仿射也具有不變性,良好的性能使得用ORB在進(jìn)行特征描述時(shí)的應(yīng)用場(chǎng)景十分廣泛。 ORB特征檢測(cè)主要分為以下兩個(gè)步驟: ①方向FAST特征點(diǎn)檢測(cè): FAST角點(diǎn)檢測(cè)是一種基于機(jī)器學(xué)習(xí)的快速角點(diǎn)特征檢測(cè)算法,具有方向的FAST特征點(diǎn)檢測(cè)是對(duì)興趣點(diǎn)所在圓周上的16個(gè)像素點(diǎn)進(jìn)行判斷,若判斷后的當(dāng)前中心像素點(diǎn)為暗或亮,將候定其是否為角點(diǎn)。FAST角點(diǎn)檢測(cè)計(jì)算的時(shí)間復(fù)雜度小,檢測(cè)效果突出。FAST角點(diǎn)檢測(cè)為加速算法實(shí)現(xiàn),通常先對(duì)回周上的點(diǎn)集進(jìn)行排序,排序使得其計(jì)算過程大大得到了優(yōu)化。FAST對(duì)多尺度特性的描述是還是通過建立圖像金字塔實(shí)現(xiàn)的,而對(duì)于旋轉(zhuǎn)不變性即方向的特征則引入灰度質(zhì)心法用于描述特征點(diǎn)的方向。 ②BRIEF特征描述: BRIEF描述子主要是通過隨機(jī)選取興趣點(diǎn)周圍區(qū)域的若干點(diǎn)來組成小興趣區(qū)域,將這些小興趣區(qū)域的灰度二值化并解析成二進(jìn)制碼串,將串特征作為該特征點(diǎn)的描述子,BRIEF描述子選取關(guān)鍵點(diǎn)附近的區(qū)域并對(duì)每一位比較其強(qiáng)度大小,然后根據(jù)圖像塊中兩個(gè)二進(jìn)制點(diǎn)來判斷當(dāng)前關(guān)鍵點(diǎn)編碼是0還是1.因?yàn)锽RIEF描述子的所有編碼都是二進(jìn)制數(shù)的,這樣就節(jié)省了計(jì)算機(jī)存儲(chǔ)空間。 5.3 LBPLBP(Local Binary Pattern),局部二值模式是一種描述圖像局部紋理的特征算子,具有旋轉(zhuǎn)不變性與灰度不變性等顯著優(yōu)點(diǎn)。LBP特征描述的是一種灰度范圍內(nèi)的圖像處理操作技術(shù),針對(duì)的是輸入源為8位或16位的灰度圖像。LBP特征是高效的圖像特征分析方法,經(jīng)過改進(jìn)與發(fā)展已經(jīng)應(yīng)用于多個(gè)領(lǐng)域之中,特別是人臉識(shí)別、表情識(shí)別、行人檢測(cè)領(lǐng)域已經(jīng)取得了成功。LBP特征將窗口中心點(diǎn)與鄰域點(diǎn)的關(guān)系進(jìn)行比較,重新編碼形成新特征以消除對(duì)外界場(chǎng)景對(duì)圖像的影響,因此一定程度上解決了復(fù)雜場(chǎng)景下(光照變換)特征描述問題。 LBP算法根據(jù)窗口領(lǐng)域的不同分為經(jīng)曲LBP和圓形LBP兩種。下面分別介紹: ①經(jīng)典LBP: 經(jīng)典LBP算子窗口為3×3的正方形窗口,以窗口中心像素為閾值,將其相鄰8領(lǐng)域像素灰度與中心像素值比較,若中心像素值小于周圍像素值,則該中心像素位置被標(biāo)記為1,否則為0(顯然這種規(guī)則下,對(duì)于中心點(diǎn)大于或等于這兩種情況,算法無法區(qū)分,后續(xù)經(jīng)過改進(jìn)引入LBP+與LBP-因子用來區(qū)分這兩種情況)。圖像經(jīng)過這種遍歷操作后,圖像就被二值化了,每一個(gè)窗口中心的8鄰域點(diǎn)都可以由8位二進(jìn)制數(shù)來表示,即可產(chǎn)生256種LBP碼,這個(gè)LBP碼值可以用來反映窗口的區(qū)域紋理信息。LBP具體在生成的過程中,先將圖像劃分為若干個(gè)子區(qū)域,子區(qū)域窗口可根據(jù)原圖像的尺寸進(jìn)行調(diào)整,而不一定非得為3×3的正方形窗口。一般對(duì)于512×640的圖像,子區(qū)域窗口區(qū)域選取大小為16×16。 ②圓形LBP: 經(jīng)典LBP用正方形來描述圖像的紋理特征,其缺點(diǎn)是難以滿足不同尺寸和頻率的需求。Ojala等人對(duì)經(jīng)典LBP進(jìn)行了改進(jìn),提出了將3×3的正方形窗口領(lǐng)域擴(kuò)展到任意圓形領(lǐng)域。由于圓形LBP采樣點(diǎn)在圓形邊界上,那么必然會(huì)導(dǎo)致部分計(jì)算出來的采樣點(diǎn)坐標(biāo)不是整數(shù),因此這里就需要對(duì)得到的坐標(biāo)像素點(diǎn)值進(jìn)行處理,常用的處理方法是最近鄰插值或雙線性插值。 放一張SIFT/HOG/LBP優(yōu)缺點(diǎn)、適用范圍對(duì)比圖: 5.4 HAAR人臉檢測(cè)最為經(jīng)典的算法Haar-like特征+Adaboost。這是最為常用的物體檢測(cè)的方法(最初用于人臉檢測(cè)),也是用的最多的方法。 訓(xùn)練過程: 輸入圖像->圖像預(yù)處理->提取特征->訓(xùn)練分類器(二分類)->得到訓(xùn)練好的模型; 測(cè)試過程: 輸入圖像->圖像預(yù)處理->提取特征->導(dǎo)入模型->二分類(是不是所要檢測(cè)的物體)。 Haar-like特征是很簡單的,無非就是那么幾種,如兩矩形特征、三矩形特征、對(duì)角特征。后來,還加入了邊緣特征、線特征、中心環(huán)繞特征等。使用積分圖可以加速計(jì)算特征。最后,使用集成的方法Adaboost進(jìn)行訓(xùn)練。
ConclusionSIFT / HOG 不同點(diǎn):SIFT提取的關(guān)鍵點(diǎn)是角點(diǎn),HOG提取的是邊緣特征。 傳統(tǒng)特征提取 / CNN特征提取不同點(diǎn):傳統(tǒng)特征提取方法的檢測(cè)算子一般是人為設(shè)計(jì)好的,是經(jīng)過大量的先驗(yàn)知識(shí)總結(jié)得到的;CNN特征提取相當(dāng)于在訓(xùn)練一個(gè)個(gè)filter(過濾器、卷積核),這些filter相當(dāng)于傳統(tǒng)特征提取方法中的檢測(cè)算子。因此,CNN特征提取是利用神經(jīng)網(wǎng)絡(luò)的自主學(xué)習(xí)得到的。 |
|