本流程將引導您完成將先前訓練好的超解析度模型轉換為 TensorFlow Lite 格式,並在 Raspberry Pi 上部署一個應用程式,該應用程式可以使用 picamera2 套件從 Pi Camera Module 擷取即時影像,進行超解析度處理,然後透過 HTTP 串流將原始影像和處理後影像同時傳輸到網頁瀏覽器。

假設:

流程概覽:

  1. 準備 TensorFlow Lite 模型: 將 Keras 模型轉換為 .tflite 格式 (包含 INT8 量化)。
  2. 設定 Raspberry Pi 環境: (確保 picamera2 已安裝,libcamera 已啟用)
  3. 編寫 Raspberry Pi 應用程式 (使用 picamera2): 包含影像擷取、模型推論、影像處理和 HTTP 串流功能。
  4. 執行與測試: (與之前相同)
  5. 效能考量: (與之前相同)

步驟 1:準備您的 TensorFlow Lite 模型

(此步驟與您提供的 Canvas 文件中的內容相同,請參考該文件。)

import tensorflow as tf
import os
import numpy as np

KERAS_MODEL_PATH = "srcnn_model_384p_lr00001.h5"
TFLITE_MODEL_SAVE_PATH = "srcnn_model_384p.tflite"

MODEL_INPUT_HEIGHT = 512
MODEL_INPUT_WIDTH = 512
MODEL_INPUT_CHANNELS = 1

if not os.path.exists(KERAS_MODEL_PATH):
    print(f"錯誤: Keras 模型檔案 '{KERAS_MODEL_PATH}' 不存在。請檢查路徑。")
    exit()

print(f"正在從 '{KERAS_MODEL_PATH}' 載入 Keras 模型...")
try:
    model = tf.keras.models.load_model(
        KERAS_MODEL_PATH,
        custom_objects={'mse': 'mse'}
    )
    model.summary()
    print("Keras 模型載入成功。")
except Exception as e:
    print(f"載入 Keras 模型時發生錯誤: {e}")
    exit()

print(f"開始將模型轉換為 TensorFlow Lite 格式 (使用 concrete function)...")
try:
    run_model = tf.function(lambda x: model(x))
    concrete_func = run_model.get_concrete_function(
        tf.TensorSpec(shape=[1, MODEL_INPUT_HEIGHT, MODEL_INPUT_WIDTH, MODEL_INPUT_CHANNELS],
                      dtype=tf.float32)
    )
    converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
    tflite_model_content = converter.convert()
    print("模型轉換成功。")

    with open(TFLITE_MODEL_SAVE_PATH, 'wb') as f:
        f.write(tflite_model_content)
    print(f"TensorFlow Lite 模型已儲存至: {TFLITE_MODEL_SAVE_PATH}")
    print(f"模型大小: {os.path.getsize(TFLITE_MODEL_SAVE_PATH) / (1024):.2f} KB")

except Exception as e:
    print(f"轉換模型為 TensorFlow Lite 時發生錯誤: {e}")
    exit()

print("轉換完成。")

步驟 2:設定 Raspberry Pi 環境

(此步驟與您提供的 Canvas 文件中的內容大致相同,但請確保 python3-picamera2 已安裝,並且 libcamera 已在 raspi-config 中啟用。)

  1. 更新 Raspberry Pi OS。

  2. 安裝 Python 和 pip。

  3. 安裝必要的 Python 套件:

    sudo apt update
    sudo apt install python3-picamera2 -y
    pip3 install numpy --break-system-packages
    pip3 install opencv-python-headless --break-system-packages
    pip3 install Flask --break-system-packages
    pip3 install Pillow --break-system-packages