Task1 賽題理解

2021-10-06 08:48:21 字數 2593 閱讀 8817

賽題是cv入門級賽題,通過街景字元識別來熟悉cv建模思路和競賽流程。

目標為識別街景中的字元。

資料集樣本展示如下:

評價指標如下:

主要考慮兩種思路:

傳統cv思路:先將影象二值化處理,然後做傾斜校正,根據投影做字元切割,根據0-9的字元的特徵點與標準字元匹配來進行識別

深度學習思路:本題本質上是分類問題,需要對的字元進行識別。但是影象給定的資料及中不同影象中包含的字元數量不等。因此賽題難點在於對不定長字元進行識別,這區別於傳統cv方法。

資料讀取方法:

import matplotlib.pyplot as plt

import json

import numpy as np

import cv2

# 讀取json檔案---》json包讀取

train_json = json.load(

open

('c:/users/administrator/downloads/cvdataset/train.json'))

# 資料標註處理

defparse_json

(d):

arr = np.array(

[ d[

'top'

], d[

'height'

], d[

'left'

], d[

'width'

], d[

'label']]

) arr = arr.astype(

int)

# 強制轉換型別為int

return arr

img = cv2.imread(

'c:/users/administrator/downloads/cvdataset/test/000000.png'

) arr = parse_json(train_json[

'000000.png'])

plt.figure(figsize=(10

,10))

# 建立畫布

# 顯示原圖的子圖,subplot表示將位置劃分為1*4的子圖,該子圖佔第乙個位置;arr.shape[1] = 1表示圖中有乙個數字

plt.subplot(

1, arr.shape[1]

+1,1

) plt.imshow(img)

# 展示原圖,imshow的引數就是img矩陣

plt.xticks(

); plt.yticks(

)# 不顯示座標

for idx in

range

(arr.shape[1]

): plt.subplot(

1, arr.shape[1]

+1, idx+2)

# 為中的數字建立畫布子圖

# 通過arr中標註好的數字的位置,將img切片並展示為形式。相當於是img[top:top+height, left:left+width]

plt.imshow(img[arr[

0, idx]

:arr[

0, idx]

+arr[

1, idx]

,arr[

2, idx]

:arr[

2, idx]

+arr[

3, idx]])

plt.title(arr[

4, idx]

) plt.xticks(

); plt.yticks(

)

datawhale提供解題思路:

簡單入門思路:定長字元識別

定長字元識別就是google那篇文章的思路。將賽題抽象為乙個定長字元識別問題,在賽題資料集中大部分影象中字元個數為2-4個,最多的字元 個數為6個。

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

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

這個入門思路比google的**更簡化了一點,去掉了**數字個數的輸出,但這個是baseline,目的是給選手更多的發揮空間。

專業字元識別思路:不定長字元識別

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

crnn的結構是cnn-rnn-ctc,cnn提取特徵,rnn**出不太好的序列,ctc把不太準確的序列翻譯成正確的詞。詳細可以看**和大佬們的部落格。

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

這種思路就要用到目標檢測了,faster r-cnn、yolo等方法。

為了得到更高精度的識別率, 必須使用更好的方法。

Task1 賽題理解

鏈結 賽題資料由以下幾個部分構成 訓練集20w條樣本,測試集a包括5w條樣本,測試集b包括5w條樣本。為了預防選手人工標註測試集的情況,我們將比賽資料的文字按照字元級別進行了匿名處理。在資料集中標籤的對應的關係如下 評價標準為類別f1 score的均值,選手提交結果與實際測試集的類別進行對比,結果越...

Task1 賽題理解

1.賽題資料import pandas as pd import numpy as nptrain pd.read csv train.csv testa pd.read csv testa.csv print train data shape train.shape print testa dat...

task1 賽題理解

task1 賽題理解 本次組隊學習的任務是典型的貸款違約問題,即通過所給的關與貸款者的各項字段特徵去判斷該客戶是否是潛在的違約客戶,這類題在各類風控問題中常常出現,因為不同銀行或機構所掌握的客戶資訊不同,每個特徵也不同,所以如何利用字段特徵,成為了是否能拿高分的關鍵因素 先來看一下題目簡介 賽題以 ...