iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0

撐過今天,明天就放假了

先來講一下昨天沒說的環境安裝,由於考量到要安裝tensorflow相關的套件,容量肯定會很大,那就交給專門管理環境的anaconda吧

下載完成後,開始來建立環境,除了用指令以外也可以從gui來操作,接下來我會以指令來介紹

首先先建立環境

conda create --name detect_match python=3.9

建立完成後,啟動環境

conda activate detect_match

接著安裝需要的套件

pip install tensorflow==2.5
pip install opencv-python
pip install Pillow

這邊把tensorflow版本設定在2.5完全只是因為參考料寫2.5,確保不會因為版本問題卡關

到這邊雖然說套件已經裝完了,但是tensorflow吃的會是CPU的資源,所以我再做了一些GPU設定(其實只是因為看到訊息叫我裝GPU就不舒服)

基本上不用想太多,CUDA和cuDNN就照上面的版本下載就好

先把CUDA Toolkit安裝好之後,cuDNN解壓出來會有這些東西

裡面的東西就全部抓到

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib

然後環境變數設定上面三個路徑

到這邊用cmd開啟python試試(記得切環境)

import tensorflow


到這邊就代表成功了,不用再被建議安裝GPU了

那接下來回到作天的程式,有稍微修改一下

from keras.models import load_model
from PIL import Image, ImageOps
import numpy as np

# Load the model
model = load_model('keras_model.h5')

# Create the array of the right shape to feed into the keras model
# The 'length' or number of images you can put into the array is
# determined by the first position in the shape tuple, in this case 1.
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
# Replace this with the path to your image
image = Image.open('g3.jpg')
#resize the image to a 224x224 with the same strategy as in TM2:
#resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)

#turn the image into a numpy array
image_array = np.asarray(image)
# Normalize the image
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
# Load the image into the array
data[0] = normalized_image_array

# run the inference
prediction = model.predict(data)
print(prediction)
blue, red, orange, purple, yellow, green = prediction[0]

if blue > 0.5:
    print('blue')
if red > 0.5:
    print('red')
if orange > 0.5:
    print('orange')
if purple > 0.5:
    print('purple')
if yellow > 0.5:
    print('yellow')
if green > 0.5:
    print('green')

關鍵在這邊

data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
image = Image.open('g3.jpg')

在shape那邊代表的意思分別是,不知道、長、寬、顏色數量,這裡的顏色數量指的就是RGB,但我昨天因為開的是png,這類的檔案會多一種顏色是透明色,所以資料不符就出錯了

轉換完成後,結果如下

明天再來試試看廣告中的x能不能辨識

參考資料:
https://steam.oxxostudio.tw/category/python/ai/ai-jupter-tensorflow.html
https://blog.csdn.net/qingfengxd1/article/details/109098858
https://www.tensorflow.org/install/gpu


上一篇
Day9 開始來玩影像辨識
下一篇
Day11 辯識廣告叉叉
系列文
最近迷上了三消遊戲 那就來寫一個自動消珠程式吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言