\r\n\r\n
TensorFlowは、Googleのニューラルネットワークライブラリです。機械学習が今最もホットな話題であることを考えると、Googleがこの新しい技術をリードしていることは驚くことではありません。
今回は、Raspberry PiにTensorFlowをインストールし、事前に学習させたニューラルネットワークで簡単な画像分類を実行する方法を紹介します。
画像認識を始めるには、Raspberry Pi(どのモデルでも可)とRaspbian Stretch(9.0+)オペレーティングシステムが入ったSDカードが必要です(Raspberry Piが初めての方は、インストールガイドをご利用ください)。
Piを起動し、ターミナルウィンドウを開きます。Pythonのバージョンを確認し、Piが最新であることを確認します。
sudo apt-get updatepython --versionpython3 --versionこのチュートリアルでは、python 2.7またはpython 3.4+の両方を使用することができます。この例は、python3用です。Python 2.7 の場合、このチュートリアルの python3 を python に、pip3 を pip に置き換えてください。
PipはPythonのパッケージマネージャで、通常、Linuxディストリビューションに標準的にインストールされています。
もし、該当するものがない場合は、この記事のLinux用のインストール方法に従ってください。
TensorFlowのインストールは、以前は非常にイライラする作業でしたが、最近のアップデートで非常に簡単になりました。このチュートリアルは予備知識なしで進めることができますが、機械学習の基本を理解した上で挑戦することが必要かもしれません。
TensorFlowをインストールする前に、Atlasライブラリをインストールしてください。
sudo apt install libatlas-base-dev完了したら、TensorFlowをpip3経由でインストールします。
pip3 install --user tensorflowこれは、ログインしているユーザーに対してTensorFlowをインストールするものです。もし、仮想環境を使用したい場合は、ここのコードを修正してください。
インストールしたら、TensorFlowのHello, world!と同等の機能で動作するかテストしてみましょう。
コマンドラインから nano か vim を使って新しい Python スクリプトを作成し(どちらを使うか迷ったら、どちらも利点があります)、覚えやすい名前を付けてください。
sudo nano tftest.pyTensorFlowのテスト用にGoogleから提供されたこのコードを入力します:.
import tensorflow as tfhello = tf.c***tant('Hello, TensorFlow!')sess = tf.Session()print(sess.run(hello))nanoを使用している場合は、Ctrl+Xで終了し、プロンプトが表示されたらYを入力してファイルを保存してください。
ターミナルから、このコードを実行します。
python3 tftest.pyHello, TensorFlow」とプリントアウトされているはずです。
Python 3.5を使用している場合、いくつかのランタイム警告が表示されます。TensorFlowの公式チュートリアルでは、このようなことが起こりうることを認めた上で、無視することを推奨しています。
本当にうまくいった!今度はテンソル流について何か面白いことをやってみよう。
ターミナルで、ホームディレクトリにプロジェクト用のディレクトリを作成し、そこに移動する。
mkdir tf1cd tf1TensorFlowにはgitリポジトリがあり、いくつかのサンプルモデルを試すことができます。 リポジトリを新しいディレクトリにcloneしてください。
git clone https://github.com/tensorflow/models.git使用したい画像分類の例は、models/tutorials/images/imagenetにあります。
cd models/tutorials/image/imagenetで提供されたパンダ画像を使って、標準的な画像分類スクリプトを実行します。
提供されたパンダ画像を用いて標準的な画像分類器を実行するには、次のように入力します。
python3 classify_image.pyパンダの画像をニューラルネットワークに送り込むと、画像の内容を推測し、その確からしさの度合いを数値で返してくれるのだ。
出力画像が示すように、ニューラルネットワークはほぼ90%の信頼度で正しく推測しています。また、「カスタードアップルが入っているかもしれない」とも考えていたが、この答えにはあまり自信がないようである。
パンダの画像は、TensorFlowが機能することを証明していますが、これはプロジェクトが提供する事例を見れば、驚くことではないのかもしれません。より良いテストのために、ご自分の画像をニューラルネットワークに与えて分類することができます。
この例では、TensorFlowのニューラルネットワークがジョージを認識できるかを確認します。
この画像(ここではトリミングして提供)をニューラルネットワークに送り込むには、スクリプトを実行する際にパラメータを追加します。
python3 classify_image.py --image_file=/home/pi/george.jpgimage_ufile=スクリプト名の後に、パスで任意の画像を追加することができます。このニューラルネットワークがどのように行うかを見てみましょう。
いいね! ジョージはトリケラトプスではないけれど、ニューラルネットワークはこの画像を他の選択肢に比べて高い確度で恐竜に分類しているんだ。
このTensorFlowの基本的な実装は、すでに可能性を秘めています。この物体認識はPi上で行われるため、インターネットに接続しなくても正常に動作します。つまり、ラズベリーパイのカメラモジュールとラズベリーパイに適したバッテリーユニットがあれば、プロジェクト全体をポータブルにすることができるのです。
ほとんどのチュートリアルは、テーマの表面にしか触れていませんが、この場合ほど真実であることはありません。機械学習は、非常に集中的な学問分野です。
さらに一歩進んだ知識を身につけるには、専用のコースを受講するのも一つの方法です。とりあえず、これらのTensorFlowプロジェクトで、機械学習とRaspberry Piを練習してみてください。