トップページ -> 最新情報技術の実習と研究ツール -> ラズベリーパイを使ってみよう -> Raspberry Pi で TenforFlow 1.11, Keras 2.2.4, OpenCV, Dlib, その他関連ソフトウエア環境を整える
[サイトマップへ]  

Raspberry Pi で TenforFlow 1.11, Keras 2.2.4, OpenCV, Dlib, その他関連ソフトウエア環境を整える

目次

  1. Raspbian のシステム更新
  2. Raspberry Pi で Python の環境を整える
  3. Raspberry Pi で TenforFlow 1.11, Keras 2.2.4 をインストール
  4. Raspberry Pi で Dlib, その他画像関連ソフトウエアを整える

    matplotlib, pandas, pillow, Dlib, face_recognition, mtcnn, imutils, imagemagick をインストール

  5. Raspberry Pi で OpenCV をインストール

Raspbian のシステム更新

最初に、Raspbian のシステム更新などを行っておく

端末を開き、次を実行

sudo apt update
sudo apt -yV upgrade
sudo apt -yV dist-upgrade
sudo rpi-update
sudo apt -yV autoremove
sudo apt autoclean
sudo shutdown -r now

Raspberry Pi で Python の環境を整える

  1. システムの Python について, pip の更新
    cd /tmp
    sudo rm -f get-pip.py
    wget https://bootstrap.pypa.io/get-pip.py
    sudo /usr/bin/python3 get-pip.py
    sudo /usr/bin/python get-pip.py
    

  2. virtualenv, virtualenv wrapperのインストール

    システムの Python とは隔離された Python 環境を作ることができるようにする

    sudo rm -rf $HOME/.virtualenvs
    sudo rm -rf ~/.cache/pip
    sudo pip install virtualenv virtualenvwrapper
    sudo pip3 install virtualenv virtualenvwrapper
    export WORKON_HOME=$HOME/.virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    source /usr/local/bin/virtualenvwrapper.sh
    touch ~/.bashrc
    echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
    echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
    echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
    source ~/.bashrc
    

  3. virtualenv を使って、隔離された Python 3 環境を作る
    1. 次の手順で作る
      mkvirtualenv --python=/usr/bin/python3 py35
      lsvirtualenv 
      

    2. 次の手順で確認する
      source /usr/local/bin/virtualenvwrapper.sh
      workon py35
      pip list
      

Raspberry Pi で TenforFlow 1.11, Keras 2.2.4 をインストール

  1. virtualenv 配下の Python 3 環境で pip の更新
    workon py35
    cd /tmp
    sudo rm -f get-pip.py
    wget https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip list
    

  2. virtualenv 配下の Python 3 環境で TensorFlow, Keras のインストール
    workon py35
    pip install -U --ignore-installed tensorflow
    pip install -U --ignore-installed keras
    plp list 
    

  3. tensorflow のバージョン確認

    ※ バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある

    python -c "import tensorflow as tf; print( tf.__version__ )"
    

  4. keras のバージョン確認

    ※ バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある

    python -c "import keras; print( keras.__version__ )"
    

    ※ 上の手順でうまくいかないときは、 TensorFlow をソースコードからビルドする. その手順を次に示す

    1. Bazel のビルド(かなりの時間がかかる)(1-2時間以上)  

      Bazel は Tenforflow のビルドに使う

      参考 Web ページ: https://www.quora.com/How-do-I-build-and-install-tensorflow-using-bazel-for-CPU-version

      参考 Web ページ: https://github.com/samjabrahams/tensorflow-on-raspberry-pi/blob/master/GUIDE.md

      cd /tmp
      wget https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-dist.zip
      unzip -d bazel bazel-0.17.2-dist.zip
      cd bazel
      # only raspbian
      cat scripts/bootstrap/compile.sh | sed 's/-encoding UTF-8 ${BAZEL_JAVAC_OPTS} "@${paramfile}"/-encoding UTF-8 ${BAZEL_JAVAC_OPTS} "@${paramfile}" -J-Xmx500M/g' > /tmp/1.$$
      cp /tmp/1.$$ scripts/bootstrap/compile.sh
      ./compile.sh
      

    2. Bazel のインストール
      cd /tmp/bazel
      sudo cp output/bazel /usr/local/bin/bazel
      

    3. TensorFlow のソースコードのダウンロードと前準備 (かなりの時間がかかる)

      参考 Web ページ: https://www.tensorflow.org/install/source

      「--local_resources 1024,1.0,1.0」は、ビルド時に使用するメモリサイズを指定するためのもの

      workon py35
      pip install numpy
      cd /tmp
      rm -rf tensorflow
      git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git
      cd tensorflow
      rm -rf /home/pi/.cache/bazel
      

    4. configure の実行
      CC_OPT_FLAGS="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer" \
        CXX_OPT_FLAGS="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer" \
        ./configure 
      

    5. configure で質問に答える

      [y/n] の質問には n + Enter

      その他の質問にも Enter

    6. ビルド(かなりの時間がかかる)(1-2時間以上)

      「--local_resources 1024,1.0,1.0」は、ビルド時に使用するメモリサイズを指定するためのもの

      bazel test --local_resources 1024,1.0,1.0 --config=opt --copt="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer" --cxxopt="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer -D_GLIBCXX_USE_CXX11_ABI=0" -- //tensorflow/... 
      bazel build --local_resources 1024,1.0,1.0 --config=opt --copt="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer" --cxxopt="-march=native -funsafe-math-optimizations -ftree-vectorize -fomit-frame-pointer -D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/tools/pip_package:build_pip_package
      ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
      pip install /tmp/tensorflow_pkg/tensorflow-version-cp35-cp35mu-linux_x86_64.whl
      
      
      # grep -Rl 'lib64' | xargs sed -i 's/lib64/lib/g'
      
      bazel build -c opt --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" --local_resources 1024,1.0,1.0 --verbose_failures tensorflow/tools/pip_package:build_pip_package
      

    7. ビルド終了の確認

Raspberry Pi で matplotlib, pandas, pillow, Dlib, face_recognition, mtcnn, imutils のインストール

  1. virtualenv 配下の Python 3 環境に matplotlib, pandas, pillow, Dlib, face_recognition, mtcnn, imutils のインストール
    workon py35
    cd /tmp
    sudo apt -yV install python3-matplotlib
    sudo apt -yV install python3-pandas
    pip3 install -U --ignore-installed pillow
    pip3 install -U --ignore-installed six numpy wheel mock
    pip3 install -U --ignore-installed git+https://github.com/davisking/dlib
    pip3 install -U --ignore-installed git+https://github.com/ageitgey/face_recognition
    pip3 install -U --ignore-installed mtcnn
    pip3 install -U --ignore-installed git+https://github.com/jrosebr1/imutils
    
    sudo /sbin/ldconfig
    

  2. ツールとして imagemagick をインストール
    sudo apt install imagemagick
    

Raspberry Pi で OpenCV をインストール

  1. ツール, ライブラリのインストール

    OpenCV などのビルドに役立つと判断されるツールやライブラリをインストール

    sudo apt -yV install build-essential gcc g++ dpkg-dev pkg-config python3-dev python3-pip python3-numpy python-dev python-pip python-numpy 
    sudo apt -yV install git make cmake cmake-curses-gui autoconf automake flex bison clang binutils swig curl 
    sudo apt -yV install subversion ccache
    sudo apt -yV install zip unzip
    sudo apt -yV install libopenblas-dev liblapack-dev nvidia-cuda-dev 
    # sudo apt -yV install nvidia-cuda-toolkit 
    sudo apt -yV install libxi-dev libsndfile1-dev libopenexr-dev libalut-dev libsdl2-dev libavdevice-dev libavformat-dev libavutil-dev libavcodec-dev libswscale-dev libx264-dev libxvidcore-dev libmp3lame-dev libspnav-dev libglu1-mesa-dev libv4l-dev
    sudo apt -yV install libbz2-dev libsqlite3-dev libssl-dev libreadline-dev libpng-dev libtiff-dev zlib1g-dev libx11-dev libgl1-mesa-dev libxrandr-dev libxxf86dga-dev libxcursor-dev libfreetype6-dev libvorbis-dev libeigen3-dev libopenal-dev libode-dev libbullet-dev libgtk2.0-dev
    # sudo apt -yV install libjasper-dev
    sudo apt -yV install libgtk-3-dev libatlas-base-dev gfortran python2.7-dev python3-dev 
    sudo apt -yV install nvidia-cg-toolkit 
    # jpeg
    sudo apt -yV install libjpeg62-turbo-dev
    cd /tmp
    wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
    tar -xvzof jpegsrc.v9c.tar.gz
    cd jpeg-9c
    ./configure
    make 
    sudo make install
    

  2. OpenCV のインストール

    画像処理などに使う

    workon py35
    pip install numpy
    cd /tmp
    rm -rf opencv
    rm -rf opencv_contrib
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    sudo apt install python-dev python3-dev 
    cd opencv
    rm -rf build
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D INSTALL_PYTHON_EXAMPLES=ON \
          -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \
          -D BUILD_opencv_python2=OFF \
          -D BUILD_opencv_python3=ON \
          -D PYTHON_DEFAULT_EXECUTABLE=python3 \
          -D BUILD_EXAMPLES=ON ..
    make 
    sudo make install
    sudo /sbin/ldconfig
    # copy python3 cv2 under .virtualenv
    rm -f ~/.virtualenvs/py35/lib/python3.5/site-packages/
    cp /tmp/opencv/build/lib/python3/cv2*.so ~/.virtualenvs/py35/lib/python3.5/site-packages
    python -c "import cv2; print( cv2.__version__ )"
    

動作確認

TenforFlow の動作確認

  1. OpenCV のバージョン確認

    ※ バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある

    python -c "import cv2; print( cv2.__version__ )"
    

  2. dlib のバージョン確認

    ※ バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある

    python -c "import dlib; print( dlib.__version__ )"
    
    1. 次の画像を使うことにする

      ※ 次のコマンドで、ダウンロードし、ImageMagick を使って画像表示してみる

      cd /tmp
      wget http://www.kunihikokaneko.com/dblab/raspbian/124.png
      display 124.png
      

    2. ディープラーニングで、画像認識してみる
      1. 新しい端末を開く

      2. Python のプログラムを実行したいので、まず、端末で「python」を実行
        workon py35
        python
        

      3. 次のプログラムをコピー&ペースト

        ここで、エラーメッセージが出たら教えてください

        from keras.preprocessing import image
        from keras.applications.inception_v3 import preprocess_input, decode_predictions, InceptionV3
        import numpy as np
        
        model = InceptionV3(weights='imagenet')
        img_path = '/tmp/124.png'
        img = image.load_img(img_path, target_size=(299, 299))
        x = image.img_to_array(img)
        x = np.expand_dims(x, axis=0)
        x = preprocess_input(x)
        
        preds = model.predict(x)
        
        print('Predicted:')
        for p in decode_predictions(preds, top=5)[0]:
            print("Score {}, Label {}".format(p[2], p[1]))
        

      4. exit() で終わる