iT邦幫忙

2021 iThome 鐵人賽

DAY 16
1

CNN在影像處理、辨識都是很重要的技術,在上一篇已經稍微了解 CNN 的概念後,現在來看看這個實用的技術會被運用在哪裡吧!

CNN應用場景:

應用場景包括機器學習、文檔分析、和圖像辨識等領域。
CNN 相當於眼睛的角色,以辨識不同物體,現在很多地方都會使用數位的手寫功能,就算只拿數字來看,每個人寫出來的樣子也都不同,這時候辨識的功能就很重要。

實作

首先要先匯入 keras 中引入 mnist → minst 是一個手寫數字的圖像資料集!整個 dataset 是由 60,000 張 training set 和 10,000 張 testing set,手寫 0~9 平均分布並且是 28 x 28 的灰階圖片所組成。

# 導入函式庫
import numpy as np
from keras.models import Sequential
from keras.datasets import mnist
from keras.utils import np_utils  # 用來後續將 label 標籤轉為 one-hot-encoding
import cv2

再來我們要載入 MNIST 資料庫的訓練資料,並自動分為『訓練組』及『測試組』和建立簡單的線性模型去執行。

(X_train, y_train), (X_test, y_test) = mnist.load_data()
model = Sequential()

將 training 的 label 進行 one-hot encoding 和把 training 的 input 資料轉為2維

One-hot encoding:例如數字 7 經過轉換後是 0000001000,即第7個值為 1。

y_TrainOneHot = np_utils.to_categorical(y_train)
y_TestOneHot = np_utils.to_categorical(y_test)
X_train_2D = X_train.reshape(60000, 28*28).astype('float32')
X_test_2D = X_test.reshape(10000, 28*28).astype('float32')

數值正規化後進行預測

x_Train_norm = X_train_2D/255
x_Test_norm = X_test_2D/255
X = x_Test_norm[0:10,:]
predictions = model.predict_classes(X)

print(predictions)  # get prediction result

接下來就可以讀取影像囉~

img=cv2.imread('C:/Users/User/Desktop/7.png', cv2.IMREAD_GRAYSCALE)
crop_size

cv2.imshow('My Image', img)  # 顯示圖片
                 
cv2.waitKey(0)         # 按下任意鍵則關閉所有視窗
cv2.destroyAllWindows()


得到最後結果!

img_2D = img.reshape(1,28*28).astype('float32')
img_norm=img_2D/255
img = img_norm
predictions = model.predict_classes(img)
# get prediction result
print(predictions)

上一篇
[D15] CNN
下一篇
[D17] ML機器學習(入門)
系列文
從林到有_Image processing30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言