
導讀
?本文為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模型進行文本識別,最后后處理得到讀數結果。

選型理由
Yolov5s網絡小,速度快。雖然AP精度低,但檢測的是儀表這種大目標是完全夠用的。我們采用極市官方提供的yolov5s訓練套件進行訓練,上手簡單,且儀表識別準確率達到了99.7%,效果滿足實際需求。
選型理由

YOLOv8是YOLOv5團隊ultralytics在今年開源的SOTA模型,引入了新的改進,進一步提升了性能和靈活性。YOLOv8 設計快速、準確且易于使用,使其成為目標檢測、實例分割、圖像分類和姿態估計任務的絕佳選擇。
yolo-pose是估計人體姿態的一個模型,它將人體姿態分為17個關鍵點。
為了盡可能地提高關鍵點檢測精度,我們使用了規模最大的YOLOv8x-pose模型。
指針關鍵點數據集制作

我們將指針的兩個點作為其關鍵點,由這兩個點組成的矩形框作為目標檢測框,如果兩個點組成的矩形框太窄,進行適當延伸。
刻度關鍵點數據集制作

由于每個儀表的數值框個數不同,我們將每個數值框視為同一個類別進行目標檢測,每個數值框攜帶對應的刻度點作為其關鍵點。
我們采用從官網下載的預訓練模型在儀表數據集上微調,將關鍵點權重從12提高到20。
選型理由
由于儀表尺寸大小不一,我們選用DBNetpp模型,它在DBNet模型基礎上引入了多級特征聚合模塊(Adaptive Scale Fusion, ASF),ASF模塊由階段注意力和空間注意力子模塊構成,加強了不同尺度特征的融合,提高了處理不同尺寸圖像的魯棒性。


選型理由
SATRN模型利用self-attention機制對字符的2D空間關系進行建模,并且在FFN模塊中引入卷積層,增強了模型對全局和局部特征的捕捉能力。
SATRN模型對于大曲率彎曲、大角度旋轉文本依然具備足夠的識別能力,在多個不規則文本數據集上達到SOTA。
將上述模型的輸出采用opencv進行后處理得到讀數結果,具體流程如下:


根據刻度點和數值框距離指針原點的距離區分內徑和外徑,分別進行后續處理。

起點到終點的角度差值是相鄰兩點間角度差值中最大的,我們只需要找到這個最大的角度差值,就可以確定起始點。
先將刻度點坐標轉成以指針原點為中心的極坐標,根據角度從小到大排序?[16,0,4,8,12]
然后計算相鄰刻度點兩兩間的角度差值,選擇最大差值的下一個刻度點作為起點,調整順序后?[0,4,8,12,16]
上圖中由于指針遮擋,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識別模型,提升效率。
引用
1.https://github.com/ultralytics/yolov5
2. https://github.com/ultralytics/ultralytics
3. Liao M, Zou Z, Wan Z, et al. Real-time scene text detection with differentiable binarization and adaptive scale fusion[J].
IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022, 45(1): 919-931.
4. Lee J, Park S, Baek J, et al. On recognizing texts of arbitrary shapes with 2D self-attention[C]
Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. 2020: 546-547.

申明:感謝原創作者的辛勤付出。本號轉載的文章均會在文中注明,若遇到版權問題請聯系我們處理。
?
----與智者為伍?為創新賦能----

聯系郵箱:uestcwxd@126.com
QQ:493826566