# [論文筆記]License plate segmentation and recognition system using deep learning and OpenVINO 1. Introduction &emsp;&emsp;Automatic License Plate Recognition (ALPR) systems:是智慧交通領域的其中一個項目,主要是指自動從車輛上擷取車牌並利用光學字元辨識(Optical Character Recognition,OCR)獲得車牌資訊,但在現實中的狀況不會這麼理想,常會因天氣狀況、亮度或遮蔽的關係而受到影響,因此本論文的目標是以深度學習的方式快速且精確的執行車牌分割和辨識,並且減少計算量,使模型在邊緣裝置上的執行速度不會降低太多。 2. Related research &emsp;&emsp;常見的幾種物件偵測模型包括R‐CNN, Fast R‐CNN, Faster R‐CNN,但這些都是屬於two stage的物件偵測模型,它們雖然準確率高但非常的耗時,幾乎不可能部屬在邊緣裝置上。 &emsp;&emsp;在 Segmentation‐ and annotation‐free license plate recognition with deep localization and failure identification中,提出以6個卷積層和3個完全連接層組成的網路模型,經過訓練可對36個類別進行分類,最終達到99%準確率,但每個圖像掃描時間約為1.6s。 &emsp;&emsp;在 A next‐generation secure cloud‐based deep learning license plate recognition for smart cities中,以7個卷積層和softmax進行車牌辨識,最終達到94.46%準確率,但沒有提到具體的執行時間。 3. Methodology &emsp;&emsp;因為SSD屬於one-stage的物件偵測模型,並且它的速度比RCNN系列的模型都還來的快,因此本論文選用SSD進行車牌偵測和辨識,如圖一所示,SSD的網路架構前半部由VGG-16所組成,將原本的FC6和FC7改為卷積層,後續加入Conv8-Conv11產生不同尺度的特徵圖,並加入Conv4和Conv7產生的 38 x 38 及 19 x 19 特徵圖預測物件的default box,最後透過NMS刪去多餘的bunding box,留下目標的預測結果,但因為VGG-16所需的計算量相對的較大,如圖二所示,它的計算量大約達到32G-Ops,若想在邊緣裝置上執行,速度可能會大幅降低,所以必須想辦法對這部分進行改善。 ![](https://i.imgur.com/wqcSZ42.png) <center>圖一</center> <div class="text-center"> <img src="https://i.imgur.com/xTsKo5g.png" class="rounded" alt="..."> </div> <center>圖二</center> &emsp;&emsp;在MobileNet當中的depthwise separable convolutions(DSC)能有效降低卷積的計算量,如圖三所示,該方法分為Depthwise convolutions和Pointwise convolutions兩部分,前者是根據輸入層的channel建立i個 R x S x 1 的kernel,之後對該channel進行卷積運算,產生 F x F x i的輸出,後者是接續前者的輸出,建立o個 1 x 1 x i 的kernel進行卷積運算,得到 F x F x o 的輸出,上述參數i為input channel數,o是ouput channel數,R是kernel寬度,S是kernel高度,F是input圖片size。 ![](https://i.imgur.com/LA6hsFr.png) <center>圖三</center> &emsp;&emsp;DSC將原本的計算量從 R x S x i x o 降低到 R x S x i + i x o ,如圖四所示,當ouput的channel越多,DSC和一般卷積的差距就越大,在ouput的channel達到250時,DSC只需要15%一般卷積的計算量。 ![](https://i.imgur.com/IXuiT7k.png) <center>圖四</center> &emsp;&emsp;將DSC加入到SSD的網路當中後,整個車牌辨識的網路架構就如圖五所示,input大小為 224 x 224 的圖像,經過一個卷積和池化層後,加上DSC化VGG-16中的5個block,再加上三個卷積層,提取不同尺度的特徵圖,以此進行車牌分割和辨識。 ![](https://i.imgur.com/UUkdZxq.jpg) <center>圖五</center> 4. Experiment &emsp;&emsp;在論文中實驗使用Caltech Cars (Rear)資料集和UCSD-Stills資料集進行實驗,兩者分別包含126張和419張車牌圖像,再進行模型訓練前論文使用了以下6種方法進行資料擴充: * 模糊化 * 對YUV色彩空間中的Y通道進行直方圖等化 * 擷取HSV色彩空間中的V通道影像 * 轉為灰階影像 * 用大津法二值化 * 反向二值化 &emsp;&emsp;經過擴充後的資料集總影像數達到2845張,模型所使用的batch size為16,learning rate為0.04,直到355,000個iterations後降至0.0005,loss為L1 loss(MAE loss),dropout keep probability為0.8,總共進行了 562,000 個iterations。 為了部屬在邊緣裝置上,需要將整個模型優化,刪去只有助於訓練但對測試無幫助的部分,論文採用OpenVINO幫助精簡化模型,如下圖六,OpenVINO分為兩個部分model optimiser (MO)和 inference engine (IE),MO透過修剪網路、合併網路、bit刪減的方法將模型輕量化,建立兩個intermediate representation (IR) files ,model.xml以及model.bin,前者包含網路結構,後者包含權重和偏移量,後續IE便可以讀取 IR model 進行推論。 ![](https://i.imgur.com/rGrb5qs.png) <center>圖六</center> 5. Results and comparisons &emsp;&emsp;Table3及Table4分別是Caltech Cars和UCSD-Stills資料集在Intel Xeon CPU的Ubuntu 18.04 LTS電腦上測試的結果,在Caltech Cars資料集中約有15%的車牌背景顏色不屬於白色,因此在識別上的準確率就稍微不足,而在UCSD-Stills資料集中的車牌背景顏色則相當一致,準確率就提高至97.59%,透過Table5可以看到在CPU上使用OpenVINO後可以減少76%的執行時間。 ![](https://i.imgur.com/oQau8mm.png) ![](https://i.imgur.com/7Hq1MWM.jpg) ![](https://i.imgur.com/wGBV581.jpg) &emsp;&emsp;圖七為本論文方法與SSD+VGG以及SSD+ResNet50準確率與執行時間關係圖,可以看到在準確率接近100%的情況下,本論文的方法的執行速度約為SSD+ResNet50的33倍以上,圖八為個方法的參數量,可以看到本論文方法只要SSD+ResNet50的13%的參數量。 ![](https://i.imgur.com/Cwosfn0.png) <center>圖七</center> ![](https://i.imgur.com/FMsC3vD.png) <center>圖八</center> &emsp;&emsp;圖九為將模型部屬到Raspberry Pi 3和Intel NCS2的架構圖,首先將圖片輸入到Raspberry Pi 3後,透過Raspberry Pi 3對圖片進行前處理後,送入Intel NCS2神經計算棒執行模型,再藉由Raspberry Pi 3進行視覺化呈現。 ![](https://i.imgur.com/HWWR1jM.png) <center>圖九</center> 6. Conclusions &emsp;&emsp;為了在邊緣裝置上以深度學習的方式執行ALPR system,本論文提出一個使用DSC的SSD模型來保持準確度和減少參數量,並藉由OpenVINO精簡化模型使其可以部屬在Raspberry Pi 3和Intel NCS2上並以15FPS的速度執行,在Caltech Cars資料集上可以達到96.46%的準確度,在UCSD-Stills資料集上可以達到99.79%的準確度。 參考資料: 1. Yépez J. Castro‐Zunti R. Ko S.: ‘ Deep learning‐based embedded license plate localisation system’, IET Intell. Transp. Syst., 2019, 13, (10), pp. 1569– 1578 2. Liu W. Anguelov D. Erhan D. et al.: ‘ SSD: single shot MultiBox detector’, Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), Amsterdam, Netherlands, 2016, vol. 9905, pp. 21– 37 3. https://chih-sheng-huang821.medium.com/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-mobilenet-depthwise-separable-convolution-f1ed016b3467