The Street View House Numbers (SVHN) Dataset是街景字符的數據集。該數據集用於modern-day map making。街景字符轉錄是字符序列識別問題。針對圖片序列識別問題傳統思路是定位、分割、識別,現在可以採用定長字符分類識別、CRNN不定長字符識別等方法。
問題描述:
- 零基礎入門CV賽事- 街景字符編碼識別要求選手識別圖片中所有的字符,爲了降低比賽難度,官方提供了訓練集、驗證集和測試集中所有字符的位置框。
- 訓練集數據包括3W張照片,驗證集數據包括1W張照片,每張照片包括顏色圖像和對應的編碼類別和具體位置
- 測試集A包括4W張照片,測試集B包括4W張照片
- JSON標註中給出了訓練數據每張圖片對應的編碼標籤,和具體的字符框的位置(訓練集、測試集和驗證集都給出字符位置)。
- 另,圖片中不僅包含字符序列,還有門框等干擾信息,爲了提高準確率可根據JSON標註提供的數字框位置裁剪圖片,如:
→ - 另,由於街景字符對應門牌編號,字符串序列的任意錯誤直接導致地圖導航錯誤,因此街景字符識別以整體識別準確率爲評價指標,整體準確率越高則模型性能越佳。
解決方案:
定長字符識別之多分類解決方案
Google2014年的論文《Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks》提出了基於深度卷積神經網絡的定長字符分類識別方法。
圖片中的字符串序列長度不定但不超過5個字符,可以將賽題抽象爲一個定長字符識別問題,待識別字符序列爲LXXXXX,其中
- 每個X的取值範圍爲[0,1,2,3,4,5,6,7,8,9,空字符]
- L代表字符串非空字符長度,取值範圍[0,1,2,3,4,5,’>5’]
定長字符識別的一種解決方案是直接對編碼圖片進行多分類操作(Multi-CNN): - 模型的輸入是的圖片,經過一系列的CNN層進行特徵提取,變成了一個含有4096個特徵的向量H
- 根據這4096個特徵,分別經過6個Softmax層,分別對各個字符串進行分類(分別對5個X字符進行11個類別的分類以及1個L字符進行6個類別的分類。)
- 將6個分類loss求和訓練即可。
這種方法思路簡單,模型僅包含卷積層和全連接層,模型收斂快;但這種思路是將每個字符單獨進行分類的,所以沒有考慮到字符與字符之間的關係【這個主要存在於相關聯的words字符識別中,數字間不知道有啥關聯,難道第一個字符串代表長度,與後面位數的字符串存在關聯?】,在精度上有一些欠缺。
不定長字符識別解決方案
CRNN+CTC字符識別模型可以解決不定長的字符識別問題。CRNN模型包括去除全連接層的CNN提取輸入圖像的Convolutional feature maps,深層雙向LSTM網絡繼續提取序列特徵,最後將RNN輸出做softmax後,爲字符輸出。後面CTC的改進看不懂【CRNN+CTC更看不懂…】
檢測再識別解決方案
此種思路需要構建字符檢測模型,再對字符進行識別。物體檢測模型參考SSD或者YOLO、Faster RCNN來完成。