機械学習ツールlobeで画像判定 その2

はじめに

Microsoft社から無料で公開されている機械学習ツール「lobe」を使用して犬と猿を識別してみます。前回1から3までを説明しましたので、今回はlobeで学習から記載します。

  1. 必要なもの(その1)
  2. Anaconda環境の作成(その1)
  3. 犬、猿データ収集(その1)
  4. lobeで学習
  5. 学習結果をテスト
  6. Exportした学習データをPythonでテスト

1.必要なもの~3.犬、猿データ収集については前回を参照ください。今回は4.lobeで学習から記載します。

 

4.lobeで学習

lobeは無料の機械学習ツールです。

 

Downloadボタンをクリックするとユーザー登録画面になりますので、名前・Email・国を記入してDownloadをクリックします。

 

ダウンロードしたlobe.exeをインストールし、lobeを起動します。

Untitledにタイトルを記入します。タイトルは[犬or猿チェック]にしました。

inuフォルダとsaruフォルダをデータセットとしてとうろくするの登録するので、[import]⇒[Dataset]を選択します。

[Choose Dataset]をクリックし、フォルダーの選択でsaruを選びます。

次に[Import」をクリックします。

猿の画像が50枚追加されました。

同様に[Import]⇒[Dataset]⇒[Choose Dataset]⇒[フォルダの選択でinuを選択]⇒[Import]の順で実行します。

猿の画像と犬の画像が50枚ずつ計100枚となります。

Trainingは自動で始まり終了すると、犬と猿の識別が実行できるようになります。

 

5.学習結果をテスト

テストに使用する画像を取得します。

VSCでpythonを実行しFlickrから画像を取得します。dl_from flickr.pyの

per_page = 50をper_page = 3に設定しターミナルでpythonを実行します。
画像は何でもいいですが、今回は日本猿にしました。

画像をダウンロードしたらlobeの[Play]⇒[Import]を実行し、testフォルダの日本猿を選択します。(真ん中のImportを選択する代わりに画像をドラッグ&ドロップできます)

実行するとsaruと判断されました。このデータを学習させたい場合は右下の緑の「✔」または赤い「Θ」を選択します。正しかった場合は「✔」、間違っていた場合は「Θ」を選択します。
 
 
 
 

入力データについて

入力データは3種類用意されています。Imagesを選択すると画像ファイルを直接指定できます。Cameraを選択すると、PCから撮影した画像をトレーニングデータとして使用することができます。
 
 

6.Exportした学習データを使用してテスト

作成したモデルをExportし、そのモデルを使用してテストを行います。
左上から[Export..]を選択します。
 
 
次に黄色のTensorFlowを選択します。
 
出力するフォルダを指定してExportを実行します。最適化を行ってからExportしたい場合は右側の[Optimize & Export]を選択します。
 
Exportが完了すると[Exporting Done]と表示されるので[OK]をクリックします。
 
 
犬or猿チェック TensorFlow というフォルダが作成されていれば成功です。
[犬or猿チェック TensorFlow]⇒[example]⇒[requirements.txt]を開くと、
以下が必要とあるので、Anacondaのlobe_env1にインストールします。
 
tensorflow==1.15.4
pillow==7.2.0
 
 

tensorflowとPillowのインストールが完了したら、Visual Studio Codeで[ファイル]⇒[新しいウィンドウ]で新しくウィンドウを開きます。

新しく開いたVSCで[ファイル]⇒[フォルダを開く…]で「犬or猿チェック TensorFlow」フォルダを開きます。テスト用に猿と犬の画像を「犬or猿チェック TensorFlow」フォルダの下に置きます。猿をno1.jpg 犬をno2.jpgとしました。(画像のファイル名や画像の内容はなんでもいいです)

exampleフォルダの下のtf_example.pyを右クリックし、[ターミナルでPythonファイルを実行]を選択し実行します。

引数がないのでエラーとなります。

VSCのターミナルでキーボードの「↑」を押してno1.jpgと入力し再実行します。

実行結果:Predicted: {‘Prediction’: ‘saru’, ‘Confidences’: [0.0, 1.0]} となり猿と判定されました。

no1.jpgの代わりに犬の画像no2.jpgで実行すると犬と判定されました。

 

 

注意

何と何を比較するのかもう少し工夫が必要。
(犬の画像と猿の画像は全く異なるので、モデルは見分けられる。間違えない。)

フォルダ名、プロジェクトのタイトルは後々の作業に影響するので考慮が必要。
exportフォルダがプロジェクト名となるのでここも注意が必要。

機械学習ツールlobeで画像判定 その1

はじめに

Microsoft社から無料で公開されている機械学習ツール「lobe」を使用して犬と猿を識別してみます。

  1. 必要なもの
  2. Anaconda環境の作成
  3. 犬、猿データ収集
  4. lobeで学習(その2
  5. 学習結果をテスト(その2

 

1.必要なもの

実行環境は以下の通りです。

PC:Windows10

使用ツール:Anaconda、lobs、Visual Studio Code、Flickr

 

2.Anaconda環境の作成

Anaconda Promptを開いて新しい環境「lobe_env1」を作成します。lobeがEXPORTするモデルのtensorflowのバージョンが1.15なのでpythonはバージョンを3.7にします。

     

 

3.犬猿データ収集

データの収集はFlickrから取得します。Flickrとは個人で撮影した写真をアップロードし、保管・管理・共有することができるサイトです。無料で画像の利用ができます。

右上の[Sign Up]をクリックします。ユーザー登録を行います。パスワードはスペースなしで12文字以上必要です。

[Sign up]をクリックするとメールが送られてくるので、メールを開いて承認を行います。完了すると[Email Veified!]が表示されます。

画像はAPIを使用して取得します。以下のURLへ移動します。

https://www.flickr.com/services/api/

APIを作成するために左上の[Create an App]をクリックします。

次にAPI Keyを得るために[Request an API Key]をクリックします。

使用目的が商用かどうかで選択できます。

個人利用なので[APPLY FOR A NON-COMMERCIAL KEY]を選択します。

次にAPIの名前と使用理由を記入する欄になります。何を記入していても特に問題ないです。利用規約に同意するためチェックボックスにチェックをいれて[SUBMIT]を実行します。実行するとKeySecret情報が表示されるのでその情報をメモしておきます。

Flickrから画像を取得するためのkitが https://www.flickr.com/services/api/にあるのでそれを使用します。[Beej’s Python Flickr API]をクリックします。

クリックするとPython Flickr APIに移動します。。

 

pipでインストールできるようなので、Anaconda Promptからインストールします。

先ほど作成したAnaconda環境lobe_env1に移動し、インストールを実行します。

任意のフォルダを作成し、画像保存用に saruとinuというフォルダを作成します。(フォルダ名は任意です)

ここにFlickrから画像を取得するためのpythonコードを作成します。

エディタは何でもいいですが、今回はVSC(Visual Studio Code)を使用します。

VSCを起動し、今作成したフォルダを開きます。([ファイル]⇒[新しいウィンドウ]を実行しても得られます)

[ファイル]⇒[フォルダを開く…]を実行し、作成したフォルダを指定します。

[新しいファイル]を選択してファイルを開きます。FlickrAPIを使用したpythonコード例です。

ファイル名はdl_from_flickr.pyとしました。右クリックから[ターミナルでPythonファイルを実行]を選択します。

引数を指定していなので、Errorとなります。

再度ターミナルで上ボタンを押して引数にdogを指定して実行します。

Anacondaのlobe_env1環境フォルダにあるpython.exeを使用します。dl_from_flickr.pyは任意のフォルダに作成しています。dogが検索キーワードとして検索され、50個の画像がinuフォルダに保存されます。

同様に引数をmonkeyにすることでsaruフォルダに50枚画像が保存されます。
test用の画像を保存する用にtestフォルダも追加で作成します。

lobeを使用した機械学習は次回に。

 

M5StickCで計測した温度をGoogleスプレッドで可視化(グラフ作成)

はじめに

M5StickCにENVⅡを合わせて計測された温度情報をGoogleスプレッドシートにグラフとして表示します。

  1. 必要なもの
  2. Googleスプレッドシートの設定
  3. スケッチ例
  4. 実行

 

 

1.必要なもの

必要なものはM5StickCとENVⅡです。

番号

商品名

価格

参考販売店

1

M5StickC

1980円(セット)

1650円(本体のみ)

SwitchSience

2

M5StickC PIR Hat(AS312搭載)

363円

SwitchSience

 

2.Googleスプレッドシートの設定

Googleスプレッドシートの設定については「M5stickCを使用したセンサーの値をGoogleスプレッドシートに」を参照下さい。

sheets.google.com/create で直接スプレッドシートを開きます。

まず最初にタイトルを記入します。左上の「無題のスプレッドシート」に「M5SticC」と記入します。(無題のままでも特にもんだいないですが、後々になんのために作成したかわかるように記入した方がいいです)

次に「A1」セルに日付、「B1」セルに温度と記入します。[ツール]⇒[スクリプトディタ]の順で開きます。

スクリプトエディタには前回PIRセンサーの時と同じようなスクリプトを記入します。今回はグラフを作成するのでグラフ作成用のスクリプトを追加しています。

setData関数は前回の内容とほぼ同じです。A列に日付、B列に温度がはいるようにしています。insertRows(Row,Num)でRow行からいくつ行の挿入を行うかを指定しています。2行2列目に温度情報である変数valを2行1列めに日付を入植するようにしています。

POST関数にはグラフを作成する記述を入れています。グラフの作成はsheet.insertChart(chart)で実行しています。作成後は sheet.updateChart(chart)でアップデートしていきます。

グラフを作成するにはnewChartを使用します。グラフの範囲はA1からB10までにしています。毎回新しい情報が更新されていくと行数が膨大になるので、sheet.deleteRows(11,1)で11行目から1行だけ毎回削除しています。折れ線グラフを作成しているのはsetChartType(Charts.ChartType.LINE)の部分です。

LINEの部分を変更することで色々なグラフが作成できます。

Charts.ChartType.AREA 面グラフ
Charts.ChartType.BAR 棒グラフ
Charts.ChartType.COLUMN カラムチャート
Charts.ChartType.LINE 折れ線グラフ
Charts.ChartType.PIE 円グラフ
Charts.ChartType.SCATTER 散布図
Charts.ChartType.TABLE 表チャート

 

作成したら、[デプロイ]⇒[新しいデプロイ]を選択し、歯車のマークからウェブアプリを選択します。表示されるURLはArduinoのスケッチに使用するのでどこかにメモしておきます。Googleの承認については前回の人感センサーのときと同じ内容になります。

 

3.スケッチ例

スケッチはENVⅡ用のスケッチを元に作成します。今回は温度のみをGoogleスプレッドシートに送るので、不必要な部分を削除します。温度を取得する変数はfloat型なので、sendData関数の引数用の変数もfloat型に変更しています。M5SticCに表示する内容も温度と湿度だけにしています。

 

4.実行

スケッチをM5SticCに書き込むと温度と湿度が表示されます。

またGoogleスプレッドシートにグラフが表示されます。

loop()関数にdelay(1000*3600)を記述しているので、更新は1時間に1回となります。(delay内の数値の単位はミリ秒。1000ミリ秒=1秒)

グラフの実行結果をもっと早く確認したい場合はこのディレイ時間を短くします。

Googleスプレッドシートの日付と温度の表示内容も調整した方が見やすいです。Dateはデフォルトで年月日までなので、時間も表示するように変更します。A列を選択して、右の[123]から日時を選びます。

温度の小数点表示も小数点を1桁だけ表示するように変更します。[.0」をクリックすれば小数点の桁数を減らすことができます。

 

作成したグラフは右の[…]を選択し、[ダウンロード]からPDFやPNGに変更できます。[グラフの公開]からURLに張り付けることもできます。