import os import numpy as np import torch import ktc # Kneron Toolchain from yolov5_preprocess import Yolov5_preprocess # 使用你的預處理 import kneron_preprocessing # 設定裝置 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # 設定圖片大小(與訓練時一致) imgsz_h, imgsz_w = 640, 640 # 量化數據集目錄(請確保這個資料夾存在) data_path = "/data50" img_list = [] # 設定 ONNX 模型路徑(確保這個路徑在 Docker 內部是否正確) onnx_model_path = "/workspace/yolov5/latest.opt.onnx" # **初始化 Kneron ModelConfig 物件** km = ktc.ModelConfig(20008, "0001", "720", onnx_model=onnx_model_path) # 遍歷 data50 並進行預處理 for root, _, files in os.walk(data_path): for f in files: fullpath = os.path.join(root, f) # 執行與訓練相同的預處理 img_data, _ = Yolov5_preprocess(fullpath, device, imgsz_h, imgsz_w) # 確保格式為 NumPy 陣列 img_data = img_data.cpu().numpy() print(f"Processed: {fullpath}") img_list.append(img_data) # 轉為 NumPy 格式 img_list = np.array(img_list) # **執行 BIE 量化分析** bie_model_path = km.analysis({"input": img_list}) # 輸出成功訊息 print("\n✅ Fixed-point analysis done! BIE model saved to:", bie_model_path)