基於SSD的圖片文字檢測及快速方法

基於SSD的圖片文字檢測及快速方法

演算法概述

SSD演算法是一種直接預測bounding box的座標和類別的object detection演算法,沒有生成proposal的過程。針對不同大小的物體檢測,傳統的做法是將影象轉換成不同的大小,然後分別處理,最後將結果綜合起來,而ssd利用不同卷積層的feature map進行綜合也能達到同樣的效果。而相比較於其他檢測演算法, R-CNN系列的檢測速度慢,YOLO的mAP效能差,而SSD消除了中間的 bounding boxes、pixel or feature resampling 的過程,同時,在 feature map 上使用小的卷積核,去 predict 一系列 bounding boxes 的 box offsets,這樣就在提升速度的同時保證了精度,適合用在嵌入式上。


演算法詳解

SSD演算法在訓練的時候只需要一張輸入影象及其每個object的ground truth boxes。基本的網路結構是基於VGG16,在ImageNet資料集上預訓練完以後用兩個新的卷積層代替fc6和fc7,另外對pool5也做了一點小改動,還增加了4個卷積層構成官方的網路。
摘自論文

在訓練階段,演算法在一開始會先將default box(是指在feature map的每個小格(cell)上都有一系列不同大小,不同橫縱比的box)和ground truth box進行匹配,比如藍色的兩個虛線框和貓的ground truth box匹配上了,一個紅色的虛線框和狗的ground truth box匹配上了。所以一個ground truth可能對應多個default box。在預測階段,直接預測每個default box的偏移以及對每個類別相應的得分,最後通過NMS得到最終的結果。並且default box在不同的feature層有不同的scale,在同一個feature層又有不同的aspect ratio,因此ssd基本上可以覆蓋輸入影象中的各種形狀和大小的object。

專案實現

一是由於檢測目標相對較小(比如車牌),並且ssd在低層的feature map,感受野比較小,高層的感受野比較大,所以我們選擇將conv6-2之後的層去掉,這樣既不影響精度也滿足頻寬要求;二是ssd的default box擁有不同尺度,我們修改了其尺度變換使其符合車牌實際尺度;三是類別,ssd官方類別有20類,而我們的車型專案大概有6類,車牌只有一類,所以我們對類別進行了刪減.

流程圖

Created with Raphaël 2.1.0資料輸入:data層特徵提取:conv1_1,conv1_2,conv2_2,conv3_2,conv4_3,conv5_2,fc6,fc7,conv6_2及對應Relu和Pooling層迴歸:conv4_3_norm_mbox_loc,fc7_mbox_loc,conv6_2_mbox_loc 分類:conv4_3_norm _mbox_conf,fc7_mbox_conf,conv6_2_mbox_conf數學運算通道合併:Concat層損失函式:Softmax層(同時決定default box)輸出:DetectionOutput