隨著機(jī)器視覺(jué)技術(shù)的快速發(fā)展,傳統(tǒng)很多需要人工來(lái)手動(dòng)操作的工作,漸漸地被機(jī)器所替代。傳統(tǒng)方法做目標(biāo)識(shí)別大多都是靠人工實(shí)現(xiàn),從形狀、顏色、長(zhǎng)度、寬度、長(zhǎng)寬比來(lái)確定被識(shí)別的目標(biāo)是否符合標(biāo)準(zhǔn),最終定義出一系列的規(guī)則來(lái)進(jìn)行目標(biāo)識(shí)別。這樣的方法當(dāng)然在一些簡(jiǎn)單的案例中已經(jīng)應(yīng)用的很好,唯一的缺點(diǎn)是隨著被識(shí)別物體的變動(dòng),所有的規(guī)則和算法都要重新設(shè)計(jì)和開(kāi)發(fā),即使是同樣的產(chǎn)品,不同批次的變化都會(huì)造成不能重用的現(xiàn)實(shí)。
而隨著機(jī)器學(xué)習(xí),深度學(xué)習(xí)的發(fā)展,很多肉眼很難去直接量化的特征,深度學(xué)習(xí)可以自動(dòng)學(xué)習(xí)這些特征,這就是深度學(xué)習(xí)帶給我們的優(yōu)點(diǎn)和前所未有的吸引力。很多特征我們通過(guò)傳統(tǒng)算法無(wú)法量化,或者說(shuō)很難去做到的,深度學(xué)習(xí)可以。特別是在圖像分類(lèi)、目標(biāo)識(shí)別這些問(wèn)題上有顯著的提升。
視覺(jué)常用的目標(biāo)識(shí)別方法有三種:Blob分析法(BlobAnalysis)、模板匹配法、深度學(xué)習(xí)法。下面就三種常用的目標(biāo)識(shí)別方法進(jìn)行對(duì)比。
Blob分析法(BlobAnalysis)
在計(jì)算機(jī)視覺(jué)中的Blob是指圖像中的具有相似顏色、紋理等特征所組成的一塊連通區(qū)域。Blob分析(BlobAnalysis)是對(duì)圖像中相同像素的連通域進(jìn)行分析(該連通域稱(chēng)為Blob)。其過(guò)程就是將圖像進(jìn)行二值化,分割得到前景和背景,然后進(jìn)行連通區(qū)域檢測(cè),從而得到Blob塊的過(guò)程。簡(jiǎn)單來(lái)說(shuō),blob分析就是在一塊“光滑”區(qū)域內(nèi),將出現(xiàn)“灰度突變”的小區(qū)域?qū)ふ页鰜?lái)。
舉例來(lái)說(shuō),假如現(xiàn)在有一塊剛生產(chǎn)出來(lái)的玻璃,表面非常光滑,平整。如果這塊玻璃上面沒(méi)有瑕疵,那么,我們是檢測(cè)不到“灰度突變”的;相反,如果在玻璃生產(chǎn)線(xiàn)上,由于種種原因,造成了玻璃上面有一個(gè)凸起的小泡、有一塊黑斑、有一點(diǎn)裂縫,那么,我們就能在這塊玻璃上面檢測(cè)到紋理,經(jīng)二值化(BinaryThresholding)處理后的圖像中色斑可認(rèn)為是blob。而這些部分,就是生產(chǎn)過(guò)程中造成的瑕疵,這個(gè)過(guò)程,就是Blob分析。
Blob分析工具可以從背景中分離出目標(biāo),并可以計(jì)算出目標(biāo)的數(shù)量、位置、形狀、方向和大小,還可以提供相關(guān)斑點(diǎn)間的拓?fù)浣Y(jié)構(gòu)。在處理過(guò)程中不是對(duì)單個(gè)像素逐一分析,而是對(duì)圖像的行進(jìn)行操作。圖像的每一行都用游程長(zhǎng)度編碼(RLE)來(lái)表示相鄰的目標(biāo)范圍。這種算法與基于像素的算法相比,大大提高了處理的速度。
針對(duì)二維目標(biāo)圖像和高對(duì)比度圖像,適用于有無(wú)檢測(cè)和缺陷檢測(cè)這類(lèi)目標(biāo)識(shí)別應(yīng)用。常用于二維目標(biāo)圖像、高對(duì)比度圖像、存在/缺席檢測(cè)、數(shù)值范圍和旋轉(zhuǎn)不變性需求。顯然,紡織品的瑕疵檢測(cè),玻璃的瑕疵檢測(cè),機(jī)械零件表面缺陷檢測(cè),可樂(lè)瓶缺陷檢測(cè),藥品膠囊缺陷檢測(cè)等很多場(chǎng)合都會(huì)用到blob分析。
但另一方面,Blob分析并不適用于以下圖像:
1. 低對(duì)比度圖像;
2. 必要的圖像特征不能用2個(gè)灰度級(jí)描述;3. 按照模版檢測(cè)(圖形檢測(cè)需求)。
總的來(lái)說(shuō),Blob分析就是檢測(cè)圖像的斑點(diǎn),適用于背景單一,前景缺陷不區(qū)分類(lèi)別,識(shí)別精度要求不高的場(chǎng)景。
模板匹配法
模板匹配是一種最原始、最基本的模式識(shí)別方法,研究某一特定對(duì)象物的圖案位于圖像的什么地方,進(jìn)而識(shí)別對(duì)象物,這就是一個(gè)匹配問(wèn)題。它是圖像處理中最基本、最常用的匹配方法。換句話(huà)說(shuō)就是一副已知的需要匹配的小圖像,在一副大圖像中搜尋目標(biāo),已知該圖中有要找的目標(biāo),且該目標(biāo)同模板有相同的尺寸、方向和圖像元素,通過(guò)統(tǒng)計(jì)計(jì)算圖像的均值、梯度、距離、方差等特征可以在圖中找到目標(biāo),確定其坐標(biāo)位置。
這就說(shuō)明,我們要找的模板是圖像里標(biāo)標(biāo)準(zhǔn)準(zhǔn)存在的,這里說(shuō)的標(biāo)標(biāo)準(zhǔn)準(zhǔn),就是說(shuō),一旦圖像或者模板發(fā)生變化,比如旋轉(zhuǎn),修改某幾個(gè)像素,圖像翻轉(zhuǎn)等操作之后,我們就無(wú)法進(jìn)行匹配了,這也是這個(gè)算法的弊端。
所以這種匹配算法,就是在待檢測(cè)圖像上,從左到右,從上向下對(duì)模板圖像與小東西的圖像進(jìn)行比對(duì)。
在opencv中有cv2.matchTemplate(src,templ,result,match_method)方法可以調(diào)用,src是待檢測(cè)圖像,templ是模板庫(kù),match_method是匹配的方法。
這種方法相比Blob分析有較好的檢測(cè)精度,同時(shí)也能區(qū)分不同的缺陷類(lèi)別,這相當(dāng)于是一種搜索算法,在待檢測(cè)圖像上根據(jù)不同roi用指定的匹配方法與模板庫(kù)中的所有圖像進(jìn)行搜索匹配,要求缺陷的形狀、大小、方法都有較高的一致性,因此想要獲得可用的檢測(cè)精度需要構(gòu)建較完善的模板庫(kù)。
深度學(xué)習(xí)法
2014年R-CNN的提出,使得基于CNN的目標(biāo)檢測(cè)算法逐漸成為主流。深度學(xué)習(xí)的應(yīng)用,使檢測(cè)精度和檢測(cè)速度都獲得了改善。
自從AlexNet在比賽中使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)而大幅度提高了圖像分類(lèi)的準(zhǔn)確率,便有學(xué)者嘗試將深度學(xué)習(xí)應(yīng)用到目標(biāo)類(lèi)別檢測(cè)中。卷積神經(jīng)網(wǎng)絡(luò)不僅能夠提取更高層、表達(dá)能力更好的特征,還能在同一個(gè)模型中完成對(duì)于特征的提取、選擇和分類(lèi)。
在這方面,主要有兩類(lèi)主流的算法:
一類(lèi)是結(jié)合RPN網(wǎng)絡(luò)的,基于分類(lèi)的R-CNN系列兩階目標(biāo)檢測(cè)算法(twostage);
另一類(lèi)則是將目標(biāo)檢測(cè)轉(zhuǎn)換為回歸問(wèn)題的一階目標(biāo)檢測(cè)算法(singlestage)。
物體檢測(cè)的任務(wù)是找出圖像或視頻中的感興趣物體,同時(shí)檢測(cè)出它們的位置和大小,是機(jī)器視覺(jué)領(lǐng)域的核心問(wèn)題之一。
物體檢測(cè)過(guò)程中有很多不確定因素,如圖像中物體數(shù)量不確定,物體有不同的外觀、形狀、姿態(tài),加之物體成像時(shí)會(huì)有光照、遮擋等因素的干擾,導(dǎo)致檢測(cè)算法有一定的難度。進(jìn)入深度學(xué)習(xí)時(shí)代以來(lái),物體檢測(cè)發(fā)展主要集中在兩個(gè)方向:twostage算法如R-CNN系列和onestage算法如YOLO、SSD等。兩者的主要區(qū)別在于twostage算法需要先生成proposal(一個(gè)有可能包含待檢物體的預(yù)選框),然后進(jìn)行細(xì)粒度的物體檢測(cè)。而onestage算法會(huì)直接在網(wǎng)絡(luò)中提取特征來(lái)預(yù)測(cè)物體分類(lèi)和位置。
兩階算法中區(qū)域提取算法核心是卷積神經(jīng)網(wǎng)絡(luò)CNN,先利用CNN骨干提取特征,然后找出候選區(qū)域,最后滑動(dòng)窗口確定目標(biāo)類(lèi)別與位置。
R-CNN首先通過(guò)SS算法提取2k個(gè)左右的感興趣區(qū)域,再對(duì)感興趣區(qū)域進(jìn)行特征提取。存在缺陷:感興趣區(qū)域彼此之間權(quán)值無(wú)法共享,存在重復(fù)計(jì)算,中間數(shù)據(jù)需單獨(dú)保存占用資源,對(duì)輸入圖片強(qiáng)制縮放影響檢測(cè)準(zhǔn)確度。
SPP-NET在最后一個(gè)卷積層和第一個(gè)全連接層之間做些處理,保證輸入全連接層的尺寸一致即可解決輸入圖像尺寸受限的問(wèn)題。SPP-NET候選區(qū)域包含整張圖像,只需通過(guò)一次卷積網(wǎng)絡(luò)即可得到整張圖像和所有候選區(qū)域的特征。
FastR-CNN借鑒SPP-NET的特征金字塔,提出ROIPooling把各種尺寸的候選區(qū)域特征圖映射成統(tǒng)一尺度的特征向量,首先,將不同大小的候選區(qū)域都切分成M×N塊,再對(duì)每塊都進(jìn)行maxpooling得到1個(gè)值。這樣,所有候選區(qū)域特征圖就都統(tǒng)一成M×N維的特征向量了。但是,利用SS算法產(chǎn)生候選框?qū)r(shí)間消耗非常大。
FasterR-CNN是先用CNN骨干網(wǎng)提取圖像特征,由RPN網(wǎng)絡(luò)和后續(xù)的檢測(cè)器共享,特征圖進(jìn)入RPN網(wǎng)絡(luò)后,對(duì)每個(gè)特征點(diǎn)預(yù)設(shè)9個(gè)不同尺度和形狀的錨盒,計(jì)算錨盒和真實(shí)目標(biāo)框的交并比和偏移量,判斷該位置是否存在目標(biāo),將預(yù)定義的錨盒分為前景或背景,再根據(jù)偏差損失訓(xùn)練RPN網(wǎng)絡(luò),進(jìn)行位置回歸,修正ROI的位置,最后將修正的ROI傳入后續(xù)網(wǎng)絡(luò)。但是,在檢測(cè)過(guò)程中,RPN網(wǎng)絡(luò)需要對(duì)目標(biāo)進(jìn)行一次回歸篩選以區(qū)分前景和背景目標(biāo),后續(xù)檢測(cè)網(wǎng)絡(luò)對(duì)RPN輸出的ROI再一次進(jìn)行細(xì)分類(lèi)和位置回歸,兩次計(jì)算導(dǎo)致模型參數(shù)量大。
MaskR-CNN在FasterR-CNN中加了并行的mask分支,對(duì)每個(gè)ROI生成一個(gè)像素級(jí)別的二進(jìn)制掩碼。在FasterR-CNN中,采用ROIPooling產(chǎn)生統(tǒng)一尺度的特征圖,這樣再映射回原圖時(shí)就會(huì)產(chǎn)生錯(cuò)位,使像素之間不能精準(zhǔn)對(duì)齊。這對(duì)目標(biāo)檢測(cè)產(chǎn)生的影響相對(duì)較小,但對(duì)于像素級(jí)的分割任務(wù),誤差就不容忽視了。MaskR-CNN中用雙線(xiàn)性插值解決像素點(diǎn)不能精準(zhǔn)對(duì)齊的問(wèn)題。但是,由于繼承兩階段算法,實(shí)時(shí)性仍不理想。
一階算法在整個(gè)卷積網(wǎng)絡(luò)中進(jìn)行特征提取、目標(biāo)分類(lèi)和位置回歸,通過(guò)一次反向計(jì)算得到目標(biāo)位置和類(lèi)別,在識(shí)別精度稍弱于兩階段目標(biāo)檢測(cè)算法的前提下,速度有了極大的提升。
YOLOv1把輸入圖像統(tǒng)一縮放到448×448×3,再劃分為7×7個(gè)網(wǎng)格,每格負(fù)責(zé)預(yù)測(cè)兩個(gè)邊界框bbox的位置和置信度。這兩個(gè)b-box對(duì)應(yīng)同一個(gè)類(lèi)別,一個(gè)預(yù)測(cè)大目標(biāo),一個(gè)預(yù)測(cè)小目標(biāo)。bbox的位置不需要初始化,而是由YOLO模型在權(quán)重初始化后計(jì)算出來(lái)的,模型在訓(xùn)練時(shí)隨著網(wǎng)絡(luò)權(quán)重的更新,調(diào)整b-box的預(yù)測(cè)位置。但是,該算法對(duì)小目標(biāo)檢測(cè)不佳,每個(gè)網(wǎng)格只能預(yù)測(cè)一個(gè)類(lèi)別。
YOLOv2把原始圖像劃分為13×13個(gè)網(wǎng)格,通過(guò)聚類(lèi)分析,確定每個(gè)網(wǎng)格設(shè)置5個(gè)錨盒,每個(gè)錨盒預(yù)測(cè)1個(gè)類(lèi)別,通過(guò)預(yù)測(cè)錨盒和網(wǎng)格之間的偏移量進(jìn)行目標(biāo)位置回歸。
SSD保留了網(wǎng)格劃分方法,但從基礎(chǔ)網(wǎng)絡(luò)的不同卷積層提取特征。隨著卷積層數(shù)的遞增,錨盒尺寸設(shè)置由小到大,以此提升SSD對(duì)多尺度目標(biāo)的檢測(cè)精度。
YOLOv3通過(guò)聚類(lèi)分析,每個(gè)網(wǎng)格預(yù)設(shè)3個(gè)錨盒,只用darknet前52層,并大量使用殘差層。使用降采樣降低池化對(duì)梯度下降的負(fù)面效果。YOLOv3通過(guò)上采樣提取深層特征,使其與將要融合的淺層特征維度相同,但通道數(shù)不同,在通道維度上進(jìn)行拼接實(shí)現(xiàn)特征融合,融合了13×13×255、26×26×255和52×52×255共3個(gè)尺度的特征圖,對(duì)應(yīng)的檢測(cè)頭也都采用全卷積結(jié)構(gòu)。
YOLOv4在原有YOLO目標(biāo)檢測(cè)架構(gòu)的基礎(chǔ)上,采用了近些年CNN領(lǐng)域中最優(yōu)秀的優(yōu)化策略,從數(shù)據(jù)處理、主干網(wǎng)絡(luò)、網(wǎng)絡(luò)訓(xùn)練、激活函數(shù)、損失函數(shù)等各個(gè)方面都進(jìn)行了不同程度的優(yōu)化。時(shí)至今日,已經(jīng)有很多精度比較高的目標(biāo)檢測(cè)算法提出,包括最近視覺(jué)領(lǐng)域的transformer研究也一直在提高目標(biāo)檢測(cè)算法的精度。總結(jié)來(lái)看,表示的選擇會(huì)對(duì)機(jī)器學(xué)習(xí)算法的性能產(chǎn)生巨大的影響,監(jiān)督學(xué)習(xí)訓(xùn)練的前饋網(wǎng)絡(luò)可視為表示學(xué)習(xí)的一種形式。依此來(lái)看傳統(tǒng)的算法如Blob分析和模板匹配都是手工設(shè)計(jì)其特征表示,而神經(jīng)網(wǎng)絡(luò)則是通過(guò)算法自動(dòng)學(xué)習(xí)目標(biāo)的合適特征表示,相比手工特征設(shè)計(jì)來(lái)說(shuō)其更高效快捷,也無(wú)需太多的專(zhuān)業(yè)的特征設(shè)計(jì)知識(shí),因此其能夠識(shí)別不同場(chǎng)景中形狀、大小、紋理等不一的目標(biāo),隨著數(shù)據(jù)集的增大,檢測(cè)的精度也會(huì)進(jìn)一步提高。本文來(lái)源:賽那德科技,深度學(xué)習(xí)愛(ài)好者
-
機(jī)器視覺(jué)
+關(guān)注
關(guān)注
161文章
4320瀏覽量
119995 -
計(jì)算機(jī)視覺(jué)
+關(guān)注
關(guān)注
8文章
1694瀏覽量
45901 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5463瀏覽量
120890
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論