深度學習中的檢測網絡:SSD/Faster R-CNN/YOLO

何為檢測?

深度學習中的檢測任務(Detection)是指檢測出圖片中的物體位置,一般需要進行畫框。比如下圖中把人、羊,還有狗都框出來了,具體來說,網絡需要輸出框的坐標。

檢測網絡有哪些?

常用的檢測可以大致可以分為兩類:two stage和one stage. Two stage是說在檢測網絡分兩步,第一步是框出物體,第二步是確定這個物體的分類。One stage就是根據提取的特徵,直接使用回歸網絡得出其分類和檢測框。其中,Faster R-CNN屬於two stage,SSD和YOLO屬於one stage.

One stage的好處是快,Two stage的好處是準確,在得到檢測框後,再去分類這個任務要比直接回歸網絡得到分類好容易很多。

下圖是Faster RCNN的結構:

主要分為四個步驟:

– 卷積層。原始圖片先經過conv-relu-pooling的多層卷積神經網絡,提取出特徵圖(feature map)。

– RPN層,region proposal networks。RPN層用於生成候選框,並利用softmax判斷候選框是前景還是背景,從中選取前景候選框(因為物體一般在前景中),並回歸調整候選框的位置,獲得框內的物體的feature map

– ROI層,它將大小尺寸不同物體的feature map池化成相同的大小,然後送入後續的全連接層進行物體分類

– 分類層。利用ROI層輸出的特徵圖進行分類,同時再次對檢測框bounding box進行回歸從而得到更精確的形狀和位置。

SSD和YOLO可以放在一起對比,因為都是屬於one stage的網絡,在獲取feature map後,檢測和分類一起在一起進行。SSD和YOLO的區別在於SSD能夠進行多尺度特徵提取,可以看到上面的SSD結構有6個箭頭指向Detections,每一個箭頭代表一個尺度的feature map,卷積層越往後越能看到全局的特徵。YOLO則沒有這方面的設計,只有一個特徵輸出到Detections網絡中。

因為SSD網絡的這種設計,檢測精度比YOLO高,同時速度比Faster RCNN快,因此也是當前應用最廣泛的檢測網絡之一。另外,在SSD原始論文中用到的是VGG骨架來提取特徵,現在很多更好的特徵提取網絡,例如ResNet,mobilenet也在大量應用,進一步提高精度或者加快速度。

總結

檢測網絡有很多,各有優劣,綜合來說,SSD是個折中的選擇,如果時間有限,建議試試SSD網絡。