學習筆記 零基礎入門CV之街道字元識別 賽題理解

2021-10-06 07:48:17 字數 1680 閱讀 2122

·學習主題:零基礎入門cv之街道字元識別。

·學習目標:通過賽題引導競賽選手入門計算機視覺,提高對資料建模。

2.1 賽題目標

本次賽題的目標是識別出類似下圖中的字元,例如下圖中的數字「68」。

圖12.2 賽題資料圖2 訓練資料集示例

訓練集資料報括3w張**,驗證集資料報括1w張**,每張**包括顏色影象和對應的編碼類別和具體位置。

這些影象中字元的個數不是固定的,原始資料中並不知道字元在影象中的具體位置,為了降低難度,本次賽事已經對資料集進行了處理,給出了字元編碼標籤及其在影象中所處的位置,這些資訊以json格式記錄。

json中欄位包括:

field

description

top左上角座標x

height

字元高度

left

左上角座標y

width

字元寬度

label

字元編碼

各字元的座標標識如下圖所示:

圖3 json欄位圖例

例如,圖1中,字元「68」的資訊為:

train_json = json.load(

open

('mchar_train.json'))

train_json[

'000134.png'

]

2.3 評測指標score= 測試集數量/編碼識別正確的數量

本題的本質是影象分類,難點在於需要確定字元的位置,且影象中字元的個數不固定。

參考datawhale提供的解題思路,主要有以下三種:

3.1 定長字元識別

可以將賽題抽象為乙個定長字元識別問題,在賽題資料集中大部分影象中字元個數為2-4個,最多的字元個數為6個。

因此可以對於所有的影象都抽象為6個字元的識別問題,字元23填充為23***x,字元241填充為241***。

圖4 定長字元識別方法

3.2 不定長字元識別

在字元識別研究中,有特定的方法來解決此種不定長的字元識別問題,比較典型的有crnn字元識別模型。在本次賽題中給定的影象資料都比較規整,可以視為乙個單詞或者乙個句子。

3.3 檢測再識別

在賽題資料中已經給出了訓練集、驗證集中所有中字元的位置,因此可以首先將字元的位置進行識別,利用物體檢測的思路完成。

這種方法需要先建立物體檢測模型識別字元,可參考的物體檢測模型有ssd,yolo,faster-rcnn等。

圖5 字元檢測

零基礎入門CV之街道字元識別(一)

我感覺比較費時間的是pytorch的安裝,由於在網上找不到乙個合適的教程,安裝pytorch花了很長時間,主要是網上的教程大多和我的情況不一樣。賽題理解 在這之前還沒有接觸過cv這一方向。所以第一眼看到賽題是一種很茫然的感覺。之後看了講解學到了乙個大概的思路。不過資料處理部分也是很重要的。這次的cv...

零基礎入門CV之街道字元識別(五)

模型整合其實就是整合學習。整合學習方法 在機器學習中的整合學習可以在一定程度上提高 精度,常見的整合學習方法有stacking bagging和boosting,同時這些整合學習方法與具體驗證集劃分聯絡緊密。由於深度學習模型一般需要較長的訓練週期,如果硬體裝置不允許建議選取留出法,如果需要追求精度可...

零基礎入門CV教程學習筆記1

在baseline中,教程中給出了對於不定長字元轉換為定長字元的識別問題,方法是通過cnn模型進行訓練與學習。主要分為四個步驟 資料的匯入 賽題測試集和訓練集 cnn模型的構建 通過訓練集對cnn模型進行訓練 匯入測試集,通過cnn模型,進行 在例程中的演算法也是通過上面幾步進行實現的。識別 上街道...