生活随笔
收集整理的這篇文章主要介紹了
Windows10下编译NCNN安卓NDK
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- 在做安卓端的目標識別相關項目,用到YoloV5,原本只用OpenCV的DNN來做模型推理,但速度達不到要求,所以轉向移動端推理加速庫,試了mnn、PaddlePaddle,ncnn,做了對比,最終確定用ncnn做推理加速庫。ncnn的各個模塊的強大無須多說,特別int8量化真的超級好用。如果你沒有自己添加代碼或者添加自定義的層,建議直接下載ncnn的releases庫直接就行。但我這里用到yolov5,要添加一個自定義的層,所以要自己編譯。
- Windows10系統,IDE是Android Studio,CMake 3.21。
- ncnn-20210720, 要用到GPU,所以要下VulkanSDK 1.2.141.2。
一、環境安裝
1.安裝CMake,并把xxx\xxx\CMake\bin添加系統環境變量。
2.安裝Vulkan各它的依賴庫。
二、編譯NCNN
1.編譯之前要下載安卓NDK,我這里用android-ndk-r21e-windows-x86_64.zip這個版本,下載之后解壓,添加系統環境變量xxx\android-ndk-r21e和xxx\android-ndk-r21e\build,然后驗證是否成功,在ndk根目錄下打開cmd窗口,運動ndk-build,輸出:
2.編譯NCNN。
git clone https
:
cd ncnn
git submodule update
--init
- 從下載NCNN releases 庫可以看到,有四個庫目錄,如下圖:
這些的具體作用可以看安卓關于NDK ABI的介紹。 - 在ncnn源碼的根目錄下創建這四個目錄,如下圖:
- 構建armv7 庫,這個可以看NCNN官網給的Build for Android.
cd build-android-armv7
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="armeabi-v7a" -DANDROID_ARM_NEON
=ON -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF -DANDROID_PLATFORM
=android-14
.. -G
"Unix Makefiles"
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="armeabi-v7a" -DANDROID_ARM_NEON
=ON -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF -DANDROID_PLATFORM
=android-24 -DNCNN_VULKAN
=ON
..cmake --build
.
cmake --build
. --target
install
cd build-android-aarch64
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="arm64-v8a" -DANDROID_PLATFORM
=android-21
.. -G
"Unix Makefiles" -DCMAKE_MAKE_PROGRAM
="D:/LIB/ndk-r21e/prebuilt/windows-x86_64/bin/make.exe"
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="arm64-v8a" -DANDROID_PLATFORM
=android-24 -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF -DNCNN_VULKAN
=ON
..
cmake --build
.
cmake --build
. --target
install
cd build-android-x86
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="x86" -DANDROID_PLATFORM
=android-19 -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF
.. -G
"Unix Makefiles"
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="x86" -DANDROID_PLATFORM
=android-24 -DNCNN_VULKAN
=ON -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF
..cmake --build
.
cmake --build
. --target
install
cd build-android-x86_64cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="x86_64" -DANDROID_PLATFORM
=android-21 -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF
.. -G
"Unix Makefiles"
cmake -DCMAKE_TOOLCHAIN_FILE
="D:/LIB/android-ndk-r21e/build/cmake/android.toolchain.cmake" -DANDROID_ABI
="x86_64" -DANDROID_PLATFORM
=android-24 -DNCNN_VULKAN
=ON -DNCNN_DISABLE_RTTI
=OFF -DNCNN_DISABLE_EXCEPTION
=OFF
..cmake --build
.
cmake --build
. --target
install
- 構建完成之后,在每個build目錄下都有一個install目錄,目錄里面有include和lib兩個目錄,這就是最終要用的庫。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的Windows10下编译NCNN安卓NDK的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。