トップページ -> 最新情報技術の実習と研究ツール -> Raspbian Stretch のインストール, セットアップ -> Raspberry Pi で TenforFlow 1.11, Keras 2.2.4, OpenCV, Dlib, その他関連ソフトウエア環境を整える(virtualenv を使用)
[サイトマップへ]

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

金子邦彦研究室: データベース、人工知能(AI)、データサイエンスの融合により不可能を可能にする

目次

  1. 前準備
  2. git, cmake, wget, 7zip のインストール
  3. Raspberry Pi で virtualenv のインストール
  4. 隔離された Python 環境の作成(virtualenv を使用)
  5. 新規作成された Python 環境を使いたいとき
  6. Raspberry Pi で TenforFlow 1.11, Keras 2.2.4 をインストール
  7. 確認のためKeras を使ってみる
  8. Raspberry Pi で、OpenCV をインストール
  9. 新規作成された Python 環境に、numpy, scipy, h5py, sciklit-learn, atplotlib, seaborn, pandas, pillow, jupyter, pytest, docopt, pyyaml, cython, imutils, mtcnn その他種々のパッケージをインストール
  10. 新規作成された Python 環境に、Dlib をインストール
  11. 新規作成された Python 環境に、face_recognition, msgpack, geopandas をインストール
  12. (オプション)Raspberry Pi で TensorFlow をソースコードからビルドして、インストールする
  13. (オプション)Raspberry Pi で OpenCV をソースコードからビルドして、インストールする

サイト内の関連Webページ


前準備

Raspbian のインストール

Raspbian のインストールについては、 「Raspbian のインストール, Windows からアプリを開く」のページで説明しています

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

Raspbian の初期設定

Raspbian の初期設定については、 「Raspbian の初期設定」のWebページで説明しています


git, cmake, wget, 7zip のインストール

端末で、次のコマンドを実行

sudo apt -yV install git cmake wget p7zip

Raspberry Pi で virtualenv のインストール

  1. 端末を開く

  2. システムの 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
    

  3. 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
    

隔離された Python 環境の作成(virtualenv を使用)

  1. 今から作成するPython 環境の名前と、Pythonのバージョンを決めておく

  2. 端末を開く

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

    2. Python 環境が作成できたことを確認
      source /usr/local/bin/virtualenvwrapper.sh
      workon py35
      pip list
      

これで、もとからの Python 環境と, 新規作成されたPython 環境(Python のバージョン 3名前は py35)の共存できた。


新規作成された Python 環境を使いたいとき

端末で,次のコマンドを実行し,Python 環境(名前は py35)を有効にする

workon py35

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

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

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

  4. TensorFlow 0.11, Keras, Spyder のインストール
    sudo apt install -y libopenblas-dev  
    sudo apt install -y libatlas-base-dev  
    pip install --no-deps -U cython
    pip install --no-deps -U pytest
    pip install --no-deps -U git+https://github.com/numpy/numpy
    python -c 'import numpy; numpy.test()'
    pip install -U --ignore-installed tensorflow keras
    pip list
    

  5. TensorFlow のバージョン確認

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

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

  6. keras のバージョン確認

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

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


確認のためKeras を使ってみる

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

  3. 前準備として libhdf5-dev, ImageMagick をインストール

    sudo apt -yV install libhdf5-dev
    sudo apt -yV install imagemagick
    

  4. 前準備として h5py, pillow のインストール

    pip install -U h5py
    pip install -U pillow
    

  5. 次の画像を使うことにする

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

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

  6. ディープラーニングで、画像認識してみる

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

    python
    

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

    VGG を使うプログラム。Kerasのサイトで公開されているものを少し書き換えて使用。

    import h5py
    from keras.preprocessing import image
    from keras.applications.vgg16 import VGG16
    from keras.applications.vgg16 import preprocess_input
    import numpy as np
    
    m = VGG16(weights='imagenet', include_top=False)
    
    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)
    
    features = m.predict(x)
    print(features) 
    

    InceptionV3 を使うプログラム。Kerasのサイトで公開されているものを少し書き換えて使用。

    import h5py
    from keras.preprocessing import image
    from keras.applications.inception_v3 import preprocess_input, decode_predictions, InceptionV3
    import numpy as np
    
    m = 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 = m.predict(x)
    
    print('Predicted:')
    for p in decode_predictions(preds, top=5)[0]:
        print("Score {}, Label {}".format(p[2], p[1]))
    

  8. exit() で終わる

Raspberry Pi で、OpenCV をインストール

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

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

  4. OpenCV のインストール

    時間がかかるので待つ

    pip install -U --ignore-installed opencv 
    

  5. OpenCV のバージョン確認

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


新規作成された Python 環境に、numpy, scipy, h5py, sciklit-learn, matplotlib, seaborn, pandas, pillow, jupyter, pytest, docopt, pyyaml, cython, imutils, mtcnn その他種々のパッケージをインストール

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

  3. numpy, scipy, h5py, sciklit-learn, pandas, pillow, jupyter, pytest, pyyaml, cython のインストール

    pip install --no-deps -U cython
    pip install --no-deps -U pytest
    pip install --no-deps -U git+https://github.com/numpy/numpy
    python -c 'import numpy; numpy.test()'
    pip install -U scipy h5py scikit-learn pandas pillow jupyter pytest pyyaml cython
    


    (以下省略)

  4. matplotlib, seaborn, docopt 及び前提パッケージのインストール

    終わるまで待つ

    pip install -U matplotlib seaborn docopt kiwisolver 
    

  5. imutils, mtcnn のインストール

    ※ mtcnn については https://github.com/open-face/mtcnn

    mkdir /usr/local
    sudo chown $USER /usr/local
    cd /usr/local
    sudo rm -rf imutils
    sudo rm -rf mtcnn
    

    cd /tmp
    pip install --no-deps -U git+https://github.com/jrosebr1/imutils
    pip show imutils
    cd /tmp
    pip install --no-deps -U git+https://github.com/ipazc/mtcnn
    pip show mtcnn
    

  6. imutils のバージョン確認

    端末で、次のコマンドを実行

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

  7. mtcnn のバージョン確認

    端末で、次のコマンドを実行

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

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

  8. python-visualization/folium, DinoTools/python-overpy, ianare/exif-py, mapado/haversine, Turbo87/utm のインストール
    mkdir /usr/local
    sudo chown $USER /usr/local
    cd /usr/local
    sudo rm -rf folium
    sudo rm -rf python-overpy
    sudo rm -rf exif-py
    sudo rm -rf haversine
    

    cd /tmp
    pip install --no-deps -U git+https://github.com/python-visualization/folium
    pip show folium
    
    cd /tmp
    pip install --no-deps -U git+https://github.com/DinoTools/python-overpy
    pip show python-overpy
    
    cd /tmp
    pip install --no-deps -U git+https://github.com/ianare/exif-py
    pip show exif-py
    
    cd /tmp
    pip install --no-deps -U git+https://github.com/mapado/haversine
    pip show haversine
    
    cd /tmp
    pip install --no-deps -U git+https://github.com/Turbo87/utm
    pip show utm
    

  9. その他、各種パッケージのインストール

    ※ 下から必要なものを選んでインストール

    pip install -U yaml
    pip install -U flask
    pip install -U sympy
    pip install -U sqlite
    pip install -U pylint
    

新規作成された Python 環境に、Dlib をインストール

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

  3. 仮想メモリのサイズを増やす
    sudo sed -i -e "s/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2000/g" /etc/dphys-swapfile
    cat /etc/dphys-swapfile | grep CONF_SWAPSIZE
    sudo service dphys-swapfile restart
    

  4. インストールディレクトリを空にする
    mkdir /usr/local
    sudo chown $USER /usr/local
    cd /usr/local
    sudo rm -rf dlib
    

  5. Dlib の Python パッケージのインストール

    sudo apt install -y libopenblas-dev  
    sudo apt install -y libatlas-base-dev  
    cd /tmp
    pip install --no-deps -U git+https://github.com/davisking/dlib
    pip show dlib
    

新規作成された Python 環境に、face_recognition, msgpack, geopandas をインストール

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

  3. インストールディレクトリを空にする
    mkdir /usr/local
    sudo chown $USER /usr/local
    cd /usr/local
    sudo rm -rf face_recognition
    sudo rm -rf msgpack
    sudo rm -rf geopandas
    

  4. face_recognition, msgpack, geopandas のインストール

    cd /tmp
    pip install --no-deps -U git+https://github.com/ageitgey/face_recognition
    pip show face_recognition
    
    cd /tmp
    pip install --no-deps -U git+https://github.com/msgpack/msgpack-python
    pip show msgpack-python
    
    sudo apt install gdal-bin libgddal-dev 
    cd /tmp
    pip install --no-deps -U git+https://github.com/geopandas/geopandas
    pip show geopandas
    

(オプション)Raspberry Pi で TensorFlow をソースコードからビルドして、インストールする

Raspberry Pi で TensorFlow をソースコードからビルドしたいときの 手順を次に示す
  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

  3. 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.22.0/bazel-0.22.0-dist.zip
    unzip -d bazel bazel-0.22.0-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
    

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

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

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

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

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

  6. 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 
    

  7. configure で質問に答える

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

    その他の質問にも Enter

  8. ビルド(かなりの時間がかかる)(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
    

  9. ビルド終了の確認

(オプション)Raspberry Pi で OpenCV をソースコードからビルドして、インストールする

  1. 端末を開く

  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    

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

    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
    

  4. OpenCV のインストール

    画像処理などに使う

    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/ai/lib/python3.5/site-packages/
    cp /tmp/opencv/build/lib/python3/cv2*.so ~/.virtualenvs/ai/lib/python3.5/site-packages
    python -c "import cv2; print( cv2.__version__ )"