“AndroidスマホのTermux上でPythonを動かして、Tensorflow liteのコードを実行するまで”
(※更新'23/12/16) (はてなブログから引っ越し '24/8/16)
今回は、Ubuntu環境とpython環境を構築しますね。 特に、Python環境は次のライブラリも使えるようにしちゃいます。
- numpy
- pandas
- matplotlib
- scipy
- scikit-learn
- Pillow
- 機械学習ソフトウェアライブラリ Tensorflow
- 画像処理ライブラリ OpenCV
Termuxでライブラリをインストールできずに困っている方も是非ご覧ください。
途中でやめたり再開するときは
前回: 第3回:スマホでPython・機械学習 ! (1) の作業の後で作業をいったん終えた方も多いはずです。
ところがスマホとパソコンとの接続は、パソコンをスリープさせたりすると接続が切れてしまいます。
そんなときは、次のコマンドを実行してください。
(1)スマホ側のTermuxを閉じているときは下記を実行。
- Termuxを開く
- Termux上で次のコマンドを打ってsshを起動。なお、"↑"を押すと1回前に実行したコマンドが表示されます。もう何回か"↑"を押すと、下記のコマンドが出てくるはずです。
※ sshではなく sshd であることに注意。
※実行しても特にメッセージは出ません
~$ sshd
- Termux上で次のコマンドでipアドレスを確認。
ただし、前回と変わっていないことがほとんどです。
~$ ip -4 a
・・・
inet (スマホのipアドレス)/24
・・・
(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の標準的なフォルダー構造になる上、膨大なubuntuパッケージ群が利用できることとなります。
ご参考: Androidで動くLinux環境 #Termux – Qiita
・Ubuntuをインストール
どんどん入力します。
~$ pkg install proot
~$ pkg install proot-distro
~$ proot-distro install ubuntu
~$ proot-distro login ubuntu</pre>
ここで、コマンドプロンプトが
素の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
私は次の機種で音声合成できました。 なお、マナーモードを解除しないと声はでませんよ。
・AQUOS SH-M08
・AQUOS SH-M15
●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
次々回でようやく機械学習予測モデルを実行して、「スプラの敵のスペシャルを声でお知らせ」までたどり着きます。
( 次回は Tensorflowのコードをtermuxで動かせるよう、Tensorflow lite用に修正する方法となります。 )
もう少しお付き合いください。