?0) 參考資料:?
https://github.com/Tencent/ncnn?tab=readme-ov-file
https://github.com/pnnx/pnnx
https://github.com/nihui/ncnn-android-yolov5
https://github.com/Tencent/ncnn?tab=readme-ov-file
1) :將xxx.pt模型轉化成 xxx.onnx
ONNX(Open Neural Network Exchange)是一種開放格式,可以讓你在不同深度學習框架之間轉換和共享模型 ; ONNX 適用于邊緣設備和移動端,部署到 移動設備(如 Android / iOS); Android 不能直接使用 ONNX 模型,但可以通過 ONNX Runtime 或 轉換為 NCNN / TFLite /在Linux環境下執行:pip install ultralytics 'onnx>=1.12.0', 'onnxslim', 'onnxruntime'python convert_pt2onnx() 得到 xxx.onnx 模型
def convert_pt2onnx():OreModelPath = 'E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.pt'model = YOLO(OreModelPath)model.eval()# first way of convertionpath = model.export(format="onnx", opset=14, dynamic=True)print(path)
2)?將onnx模型轉換成ncnn格式 ;
下載工具 https://github.com/pnnx/pnnx/releases
解壓執行:pnnx your_model.torchscript.onnx inputshape=[1,3,224,224]
# 進入pnxx目錄執行:
> pnnx E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.onnx inputshape=[1,3,224,224]# 或者直接在windows cmd 窗口當中寫絕對路徑
> E:\code_arm_workspace\pnnx-20241223-windows>pnnx E:\code_py_workspace\mainApp\\v8n-pt_oreDusty320Cls1_imgsz640.onnx inputshape=[1,3,224,224]
(*)模型執行完成后,獲得xxx.bin文件(可以在Android設備上運行)
3)在Android Studio編譯項目的時候遇到的問題
# 在local.properties當中寫(提前準備好sdk和ndk)
# sdk,ndk可以在AS當中的SDK Manager當中下載
sdk.dir=E\:\\android-sdk-windows
ndk.dir=E\:\\android-sdk-windows/ndk/26.1.10909125
# gradle-wapper properties文件當中指定gradle版本(distributionUrl=)
# 可以提前下載好放在本地distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=file\:///E:/android_software/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
?