深度學習-什麼是one stage,什麼是two stage 物件偵測
在電腦視覺物件偵測中,一般作法都是先用特殊方法先選出物件,比如Selective Search,選出物件的過程稱為Region Proposal;然後針對選出的物件(Region Proposals)再進行物件辨識 (但因為選出的物件大小可能不一樣,所以物件辨識有可能只有分類,也可能包含特徵擷取加分類)。這種需要先找出Region Proposal然後再做辨識的做法通常就稱為two stage learning。
這類two stage的方法通常有一個問題是如果選出來的物件太多,假設一張圖選出一千個物件,後面的辨識就用重複做一千次(如下圖),假設辨識的部分用了一個很複雜的辨識系統,比如一個物件辨識要0.1秒,那一千個物件就要100秒了,除非你用一個很強的GPU平行運算,那還可能減低運算時間,但如果是手機這類型的算法幾乎沒辦法做到即時運算,因此才有one stage的方法。
One-stage Learning從名稱就很主觀,物件位置偵測和物件辨識一步到位,也就是一個神經網路能同時偵測物件位置也可以辨識物件,如同Google在2015年12月提出Single Shot Detector (SSD),Google在文章摘要第一句話就寫「We present a method for detecting objects in images using a single deep neural network.」,一個深度神經網路就可以做完所有的物件偵測。
這種方式通常速度很快,但整體辨識精度可能沒有two stage的方法來的好,但整體辨識率仍在可接受範圍內,因此One stage的方法是目前比較多人研發用在行動裝置上的方法。
Two stage 物件偵測的方法比較有名的方法為 Region-based convolutional neural network:
最早的R-CNN: Regions with CNN features
改良版 fast R-CNN
進化版 faster R-CNN
One stage 物件偵測的方法比較有名的方法為
-YOLO (You only look once)系列: YOLOv1, YOLOv2, YOLOv3, Tiny YOLO
-Single Shot Detector (SSD)
最後來看一下一些實作影片吧
YOLO作者的影片比較有趣,從Joseph的Resume背景是彩虹小馬就可以看得出他是很有趣的人
Video from Youtube (Karol Majek)
Faster RCNN:
YOLOv3 video
YOLO作者(Joseph Redmon)提供有趣的影片(YOLOv2)