·學習主題:零基礎入門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模型,進行 在例程中的演算法也是通過上面幾步進行實現的。識別 上街道...