學習記錄 街景字元識別 TASK 1 賽題理解

2021-10-06 08:17:14 字數 2814 閱讀 5353

本文內容將對街景字元識別賽題的理解做相應記錄,同時作為乙個cv初學者,我也想藉此練習一下撰寫部落格的能力,感謝批評指正。

本題以計算機視覺中字元識別為背景,要**街道字元編碼,採用svhn資料集做乙個簡單的字元識別問題。

賽題用的是比賽給定的svhn街道字元資料集,已進行匿名取樣。訓練集資料報括3w張**,驗證集資料報括1w張**,每張**包括顏色影象和對應的編碼類別和具體位置。測試集包括4w張。

field

description

top左上角座標x

height

字元高度

left

左上角座標y

width

字元寬度

label

字元編碼

字元的具體座標如下所示:

在比賽資料(訓練集、測試機和驗證集)中,同一張中可能包括乙個或多個字元,因此在比賽資料的json標註中,會有乙個或多個字元的邊框資訊。例如:

的json標註:

可以看到,原始中有兩個數字,因此在json標註中體現了兩個字元的邊框資訊。

score=編碼識別正確的數量/測試集數量

json中標籤的讀取方式如下:

import json

import cv2

import matplotlib.pyplot as plt

train_json = json.load(

open

('./input/train.json'))

# 資料標註處理

defparse_json

(d):

arr = np.array(

[ d[

'top'

], d[

'height'

], d[

'left'

], d[

'width'

], d[

'label']]

) arr = arr.astype(

int)

return arr

img = cv2.imread(

'./input/train/000000.png'

)arr = parse_json(train_json[

'000000.png'])

## 原圖讀取

plt.figure(figsize=(10

,10))

plt.subplot(

1, arr.shape[1]

+1,1

)plt.imshow(img)

plt.xticks(

); plt.yticks(

)## 資料標註區域影象

賽題的本質是分類問題,0-9十個字元為十個類別,但是問題在於資料集中的上不只是乙個字元,有的字元個數為2,有的字元個數為3,有的字元個數為4,因此我們應該考慮的是對這種不定長的字元進行識別。

對於剛要入門的初學者,可以考慮入門版本的定長字元識別

可以將賽題抽象為乙個定長字元識別問題;本賽題資料集中大部分影象中字元個數為2-4個,最多字元 個數為6個。因此可以將問題都抽象為6個字元的識別問題,字元23填充為23***x,字元231填充為231***。

經過填充之後,原始的賽題可以簡化了6個字元的分類問題。在每個字元的分類中會進行11個類別的分類,假如分類為填充字元,則表明該字元為空。

此外還有專業字元識別思路:不定長字元識別

字元識別研究中,有特定的方法來解決此種不定長的字元識別問題,典型的有crnn字元識別模型。

在本次賽題中給定的影象資料都比較規整,可以視為乙個單詞或者乙個句子。

3.專業分類思路:檢測再識別

這就屬於相對更高階一些的思路了,首先將字元的位置進行識別,利用物體檢測的思路完成。可以參考物體檢測模型ssd或者yolo來完成。

天池實戰 街景字元編碼識別 task1賽題理解

寫在前面的話 在寫這篇文章的時候,我其實已經把整個專案的流程都過完了,包括pytorch對於模型的訓練等等,所以這篇題目為賽題理解但實際也會說到後面的內容,不光是題目所說的賽題理解這麼簡單 總之,請你按整個專案的流程去走,去了解整個專案的背景 資料和目的,以及要求的環境等等,然後再針對目標去一步步的...

天池 街景字元識別 Task5 模型整合

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

街景字元識別 模型整合

3.後處理 整合學習方法可以提高 精度,常見的有stacking bagging和boosting。一般利用交叉驗證法提高精度,如下所示。使用10折交叉驗證法,得到10個cnn模型,可通過以下方法進行整合。平均 結果的概率值,然後解碼為具體字元。對 的字元進行投票,得到最終字元。dropout在訓練...