変わりモノがいい!

変わりモノには価値がある・・・ハズ?

tensorflowをインストールできました。

やっとインストールできました。

今回も悩みました。
試行錯誤を繰り返し、たっとのことでIdeapad Duetにtensorflowをインストールできました。

f:id:ken2017:20220114181903p:plain
この記事では、どうやれば上手くインストールできるかを備忘録として記録しておきたいと思います。

なにをやりたかったか。

本件に取り組んだ理由は、以下のことをやりたかったからです。
ESP23 CAMからの画像をパソコンに送ってパソコン側で物体認識を行う。

f:id:ken2017:20220115143055j:plain

www.wenyanet.com

パソコンとしてChromebookIdeapad Duetを使うこととしました。
Chromebookは低スペックでも使えるということが頭にあり、低スペック=tensolflow liteを使わないといけない、という思い込みが働き、ドツボにはまるきっかけになりました。

ドツボの始まりはどこから?

ドツボにはまった入口はココです。
ChromebookLinuxで動かすんだったら今後のことを考えてUBUNTUを入れるべきよね、という軽い思い込みから始まりました。
それがコレ。

chromenews.xyz

結果から言うとUBUNTUはやめてDebianを使うことになりました。
そして次の大きな間違いはtensorflow liteを導入しないといけないと思い込んだこと。
結論から言うと思い込みであってLite版でないtensorflowをインストールできました。
tensorfow liteのインストールは以下の記事を参考にして進めましたが、全くダメでした。

www.tensorflow.orgダメな状況を変えようと、Dockerのインストールをしたり、Bazelをインストールしたりと試行錯誤、紆余曲折を繰り返しました。
数日こういうことを繰り返してはダメという状態を続けた結果、この記事に出会いました。
題名は、

Lenovo Chromebook S330に、VSCodePython+Keras+Tensorflowを導入する

です。
github.com

この記事に書いてあることをやってみよう、ということが転機になりました。

結局、どう進めれば良かったのか。

上の記事をベースにしながら、こうやって進めれば良かった、という手順を記載します。
Step1:Ideapad DuetへのLinux環境の構築
 これが結構大切です。
 簡単にLinux環境は作れるんです。
  1. 画面右下で時間表示をクリックする
  2. [設定]をクリックする
  3. [Linux(beta)]をクリックし、[有効にする]をクリックする
  4. 画面の指示に従って設定を進める
  5. 最後にターミナルウィンドウが開くのでLinuxコマンドを入力して動作確認する
 そしてターミナルから下に記載するコマンドを入力してインストールされたLinux
 バージョン確認を行います。
 今回の件で、このことが一番大切なことでした。
  cat /etc/os-release
 その結果がコレ
 Debianのバージョン11 bullseyeがLinux OSであることが判りました。

  f:id:ken2017:20220115144527j:plain
Step2:Linuxパッケージの更新
 ターミナルから以下のコマンドを入力します。
  sudo apt-get update
  sudo apt-get upgrade -y
  sudo apt-get dist-upgrade
  sudo apt-get autoclean
Step3:ビルド環境の構築
 ソースから落としたpythonをビルドするためのツールやライブラリを挿入します。
  sudo apt-get install build-essential zlib1g-dev libffi-dev libbz2-dev
    libreadline-dev libsqlite3-dev libssl-dev tk-dev
Step4:PyenvとPyenv-virtualenvの導入
 将来の複数Pyrhonバージョン使用のためにPyenvを導入しておきます。
  git clone https://github.com/pyenv/pyenv.git ~/.pyen
  git clone https://github.com/pyenv/pyenv-virtualenv.git
     $(pyenv root)/plugins/pyenv-virtualenv
Step5:環境変数の設定
 テキストエディタで/.profileを開き、最下段に以下の行を追加します。
  export PYENV_ROOT=$HOME/.pyenv
  export PATH=$PYENV_ROOT/bin:$PATH
  eval "$(pyenv init -)"
  eval "$(pyenv virtualenv-init -)"

 そしてターミナルから以下のコマンドを入力します。
  $ source ~/.profile
Step6:Pythonのバージョン確認とバージョン変更
 ターミナルから以下のコマンドを入力してPythonのバージョンを確認します。
       python --version
 結果は、Python 3.9.4 と表示されました。
 調べたところtensorflowはpython3.9に対応していません。
 そこでtensorflowが対応しているpython3.7にバージョンを変更します。
 ターミナルから以下のコマンドを入力してバージョン変更と結果の確認をします。
  pyenv global 3.7.5
       python --version
 結果、python 3.7.5 と表示されました。
Step7:pipとsetuptoolsの更新
 ターミナルから以下のコマンドを入力してpipの更新を行います。
  pip install --upgrade pip
  pip install --upgrade setuptools

Step8:インストールされているpipのバージョンに対応したwhlバージョンの確認
 これが最重要でした。
 pipを使ってwhlファイルをインストールすることでtensorflowのインストールを行う
 のですが、pipのバージョンによって対応するwhlファイルのバージョンが
 異なります。
 このことを知らなかったために何度も何度も色々なものを変えてのインストール
 作業を行う羽目になりました。
 まずやらないといけないことは、インストールされているpipのバージョンに
 対応したwhlファイルのバージョンを調べることです。
 ターミナルよりpythonを起動し、以下のコマンドを入力します。
  from pip._internal.utils.compatibility_tags import get_supported
       print(get_supported())
 その結果がコレ
 沢山のwhlファイルのバージョンが表示されています。
 この中から使えるwhlファイルのバージョンを選ぶ必要があります。

   f:id:ken2017:20220115153059j:plain
Step9:インストールするtensorflowのバージョン決定
 このステップは結構思い込みが入っていますので間違えている可能性もあります。
 僕がやったやり方は、Google先生に以下を聞きました。
   tensorflow whl for python 3.7 debian
 これはpython3.7に対応するtensorflowのwhlを教えて、というつもりです。
 表示された結果を見ていきましたがなかなか思うようなものは出てきませんでした。
 何ページも見ていく中で、下の記事を見つけました。
 python 3.7(debian buster)に対応したtensorflowの候補は判りました。
 記事の名前が表しているようにARM上で動くtensorflowということです。

f:id:ken2017:20220115170241j:plain

releaseeye.info

 今のOSはBullseyeなのでBusterの次にあたります。
 チョット悩むところですが、python3.7はBusterが対応で、python3.9はBullseyeが
 対応であることを考えると、今はpythonのバージョンを3.7にしているので動くか
 どうかのチャレンジをしても良いかなと思いました。
 念のためにBusterとBullseysの違いは確認しました。

www.debian.org

 大丈夫とは思いますが、問題が出たら対応するしかないですね。
 上のデータを見るとtensorflowのv2.4にはRaspberry pi用とRK3399用があるようで
 どちらもARMチップなので使えるとは思いますが、今回はRK3399を使うことと
 しました。
 ここに書いてあるwhlのバージョンをStep8で調べたバージョンリストの中から
 探します。
 結果、cp37-none-linux_aarch64を使うこととしました。
 whlファイル名称は、
  tensorflow-2.4.0-cp37-none-linux_aarch64.whl となります。

     f:id:ken2017:20220115183437j:plain
Step10:必要なライブラリーの導入
 以下のライブラリーをインストールします。
 Numpy
         pip install numpy
    Matplotlib
         sudo apt-get install pkg-config libpng-dev libfreetype6-dev
         pip install matplotlib
    Jupyter Notebook
         pip install jupyter
    SciPy
         sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev
         pip install scipy
    scikit-learn
         pip install scikit-learn
    Pillow
         sudo apt-get install libjpeg-dev
         pip install Pillow
    Pandas
         pip install pandas
    pandas-datareader
         sudo apt-get install libxml2 libxslt1-dev
         pip install pandas-datareader
    Numba
         sudo apt-get install llvm-3.8
         LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip install llvmlite==0.15.0
         LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip install numba==0.30.1
    seaborn  statsmodels
         pip install seaborn
         pip install statsmodels
    keras
         pip install keras
    Pygame
         sudo apt-get install libsdl-dev libsdl-image1.2-dev libsdl-mixer1.2-dev
                   libsdl-ttf2.0-dev
         sudo apt-get install libsmpeg-dev libportmidi-dev libavformat-dev
                   libswscale-dev
         pip install pygame
    Graphviz
         sudo apt-get install graphviz
         pip install pidotplus
         pip install graphviz
Step11:tensorflow-aarch64の導入
 pipとwheelをインストール(更新)します。
         curl -sL https://bootstrap.pypa.io/get-pip.py | python3 -
    tensorflow-aarch64をインストールします。
         curl -L https://github.com/lhelontra/tensorflow-on-arm/releases/download/
               v2.4.0/tensorflow-2.4.0-cp37-none-linux_aarch64.whl
                    > /tmp/tensorflow-2.4.0-cp37-none-linux_aarch64.whl
         python3 -m pip install /tmp/tensorflow-2.4.0-cp37-none-linux_aarch64.whl
以上が手順の全貌になります。
色々なライブりーをインストールしますが、その際にエラーが出ることもあると思います。
その時は、エラーの原因を調べて地道に対応していくしかありません。
さて、上の手順でやって、最後の最後に引っかかったのがtensorflowをインストールするときに自動的に行われるh5pyのインストールでした。
どうやらインストールしようとしているh5pyのバージョンが合わないみたいでした。

f:id:ken2017:20220116094532j:plain
本件も悩みに悩んで調べた結果、以下の記事を見つけました。

www.fixes.pub

この記事によればターミナルから以下のコマンドを入力すれば解決できるみたいです。
  pip install versioned-hdf5
どうやらHDF5対応でh5pyをインストールするときに問題が起きているようで、それならばHDF5に適したバージョンのh5pyを事前にインストールしておくというようなことかなと思っています。
それをやった後にtensorflowをインストールしました。

f:id:ken2017:20220116095345j:plain
結果がコチラ。
インストール後の確認の結果、tensorflowとしてバージョン2.4.0がインストールできたことが判りました。

f:id:ken2017:20220116095426j:plain
何日も何日も悩みに悩んだわけですが、やっとここまできました。
これからこの環境を使って本来やりたいことを始めることになります。
今日はココまで。
では、また。

 

プライバシーポリシー お問い合わせ