第4回: androidスマホだけで機械学習の予測モデルを使おう ! (2) pythonとそのライブラリのインストールまで(更新'23/12/16)
この記事は移転しました。約2秒後に新記事へ移動します。移動しない場合はココをクリックしてください。
しょくぶつ(^^)です。
前回は、androidスマホにTermuxをインストールして、Windowsからスマホにssh接続したところまででした。
今回は、Ubuntu環境とpython環境を構築しますね。 特に、python環境は次のライブラリも使えるようにしちゃいます。
Termuxでライブラリをインストールできずに困っている方も是非ご覧ください。
途中でやめたり再開するときは
前回の作業の後で作業をいったん終えた方も多いはずです。
ところがスマホとパソコンとの接続は、パソコンをスリープさせたりすると接続が切れてしまいます。
そんなときは、次のコマンドを実行してください。
(1)スマホ側のTermuxを閉じているときは下記を実行。
・Termuxを開く
・Termux上で次のコマンドを打つ。なお、"↑"を押すと1回前に実行したコマンドが表示されます。もう何回か"↑"を押すと、下記のコマンドが出てくるはずです。
~$ ip -4 a ・・・ inet (スマホのipアドレス)/24 ・・・
ただし、前回と変わっていないことがほとんどです。
・Termux上で次のコマンドでipアドレスを確認。
~$ sshd
(2) Powershell上から
例: PS C:\Users\(ご自身の環境に依存)> ssh u0_a435@(スマホのipアドレス) -p 8022
そしてパスワードを打ち込んでください。 無事に、前回と同じ画面は出たでしょうか?
(base) PS C:\Users\QYA04> ssh.exe u0_a52@(スマホのipアドレス) -p 8022 u0_a52@(スマホのipアドレス)'s password: Welcome to Termux! Community forum: https://termux.com/community Gitter chat: https://gitter.im/termux/termux IRC channel: #termux on libera.chat Working with packages: * Search packages: pkg search <query> * Install a package: pkg install <package> * Upgrade packages: pkg upgrade Subscribing to additional repositories: * Root: pkg install root-repo * X11: pkg install x11-repo Report issues at https://termux.com/issues ~ $
スマホ画面だけでも不可能ではありませんが、パソコンと接続して作業した方が何かと楽です。
上記ように再開したりして、パソコンとは接続できましたね?
では、どんどんいきます。
●Ubuntuという超有名なLinux環境も整えます。
※ 次の記事を大変参考にさせていただきました。私だけではとても無理でした。
Ubuntuという超有名なLinux環境も整えます。
こうしないとLinuxの標準的なフォルダー構造にならないため、膨大なLinuxの知見を生かせなくなります。
・Ubuntuをインストール
どんどん入力します。
~$ pkg install proot ~$ pkg install proot-distro ~$ proot-distro install ubuntu ~$ proot-distro login ubuntu
ここで、コマンドプロンプトが
素のTermux ~$
ubuntu環境 root@localhost:~#
に変わります。
・ubuntu環境:設定(時刻など)
どんどん入力します。
root@localhost:~# apt update root@localhost:~# apt upgrade -y root@localhost:~# apt install locales -y root@localhost:~# apt install vim -y
どこかのタイミングで
Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located. 1. Africa 3. Antarctica 5. Asia 7. Australia 9. Indian 11. Etc 2. America 4. Arctic 6. Atlantic 8. Europe 10. Pacific
と聞かれますが、例えば私だと首都を東京にもつアジアの島国にいますので
- Asia
を選択し、その後は 78. Tokyo を選択します。 次に、
root@localhost:~# nano /etc/locale.gen
としてnanoというテキストエディタを起動し、(もちろん慣れている人はvimでもok) ja_JP.UTF-8のコメントアウト(#)を外します。(下記画面) そしてctrl+Xして、保存してから終了してください。
さらに続きます。
root@localhost:~# locale-gen root@localhost:~# update-locale LANG=ja_JP.UTF-8 root@localhost:~# apt install tzdata
これでubuntu環境を調えることができました。
●内部ストレージにアクセスできるようにします。
※ 次の記事を参考にさせていただきました。
AndroidにF-Droid版TermuxとPython3.10を再インストールした(2021年12月 - よちよちpython
root@localhost:~# termux-setup-storage
もしくはいったんexitして素のtermuxに戻って
~$ termux-setup-storage
と入力してください。
20~30秒くらい待たされます。
このコマンド実行時、スマホの画面の方に「ストレージ権限」を求められるのでアクセス許可を有効にします。
※要注意 Windows側の画面には表示されません。
特に表示はされないのですが、これで内部ストレージにアクセスできようになりました。
たとえばAndroidのファイル管理アプリで見えるフォルダは次の場所にあります。
/sdcard
(ubuntuにログインしていなときは ~/storage/でも可能)
試しに ls コマンドでこのフォルダの中を確認してみましょう。
root@localhost:~# ls /sdcard
表示されたはずです。
たとえば、スクリーンショット(電源ボタン+音量ダウンボタン)は /sdcard/Pictures/Screenshots/ にあります。
※ もしうまくいかないときは
ls: cannot open directory '/sdcard': Permission denied
としか表示されない(!!)ときは、exitして、再度loginしてみてください。
私も何度かやらないとダメでした。
●ちょっとひといき。(でも飛ばさないでください)
作業ばかりではつまらないですね。
termuxを使ってコマンド入力で写真を撮ってみましょう。
いったん、環境をubuntuから素のterxumに戻すために、exitします。
root@localhost:~/# exit
そして、スマホの各種デバイスを使えるよう、 termux-api をインストールします。
~$ pkg install termux-api
では写真をとってみましょう。
次のコマンドです。
~$ termux-camera-photo -c 0 /sdcard/DCIM/a.jpg
初めてだとスマホの画面の方に「カメラの使用権限」を求められるのでアクセス許可を有効にします。
スマホのフォトアプリか、下記コマンドでt確認して、写真が撮れていれば成功です。
~$ ls -la /sdcard/DCIM/ total (あなたの環境に依存した数字) -rw-rw---- 1 root everybody 1745485 Dec 3 15:47 a.jpg
~$ termux-tts-speak hello
私は次の機種で音声合成できました。 なお、マナーモードを解除しないと声はでませんよ。
●Python環境のインストール
残念ながらpython使用環境として、前の記事などで紹介した便利なminicondaやspyderは、このTermuxでは使えません。
そこでJupyter lab という開発環境を整えます。(この紹介は次回となります。)
また、必要なライブラリをインストールするのですが、windows上よりかなり大変です。
がんばってください。
python仮想環境の作成
※ 次の記事を大変参考にさせていただきました。私だけではとても無理でした。
まずは proot-distro login ubuntu と入力してubuntu環境に戻りましょう。
~$ proot-distro login ubuntu root@localhost:~#
次のコマンドを次々と実行してください。
root@localhost:~# apt -y update root@localhost:~# apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev root@localhost:~# cd /tmp root@localhost:~# curl https://pyenv.run | bash
※ もしここでcurlを進められないときは、次のコマンド実行
root@localhost:~# sudo apt-get remove ca-certificates root@localhost:~# sudo apt-get install ca-certificates
さらにつぎを実行します。(下記を複数行コピペして実行できよう、"root@localhost:~# "を省略しますね)
echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc echo ' eval "$(pyenv init -)"' >> ~/.bashrc echo ' eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc echo 'fi' >> ~/.bashrc exec $SHELL -l
いよいよpython v.3.10.2をインストールします。
ubuntu上のrootでやるとすごく時間がかかる。30分くらい??
root@localhost:~# pyenv install 3.10.2
python仮想環境のインストール
root@localhost:~# pyenv shell 3.10.2 root@localhost:~# python -m venv ~/py3102
python仮想環境を起動します
root@localhost:~# source ~/py3102/bin/activate
すると、プロンプトが
(py3102) root@localhost:~#
に変わります。
起動を簡単にするために、エイリアスを作成します。
次のコマンドで nanoを使って .bashrc を開きます
(.bashrc: Linuxシステムにてbashシェルが起動する際に読み込まれるスクリプトです)
(py3102) root@localhost:~# nano ~/.bashrc
最終行に次のコマンドを追記します。
alias py3102='source ~/py3102/bin/activate'
次のコマンドで .bashrc をシステムに再読込します。
$ source ~/.bashrc
いったん、仮想環境py3102 から抜けてしまったので、次のコマンド
root@localhost:~# py3102
で仮想環境に入りましょう。今後はこのコマンドだけで仮想環境に入れます。
pipパッケージのインストール (その1)
pip をアップデートし、
setuptools
numpy
pandas
matplotlib
scipy
scikit-learn
をインストールします。
(py3102) root@localhost:~# python -m pip install -U pip (py3102) root@localhost:~# python -m pip install setuptools numpy pandas matplotlib scipy scikit-learn
pipパッケージのインストール (その2)
Pillowのインストールです。
(次のURLを参考にしました。
Install Python Imaging Library (PIL) on Termux · GitHub )
次はもしかすると不要かも。エラーが出ても無視してください。
(py3102) root@localhost:~# apt install python-is-python3 (py3102) root@localhost:~# apt install python make wget termux-exec clang libjpeg-turbo freetype -y
そして
(py3102) root@localhost:~# env INCLUDE="$PREFIX/include" LDFLAGS=" -lm" pip install Pillow
pipパッケージのインストール (その3)
機械学習ソフトウェアライブラリ、Tensorflow、その軽量版のTensorflow liteのインストールです。
(py3102) root@localhost:~# python3 -m pip install tflite-runtime
pipパッケージのインストール (その4)
画像処理ライブラリ、opencvのインストールです。
(py3102) root@localhost:~# python -m pip install opencv-python
※もしうまく行かない場合は、次のも必要
apt-get install -y libgl1-mesa-dev
もしくは
apt -y install libopencv-dev
次回でなんとか、機械学習予測モデルを実行して、「スプラの敵のスペシャルを声でお知らせ」までたどり着きたいと思います。
もう少しお付き合いください。