導讀
本文為ECV2023大賽儀表盤讀數識別德國冠軍方案解讀,包含了對賽題的分析和模型選取構建的思考過程。
賽題任務
1、儀表識別
對于預測儀表框與真實儀表框,計算f1-score,IoU使用0.7,此部分成績記為score1
2、刻度點識別
對于預測關鍵點與真實關鍵點,計算RMSE,此部分成績記為score2
3、OCR識別
對于預測的數值框,計算f1-score,IoU使用0.5,此部分成績記為score3
4、讀數識別
計算每個儀表的讀數得分,并對所有儀表的得分求平均值,此部分成績記為 score4
將上述4點得到4項成績進行加權,最終得分:
加權的權重為配置參數,默認值為:
weight_1 = 0.1
weight_2 = 0.25
weight_3 = 0.25
weight_4 = 0.4
賽題分析
本次任務的儀表數據集存在以下難點:
1、儀表刻度存在遮擋、模糊等問題,影響OCR識別
2、儀表圖像存在旋轉、傾斜問題,影響讀數測量
算法設計
算法分為4個流程,首先用yolov5s模型從原圖中識別出儀,接著用yolov8x-pose模型檢測出儀表中的刻度線、指針的關鍵點,再用DBNetpp模型檢測出數值框并用SATRN模型進行文本識別,最后后處理得到讀數結果。
(1)基于YOLOv5s的儀表檢測
選型理由
Yolov5s網絡小,速度快。雖然AP精度低,但檢測的是儀表這種大目標是完全夠用的。我們采用極市官方提供的yolov5s訓練套件進行訓練,上手簡單,且儀表識別準確率達到了99.7%,效果滿足實際需求。
(2)基于YOLOv8x-pose的指針和刻度關鍵點檢測
選型理由
YOLOv8是YOLOv5團隊ultralytics在今年開源的SOTA模型,引入了新的改進,進一步提升了性能和靈活性。YOLOv8 設計快速、準確且易于使用,使其成為目標檢測、實例分割、圖像分類和姿態估計任務的絕佳選擇。
yolo-pose是估計人體姿態的一個模型,它將人體姿態分為17個關鍵點。
為了盡可能地提高關鍵點檢測精度,我們使用了規模最大的YOLOv8x-pose模型。
指針關鍵點數據集制作
我們將指針的兩個點作為其關鍵點,由這兩個點組成的矩形框作為目標檢測框,如果兩個點組成的矩形框太窄,進行適當延伸。
刻度關鍵點數據集制作
由于每個儀表的數值框個數不同,我們將每個數值框視為同一個類別進行目標檢測,每個數值框攜帶對應的刻度點作為其關鍵點。
我們采用從官網下載的預訓練模型在儀表數據集上微調,將關鍵點權重從12提高到20。
(3)基于DBNetpp的文本檢測
選型理由
由于儀表尺寸大小不一,我們選用DBNetpp模型,它在DBNet模型基礎上引入了多級特征聚合模塊(Adaptive Scale Fusion, ASF),ASF模塊由階段注意力和空間注意力子模塊構成,加強了不同尺度特征的融合,提高了處理不同尺寸圖像的魯棒性。
(4)基于SATRN模型的文本識別
選型理由
SATRN模型利用self-attention機制對字符的2D空間關系進行建模,并且在FFN模塊中引入卷積層,增強了模型對全局和局部特征的捕捉能力。
SATRN模型對于大曲率彎曲、大角度旋轉文本依然具備足夠的識別能力,在多個不規則文本數據集上達到SOTA。
(5)讀數識別
將上述模型的輸出采用opencv進行后處理得到讀數結果,具體流程如下:
區分內外徑
根據刻度點和數值框距離指針原點的距離區分內徑和外徑,分別進行后續處理。
確定刻度點的順序
起點到終點的角度差值是相鄰兩點間角度差值中最大的,我們只需要找到這個最大的角度差值,就可以確定起始點。
先將刻度點坐標轉成以指針原點為中心的極坐標,根據角度從小到大排序[16,0,4,8,12]
然后計算相鄰刻度點兩兩間的角度差值,選擇最大差值的下一個刻度點作為起點,調整順序后[0,4,8,12,16]
修正OCR識別結果
上圖中由于指針遮擋,1500識別成500,通過等差數列對其進行修正。
透視變換
步驟:
1、確定最后一個點的坐標:已知最后一個點在透視變換后的極坐標角度為45°,假設所有刻度點距離圓心距離為R,則最后一個點的坐標可以表示為(45°,R)可以根據該極坐標得出笛卡爾坐標系下的坐標。
2、確定其他三個點的坐標:這里一共有6個間隔平分整個270°量程,所以每個刻度夾角為270/6=45°,據此可以依次計算出其他三個點在變換后的坐標。
通過這種方式,可以確定四個刻度點在透視變換后圖像中的坐標,并用這些坐標來進行透視變換。
補充被指針遮擋的點
步驟:
1、首先,確定缺失點的前后點,以及它們與圓心的平均距離。這些信息將用于推算缺失點的極坐標。
2、根據前后點的角度和平均距離,計算出缺失點的極坐標。極坐標由極徑和極角組成,極徑表示點到圓心的距離,極角表示點在極坐標系中的角度。將缺失點的極坐標轉換為笛卡爾坐標。
3、如果進行了透視變換,需要將轉換后的坐標應用于透視矩陣,以獲得原圖中的坐標。
計算讀數
確定指針的前后刻度點位置,并記錄它們在極坐標系中的角度值。假設前刻度點角度為, 后刻度點角度為。指針角度為。
假設指針前刻度點的讀數為, 后刻度點讀數為, 指針讀數為*。
其中Δr=r2-r1, Δθ=
算法優化
存在問題
邊框遮擋導致的刻度數字無法識別,上述算法不能很好的處理。
改進方法
根據數據集分布,為內外徑各建立一個list,以外徑舉例:
outer_list=[ [32,50,100,150,200], [0,4,8,12,16], [0,2,4,6,8,10], [0,1,2,3,4,5,6], [0,0.2,0.4,0.6,0.8,1], [0,0.1,0.2,0.3,0.4,0.5,0.6], [0,2,4,6,8,10,12,14], [0,10,20,30,40,50,60], [0,1000,2000,3000,4000,5000,6000], [0,100,200,300,400,500,600,700,800,860] ]
將左圖中識別的外徑[0,100,200,300,400,500,600]與該outer_list進行匹配,得到最接近的[0,100,200,300,400,500,600,700,800,860]。即可對照模板將遺漏的刻度點補全。
總結
最終,我們方案的成績如下。
優點:
1、目標檢測算法和ocr識別算法均源自開源算法庫中SOTA模型,實現簡單高效,且具備豐富的工業部署落地支持。
2、沒有采用傳統直線檢測的方式檢測關鍵點,通過類似姿態估計的方式提高了關鍵點檢測精度。
3、提出了一種基于查表的魯棒儀表讀數方法,對于遮擋嚴重的情況也能較好地處理。
4、通過透視變換,將形變的儀表圖像修正,使得讀數更加準確。
可提升點:
1、將模型文件轉換為TensorRT格式,加速推理。
2、更改ocr識別模型,提升效率。
-
圖像
+關注
關注
2文章
1089瀏覽量
40575 -
模型
+關注
關注
1文章
3313瀏覽量
49233 -
數據集
+關注
關注
4文章
1209瀏覽量
24836
原文標題:總結
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論