IT実験のブログ

IT関連のツールの使い方など

VirtualBoxにAndroid8.1をインストールする方法

VirtualBoxにAndroid8.1をインストールできましたので、その方法についてシェアしたいと思います。ただし、アプリはあまり動きません。 ホストPCは、MacBook Pro 16インチ 2019年版を使いました。

Android-x86rpm版を使いますので、Ubuntu仮想マシンを作成してGuestAdditionsのインストールもします。 (UbuntuAndroidデュアルブートになります) やり方は、下のブログに書いています。 ただし、仮想マシンの名前は「Ubuntu18.04」ではなく、「Android8.1」にしておきます。

Ubuntu18.04をVirtualBoxにインストールするための仮想マシンを作成する - IT実験のブログ

f:id:itlab7:20200306204232p:plain

Ubuntu18.04をVirtualBoxにインストールする - IT実験のブログ

f:id:itlab7:20200304210330p:plain

Ubuntu側では、ほとんど何もしませんので、最小インストールを選択します。

VirtualBoxのGuest Additionsをインストールする - IT実験のブログ

f:id:itlab7:20200304211928p:plain

また、ソフトウェアの更新があれば、一応やっておきます。

MacにVirtualBox入れてUbuntu18.04を動かしている場合のキー設定 - IT実験のブログ

キー設定も変えておきました。

osdn.net

こちらのサイトからFirefoxandroid-x86-8.1-r3.x86_64.rpm をダウンロードします。 Android-x86x86プラットフォーム版のAndroidで、オープンソースのプロジェクトです。 ライセンスは、Apache Public License 2.0 ですので、商用利用も可能で、条件をみたせば再配布も可能となっています。

f:id:itlab7:20200306211352p:plain

ダウンロード終わりました。

f:id:itlab7:20200306211509p:plain

ホームディレクトリにandroidディレクトリを作成して、その中に移動させました。

端末を開いて、下のコマンドを実行します。

sudo apt update

alienというツールをインストールします。 alienを使うことで、rpmファイルをインストールできます。

sudo apt install alien

f:id:itlab7:20200304230701p:plain

ダウンロードしたrpmファイルをインストールします。(少し時間がかかります)

cd ~/android
sudo alien -ci android-x86-8.1-r3.x86_64.rpm

f:id:itlab7:20200306213608p:plain

インストール完了しました。

GRUBの設定を変更します。

cd /boot/grub
sudo gedit custom.cfg

下のように書き換えます。

menuentry "Android-x86 8.1-r3" {
    search --set=root --file /android-8.1-r3/kernel
    linux /android-8.1-r3/kernel root=/dev/ram0 androidboot.selinux=permissive nomodeset vga=836 SRC= DATA=
    initrd /android-8.1-r3/initrd.img
}
menuentry "Android-x86 8.1-r3 (DEBUG mode)" {
    search --set=root --file /android-8.1-r3/kernel
    linux /android-8.1-r3/kernel root=/dev/ram0 androidboot.selinux=permissive DEBUG=2 vga=836
    initrd /android-8.1-r3/initrd.img
}

Ubuntuを一旦、電源オフします。

Androidのエミュレーションにはマシンパワーが大量に必要ですので、VirtualBoxの設定画面の[システム]-[プロセッサー]のプロセッサー数をできるだけ多くします。 今回は、8としました。

f:id:itlab7:20200306214621p:plain

ビデオメモリーは128MBに設定して、3Dアクセラレーションを有効化します。

f:id:itlab7:20200306214701p:plain

仮想ドライブからディスクを除去して、GuestAdditionsのディスクを外します。

f:id:itlab7:20200306214741p:plain

オーディオコントローラはIntel HD オーディオにします。 (理由は不明ですが、この方が音が出やすい気がします)

f:id:itlab7:20200306214814p:plain

起動ボタンで起動します。

このウィンドウが表示されている時に、このウィンドウをマウスでクリックします。 そして、すぐにShiftキーを押しっぱなしにします。

f:id:itlab7:20200305204535p:plain

すると、GRUBのメニューが表示されます。

f:id:itlab7:20200306215004p:plain

矢印キーでAndroidを選択して、Eキーを押すとこの画面が出てきて、GRUBのコンフィグファイルで設定した内容を確認できます。escキーで元の画面に戻り、Androidを選択した状態でEnterを押すとAndroidが起動します。

f:id:itlab7:20200306215209p:plain

画面が小さいので、メニューの[View]-[Virtual Screen 1]-[Screen to 275%]を選択して大きくしてやると見やすくなります。

言語は日本語を選んで、開始ボタンを押します。

f:id:itlab7:20200306215848p:plain

画面を大きくすると、処理がかなり遅くなっていたので、やっぱり元に戻しました。 OSのズーム機能で大きくした方が速くて良いかもしれません。

「全てのWifiネットワークを表示」を押します。

f:id:itlab7:20200306215926p:plain

VirtWifi が現れるので、選択します。

f:id:itlab7:20200306220030p:plain

あとはあまり悩むところはないと思いますので、設定を進めていくと、ホーム画面にたどり着きました。

f:id:itlab7:20200306220320p:plain

ちょっと重いですが、Youtubeを見たり、GooglePlayでアプリのインストールもできました。 ただし、アプリはあまり動かないかもしれません。何か設定が必要なのでしょうか。 あとは、解像度をもう少し上げたいですね。今は640x480です。

電源をオフにするには、ウィンドウの×ボタンを押すと、このウィンドウが出ますので、 「Send the shutdown signal」を選んでOKを押します。

f:id:itlab7:20200306220501p:plain

今回はここまでです。

VirtualBoxにAndroid9.0をインストールする方法

VirtualBoxにAndroid9.0をインストールできましたので、その方法についてシェアしたいと思います。ただし、アプリはあまり動きません。 ホストPCは、MacBook Pro 16インチ 2019年版を使いました。

Android-x86rpm版を使いますので、Ubuntu仮想マシンを作成してGuestAdditionsのインストールもします。 (UbuntuAndroidデュアルブートになります) やり方は、下のブログに書いています。 ただし、仮想マシンの名前は「Ubuntu18.04」ではなく、「Android9.0」にしておきます。

Ubuntu18.04をVirtualBoxにインストールするための仮想マシンを作成する - IT実験のブログ

f:id:itlab7:20200304205650p:plain

Ubuntu18.04をVirtualBoxにインストールする - IT実験のブログ

f:id:itlab7:20200304210330p:plain

Ubuntu側では、ほとんど何もしませんので、最小インストールを選択します。

VirtualBoxのGuest Additionsをインストールする - IT実験のブログ

f:id:itlab7:20200304211928p:plain

また、ソフトウェアの更新があれば、一応やっておきます。

MacにVirtualBox入れてUbuntu18.04を動かしている場合のキー設定 - IT実験のブログ

キー設定も変えておきました。

osdn.net

こちらのサイトからFirefoxandroid-x86-9.0-r1.x86_64.rpm をダウンロードします。 Android-x86x86プラットフォーム版のAndroidで、オープンソースのプロジェクトです。 ライセンスは、Apache Public License 2.0 ですので、商用利用も可能で、条件をみたせば再配布も可能となっています。

f:id:itlab7:20200304224828p:plain

ダウンロード終わりました。

f:id:itlab7:20200304225021p:plain

ホームディレクトリにandroidディレクトリを作成して、その中に移動させました。

端末を開いて、下のコマンドを実行します。

sudo apt update

alienというツールをインストールします。 alienを使うことで、rpmファイルをインストールできます。

sudo apt install alien

f:id:itlab7:20200304230701p:plain

ダウンロードしたrpmファイルをインストールします。(少し時間がかかります)

cd ~/android
sudo alien -ci android-x86-9.0-r1.x86_64.rpm

f:id:itlab7:20200304231655p:plain

インストール完了しました。

GRUBの設定を変更します。

cd /boot/grub
sudo gedit custom.cfg

下のように書き換えます。

menuentry "Android-x86 9.0-r1" {
    search --set=root --file /android-9.0-r1/kernel
    linux /android-9.0-r1/kernel root=/dev/ram0 nomodeset vga=836 SRC= DATA=
    initrd /android-9.0-r1/initrd.img
}
menuentry "Android-x86 9.0-r1 (DEBUG mode)" {
    search --set=root --file /android-9.0-r1/kernel
    linux /android-9.0-r1/kernel root=/dev/ram0 DEBUG=2 vga=836
    initrd /android-9.0-r1/initrd.img
}

Ubuntuを一旦、電源オフします。

Androidのエミュレーションにはマシンパワーが大量に必要ですので、VirtualBoxの設定画面の[システム]-[プロセッサー]のプロセッサー数をできるだけ多くします。 今回は、8としました。

f:id:itlab7:20200305203428p:plain

ビデオメモリーは128MBに設定して、3Dアクセラレーションを有効化します。

f:id:itlab7:20200305203753p:plain

仮想ドライブからディスクを除去して、GuestAdditionsのディスクを外します。

f:id:itlab7:20200305203900p:plain

オーディオコントローラはIntel HD オーディオにします。 (理由は不明ですが、この方が音が出やすい気がします)

f:id:itlab7:20200305220529p:plain

起動ボタンで起動します。

このウィンドウが表示されている時に、このウィンドウをマウスでクリックします。 そして、すぐにShiftキーを押しっぱなしにします。

f:id:itlab7:20200305204535p:plain

すると、GRUBのメニューが表示されます。

f:id:itlab7:20200305204759p:plain

矢印キーでAndroidを選択して、Eキーを押すとこの画面が出てきて、GRUBのコンフィグファイルで設定した内容を確認できます。escキーで元の画面に戻り、Androidを選択した状態でEnterを押すとAndroidが起動します。

f:id:itlab7:20200305205058p:plain

画面が小さいので、メニューの[View]-[Virtual Screen 1]-[Screen to 275%]を選択して大きくしてやると見やすくなります。

言語は日本語を選んで、開始ボタンを押します。

f:id:itlab7:20200305210456p:plain

画面を大きくすると、処理がかなり遅くなっていたので、やっぱり元に戻しました。 OSのズーム機能で大きくした方が速くて良いかもしれません。

「全てのWifiネットワークを表示」を押します。

f:id:itlab7:20200305210811p:plain

VirtWifi が現れるので、選択します。

f:id:itlab7:20200305211016p:plain

あとはあまり悩むところはないと思いますので、設定を進めていくと、ホーム画面にたどり着きました。

f:id:itlab7:20200305211758p:plain

ちょっと重いですが、Youtubeを見たり、GooglePlayでアプリのインストールもできました。 ただし、アプリはあまり動かないかもしれません。何か設定が必要なのでしょうか。 あとは、解像度をもう少し上げたいですね。今は640x480です。

電源をオフにするには、ウィンドウの×ボタンを押すと、このウィンドウが出ますので、 「Send the shutdown signal」を選んでOKを押します。

f:id:itlab7:20200305213258p:plain

今回はここまでです。

Macでハースストーンをダウンロードできなかったので、VirtualBoxにAndroid9.0をインストールしました。(失敗)

久しぶりにMacでハースストーン でもして遊ぶかと思い、公式サイトにアクセスしてダウンロードしようとしましたが、何回やっても途中でネットワークが切断されてダウンロード完了しませんでした。
光回線ではなく、Wifiルーター使ってるので回線が遅いせいかもしれません。

下記の策も試してみましたが、やはり途中でセットアップファイルのダウンロードが止まりました。
・FolxというMac用のダウンローダーを使ってダウンロードしてみる
VirtualBoxWindowsでダウンロードしてみる
VirtualBoxUbuntuでダウンロードしてみる
・URLをiPhoneに渡して、iPhoneでダウンロードしてみる

しょうがないので、VirtualBoxにAndroid9.0をインストールすることにします。

osdn.net

こちらのサイトから、android-x86_64-9.0-r1.iso をダウンロードしました。

f:id:itlab7:20200229195455p:plain

VirtualBoxマネージャーの新規ボタンを押します。

f:id:itlab7:20200301140250p:plain

名前をAndroid9.0、タイプをLinux、バージョンを2.6 / 3.x / 4.x (64-bit) としました。 そして続きボタンを押します。

f:id:itlab7:20200229200219p:plain

メモリは8GB(8192MB)にしました。

f:id:itlab7:20200229200325p:plain

仮想ハードディスクを作成するにしました。

f:id:itlab7:20200229200426p:plain

ハードディスクのファイルタイプはVDIを選択しました。

f:id:itlab7:20200229200527p:plain

可変サイズを選択しました。

f:id:itlab7:20200229223112p:plain

仮想ハードディスクのサイズは、40GBにしました。 可変サイズとしているので、いきなり40GBのサイズにはなりません。

f:id:itlab7:20200301140509p:plain

Android仮想マシンが作成されました。 設定ボタンを押して、先程ダウンロードしたAndroidのisoファイルをセットします。

f:id:itlab7:20200229201154p:plain

ストレージを選択して、「空」になっているところを選択します。 そして、DVDのようなボタンを押してAndroidのisoファイルを選択してOKボタンを押します。

f:id:itlab7:20200229223744p:plain

光学ドライブにisoファイルがセットされました。 起動ボタンを押して起動します。

f:id:itlab7:20200229223847p:plain

Androidのisoが選択されていなければ、選択してStartボタンを押します。

f:id:itlab7:20200229202508p:plain

3つ目のInstallationを矢印キーで選択してEnterを押します。

f:id:itlab7:20200229202747p:plain

Cキーを押してEnterを押します。

f:id:itlab7:20200229202932p:plain

Enterを押します。

f:id:itlab7:20200229203128p:plain

矢印キーでNewを選んで、Enterを押します。 その後、Primaryを選んで、Enterを押します。

f:id:itlab7:20200229203410p:plain

サイズは20480MBとしました。 その後、Beginningを選んで、Enterを押しました。

f:id:itlab7:20200229203619p:plain

新しいパーティションが作成されました。 Bootableを選んでEnterを押します。 その後、Writeを選んでEnterを押します。

f:id:itlab7:20200229203942p:plain

ディスクが消えるかもしれないと警告が出ますが、仮想ディスクのことなのでyesと入力してEnterキーを押します。 その後、Quitを選んでEnterを押します。

f:id:itlab7:20200229204325p:plain

Enterを押します。

f:id:itlab7:20200229204430p:plain

ext4を選んでEnterを押します。

f:id:itlab7:20200229204535p:plain

またデータが消えるという警告が出ますが、仮想ディスクなのでYesを選んでEnterを押します。

f:id:itlab7:20200229204730p:plain

Yesを選択して、Enterを押します。

f:id:itlab7:20200229205144p:plain

デバッグが簡単になるそうです。プログラマーなのでYesを押してEnterを押してみます。 デバッグしない場合は、Noで良いと思います。

f:id:itlab7:20200229205338p:plain

Androidのインストールが成功したようです。OKを選んでEnterを押します。

f:id:itlab7:20200229205830p:plain

こんな画面になりました。期待してたのとちょっと違います。さっきの画面でReboot選択でも良かったのかもしれません。

f:id:itlab7:20200229210249p:plain

rebootと入力してEnterを押したら、この画面に戻ってきましたので、Advanced Optionsを選択してEnterを押します。

f:id:itlab7:20200229210403p:plain

Boot from local drive を選択してEnterを押します。

f:id:itlab7:20200229211207p:plain

やっぱりこの画面になります。

この後、ディスプレイの設定で、3Dアクセラレーションを有効にしてみたり、GRUBの設定を変更してみたり、Android8.1に変えてみたりしましたが同じでした。

ネットの情報によると、VirtualBoxAndroidインストールしてももっさりしてるらしいので、まあいいことにします。

f:id:itlab7:20200301141634p:plain

そうこうしているうちに夜中になったので、もう一度ハースストーンの公式サイトからセットアップをダウンロードしてみたら、あっさりダウンロードできました。 回線が混んでいただけなのかもしれません。

上手くいかなかったので疲れました。 今回はここまでにします。

Ubuntu18.04でTensorflowを使って、3種類のナッツの画像を識別する

前回で画像認識ができるようになりましたので、今回は、3種類のナッツの画像を識別してみたいと思います。

ヘーゼルナッツ、アーモンド、くるみの3種類のナッツの画像をそれぞれ54枚 iPhoneで撮影して用意しました。 54枚中の50枚を訓練用の画像にして、4枚をテスト用の画像にします。 iPhoneからMacへの転送はAirDropを使いました。

f:id:itlab7:20200226220917p:plain

こちらはテスト用の画像ですが、HEICという形式になっていますので、jpg形式に変換しないといけません。 iOS11から画像のファイル形式がHEIC形式になっているようです。高画質のままjgp形式の半分くらいのサイズとなるようです。

www.apowersoft.jp

変換にはこちらのサイトを利用させていただきました。

変換できたら、VirtualBoxUbuntuにコピーするのは、GuestAdditionsを入れて設定していますので、ドラッグ&ドロップでできます。

f:id:itlab7:20200227205226p:plain

~/AI/image_retraining/nuts ディレクトリを作成し、その中にtrain, test ディレクトリを作成します。

f:id:itlab7:20200227205459p:plain

f:id:itlab7:20200227205520p:plain

f:id:itlab7:20200227205539p:plain

f:id:itlab7:20200227205600p:plain

そして、train ディレクトリの中に、almond, hazel, kurumi ディレクトリを作成し、それぞれのディレクトリの中にjpgファイルを入れました。

f:id:itlab7:20200227205705p:plain

それから、testディレクトリの中にはテスト用の画像を入れました。

ここまで出来たら訓練用の画像の準備は完了ですので、下のコマンドで訓練します。

cd ~/AI/hub/examples/image_retraining
python3 retrain.py --image_dir=${HOME}/AI/image_retraining/nuts/train

f:id:itlab7:20200227210007p:plain

10分くらいで、訓練完了しました。

f:id:itlab7:20200227210138p:plain

/tmp ディレクトリに幾つかのファイルが生成されています。

下のコマンドでtestディレクトリに保存した画像の認識処理を実行します。

cd ~/AI/tensorflow
bazel-bin/tensorflow/examples/label_image/label_image \
  --image=${HOME}/AI/image_retraining/nuts/test/IMG_0638.jpg \
  --input_layer=Placeholder \
  --output_layer=final_result \
  --graph=/tmp/output_graph.pb \
  --labels=/tmp/output_labels.txt

f:id:itlab7:20200227210903p:plain

f:id:itlab7:20200227211040p:plain

99%の確率でくるみと判定されましたので、認識成功です。

他の画像もインプットして試してみます。

f:id:itlab7:20200227211440p:plain

f:id:itlab7:20200227211504p:plain

ヘーゼルナッツも認識できました。

f:id:itlab7:20200227211726p:plain

f:id:itlab7:20200227211805p:plain

アーモンドも99%で認識成功です。

訓練用の画像とテスト用の画像が似てるからか、思ったより上手く認識できましたので、/tmp ディレクトリに生成されたファイル群は ~/AI/image_retraining/nuts/checkpoint ディレクトリにコピーしておきます。

f:id:itlab7:20200227212635p:plain

f:id:itlab7:20200227213727p:plain

f:id:itlab7:20200227213757p:plain

このくるみの画像は91%でくるみと判定されました。 アーモンドの確率7.6%となっています。確かに形がくるみの割にアーモンド型になっていますね。 testディレクトリにある12枚の画像のうちこの画像だけが91%での判定となり、残り11枚は全て99%の確率で正しく認識できていました。

何かに応用できそうな技術ですね。

今回はここまでです。

Tensorflowのimage_retrainingという画像認識を使ってみる

今回は、Ubuntu18.04上で、Tensorflowのimage_retrainingという画像認識を使ってみます。

GitHub - tensorflow/hub at r0.7

まず、こちらのサイトにブラウザでアクセスして、「Clone or download」ボタンから必要なツールをダウンロードして、~/AI に置きます。

f:id:itlab7:20200225200302p:plain

ダウンロードしたzipファイルを展開して、ディレクトリの名前をhubにしておきます。

image_retrainingを実行するには、tensorflow_hub が必要になりますので、端末で下のコマンドを実行してインストールします。

pip3 install tensorflow_hub

image_retrainingのディレクトリに移動します。

cd ~/AI/hub/examples/image_retraining

下のコマンドで、訓練します。 flowers_photosには5種類の花の画像ファイルがディレクトリごとに分かれて入っているだけです。

python3 retrain.py --image_dir=${HOME}/AI/image_classifier/data/flowers/flower_photos

f:id:itlab7:20200225200614p:plain

f:id:itlab7:20200225200648p:plain

f:id:itlab7:20200225194253p:plain

4000ステップまで進んで、訓練完了しました。TensorflowはCPU版ですが、約10分で完了しました。

f:id:itlab7:20200225194347p:plain

/tmp ディレクトリに幾つかのファイルが生成されています。

f:id:itlab7:20200225224302p:plain

何かで使うかもしれませんので、~/AI/image_retraining/flowers ディレクトリを作成して、そこにコピーしておきました。

cd ~/AI/tensorflow

label_image ツールで認識処理を実行します。

bazel-bin/tensorflow/examples/label_image/label_image \
  --image=${HOME}/AI/imagenet/sunflower.jpg \
  --input_layer=Placeholder \
  --output_layer=final_result \
  --graph=/tmp/output_graph.pb \
  --labels=/tmp/output_labels.txt

f:id:itlab7:20200225201611p:plain

指定した画像は、こちらのディレクトリに置いたsunflowerの画像です。

f:id:itlab7:20200225194908p:plain

sunflower 81% と表示されていますので、認識成功です。 ちなみに、Tensorflowはランダム要素がありますので、また訓練をやり直して認識させてみると、認識率が変化したりします。

今回はここまでです。

Tensorflowのlabel_imageツールを使ってみる

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/label_image

今回は、こちらのサイトを参考にして、Tensorflowのlabel_imageツールを使ってみます。

cd ~/AI/tensorflow

inception v3 のFrozenGraphDefをダウンロードして、所定のディレクトリに配置します。

curl -L "https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz" | \
tar -C tensorflow/examples/label_image/data -xz

f:id:itlab7:20200224211159p:plain

imagenet_slim_labels.txt と inception_v3_2016_08_28_frozen.pb がダウンロードされました。 グレース・ホッパーさんの画像は元からあったものです。 グレース・ホッパーさんは、アメリカ海軍の軍人かつ計算機科学者で、プログラミング言語COBOLを開発した人でもあるようです。

label_imageツールを実行して、グレース・ホッパーさんの画像を認識してみます。

bazel-bin/tensorflow/examples/label_image/label_image

f:id:itlab7:20200224211904p:plain

military uniform (653): 0.834306
と表示されています。
imagenet_slim_labels.txt には、そもそもpersonやhumanは含まれていませんので、認識成功と言えると思います。

自分の好きな画像を認識させるには、下のようにします。 画像ファイルには、pngファイルを指定することもできるようです。

bazel-bin/tensorflow/examples/label_image/label_image \
  --image=${HOME}/AI/imagenet/sunflower.jpg

f:id:itlab7:20200224213718p:plain

認識結果は、daisyと出ました。花であることは、あっています。

ちなみに、このlabel_imageツールには、C++での実装とpythonでの実装があって、ソースを見比べると面白いかもしれません。

今回はここまでです。

MacにVirtualBox入れてUbuntu18.04を動かしている場合のキー設定

MacVirtualBox入れてUbuntu18.04を動かしていると、Mac上ではコピーはcommand+Cだけど、Ubuntuでは、control+Cとなってしまって、ややこしいのでMacと同じ操作でできるように合わせたいと思います。

f:id:itlab7:20200224185015p:plain

Ubuntuソフトウェアを起動して、検索ボックスに tweak と入力すると、GNOME Tweaksというソフトが出てくるので、クリックします。

f:id:itlab7:20200224185335p:plain

インストールボタンを押して、インストールします。

f:id:itlab7:20200224185518p:plain

インストールが終わったら、起動ボタンで起動します。

f:id:itlab7:20200224185953p:plain

「キーボードとマウス」を選択して、「追加のレイアウトオプション」をクリックします。

f:id:itlab7:20200224190150p:plain

「Ctrl is mapped to Win and the usual Ctrl keys」を選択します。 これで、controlキーとcommandキーが入れ替わりました。

f:id:itlab7:20200224184158p:plain

メニューの[VirtualBox VM] - [Preferences] を選択します。

f:id:itlab7:20200224191034p:plain

Input を選択して、Host Key Combination にcontrolキーを設定します。 これで、ホストキーが左commandキーからcontrolキーに変更されました。

今回はここまでです。