您好,登錄后才能下訂單哦!
本篇內容主要講解“計算機視覺的五大技術是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“計算機視覺的五大技術是什么”吧!
一個顯而易見的答案就是,這個研究領域已經衍生出了一大批快速成長的、有實際作用的應用,例如:
人臉識別: Snapchat 和 Facebook 使用人臉檢測算法來識別人臉。
圖像檢索:Google Images 使用基于內容的查詢來搜索相關圖片,算法分析查詢圖像中的內容并根據最佳匹配內容返回結果。
游戲和控制:使用立體視覺較為成功的游戲應用產品是:微軟 Kinect。
監測:用于監測可疑行為的監視攝像頭遍布于各大公共場所中。
生物識別技術:指紋、虹膜和人臉匹配仍然是生物識別領域的一些常用方法。
智能汽車:計算機視覺仍然是檢測交通標志、燈光和其他視覺特征的主要信息來源。
視覺識別是計算機視覺的關鍵組成部分,如圖像分類、定位和檢測。神經網絡和深度學習的最新進展極大地推動了這些最先進的視覺識別系統的發展。在本文中,我將分享 5 種主要的計算機視覺技術,并介紹幾種基于計算機視覺技術的深度學習模型與應用。
▌1?、圖像分類
給定一組各自被標記為單一類別的圖像,我們對一組新的測試圖像的類別進行預測,并測量預測的準確性結果,這就是圖像分類問題。圖像分類問題需要面臨以下幾個挑戰???:
視點變化,尺度變化,類內變化,圖像變形,圖像遮擋,照明條件和背景雜斑
我們怎樣來編寫一個圖像分類算法呢?
計算機視覺研究人員提出了一種基于數據驅動的方法。
該算法并不是直接在代碼中指定每個感興趣的圖像類別,而是為計算機每個圖像類別都提供許多示例,然后設計一個學習算法,查看這些示例并學習每個類別的視覺外觀。也就是說,首先積累一個帶有標記圖像的訓練集,然后將其輸入到計算機中,由計算機來處理這些數據。
因此,可以按照下面的步驟來分解:
輸入是由 N 個圖像組成的訓練集,共有 K 個類別,每個圖像都被標記為其中一個類別。
然后,使用該訓練集訓練一個分類器,來學習每個類別的外部特征。
最后,預測一組新圖像的類標簽,評估分類器的性能,我們用分類器預測的類別標簽與其真實的類別標簽進行比較。
目前較為流行的圖像分類架構是卷積神經網絡(CNN)——將圖像送入網絡,然后網絡對圖像數據進行分類。卷積神經網絡從輸入“掃描儀”開始,該輸入“掃描儀”也不會一次性解析所有的訓練數據。比如輸入一個大小為 100*100 的圖像,你也不需要一個有 10,000 個節點的網絡層。相反,你只需要創建一個大小為 10 *10 的掃描輸入層,掃描圖像的前 10*10 個像素。然后,掃描儀向右移動一個像素,再掃描下一個 10 *10 的像素,這就是滑動窗口。
輸入數據被送入卷積層,而不是普通層。每個節點只需要處理離自己最近的鄰近節點,卷積層也隨著掃描的深入而趨于收縮。除了卷積層之外,通常還會有池化層。池化是過濾細節的一種方法,常見的池化技術是最大池化,它用大小為 2*2 的矩陣傳遞擁有最多特定屬性的像素。
現在,大部分圖像分類技術都是在 ImageNet 數據集上訓練的, ImageNet 數據集中包含了約 120 萬張高分辨率訓練圖像。測試圖像沒有初始注釋(即沒有分割或標簽),并且算法必須產生標簽來指定圖像中存在哪些對象。
現存的很多計算機視覺算法,都是被來自牛津、 INRIA 和 XRCE 等頂級的計算機視覺團隊在 ImageNet 數據集上實現的。通常來說,計算機視覺系統使用復雜的多級管道,并且,早期階段的算法都是通過優化幾個參數來手動微調的。
第一屆 ImageNet 競賽的獲獎者是 Alex Krizhevsky(NIPS 2012) ,他在 Yann LeCun 開創的神經網絡類型基礎上,設計了一個深度卷積神經網絡。該網絡架構除了一些最大池化層外,還包含 7 個隱藏層,前幾層是卷積層,最后兩層是全連接層。在每個隱藏層內,激活函數為線性的,要比邏輯單元的訓練速度更快、性能更好。除此之外,當附近的單元有更強的活動時,它還使用競爭性標準化來壓制隱藏活動,這有助于強度的變化。
就硬件要求而言, Alex 在 2 個 Nvidia GTX 580 GPU (速度超過 1000 個快速的小內核)上實現了非常高效的卷積網絡。 GPU 非常適合矩陣間的乘法且有非常高的內存帶寬。這使他能在一周內完成訓練,并在測試時快速的從 10 個塊中組合出結果。如果我們能夠以足夠快的速度傳輸狀態,就可以將網絡分布在多個內核上。
隨著內核越來越便宜,數據集越來越大,大型神經網絡的速度要比老式計算機視覺系統更快。在這之后,已經有很多種使用卷積神經網絡作為核心,并取得優秀成果的模型,如 ZFNet(2013),GoogLeNet(2014), VGGNet(2014), RESNET(2015),DenseNet(2016)等。
▌2?、對象檢測
識別圖像中的對象這一任務,通常會涉及到為各個對象輸出邊界框和標簽。這不同于分類/定位任務——對很多對象進行分類和定位,而不僅僅是對個主體對象進行分類和定位。在對象檢測中,你只有 2 個對象分類類別,即對象邊界框和非對象邊界框。例如,在汽車檢測中,你必須使用邊界框檢測所給定圖像中的所有汽車。
如果使用圖像分類和定位圖像這樣的滑動窗口技術,我們則需要將卷積神經網絡應用于圖像上的很多不同物體上。由于卷積神經網絡會將圖像中的每個物體識別為對象或背景,因此我們需要在大量的位置和規模上使用卷積神經網絡,但是這需要很大的計算量!
為了解決這一問題,神經網絡研究人員建議使用區域(region)這一概念,這樣我們就會找到可能包含對象的“斑點”圖像區域,這樣運行速度就會大大提高。第一種模型是基于區域的卷積神經網絡( R-CNN ),其算法原理如下:
在 R-CNN 中,首先使用選擇性搜索算法掃描輸入圖像,尋找其中的可能對象,從而生成大約 2,000 個區域建議;
然后,在這些區域建議上運行一個 卷積神網絡;
最后,將每個卷積神經網絡的輸出傳給支持向量機( SVM ),使用一個線性回歸收緊對象的邊界框。
實質上,我們將對象檢測轉換為一個圖像分類問題。但是也存在這些問題:訓練速度慢,需要大量的磁盤空間,推理速度也很慢。
R-CNN 的第一個升級版本是 Fast R-CNN,通過使用了 2 次增強,大大提了檢測速度:
在建議區域之前進行特征提取,因此在整幅圖像上只能運行一次卷積神經網絡;
用一個 softmax 層代替支持向量機,對用于預測的神經網絡進行擴展,而不是創建一個新的模型。
Fast R-CNN 的運行速度要比 R-CNN 快的多,因為在一幅圖像上它只能訓練一個 CNN 。 但是,擇性搜索算法生成區域提議仍然要花費大量時間。
Faster R-CNN 是基于深度學習對象檢測的一個典型案例。
該算法用一個快速神經網絡代替了運算速度很慢的選擇性搜索算法:通過插入區域提議網絡( RPN ),來預測來自特征的建議。 RPN 決定查看“哪里”,這樣可以減少整個推理過程的計算量。
RPN 快速且高效地掃描每一個位置,來評估在給定的區域內是否需要作進一步處理,其實現方式如下:通過輸出 k 個邊界框建議,每個邊界框建議都有 2 個值——代表每個位置包含目標對象和不包含目標對象的概率。
?一旦我們有了區域建議,就直接將它們送入 Fast R-CNN 。 并且,我們還添加了一個池化層、一些全連接層、一個 softmax 分類層以及一個邊界框回歸器。
總之,Faster R-CNN 的速度和準確度更高。值得注意的是,雖然以后的模型在提高檢測速度方面做了很多工作,但很少有模型能夠大幅度的超越 Faster R-CNN 。換句話說, Faster R-CNN 可能不是最簡單或最快速的目標檢測方法,但仍然是性能最好的方法之一。
近年來,主要的目標檢測算法已經轉向更快、更高效的檢測系統。這種趨勢在 You Only Look Once(YOLO),Single Shot MultiBox Detector(SSD)和基于區域的全卷積網絡( R-FCN )算法中尤為明顯,這三種算法轉向在整個圖像上共享計算。因此,這三種算法和上述的3種造價較高的R-CNN 技術有所不同。
▌3?、?目標跟蹤
?目標跟蹤,是指在特定場景跟蹤某一個或多個特定感興趣對象的過程。傳統的應用就是視頻和真實世界的交互,在檢測到初始對象之后進行觀察。現在,目標跟蹤在無人駕駛領域也很重要,例如 Uber 和特斯拉等公司的無人駕駛。
根據觀察模型,目標跟蹤算法可分成 2 類:生成算法和判別算法。
生成算法使用生成模型來描述表觀特征,并將重建誤差最小化來搜索目標,如主成分分析算法( PCA );
判別算法用來區分物體和背景,其性能更穩健,并逐漸成為跟蹤對象的主要手段(判別算法也稱為 Tracking-by-Detection ,深度學習也屬于這一范疇)。
為了通過檢測實現跟蹤,我們檢測所有幀的候選對象,并使用深度學習從候選對象中識別想要的對象。有兩種可以使用的基本網絡模型:堆疊自動編碼器( SAE )和卷積神經網絡( CNN )。
目前,最流行的使用 SAE 進行目標跟蹤的網絡是 Deep Learning Tracker(DLT),它使用了離線預訓練和在線微調。其過程如下:
離線無監督預訓練使用大規模自然圖像數據集獲得通用的目標對象表示,對堆疊去噪自動編碼器進行預訓練。堆疊去噪自動編碼器在輸入圖像中添加噪聲并重構原始圖像,可以獲得更強大的特征表述能力。
將預訓練網絡的編碼部分與分類器合并得到分類網絡,然后使用從初始幀中獲得的正負樣本對網絡進行微調,來區分當前的對象和背景。 DLT 使用粒子濾波作為意向模型(motion model),生成當前幀的候選塊。 分類網絡輸出這些塊的概率值,即分類的置信度,然后選擇置信度最高的塊作為對象。
在模型更新中, DLT 使用有限閾值。
鑒于 CNN 在圖像分類和目標檢測方面的優勢,它已成為計算機視覺和視覺跟蹤的主流深度模型。 一般來說,大規模的卷積神經網絡既可以作為分類器和跟蹤器來訓練。具有代表性的基于卷積神經網絡的跟蹤算法有全卷積網絡跟蹤器( FCNT )和多域卷積神經網絡( MD Net )。
FCNT 充分分析并利用了 VGG 模型中的特征映射,這是一種預先訓練好的 ImageNet 數據集,并有如下效果:
卷積神經網絡特征映射可用于定位和跟蹤。
對于從背景中區分特定對象這一任務來說,很多卷積神經網絡特征映射是噪音或不相關的。
較高層捕獲對象類別的語義概念,而較低層編碼更多的具有區性的特征,來捕獲類別內的變形。
因此, FCNT 設計了特征選擇網絡,在 VGG 網絡的卷積 4-3 和卷積 5-3 層上選擇最相關的特征映射。 然后為避免噪音的過擬合, FCNT 還為這兩個層的選擇特征映射單獨設計了兩個額外的通道(即 SNet 和 GNet ): GNet 捕獲對象的類別信息; SNet 將該對象從具有相似外觀的背景中區分出來。
這兩個網絡的運作流程如下:都使用第一幀中給定的邊界框進行初始化,以獲取對象的映射。而對于新的幀,對其進行剪切并傳輸最后一幀中的感興趣區域,該感興趣區域是以目標對象為中心。最后,通過 SNet 和 GNet ,分類器得到兩個預測熱映射,而跟蹤器根據是否存在干擾信息,來決定使用哪張熱映射生成的跟蹤結果。 FCNT 的圖如下所示。
與 FCNT 的思路不同, MD Net 使用視頻的所有序列來跟蹤對象的移動。上述網絡使用不相關的圖像數據來減少跟蹤數據的訓練需求,并且這種想法與跟蹤有一些偏差。該視頻中的一個類的對象可以是另一個視頻中的背景,因此, MD Net 提出了“多域”這一概念,它能夠在每個域中獨立的區分對象和背景,而一個域表示一組包含相同類型對象的視頻。
如下圖所示, MD Net 可分為兩個部分,即 K 個特定目標分支層和共享層:每個分支包含一個具有 softmax 損失的二進制分類層,用于區分每個域中的對象和背景;共享層與所有域共享,以保證通用表示。
?近年來,深度學習研究人員嘗試使用了不同的方法來適應視覺跟蹤任務的特征,并且已經探索了很多方法:
應用到諸如循環神經網絡( RNN )和深度信念網絡(DBN )等其他網絡模型;
設計網絡結構來適應視頻處理和端到端學習,優化流程、結構和參數;
或者將深度學習與傳統的計算機視覺或其他領域的方法(如語言處理和語音識別)相結合。
▌4、語義分割
計算機視覺的核心是分割,它將整個圖像分成一個個像素組,然后對其進行標記和分類。特別地,語義分割試圖在語義上理解圖像中每個像素的角色(比如,識別它是汽車、摩托車還是其他的類別)。如上圖所示,除了識別人、道路、汽車、樹木等之外,我們還必須確定每個物體的邊界。因此,與分類不同,我們需要用模型對密集的像素進行預測。
與其他計算機視覺任務一樣,卷積神經網絡在分割任務上取得了巨大成功。最流行的原始方法之一是通過滑動窗口進行塊分類,利用每個像素周圍的圖像塊,對每個像素分別進行分類。但是其計算效率非常低,因為我們不能在重疊塊之間重用共享特征。
解決方案就是加州大學伯克利分校提出的全卷積網絡( FCN ),它提出了端到端的卷積神經網絡體系結構,在沒有任何全連接層的情況下進行密集預測。
這種方法允許針對任何尺寸的圖像生成分割映射,并且比塊分類算法快得多,幾乎后續所有的語義分割算法都采用了這種范式。
?但是,這也仍然存在一個問題:在原始圖像分辨率上進行卷積運算非常昂貴。為了解決這個問題, FCN 在網絡內部使用了下采樣和上采樣:下采樣層被稱為條紋卷積( striped convolution );而上采樣層被稱為反卷積( transposed convolution )。
盡管采用了上采樣和下采樣層,但由于池化期間的信息丟失, FCN 會生成比較粗糙的分割映射。 SegNet 是一種比 FCN (使用最大池化和編碼解碼框架)更高效的內存架構。在 SegNet 解碼技術中,從更高分辨率的特征映射中引入了 shortcut/skip connections ,以改善上采樣和下采樣后的粗糙分割映射。
目前的語義分割研究都依賴于完全卷積網絡,如空洞卷積 ( Dilated Convolutions ),DeepLab 和 RefineNet 。
▌5?、實例分割
除了語義分割之外,實例分割將不同類型的實例進行分類,比如用 5 種不同顏色來標記 5 輛汽車。分類任務通常來說就是識別出包含單個對象的圖像是什么,但在分割實例時,我們需要執行更復雜的任務。我們會看到多個重疊物體和不同背景的復雜景象,我們不僅需要將這些不同的對象進行分類,而且還要確定對象的邊界、差異和彼此之間的關系!
到目前為止,我們已經看到了如何以多種有趣的方式使用卷積神經網絡的特征,通過邊界框有效定位圖像中的不同對象。我們可以將這種技術進行擴展嗎?也就是說,對每個對象的精確像素進行定位,而不僅僅是用邊界框進行定位? Facebook AI 則使用了 Mask R-CNN 架構對實例分割問題進行了探索。
就像 Fast R-CNN 和 Faster R-CNN 一樣, Mask R-CNN 的底層是鑒于 Faster R-CNN 在物體檢測方面效果很好,我們是否可以將其擴展到像素級分割?
Mask R-CNN 通過向 Faster R-CNN 添加一個分支來進行像素級分割,該分支輸出一個二進制掩碼,該掩碼表示給定像素是否為目標對象的一部分:該分支是基于卷積神經網絡特征映射的全卷積網絡。將給定的卷積神經網絡特征映射作為輸入,輸出為一個矩陣,其中像素屬于該對象的所有位置用 1 表示,其他位置則用 0 表示,這就是二進制掩碼。
另外,當在原始 Faster R-CNN 架構上運行且沒有做任何修改時,感興趣池化區域( RoIPool ) 選擇的特征映射區域或原始圖像的區域稍微錯開。由于圖像分割具有像素級特性,這與邊界框不同,自然會導致結果不準確。 Mas R-CNN 通過調整 RoIPool 來解決這個問題,使用感興趣區域對齊( Roialign )方法使其變的更精確。本質上, RoIlign 使用雙線性插值來避免舍入誤差,這會導致檢測和分割不準確。
一旦生成這些掩碼, Mask R-CNN 將 RoIAlign 與來自 Faster R-CNN 的分類和邊界框相結合,以便進行精確的分割:
到此,相信大家對“計算機視覺的五大技術是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。