黎蘊玉,丁小波,蔡茂貞,鐘地秀,彭 琨
(中移互聯網有限公司云產品事業部,廣州 510000)
由于低門檻和輕裝備的特點,馬拉松已成為各城市和企業樂于舉辦的運動賽事。全球的馬拉松賽事數量持續增長,統計顯示2019年全國共舉辦1828場次規模賽事,覆蓋了全國31個省區市,參加人次達712萬。對于馬拉松賽事舉辦方而言,將賽事期間為運動員拍攝的海量照片進行云端的精準分類、推送和管理是一項具有挑戰性的賽事服務工作。相比于效率低、耗時長和成本高的傳統人工分類方式,基于運動員號牌智能識別成了實現云端海量馬拉松賽事圖片精確分類的重要方法。馬拉松運動員號牌字符主要由若干位大小寫字母和數字任意組合而成,通過貼在運動員衣服上進行區分,不同場次的號牌字符字體、顏色和背景各不相同。由于馬拉松號牌圖片具有格式多樣、光照多變和扭曲變形等特點,設計一種魯棒性強、高效的基于號牌識別的云端圖片分類方案具有一定的難度。
近年來,研究者進行了大量運動員號牌識別的工作,并廣泛應用在運動員圖片分類的任務上。文獻[2]利用人臉檢測預估號牌位置,再使用SWT精細定位分割號碼,最后進行TesseractOCR文字識別。文獻[3]則采用SVM人體檢測模型、HOG文字檢測和TesseractOCR識別模型的多模型融合方法。文獻[4]首先利用可變形部件模型進行人體檢測,再使用圖像處理技術進行號牌檢測和分割,最后輸入三層BP神經網絡得到單字符的識別結果。文獻[5]利用遷移學習策略實現較高精度的號牌識別。文獻[6]將YOLOv3人體檢測模型、CTPN文字檢測模型和CRNN文字識別模型進行串聯,經樹過濾后實現號碼牌識別。文獻[7]則基于YOLOv4人體檢測結果進行字符級CRAFT文字檢測和基于注意力機制的號碼識別。
基于馬拉松號牌的特殊性,現有號牌識別方法大體采用圖1所示的算法流程。通用的CTPN、EAST等文字檢測技術主要針對自然場景設計,會識別圖片中的所有文字內容,因此通過人體/人臉檢測和文字檢測相結合的方法先檢測出人體,過濾冗余信息,再基于人體檢測結果進行號牌檢測,該流程雖能有效識別出號牌,但也造成模型數量多、處理復雜度高和運行時間長的問題。

圖1 常見的號牌識別流程
綜上所述,本文主要提出一種基于目標檢測的兩階段號牌識別云端圖片分類系統,去除圖1中的人體/人臉檢測和文字分割兩個模塊,將號牌直接當成目標進行檢測,有效減少冗余信息,兩階段的號牌檢測識別模型在保證識別精度的情況下有效提升推理速度,實現馬拉松圖像的精準分類和管理。
本文提出了一種基于兩階段號牌識別馬拉松圖片分類方法,首先將經過預處理的圖片通過RetinaNet模型進行號牌檢測,將裁剪的號牌檢測區域輸入號牌識別模型進行文字識別。本方法的具體流程如圖2所示,包含舉辦方終端和云端服務器兩部分,具體步驟為:①舉辦方終端批量上傳馬拉松賽事圖片和賽事的所有號牌值至云端服務器;②在云端服務器對圖片進行去重、過濾模糊無效圖、獲取圖片的屬性信息和角度矯正等預處理操作;③將預處理的圖片輸入基于RetinaNet的號牌檢測模型定位號牌區域,裁剪出號牌區域作為號牌識別模型的輸入,獲得識別的號牌值;④將識別的號牌結果進行BK樹過濾、號牌聚類等后處理,實現馬拉松圖片智能分類。

圖2 基于號牌識別的馬拉松云端圖像分類圖
現有的號牌檢測模型主要使用人體檢測和文字檢測的多模型融合或直接使用文字檢測模型,前者雖然能提升號牌檢測準確率,但處理速度慢、計算復雜度高;而后者則會形成大量冗余文字信息,影響檢測精度?;谝陨戏治?,本文提出一種基于RetinaNet的號牌檢測網絡(如圖3所示),主干網絡為ResNet50,利用特征金字塔進行多尺度特征提取,每個特征層對接2個分支:框分支和類別分支,分別預測號牌框4點矩形坐標、是否為號牌;每個特征層對應3個錨點以提取不同尺度目標,類別分支和方向分支均使用Focal損失函數緩解類別不均衡問題。該模型僅針對號牌標注數據進行訓練,能有效檢測出號牌區域,避免冗余文字信息的產生。

圖3 RetinaNet號牌檢測網絡
馬拉松的號牌文字序列主要由隨機的字母和數字組成,并無明顯的上下文結構信息,而常用的循環神經網絡和注意力機制的文字識別網絡主要針對上下文序列信息進行識別。此外,卷積神經網絡結構每一步計算都依賴于前一步的計算和輸出結果,存在模型參數多和推理耗時的問題。
為加快推理速度和提高號牌識別準確率,本文的號牌識別模型采用DenceNe(tdense convolutional network)作為主干網絡,CTC(connectionist temporal classification)作為損失函數實現非定長序列的端到端號牌識別,具體如圖4所示。DenceNet網絡主要由卷積神經網絡、Dense模塊和Transition層組成,通過相互連接所有層的密集機制減輕梯度消失和加強特征傳遞及重用,其中Dense模塊是指第層連接前面所有層的特征作為輸入,獲得特征x=([,,…,x]);Transition層則是批標準化、卷積和池化層的集合。最后通過CTC損失函數,利用前向概率求解,直接預測出號牌序列值。

圖4 DenceNet-CTC號牌識別模型
(1)Racing Bib Number Recognition(RBNR)。該數據集采集了自然場景下三個不同場次的含馬拉松號牌的圖片,217張圖片中含290個號牌,號牌均由3~6位純數字構成。
(2)趣味運動會數據集(FUNNR)。該部分為自行采集的多個場次趣味馬拉松運動會的號牌圖片集,號牌由大寫字母、部分特殊字符和數字組成,共有4653張圖片和9118個號牌,部分為遮擋號牌。
(3)測試集(TEST)。該測試集為隨機采集的馬拉松號牌圖片126張,共有140個號牌,用于整體識別性能測試,其中清晰號牌圖片含106張,有遮擋的圖片20張。
實驗基于Keras實現并使用英偉達GTX 1080TI顯卡進行訓練,對RBNR和FUNNR兩個數據集按9∶1劃分訓練集和測試集,用于模型的訓練和測試,并采用平移、隨機裁剪、加噪聲和生成樣本等多種數據增強方式提升樣本的豐富性。
該部分進行了號牌檢測的RetinaNet和EAST兩個算法對比實驗,如表1所示,在RBNR和FUNNR兩個測試集上,RetinaNet的檢測準確率均表現良好,表明對比EAST算法,本方法能有效減少誤檢測情況。

表1 號牌檢測算法對比
為了證明本文提出的號牌識別算法的有效性,我們將DenseNet-CTC和TesseractOCR進行實驗對比。如表2所示,本文提出的號牌識別算法在兩個數據集上的編輯距離和準確率指標均高于TesseractOCR。其中準確率是指字符均正確識別的號牌數占總號牌數的比例。

表2 號牌識別算法對比
針對FUNNR數據集訓練的模型進行測試集(TEST)的整體識別性能測試,具體的識別結果如圖5所示,對于單號牌圖片圖5(a),本方法能正確檢測和識別出號牌內容,而對于有遮擋的多號牌圖片圖5(b),本文方法也表現出良好的識別效果,證明本方法的有效性和良好的泛化性。

圖5 識別結果圖
在本次的測試中共檢測出號牌122個,其中正確識別120個,錯誤識別2個,漏識別20個,準確率為98.26%,召回率為85.71%。其中CPU上平均單張圖片的處理時間為0.748秒,對比文獻[3]中2.19秒的單幅圖片處理時間,本方法的處理速度提升了3倍。
針對日益增長的云端馬拉松圖片,本文設計了一種基于目標檢測的兩階段號牌識別策略進行馬拉松圖片分類,本方法分別利用RetinaNet和DenseNet-CTC進行號牌檢測和識別,在保證識別準確率的同時有效提升運行速度,對局部有遮擋的多號牌圖片仍能有效識別。