本文介紹瞭如何開始使用Qualcomm®Snapdragon™神經處理引擎(NPE)SDK。 從乾淨的Ubuntu安裝開始,本教程旨在爲您提供安裝依賴性的步驟,設置SDK工具,下載並準備一些示例神經網絡模型,最後構建可用於解決方案的示例Android APP 使用人工智能(AI)。
系統要求
我們建議在專用機器上執行以下操作,以更好地瞭解SDK依賴關係:
1. 安裝Ubuntu 14.04(推薦),例如在虛擬機上。
2. 安裝最新版本的Android Studio。
3. 安裝最新的Android SDK,可以從Android Studio安裝,或者獨立安裝。
4. 安裝最新的Android NDK,可以從Android Studio SDK Manager中安裝,或者獨立安裝。
5. 安裝Caffe(安裝說明,本SDK推薦的git修訂版d8f79537)。
# this will build Caffe (and the pycaffe bindings) from source - see the official instructions for more information
sudo apt-get install cmake git libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev libhdf5-serial-dev libleveldb-dev liblmdb-dev libopencv-dev libprotobuf-dev libsnappy-dev protobuf-compiler python-dev python-numpy
git clone https://github.com/BVLC/caffe.git ~/caffe; cd ~/caffe; git reset --hard d8f79537
mkdir build; cd build; cmake ..; make all -j4; make install
6. 可選:安裝TensorFlow(推薦安裝說明,版本1.0)。
# this will download and install TensorFlow in a virtual environment - see the official instructions for more information
sudo apt-get install python-pip python-dev python-virtualenv
mkdir ~/tensorflow; virtualenv --system-site-packages ~/tensorflow; source ~/tensorflow/bin/activate
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl
設置SDK
此步驟允許Snapdragon NPE SDK通過python API與Caffe和Tensorflow框架進行通信。 要在Ubuntu 14.04上設置SDK,請按以下步驟操作:
1. 確保已安裝Android NDK,Caffe(這裏假定爲~/caffe)和可選的TensorFlow(這裏假定爲~/tensorflow),然後繼續。
2. 下載最新的Snapdragon NPE SDK。
3. 將.zip文件解包到適當的位置(這裏假定在~/snpe-sdkfolder中)。
4. 安裝缺少的系統包:
# install a few more SDK dependencies, then perform a comprehensive check
sudo apt-get install python-dev python-matplotlib python-numpy python-protobuf python-scipy python-skimage python-sphinx wget zip
source ~/snpe-sdk/bin/dependencies.sh # verifies that all dependencies are installed
source ~/snpe-sdk/bin/check_python_depends.sh # verifies that the python dependencies are installed
5. 在當前控制檯上初始化Snapdragon NPE SDK環境; 在將來,爲每個新的控制檯重複此操作:
# initialize the environment on the current console
cd ~/snpe-sdk/
export ANDROID_NDK_ROOT=~/Android/Sdk/ndk-bundle # default location for Android Studio, replace with yours
source ./bin/envsetup.sh -c ~/caffe
source ./bin/envsetup.sh -t ~/tensorflow # optional for this guide
初始化將設置或更新$$SNPE_ROOT,$PATH,$LD_LIBRARY_PATH,$PYTHONPATH,$CAFFE_HOME,$TENSORFLOW_HOME,此外,它將在本地複製Android NDK libgnustl_shared.so庫,並更新Android AAR存檔。
下載MLModels並將其轉換爲.DLC
Snapdragon NPE SDK不捆綁可公開的模型文件,但包含用於下載一些流行模型並將其轉換爲深度學習容器(“DLC”)格式的腳本。 腳本位於/ models文件夾中,它還將包含DLC模型。
- 以Caffe格式下載並轉換預先訓練的Alexnet示例:
cd $SNPE_ROOT
python ./models/alexnet/scripts/setup_alexnet.py -a ./temp-assets-cache -d
提示:查看setup_alexnet.py腳本,該腳本執行到DLC的轉換。 您可能會對您的Caffe模型轉換執行相同的操作。
- 可選:以Tensorflow格式下載並轉換預訓練的“inception_v3”示例:
cd $SNPE_ROOT
python ./models/inception_v3/scripts/setup_inceptionv3.py -a ./temp-assets-cache -d
提示:看一下setup_inceptionv3.py腳本,它也對模型進行了量化,縮小了75%(91MB→23MB)。
構建示例Android APP
Android APP結合了Snapdragon NPE運行時(由/android/snpe-release.aar Android庫提供)和上述Caffe Alexnet示例生成的DLC模型。
1. 通過複製運行時和模型來準備APP
cd $SNPE_ROOT/examples/android/image-classifiers
cp ../../../android/snpe-release.aar ./app/libs # copies the NPE runtime library
bash ./setup_models.sh # packages the Alexnet example (DLC, labels, imputs) as an Android resource file
2.選項A:從Android studio構建Android APK:
1.啓動Android Studio。
2.在~/snpe-sdk/examples/android/image-classifiers文件夾中打開項目。
3.如果提供,接受Android Studio建議來升級構建系統組件。
4.按“運行應用程序”按鈕構建並運行APK。
3.選項B:從命令行構建Android APK:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1
libbz2-1.0:i386 # Android SDK build dependencies on ubuntu
./gradlew assembleDebug # build the APK
上面的命令可能需要將ANDROID_HOME和JAVA_HOME設置爲系統中的Android SDK和JRE/JDK的位置。
下一步是什麼?
恭喜,您剛剛使用Snapdragon NPE SDK向您發佈了第一個應用程序。 現在是開始創建自己的AI解決方案的時候了!
示例Android APP的源代碼演示瞭如何正確使用SDK。 ClassifyImageTask.java是開始學習的好起點。 API文檔,教程和架構詳細信息可以在SDK中附帶的文檔中找到。 將瀏覽器指向/doc/html/index.html開始學習。 有關常見問題的答案可以在論壇中找到,在那裏您還可以與我們的專家討論“API”。