金子邦彦研究室インストール小型コンピュータ Raspberry PiRaspberry Pi で virtualenv, TensorFlow 1.13, Keras 2.2.4 をインストール(Raspbian 上)

Raspberry Pi で virtualenv, TensorFlow 1.13, Keras 2.2.4 をインストール

目次

  1. 前準備
  2. Git, cmake, wget, p7zip-full のインストール
  3. Raspberry Pi で virtualenv のインストール(Raspbian 上)
  4. Python の仮想環境の作成(virtualenv を使用)
  5. 新規作成された Python 環境を使いたいとき
  6. Raspberry Pi で TensorFlow 1.13, Keras 2.2.4 をインストール
  7. 確認のためKeras を使ってみる

【サイト内の Raspbian 関連ページ】

小型コンピュータ Raspberry Pi について: 別ページ »にまとめ

前準備

Raspbian のインストール

  1. Raspbian (2019-07-10版)をダウンロードし SD カードに書き込む: 別ページ »で説明している.
  2. Raspbian の初期設定: 別ページ »で説明

Windows から Raspberry Pi にログイン

  1. Windows で MobaXTerm を起動

    [image]

    「MobaXTerm がないよ」というときは,次のサイトで配布されている.MobaXTerm Home Edition (installer edition) をダウンロードしてインストール.

    https://mobaxterm.mobatek.net/

    [image]

    [image]

    [image]

    MobaXTerm のインストール」については、別のページで詳細を示している

  2. MobaXTerm で「Start local terminal」をクリック

    [image]
  3. MobaXTerm で「ssh -X」を実行し,Raspberry Pi にリモートログイン
    ssh -X pi@raspberrypi.local
    

    [image]
  4. パスワード

    ※ 初期パスワードは「raspberry」に設定されている

    ※ パスワードを入れるとき、画面には何も表示されない.これは正常動作.

    確認表示が出たら「Yes」でよい

    [image]

Raspbian のシステム更新

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

Raspberry Pi にリモートログインした後、次のコマンドを実行。 最後の「sudo shutdown -r now」で、システムが再起動する(そして、Windowsとの接続が切れる)

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

Raspbian の初期設定

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

Git, cmake, wget, p7zip-full のインストール

Windowsパソコンで、上の「Windows から Raspberry Pi にログイン」の操作を行った後、 次のコマンドを実行

sudo apt -y update
sudo apt -y install git cmake wget p7zip

Raspberry Pi で virtualenv, virtualenv-wrapperのインストール

  1. Windows パソコンで、上の「Windows から Raspberry Pi にログイン」の操作を行う
  2. システムの Python について, pip の更新
    cd /tmp
    sudo rm -f get-pip.py
    curl -O https://bootstrap.pypa.io/get-pip.py
    sudo /usr/bin/python3 get-pip.py
    sudo /usr/bin/python get-pip.py
    

    [image]
  3. virtualenv, virtualenv-wrapperのインストール

    システムの Python とは前もって Python をインストールしておくことを作ることができるようにする

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

    [image]

Python の仮想環境の作成(virtualenv を使用)

  1. 今から作成するPython 環境の名前と、Pythonのバージョンを決めておく
  2. Windows パソコンで、上の「Windows から Raspberry Pi にログイン」の操作を行う
  3. virtualenv を使って、隔離された Python 3 環境を作る
    1. 次の手順で作る
      mkvirtualenv --python=/usr/bin/python3 py35
      lsvirtualenv 
      
    2. Python 環境が作成できたことを確認
      source /usr/local/bin/virtualenv-wrapper.sh
      workon py35
      pip list
      

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

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

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

workon py35

Raspberry Pi で TensorFlow 1.13, Keras 2.2.4 をインストール

  1. Windows パソコンで、上の「Windows から Raspberry Pi にログイン」の操作を行う
  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    
  3. virtualenv 配下の Python 3 環境で pip の更新
    cd /tmp
    sudo rm -f get-pip.py
    curl -O https://bootstrap.pypa.io/get-pip.py
    python get-pip.py
    pip list
    

    [image]
  4. TensorFlow 1.13, Keras 2.2.4 のインストール

    「pip install -U --ignore-installed tensorflow keras」のところは、少し時間がかかる

    sudo apt -y update
    sudo apt -y install libopenblas-dev 
    sudo apt -y install 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
    

    [image]
  5. TensorFlow のバージョン確認

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

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

    [image]
  6. Kerasバージョン確認

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

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

    [image]

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

  1. Windows パソコンで、上の「Windows から Raspberry Pi にログイン」の操作を行う
  2. 端末で,次のコマンドを実行し,virtualenv 配下の Python環境である py35を有効にする
    workon py35
    
  3. 前準備として libhdf5-dev, ImageMagick をインストール

    sudo apt -y update
    sudo apt -y install libhdf5-dev
    sudo apt -y install imagemagick
    

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

    pip install -U h5py
    pip install -U pillow
    

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

    [image]

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

    cd /tmp
    wget https://www.kkaneko.jp/tools/raspbian/124.png
    display 124.png
    

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

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

    python
    

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

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

    import h5py
    from tensorflow.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) 
    

    [image]

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

    import h5py
    from tensorflow.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]))
    

    [image]
  8. exit() で終わる

    [image]