本次新人賽是datawhale與天池聯合發起的零基礎入門系列賽事第二場 —— ***零基礎入門cv賽事之街景字元識別***
賽題以計算機視覺中字元識別為背景,要求**真實場景下的字元識別,這是乙個典型的字元識別問題
賽題**自google街景影象中的門牌號資料集(the street view house numbers dataset, svhn),並根據一定方式取樣得到比賽資料集
blog僅記錄**部分
import json # 方便對json格式資料的處理
import numpy as np
import cv2 # opencv是乙個用於影象處理、分析、機器視覺方面的開源函式庫
import matplotlib.pyplot as plt
train_json = json.load(
open
(r'e:\pycharm\tf_learning\cv_learning\data\mchar_train.json'))
'''top - 左上角座標y
height - 字元高度
left - 左上角座標x
width - 字元寬度
label - 字元編碼
'''
def
parse_json
(d):
arr = np.array(
[d['top'
], d[
'height'
], d[
'left'
], d[
'width'
], d[
'label']]
)# 將資料標註轉化成陣列
arr = arr.astype(
int)
return arr
img = cv2.imread(r'e:\pycharm\tf_learning\cv_learning\data\mchar_train\000000.png'
)'''
cv2.imread(filepath, flags) - 讀入一副
filepath - 要讀入的完整路徑
flags - 讀入的標誌
cv2.imread_color - 預設引數:讀入一副彩色,忽略alpha通道
cv2.imread_grayscale - 讀入灰度
cv2.imread_unchanged- -顧名思義,讀入完整,包括alpha通道
'''arr = parse_json(train_json[
'000000.png'])
# 將json檔案中的目標檔案找出進行資料標註處理
plt.figure(figsize=(10
,10))
plt.subplot(
1, arr.shape[1]
+1,1
)# arr.shape[1]表示中元素的個數; +1是為了顯示整體
plt.imshow(img)
plt.xticks(
)plt.yticks(
)for idx in
range
(arr.shape[1]
):plt.subplot(
1, arr.shape[1]
+1, idx +2)
# 從第乙個子圖開始迴圈
plt.imshow(img[arr[
0, idx]
: arr[
0, idx]
+ arr[
1, idx]
, arr[
2, idx]
: arr[
2, idx]
+ arr[
3, idx]])
''' 此處是擷取區域:
top(0) + height(1) = 的高度
left(2) + width(3) = 的寬度
簡單入門思路:定長字元識別 - 將賽題抽象為乙個定長字元識別問題
賽題資料最多的字元為6個
因此可以對於所有的影象都抽象為6個字元的識別問題:23填充為23***x, 231填充為231***
填充之後,每個字元分類中會進行11個類別的分類(0-9/x),假如分類為填充字元,則表明該字元為空
專業字元識別思路:不定長字元識別
比較典型的有crnn字元識別模型
本次賽題中給定的影象資料都比較規整,可以視為乙個單詞或者乙個句子
專業分類思路:檢測再識別
賽題中已經給出了中字元的位置
因此可以首先將字元的位置進行識別,利用物體檢測的思路完成
這種思路需要構建字元檢測模型,對測試集中的字元進行識別
可以參考物體檢測模型ssd或者yolo來完成
'''
接下來的task會涉及到多種解法,可以使用到計算機視覺領域中的各個模型;
以上三種解決思路的難度從低到高,後續會逐步復現
零基礎入門CV賽事 街景字元編碼識別
pytorch讀取資料 使用定長字元識別思路構建模型 學習python和pytorch中影象讀取 學會擴增方法和pytorch讀取賽題資料 pillow 匯入 from pil import image 讀取 im image.open jpg opencv 匯入 import cv2 讀取 img...
零基礎入門CV賽事 街景字元編碼識別 01
賽題 自google街景影象中的門牌號資料集 the street view house numbers dataset,svhn 並根據一定方式取樣得到比賽資料集。任務鏈結 阿里雲天池大賽 零基礎入門cv賽事 街景字元編碼識別。需要注意的是此賽題需要選手識別中所有的字元,為了降低比賽難度,提供了訓...
Datawhale 零基礎入門CV賽事
本章將會講解卷積神經網路 convolutional neural network,cnn 的常見層,並從頭搭建乙個字元識別模型。學習cnn基礎和原理 使用pytorch框架構建cnn模型,並完成訓練 卷積神經網路 簡稱cnn 是一類特殊的人工神經網路,是深度學習中重要的乙個分支。cnn在很多領域都...