0
| 本文作者: 張夢華 | 2020-04-05 10:43 |
雷鋒網按:本文為矩視智能創始人弭寶瞳投稿。矩視智能成立于 2017 年 10 月,專注于機器視覺,主要通過 SaaS 云平臺幫助提升工廠機器視覺開發、升級效率。弭寶瞳為中國人民大學計算機博士,曾在奇虎 360 任產品經理、研發工程師。
一、背景知識
目標定位是計算機視覺的重要應用場景之一。在工業生產、航空航海、農產品包裝等眾多領域內均已得到廣泛應用。在工業生產中,通過目標定位可以實現精準地完成自動抓取、自動上料等操作;在航空航海中,利用目標定位可以為海上打撈等工作提供可靠的位置服務;在交通運輸中,借助目標定位可以準確獲取車輛的位置信息。
由于上述領域相關的圖片信息都具有十分復雜的背景,對待識別目標干擾性強,且通常存在目標重疊、相似度高、部分遮擋等問題,進行目標定位具有相當大的難度。

二、傳統算法

傳統的目標定位算法通常使用滑動窗的方法,主要可分為以下三個步驟:
(1) 候選框:利用不同尺寸的滑動窗,在圖片中標記一塊區域作為候選區;
(2) 特征提取:針對輸入圖片的候選區域,提取視覺特征(例如人臉檢測常用的Harr特征、行人檢測和普通目標檢測常用的HOG特征等);
(3) 分類器識別:利用分類器進行目標和背景的判定,比如常用的SVM模型等。
上述傳統算法在一些特定的應用方面已經取得了不錯的成績,但仍有不少缺點。首先,其需要手動提取圖像特征,提取方法需要不斷嘗試比較才能得到好的特征;其次,提取的特征與模型性能的優劣直接相關,導致模型針對性強,不能靈活應用于其他情景;此外,有些算法中還涉及到復雜的邊緣檢測過程,包括閾值分割、分水嶺算法等。繁雜的處理過程導致模型檢測效率較低,無法滿足在工業生產中的廣泛應用。
三、深度學習
在2012年的ImageNet競賽中,AlexNet神經網絡一舉成名,也使CNN成為了計算機視覺研究的中心,同時再一次掀起了深度學習的研究熱潮。
3.1R-CNN[1]
R-CNN是先進的視覺對象檢測系統,它將自下而上的候選區域提取與卷積神經網絡的豐富功能結合在一起。R-CNN在不使用上下文記錄或要素類型集成的情況下實現了檢測精度的大幅提升。

R-CNN算法的具體實現方法如下:
輸入圖片,基于區域候選方法(如selective search方法)生成約2000個候選區域;
對每個候選區域進行Resize,固定大小后送入CNN模型中并得到特征向量;
將特征向量送入一個多類別的分類器中,判斷候選區域中所含物體屬于每個類別的概率大小;
在R-CNN最后訓練一個邊界框回歸模型,以提升目標定位的準確性。
本方法使用CNN網絡自動提取特征,避免了手動提取特征的復雜操作,提升了工作效率。但由于每個候選區域都需要送入CNN模型計算特征向量,會耗費一定的時間。
3.2FasterR-CNN[2]
Faster R-CNN是目標檢測領域最經典的算法之一。它主要由用于生成候選區域框的深度全卷積網絡和Fast R-CNN 檢測模型兩部分構成。

Faster R-CNN的網絡結構如上圖所示,由圖中可以看出其由四部分組成:
Conv layers:對輸入的整張圖片,提取其特征圖;
Region Proposal Networks:用于推薦候選區域(通過softmax判斷anchors屬于前景還是后景,并借助box regression修正anchors,輸出多個候選區域);
ROI Pooling:將不同大小的輸入轉換為固定長度的輸出,送入后續的全連接層判定目標類別;
Classification:輸出候選區域所屬的類別及其精確的位置。
RPN層是Faster R-CNN網絡最大的亮點,使用RPN代替啟發式候選區域的方法,極大的加快了訓練的速度和精度。
3.3 Yolov3[3,4]
前面介紹的兩種算法均為Two-stage,而Yolo屬于One-stage,它不需要提取候選區域,可以直接產生物體的類別概率和位置坐標值,這里將針對目前更受歡迎的Yolo v3展開介紹。

Yolo v3的具體實現可以分為三步,分別為:
多尺度預測:借助殘差網絡結構形成了更深的網絡層次,可以在三種不同的尺度上進行檢測;
基礎網絡:使用Darknet的變體Darknet-53,在Imagenet上訓練了53層網絡,并在檢測任務時再次堆疊53層,形成了106層完全卷積的底層架構;
分類器:使用多個logistic分類器,以進行多標簽對象的分類。
作為Yolo算法多次優化后的產物,Yolo v3是當前目標檢測最優的算法之一,其具有結構清晰,實時性好,可以通過改變模型結構的大小平衡速度與精度等優點。此外,Yolo v3還提升了小尺寸物體的檢測效果,解決了前兩個版本存在的問題。
3.4 SSD[5]
SSD算法(全稱Single Shot MultiBox Detector)同Yolo一樣屬于One-stage,且整體穩定性比Yolo好很多,其網絡結構如下圖所示。

SSD的基本實現流程較Yolo復雜,可概括如下:
輸入圖片,使用卷積神經網絡CNN提取特征,并生成特征圖;
抽取其中6層的特征圖,并在特征圖的每個點上生成default box;
將所得的default box全部集合起來,并輸入極大值抑制NMS中,篩選并輸出最后的default box。
同樣作為One-stage方法,SSD采用CNN直接檢測的方法替代Yolo在全連接層之后做檢測的方法提升了訓練速度。此外,SSD提取不同尺寸的特征圖,分別用來檢測大小不同的物體;還使用不同尺度和長寬比的Anchors提升了定位準確度,實現了在高速運行的同時保持高精度的重大突破。
四、總結
本文參考前沿文獻,總結了部分目前應用較為廣泛的部分目標定位算法框架及具體思路。總的來說,目標定位檢測可分為Two-stage(產生候選區+確定位置)和One-stage(直接產生物體的位置坐標值)兩大類,均可以實現快速準確且魯棒性好的目標定位,且可以靈活的應用于建筑業、航天工程以及工業生產等眾多行業。
參考文獻:
[1] Girshick R, Donahue J, Darrell T, et al. Region-based convolutional networks for accurate object detection and segmentation[J]. IEEE transactions on pattern analysis and machine intelligence, 2015.
[2] Ren S, He K, Girshick R, et al. Faster r-cnn: Towards real-time object detection with region proposal networks[C]//Advances in neural information processing systems. 2015.
[3] Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
[4] https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b.
[5] Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016.
雷鋒網,雷鋒網
雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知。