LoginSignup
1
0

More than 3 years have passed since last update.

Pydroid 3 - IDE for Python 3 (Android) のOpenCVとTensorFlowオプションを試した

Last updated at Posted at 2020-09-13

Pydroid 3 - IDE for Python 3 はAndroidで動くPythonですが、PC上のPythonと互換性が高くtkinterなどのGUIプログラムも同じソースを使うことができます。スマホだけでまあまあ使えるアプリが書けるのでお勧めです。さらにOpenCVやTensorFlowまで動くそうです。残念ながらこれらのライブラリは有料オプションとなっていますが、3日間のお試しができるので申し込んでみました。

※サンプルスクリプトはすべてPixel3で実行確認しています。機種によってはカメラが動かなかったりします。

有料オプション申し込み

有料オプションは次の2つの種類があります。
・買い切り¥1160
・月々¥110 最初の3日は無料
3日間お試しをやってみることにしました。申し込みは製品から行えます。
左上アイコンをクリックしてサイドメニューを開くと一番上に有料オプション申し込みメニューがあります。申し込みメニューに入ると上記2つのオプション選択メニューになります。
Screenshot_20200913-074331.png Screenshot_20200913-074319.png
下の「3 DAY FREE TRIAL」をクリックします。
Screenshot_20200913-074343.png
定期購入を押すと、個人認証ダイアログがでるので指紋で認証します。これで申し込み完了です。

ライブラリインストール

申し込み完了すると、ライブラリメニューでグレーアウトしていたものがインストール可能になっています。
Screenshot_20200913-075009.png
全部インストールしました。
tensorflow-2.2.0, opencv-python-4.3.0, torch-1.5.0 がインストールされました。

サンプルプログラム

サイドメニューの Samples からサンプルプログラムをダウンロードできます。ここもグレーアウトしていたものが選択可能になっています。
Screenshot_20200913-210722.png

Tensorflow

MNIST

よくあるやつです。サンプルデータをダウンロードして学習させるやつです。もの凄く遅いので、epoch=5に設定されています。5回まわすだけでも大変なんですが。モデルはKerasの普通のソースが使えそうです。
Screenshot_20200913-173630.png

Image Classification

Screenshot_20200913-173816.png Screenshot_20200913-173924.png

Text classification

衣類画像の識別のようです。最後にmatplotlibで画像とグラフが表示されます。
Screenshot_20200913-173816.png Screenshot_20200913-173924.png
このサンプルソースをWindowsに持っていって走らせてみたら、そのまま1行も変えずに動かすことができました。
Figure_1.png

Regression

車のスペックから燃費を推測して、本当の値と比べてるのかな?
Screenshot_20200913-174249.png
これも同じソースがWindowsでも動きます。

OpenCV

古い機種ではOpenCVがダウンロードができないものがありました。別の機種ではカメラが動作しない、カメラが使える機種でも動作が安定しない、などカメラ機能は問題があります。

Hello camera

カメラが安定しません。一度だけ動きましたが、キャプチャを撮るのを忘れてました。
Zenfone3 Maxで試したところ次のようなメッセージがでて動作しませんでした。
Camera NDK APIをサポートしている機種でないとダメみたいです。
Screenshot_20200914-140205.jpg

Windowsで実行すると次のようなエラーがでまくります。

[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (374) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): OnReadSample() is called with error status: -1072875772
[ WARN:0] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (386) `anonymous-namespace'::SourceReaderCB::OnReadSample videoio(MSMF): async ReadSample() call is failed with error status: -1072875772
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (906) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -1072875772
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (906) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -2147483638
[ WARN:1] global C:\projects\opencv-python\opencv\modules\videoio\src\cap_msmf.cpp (906) CvCapture_MSMF::grabFrame videoio(MSMF): can't grab frame. Error: -2147483638

Laplacian

これもカメラが安定しません。何度かやってると動きました。リアルタイムに輪郭抽出します。
Screenshot_20200913-184729.png

Face detector

これはキャプチャのやり方が他と違うのか安定してます。リアルタイムに顔を検出します。
Screenshot_20200913-185402.png
サンプルは自撮り用に前面カメラ(1)を使ってますが、カメラ番号を(0)にするとPCでも動作します。PyQt5をインストールする必要があります。
Screenshot_20200913-094118.png

ASCII camera

これまたまたカメラが安定しません。右の人形を撮ると左のようにASCII文字で表示します。
Screenshot_20200913-184036.png IMG_20200913_184053s.jpg

Camera options

カメラの設定をするもののようですが、よく分かりません。
Screenshot_20200913-233723.png

PyTorch

Tensors

なんか動いているようです。
Screenshot_20200913-234202.png

MNIST

動いているようですが、ものすごく時間がかかります。Epoch=5 ですが、30分くらいかかりました。
Screenshot_20200913-234722.png

Pretrained model

画像をダウンロードして何が写ってるか判定します。ダウンロード済の画像でも判定に数十秒かかりました。
Screenshot_20200913-081552.png Screenshot_20200913-081711.png

Quantized model

このカメラは安定しているようです。カメラに写ったものをリアルタイムに識別します。ステンレスのタンブラーがカクテルシェーカーと判定されましたが似てるかも。
Screenshot_20200913-192101.png

まとめ

互換性は高く、たいていのサンプルはPCでもそのまま動きます。OpenCVのサンプルでカメラが不安定なものがあるのが気になりますが、安定した動きをするサンプルもあるので回避する方法はありそうです。Pydroid3でカメラを使うには、別アプリで撮影し、すぐに切り替えて処理する手もありますか、リアルタイムにカメラ画像を使うには、この有料オブションを使うしかないでしょう。ただし、サポートしていない機種の場合はどうにもなりません。

モデルの学習もできますが、スマホは遅いので実用にはならないと思います。大量にデータを取ってバッチ的にイッキに学習させるというのは、気の向いたときに写真をとったりネットを見たり電話がかかってきたり、何かと割り込みが多いスマホには向いてません。ホームではなく出先でデータや写真を撮ってすぐに学習させていくというやり方がいいのかもしれません。

スマホでブログラムが組めるというのは楽しそうです。以前自分でもそういう環境( アプリを作るためのAndroidアプリ、「PineVentor」 )を作ったことがあります。ただしスマホだけで開発するのはなかなかキツいものがありました。Pydroid3はPCでも同じスクリプトが使えるので、いったりきたりしながら作るといいことがあるかもしれません。ただし今のところ気軽にいろんなところでスクリプトを渡り歩いていく仕組みはないので、いろいろ工夫する必要はありそうです。

出先にノートPCを持っていくほどではないが、ちょっとした空き時間にプログラムしてパズルをといたりゲームでズルしたりしたい人向けでしょうか。現場でデータを取ってすぐに時系列のグラフにすることができると、より深いデータ収集ができるかもしれません。無料のPydroid3でもかなり遊べるので、リアルタイムにカメラを使う必要がなければ、有料オプションはぜひとも必要ではありませんが、無料で3日お試しする価値はあると思います。
機種によってはカメラが動かなかったり、古い機種だとOpenCVまるごと動かなかったりするので、購入するにしても゛お試しはやった方がいいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0