坑非常多,兄弟們,我已經(jīng)踩了三天的坑了,我這里部署了官方的yolov5s和我自己訓練的yolov5n的模型
下載Android Studio,配置安卓開發(fā)環(huán)境,這個過程比較漫長。
安裝cmake,注意安裝的是cmake3.10版本。
根據(jù)手機安卓版本選擇相應的安卓版本,我的是紅米K30Pro,安卓12。
使用騰訊開源的ncnn,這是一個為手機端極致優(yōu)化的高性能神經(jīng)網(wǎng)絡前向計算框架,能夠?qū)⑸疃葘W習算法輕松移植到手機端高效執(zhí)行。
下載解壓ncnn-android-yolov5-master和ncnn-20231027-android-vulkan。
nihui/ncnn-android-yolov5: The YOLOv5 object detection android example (github.com)
https://github.com/Tencent/ncnn/releases/download/20231027/ncnn-20231027-android-vulkan.zip
把ncnn-20231027-android-vulkan里面的文件復制一份到ncnn-android-yolov5-master的\app\src\main\jni目錄下。
用Android studio 打開這個ncnn-android-yolov5-master項目的build.gradle文件。
然后等待Android Studio構(gòu)建工程,這個過程比較漫長。
完事之后打開ncnn-android-yolov5-master\app\src\main\jni\CMakeLists.txt將原根目錄ncnn-20201218-android-vulkan/刪了
修改依賴的gradle插件版本為7.3.0,為什么呢,因為這個版本親測沒有問題,其他會出現(xiàn)各種各樣的問題。
然后是修改使用的gradle版本為7.4-all版本,親測其他版本不匹配。
重新sync項目,如果此時你還一切順利,那么恭喜你,你已經(jīng)成功了一大半,如果你開始出現(xiàn)各種各樣的報錯,那也正常,絕大部分是版本的問題,我在到達此處前卡了一天,你可能需要處理gradle下載慢之類的問題,報錯的話復制百度
連接手機,打開手機的開發(fā)者模式,打開USB調(diào)試,打開USB安裝,等Android Studio檢測到我的紅米K30Pro,然后點擊運行,這時app就可以安裝到手機上了,可以正常識別。
我們剛剛部署的是yolov5s的官方模型,現(xiàn)在我們要部署我們的模型。
首先將我們實驗三優(yōu)化的onnx格式模型轉(zhuǎn)換為ncnn所需的格式,onnx格式模型可以通過yolov5自帶的export.py導出
大概有三種方法:
第一種是最快的,用這個在線轉(zhuǎn)換網(wǎng)站一鍵轉(zhuǎn)換 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine (convertmodel.com)?
第二種也是我們下面用的這種,直接下載ncnn編譯好的可執(zhí)行文件轉(zhuǎn)換
第三種就是編譯ncnn,這個比較復雜,我沒用?
下載解壓ncnn-20231027-windows-vs2022-shared,使用x64/bin下的onnx2ncnn程序?qū)nnx模型轉(zhuǎn)換為ncnn所需的模型和參數(shù)文件。
將我們的onnx文件復制一份到x64/bin文件夾下。
Windows使用以下命令行完成模型轉(zhuǎn)換。
得到ncnn需要的模型和參數(shù)文件。
然后用我們的參數(shù)文件替換asset中的yolov5s.param和yolov5s.bin,為了方便,名字也要改成yolov5s,需要將yolov5ncnn_jni.cpp中的stride16和stride32中的ex.extract改為參數(shù)文件最后兩個permute的輸出名稱,你也可以用Netron來看參數(shù)模型找到最后兩個permute的輸出名稱。
還需要修改類別
這里根據(jù)不同的yolov5版本可能需要進行對參數(shù)文件的修改,我先不修改跑跑看,可以看到app也成功安裝到手機上了,打開并選一張照片進行識別,可以看到框比較多。
根據(jù)網(wǎng)上的解決辦法,是將參數(shù)文件中Reshape后面對應的0=6400、0=1600、0=400均修改為0=-1。
這樣可以解決多個框的問題,確實解決了,但是一個框都沒有了。
于是我把參數(shù)改回去,并增加多一層注意力機制。
然后把nms閾值調(diào)成0。
最后變成這樣了,不知道有沒有大佬可以幫忙解決一下。
參考資料
YOLOv5使用NCNN將模型部署到Android端教程(1)部署自己的訓練模型到Android實現(xiàn)靜態(tài)圖片檢測 - 知乎 (zhihu.com)文章來源:http://www.zghlxwxcb.cn/news/detail-829488.html
【精選】記錄歷經(jīng)三天將自己的yolov5模型部署到Android安卓手機_yolov5部署到手機-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-829488.html
到了這里,關于【Android Studio】【NCNN】YOLOV5安卓部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!