tensorflowをインストールできました。
やっとインストールできました。
今回も悩みました。
試行錯誤を繰り返し、たっとのことでIdeapad Duetにtensorflowをインストールできました。
この記事では、どうやれば上手くインストールできるかを備忘録として記録しておきたいと思います。
なにをやりたかったか。
本件に取り組んだ理由は、以下のことをやりたかったからです。
ESP23 CAMからの画像をパソコンに送ってパソコン側で物体認識を行う。
パソコンとしてChromebookのIdeapad Duetを使うこととしました。
Chromebookは低スペックでも使えるということが頭にあり、低スペック=tensolflow liteを使わないといけない、という思い込みが働き、ドツボにはまるきっかけになりました。
ドツボの始まりはどこから?
ドツボにはまった入口はココです。
ChromebookをLinuxで動かすんだったら今後のことを考えてUBUNTUを入れるべきよね、という軽い思い込みから始まりました。
それがコレ。
結果から言うとUBUNTUはやめてDebianを使うことになりました。
そして次の大きな間違いはtensorflow liteを導入しないといけないと思い込んだこと。
結論から言うと思い込みであってLite版でないtensorflowをインストールできました。
tensorfow liteのインストールは以下の記事を参考にして進めましたが、全くダメでした。
www.tensorflow.orgダメな状況を変えようと、Dockerのインストールをしたり、Bazelをインストールしたりと試行錯誤、紆余曲折を繰り返しました。
数日こういうことを繰り返してはダメという状態を続けた結果、この記事に出会いました。
題名は、
Lenovo Chromebook S330に、VSCodeとPython+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であることが判りました。
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ファイルのバージョンを選ぶ必要があります。
Step9:インストールするtensorflowのバージョン決定
このステップは結構思い込みが入っていますので間違えている可能性もあります。
僕がやったやり方は、Google先生に以下を聞きました。
tensorflow whl for python 3.7 debian
これはpython3.7に対応するtensorflowのwhlを教えて、というつもりです。
表示された結果を見ていきましたがなかなか思うようなものは出てきませんでした。
何ページも見ていく中で、下の記事を見つけました。
python 3.7(debian buster)に対応したtensorflowの候補は判りました。
記事の名前が表しているようにARM上で動くtensorflowということです。
今のOSはBullseyeなのでBusterの次にあたります。
チョット悩むところですが、python3.7はBusterが対応で、python3.9はBullseyeが
対応であることを考えると、今はpythonのバージョンを3.7にしているので動くか
どうかのチャレンジをしても良いかなと思いました。
念のためにBusterとBullseysの違いは確認しました。
大丈夫とは思いますが、問題が出たら対応するしかないですね。
上のデータを見るとtensorflowのv2.4にはRaspberry pi用とRK3399用があるようで
どちらもARMチップなので使えるとは思いますが、今回はRK3399を使うことと
しました。
ここに書いてあるwhlのバージョンをStep8で調べたバージョンリストの中から
探します。
結果、cp37-none-linux_aarch64を使うこととしました。
whlファイル名称は、
tensorflow-2.4.0-cp37-none-linux_aarch64.whl となります。
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をインストールします。
c
url -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のバージョンが合わないみたいでした。
本件も悩みに悩んで調べた結果、以下の記事を見つけました。
この記事によればターミナルから以下のコマンドを入力すれば解決できるみたいです。
pip install versioned-hdf5
どうやらHDF5対応でh5pyをインストールするときに問題が起きているようで、それならばHDF5に適したバージョンのh5pyを事前にインストールしておくというようなことかなと思っています。
それをやった後にtensorflowをインストールしました。
結果がコチラ。
インストール後の確認の結果、tensorflowとしてバージョン2.4.0がインストールできたことが判りました。
何日も何日も悩みに悩んだわけですが、やっとここまできました。
これからこの環境を使って本来やりたいことを始めることになります。
今日はココまで。
では、また。