中草藥識別系統Python+深度學習人工智慧+TensorFlow+卷積神經網路演算法模型

子午0發表於2024-05-30

一、介紹

中草藥識別系統。本系統基於TensorFlow搭建卷積神經網路演算法(ResNet50演算法)透過對10中常見的中草藥圖片資料集('丹參', '五味子', '山茱萸', '柴胡', '桔梗', '牡丹皮', '連翹', '金銀花', '黃姜', '黃芩')進行訓練,得到一個識別精度較高的H5格式模型檔案,然後基於Django開發視覺化的Web網頁操作介面,實現使用者上傳一張圖片識別其名稱。

二、效果圖片展示

img_05_20_15_52_04

img_05_20_15_52_17

img_05_20_15_52_34

三、演示影片 and 程式碼 and 安裝

地址:https://www.yuque.com/ziwu/yygu3z/fqkwp6aa2ely3tpx

四、TensorFlow介紹

TensorFlow是一個由Google開發的開源機器學習庫,廣泛應用於各種人工智慧領域,特別是在影像識別技術方面表現出色。它支援多種語言介面,其中Python是最常用的一種。TensorFlow提供了靈活且強大的工具集,可以用來開發複雜的影像識別模型,如卷積神經網路(CNN)。
在影像識別方面,TensorFlow的幾個主要特點包括:

  1. 高效能運算支援:TensorFlow可以利用GPU和TPU進行高效的數值計算,極大地加速了模型的訓練和推斷過程。
  2. 靈活的模型構建:TensorFlow提供了多種構建模型的方式,包括順序模型、函式式API以及低階API,使得開發者能夠根據需要靈活選擇。
  3. 豐富的預訓練模型和資源:透過TensorFlow Hub,使用者可以訪問大量的預訓練模型,這些模型可以被用來進行遷移學習,顯著降低開發新模型的時間和資源消耗。
  4. 強大的社群和生態系統:作為一個由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}")

相關文章