一、介紹
中草藥識別系統。本系統基於TensorFlow搭建卷積神經網路演算法(ResNet50演算法)透過對10中常見的中草藥圖片資料集('丹參', '五味子', '山茱萸', '柴胡', '桔梗', '牡丹皮', '連翹', '金銀花', '黃姜', '黃芩')進行訓練,得到一個識別精度較高的H5格式模型檔案,然後基於Django開發視覺化的Web網頁操作介面,實現使用者上傳一張圖片識別其名稱。
二、效果圖片展示
三、演示影片 and 程式碼 and 安裝
地址:https://www.yuque.com/ziwu/yygu3z/fqkwp6aa2ely3tpx
四、TensorFlow介紹
TensorFlow是一個由Google開發的開源機器學習庫,廣泛應用於各種人工智慧領域,特別是在影像識別技術方面表現出色。它支援多種語言介面,其中Python是最常用的一種。TensorFlow提供了靈活且強大的工具集,可以用來開發複雜的影像識別模型,如卷積神經網路(CNN)。
在影像識別方面,TensorFlow的幾個主要特點包括:
- 高效能運算支援:TensorFlow可以利用GPU和TPU進行高效的數值計算,極大地加速了模型的訓練和推斷過程。
- 靈活的模型構建:TensorFlow提供了多種構建模型的方式,包括順序模型、函式式API以及低階API,使得開發者能夠根據需要靈活選擇。
- 豐富的預訓練模型和資源:透過TensorFlow Hub,使用者可以訪問大量的預訓練模型,這些模型可以被用來進行遷移學習,顯著降低開發新模型的時間和資源消耗。
- 強大的社群和生態系統:作為一個由Google支援的專案,TensorFlow擁有廣泛的開發者社群和生態系統,提供豐富的教程、工具和庫來支援開發者。
下面是使用TensorFlow構建一個簡單的CNN模型來分類CIFAR-10資料庫中的影像。CIFAR-10是一個常用的影像分類資料集,包含60000張32x32的彩色影像,分為10個類別。
import tensorflow as tf
from tensorflow.keras import layers, models
import numpy as not
# 載入CIFAR-10資料集
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
# 資料預處理,歸一化
train_images, test_images = train_images / 255.0, test_images / 255.0
# 構建模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))
# 編譯模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 訓練模型
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test. images, test_labels))
# 評估模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f"Test accuracy: {test_acc}")