1. 程式人生 > >Movidus 神經計算棒 樹莓派平臺 ncsdk2.0 完全配置 及 一些問題

Movidus 神經計算棒 樹莓派平臺 ncsdk2.0 完全配置 及 一些問題

配置之前的瑣事和解決方法

之前配置了的1.x版本的ncsdk。錯誤百出,於是有了另一篇文章就是純API配置,沒有配完全版。

經過我的測試,用以下方法配置是可以用的。配置方法和下面的2.0類似,不過有可能出現170錯誤

PREV_INSTALL_INFO='$SUDO_PREFIX find /opt /home -name $INSTALL_INFO_FILENAME -print 2> /dev/null'

make install: Error in line 170

那麼解決方法是什麼呢?

根據makefile裡面的資訊,它是在/ opt / movidius那裡執行安裝程式。我在/opt/movidius/NCSDK/install-ncsdk.sh

中找到了安裝程式

第170行。

修改這個至少完成了安裝過程。但是解除安裝好像不能用了。只能自己去刪除檔案。後續有待測試。

在第170行那裡,把下面的語句註釋掉。

#PREV_INSTALL_INFO=`$SUDO_PREFIX find /opt /home -name $INSTALL_INFO_FILENAME -print 2> /dev/null`
#if [[ ! -z $PREV_INSTALL_INFO ]]; then
#   PREV_OWNER=$(ls -l $PREV_INSTALL_INFO | awk '{print $3}')
#   if [ $PREV_OWNER != $USER ]; then
#       echo "Previous installation not owned by current user, continue at your own risk"
#   fi
#   PREV_INSTALL_DIR=${PREV_INSTALL_INFO%/*}
#   PREV_NCSDK_VER=`cat $PREV_INSTALL_DIR/version.txt`
#   echo "NCSDK version $PREV_NCSDK_VER previously installed at $PREV_INSTALL_DIR"

#   compare_versions $PREV_NCSDK_VER $INSTALLER_NCSDK_VER

#   #TODO: remove older version, or update as necessary
#   if [[ $VERCOMP_RETVAL == 0 ]]; then
#       echo "Previously installed version is the same as installer version, overwriting..."
#   elif [[ $VERCOMP_RETVAL == 1 ]]; then
#       echo "Previously installed version is older than installer version, upgrading..."
#   else
#       echo "Previously installed version is more recent than installer version, downgrading..."
#   fi
#fi

然後回到下載的ncsdk的資料夾裡面,找到install.sh這個檔案,用文字編輯器編輯

gedit install.sh

找到第35行,把它們改成這樣,該註釋掉的註釋掉

# untar the new install and run the install script
#sudo tar zxvf ./ncsdk.tar.gz
#sudo rm -rf NCSDK
#sudo mv $ncsdk_pkg* NCSDK
cd /opt/movidius/NCSDK
cp /tmp/ncsdk.conf .
./install-ncsdk.sh

在把同目錄下的ncsdk.conf改成這樣

MAKE_PROCS=1
SETUPDIR=/opt/movidius
VERBOSE=yes
SYSTEM_INSTALL=yes
CAFFE_FLAVOR=ssd
INTEL_CAFFE=no
CAFFE_USE_CUDA=no
INSTALL_TENSORFLOW=yes
INSTALL_TOOLKIT=yes

然後直接執行

make install

應該就行了,在執行例子的時候可能會遇到

RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa

這個是你的numpy的版本太低了,升級一下就好了。

sudo pip3 install -U numpy

回到正題,我完全重新刷了樹莓派,重新開始安裝ncsdk2.0

一,NCSDK2.0的安裝

    官方參考配置安裝連結

1.準備

在桌面建立一個資料夾,放下載的東西

cd ~/Desktop
mkdir workspace
cd workspace

2.克隆2.0安裝包和例子

git clone -b ncsdk2 http://github.com/Movidius/ncsdk

git clone -b ncsdk2 https://github.com/movidius/ncappzoo.git

-b ncsdk2選項從ncsdk2分支中檢出最新版本的NCSDK 2.如果省略此選項,則將在主分支上安裝NCSDK版本,該分支當前為NCSDK 1.x.

注意:如果安裝1.x的不用加-b ncsdk2,可能出現的問題在上面已經寫出來了,安裝步驟基本一樣

3.源更新

sudo apt-get update

sudo apt-get upgrade

4.安裝一些依賴包

sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt-get install -y build-essential cmake pkg-config
sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt-get install -y python2.7-dev python3-dev


sudo apt-get install -y libusb-1.0-0-dev libprotobuf-dev
sudo apt-get install -y libleveldb-dev libsnappy-dev
sudo apt-get install -y libopencv-dev
sudo apt-get install -y libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev git automake
sudo apt-get install -y byacc lsb-release cmake
sudo apt-get install -y libgflags-dev libgoogle-glog-dev
sudo apt-get install -y liblmdb-dev swig3.0 graphviz
sudo apt-get install -y libxslt-dev libxml2-dev
sudo apt-get install -y gfortran
sudo apt-get install -y python3-dev python-pip python3-pip
sudo apt-get install -y python3-setuptools python3-markdown
sudo apt-get install -y python3-pillow python3-yaml python3-pygraphviz
sudo apt-get install -y python3-h5py python3-nose python3-lxml
sudo apt-get install -y python3-matplotlib python3-numpy
sudo apt-get install -y python3-protobuf python3-dateutil
sudo apt-get install -y python3-skimage python3-scipy
sudo apt-get install -y python3-six python3-networkx

sudo apt-get install -y libusb-1.0-0-dev libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev git automake byacc lsb-release cmake libgflags-dev libgoogle-glog-dev liblmdb-dev swig3.0 graphviz libxslt-dev libxml2-dev gfortran python3-dev python-pip python3-pip python3-setuptools python3-markdown python3-pillow python3-yaml python3-pygraphviz python3-h5py python3-nose python3-lxml python3-matplotlib python3-numpy python3-protobuf python3-dateutil python3-skimage python3-scipy python3-six python3-networkx python3-tk

5.安裝

cd ncsdk

找到ncsdk.conf用編輯器開啟,把裡面的#MAKE_NJOBS = 1的這一行前面的#號去掉。為了防止樹莓派在編譯的時候宕機我們用1就好了,改2問題也不大,會快點。

然後

make install

等待安裝完成就好了

然後編譯例子

make examples

會提示你安裝OpenCV的,沒有裝的話,選是裝上就行了。

6.安裝期間的問題

1.有時候會遇到一些這樣的問題

Errno Permission denied:

是許可權的問題,有時候沒有許可權去讀取某個檔案,導致檔案安裝失敗或編譯失敗。找到你的檔案的資料夾。一般是/選擇/ movidius我們將整個資料夾和其子檔案都改下許可權和使用者及使用者組就行了。

sudo chmod -R +r /opt/movidius/*
sudo chown -R pi:pi /opt/movidius/*

2.在編譯安裝完成後,試試是否配置成功。

cd examples/apps/hello_ncs_py
make run

顯示

making run
python3 hello_ncs.py;
D: [         0] ncDeviceCreate:307	ncDeviceCreate index 0

D: [         0] ncDeviceCreate:307	ncDeviceCreate index 1

D: [         0] ncDeviceOpen:501	File path /usr/local/lib/mvnc/MvNCAPI-ma2450.mvcmd

I: [         0] ncDeviceOpen:507	ncDeviceOpen() XLinkBootRemote returned success 0

I: [         0] ncDeviceOpen:536	XLinkConnect done - link Id 0

D: [         0] ncDeviceOpen:550	done

I: [         0] ncDeviceOpen:552	Booted 1.2-ma2450 -> VSC

I: [         0] getDevAttributes:373	Device attributes

I: [         0] getDevAttributes:376	Device FW version: 2.4.2450.f0

I: [         0] getDevAttributes:378	mvTensorVersion 2.4 

I: [         0] getDevAttributes:379	Maximum graphs: 10

I: [         0] getDevAttributes:380	Maximum fifos: 20

I: [         0] getDevAttributes:382	Maximum graph option class: 1

I: [         0] getDevAttributes:384	Maximum device option class: 1

I: [         0] getDevAttributes:385	Device memory capacity: 522073264

Hello NCS! Device opened normally.
I: [         0] ncDeviceClose:742	closing device

Goodbye NCS! Device closed normally.
NCS device working.

就成功了。

在試試其他的例子

回到工作區目錄裡面

cd ncappzoo/apps/birds/
make run

正常情況會執行這樣

但是有可能會出現以下問題:

1.在執行以上程式時在編譯時

making compile

mvNCCompile -w bvlc_googlenet.caffemodel -s 12 deploy.prototxt

mvNCCompile v02.00, Copyright @ Movidius Ltd 2016

Error importing caffe

其一,這是朱古力安裝的問題,重新編譯安裝就好了。

其二,你的環境變數可能有問題

           工具包設定的預設PYTHONPATH/ opt / movidius / caffe / python,在你的bashrc檔案中,它應如下所示:

export PYTHONPATH=:"${PYTHONPATH}:/opt/movidius/caffe/python"

如果在你的〜/ .bashrc中檔案裡面沒有這一句的話,在最後加上就行了。

2.編譯時報錯

RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa

這個是你的numpy的版本太低了,升級一下就好了。

sudo pip install -U numpy
sudo pip3 install -U numpy

我操作了第二條命令列才成功,看了用的是python3執行

版本的升降用一下命令就行了,類似在後面加版本號就可以升降級了

sudo pip3 install -U numpy==13.3.1

再次編譯應該就可以了

3.例子編譯錯誤

(1)stream_infer例子報錯

making run
python3 stream_infer.py
Traceback (most recent call last):
  File "stream_infer.py", line 16, in <module>
    gi.require_version('Gst', '1.0')
  File "/usr/lib/python3/dist-packages/gi/__init__.py", line 118, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Gst not available
Makefile:27: recipe for target 'run' failed
make: *** [run] Error 1

這個是一些軟體包沒有安裝:輸入下面的命令列安裝

sudo apt-get install gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools

(2)video_face_match報錯

因為裡面有一個檔案是外網的連結下載不了,所以報錯把我下面的檔案複製到ncappzoo/tensorflow/facenet裡面就行了

下載頁面

(3)caffe例子裡面的MobileNetSSD編譯報錯,模型下載不了

MobileNetSSD_deploy.caffemodel 下載頁面

參考網站:

使示例錯誤