# 影像辨識訓練模型-傅品柔 關於此app其功能- 校園導覽(辨識校園大樓) ## 1.找到適合的模型 首先我們到Tensorflow Lite的官網上尋找官網提供的各類模型。 找到一個適合運用在辨識大樓的模型。 ![](https://i.imgur.com/8dBBzfO.png) 官網提供很多種類的model,可以依照需求去更改內容。 我們使用一個辨識動物種類的model。 利用鏡頭,對準需要辦別的畫面,進行判斷。 找到適合的模型後,我們將模型置入colab上進行照片的訓練。 (以下是我們置入colab中的模型畫面) ![](https://i.imgur.com/ySTO1tM.png) #### 第一步: 先點選「執行階段」 進入 「變更執行階段類型」 #### 第二步: 將選項改成「GPU」 ![](https://i.imgur.com/sD0VlRo.png) --- ![](https://i.imgur.com/hUrHSZk.png) 設定完成後,接下來開始匯入照片。 ___________________________________________________ ## 2.匯入照片 ![](https://i.imgur.com/7sgSgS3.png) 依照上圖提示,可將欲訓練的圖片檔案上傳至模型。 *利用```image_path```建立一個zip檔案,再將所有檔案一次上傳即可。* ``` #_URL = 'https://storage.googleapis.com/mledu- datasets/cats_and_dogs_filtered.zip' #path_to_zip = tf.keras.utils.get_file('cats_and_dogs.zip', origin=_URL, extract=True) 這兩行程式碼我們註銷掉,原因是我們使用上傳雲端硬碟的方式一一將照片匯入。 但應該是要直接使用```image_path```,直接上傳zip檔才是最正確的方式。 PATH = os.path.join('Dog') train_dir = os.path.join(PATH) #validation_dir = os.path.join(PATH, 'validation') ``` ## 3.模型架構 此時匯入的model為 **FlowerModel.tflite** ***基本上主程式碼不需作修改,但如要讓顯示的畫面有所不同,就要調整數據。*** 我們將官網範例用來判斷花朵的模型(flowerModel.tfite),先改成判斷貓或狗作測試(TfLite_cat_dog)。取名的部分不要被混淆了 --- > 為了實現這個例子,我們首先需要安裝幾個必需的包。 ``` !pip install -q tflite-model-maker ``` ![](https://i.imgur.com/fDm2ja3.png) ``` import tensorflow as tf import os import matplotlib.pyplot as plt ``` ``` #_URL = 'https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip' #path_to_zip = tf.keras.utils.get_file('cats_and_dogs.zip', origin=_URL, extract=True) PATH = os.path.join('test2')# 此(名稱)=上傳照片的zip檔名 train_dir = os.path.join(PATH) #validation_dir = os.path.join(PATH, 'validation') ``` ``` train_dir ``` > 使用DataLoader類加載數據。 --- 至於from_folder()方法,它可以從文件夾中加載數據。假設同一個類的圖像數據在同一個子目錄下,子文件夾名就是類名。目前支持 JPEG的圖像和 PNG的圖像。 ``` from tflite_model_maker import ImageClassifierDataLoader data = ImageClassifierDataLoader.from_folder(train_dir) train_data, test_data = data.split(0.9) ``` --- 以下是可以自訂顯示數據的部分 參考1.[https://vimsky.com/zh-tw/examples/usage/matplotlib-pyplot-xticks-in-python.html](https://) *```plt.xticks()```與```plt.yticks()```語法意義* 參考2.https://newbedev.com/python-plt-grid-false-code-example ```plt.grid(False)``` 參考3.[https://ithelp.ithome.com.tw/articles/10203624](https://) ```Numpy```意義 ``` plt.figure(figsize=(10,10)) #其中figsize用來設置圖形的大小,a為圖形的寬, b為圖形的高。 單位為英寸。得知目前為10x10的圖。 for i, (image, label) in enumerate(data.gen_dataset().unbatch().take(25)): #列舉出偵測到的圖片 plt.subplot(5,5,i+1) #第一個5參數是子圖的行數,第二個5參數是子圖的列數(等於5行*5列)。 第三個i+1參數是代表第一個子圖,如果想要設置子圖的寬度和高度可以在函數內加入figsize值。 而i+1會隨層級式堆疊新增。 plt.xticks([]) #x行無別名 。舉例經濟供需曲線圖 x為數量y為價格 plt.yticks([]) #y列無別名 plt.grid(False) #是否要顯示網格 此處為否 plt.imshow(image.numpy(), cmap=plt.cm.gray)#iput(照片,準確度) plt.xlabel(data.index_to_label[label.numpy()]) plt.show() ``` ![](https://i.imgur.com/l58024b.png) 執行後畫面(箭頭指處) --- 參考資料1.[https://www.tensorflow.org/tutorials/images/classification](https://) 2.https://www.sciencedirect.com/topics/engineering/image-classification 運用神經網路分類圖像 ``` from tflite_model_maker import image_classifier model = image_classifier.create(train_data) ``` --- 評估模型的結果,得到模型的損失和準確率。 ``` loss, accuracy = model.evaluate(test_data) ``` 顯示畫面示意 ![](https://i.imgur.com/uuSn1HI.png) --- 參考資料 [https://www.tensorflow.org/lite/tutorials/model_maker_image_classification](https://) ---