【超絶丁寧・初心者向け】TensorFlowを使ってみたい?(事前準備編)じゃんけんAIをつくってみよう!①

AI(機械学習)
スポンサーリンク

TensorFlowとは

TensorFlow(テンサーフロー)とは、Google社が開発した機械学習やディープラーニングを行うためのツールです。 

機械学習とディープラーニングの違いがわからない方はこちら

とくにディープラーニングの分野に力を入れているのが特徴です。

こんなことができます

画像分類

正確には「クラス分類(classification)」と呼ばれます。

分類とは、事前に定義した人、犬、猫などの分類情報をもとにその画像写っているものを判別する技術です。

身近で利用されている例として、iPhoneやGoogleフォトやAmazon Photosなどがあります。

利用されている方は「あれ?写真が人ごとに振り分けられている」と気付いたと思います。

このように画像に写っているものを分類しているときに利用している技術がクラス分類です。

へぇ~!な体験

ここで少しだけ「へぇ~」となるかも!?的な体験をしてみましょう^^

「3年前に行った花火、キレイだったなぁ~。久しぶりに写真みよ!」

( iPhoneの写真フォルダをグルグル・・グルグル・・)

「3年前も前だし、めちゃくちゃ写真多いし、すぐ見つからない・・・」

という経験はありませんんか?これを画像認識技術で解決してみましょう^^

iPhoneの写真フォルダを開いて、一番下にある選択肢の中から「検索」を押してみます。

クリック後、検索窓で写真の中から検索したいキーワードを入力・検索してみます。

「花火」

するとどうでしょう!花火の写真が一瞬で検索されましたね!

TensorFlowを利用すればこのようなことが可能になります。

物体検出

正確には「 物体検出(object detection)」と呼ばれます。

画像に写っているすべての物体の分類と位置を特定する技術です。

画像は先ほどのものと同じですが、違いは人と犬の両方を検知し、さらにそれぞれの位置を四角で囲っています。

身近で利用されている例として、スマホで撮影しようとカメラを構えたとき、顔を認識して四角で囲う技術が物体検知の技術になります。

自然言語処理

「OK、グーグル。今日の天気は?」

毎朝、子供がGoogle Homeに向かって聞いてます 笑

人間が発話した言葉を分析し、意味を理解するという点が技術的に素晴らしいと思います。

天気を聞くにも、

「今日は晴れる?」「今日は雨降る?」「傘いる?」

と様々な聞き方がありますが、バラバラな言葉でも「天気を知りたいんだな」と意味を理解して応答してくれます。

今回のゴール設定と利用環境と利用アルゴリズム

今回のゴール

利用する環境

今回はGoogle Colaboratoryを利用します。

通称、” Google Colab(グーグル コラボ)”と呼び、Google社が無償で提供している機械学習の環境です。

私が初めて機械学習をやり始めたときは、自分のノートパソコンにAnacondaをインストールしてローカル環境で実践していました。が、ノートパソコン自体のスペックがしょぼく、1回のモデル学習(物体検知)に平気で12時間以上かかるのでやめました(笑

高スペックPCであればAnacondaでもストレスなく機械学習は可能ですが、Google Colabは何十万円もする環境が無償で提供されているので、使い心地も含めて一度試してみるのも手かと思います^^

メリット・デメリットは以下のとおりです。

 

1. 環境構築不要のため、すぐ使える
2. 無料で高価なGPUやCPUが使える
3. 利用環境を選ばない
 
1. 一定時間経過で実行環境がリセットされる
2. データ容量15GBを超える場合、課金となる
 

デメリットをさくっと説明

一定時間経過で実行環境がリセットされる

以下のいづれかの条件になったときにGoogle colab(実行環境)が初期化(リセット)されます。

 

1. 90分間なにもしなかった場合
2. 12時間経過した場合

 

よくあるのが、モデルをつくるために大量のデータを学習させ、PC放置でそのまま90分間なにもしなかった、学習中のモデルごとリセットされてしまうということがあります。

いろんなブログを読んでいると、90分どころか30分放置しただけで切れてた・・人も一定数いるので、数分に一度はマウスをちょこっと動かすなり対策が必要です。

いや、めんどいな。という方にも対策方法がありますので、後ほど。

データ容量15GBを超える場合、課金となる

自動課金とかされないよね?、これが一番ビビりますね(笑

結論、自動課金はされません。

15GB以上がどうしても必要な場合、容量を購入することで継続利用が可能になります。

利用するアルゴリズム

今回はYOLOというリアルタイムオブジェクト検出アルゴリズムを利用します。

物体検出をするアルゴリズムでYOLOは有名で、ほかにもSSDやR-CNNなどのアルゴリズムがあります。

「物体検出をするためのやり方っていろいろあるんだなー」くらいで大丈夫です。

TensorFlowを使ってみよう!

・Google Colabへアクセスします

 

・Jupyter Notebookを開きます

 Jupyter NotebookとはWebブラウザ上でコードの記述・実行を行うツールです。

 

・” Hello Google Colab! “と出力してみよう

print("Hello Google Colab!")

このコードをコピペしてJupyter Notebookに貼り付けて、ctrl + Enterで実行します。(をクリックでもOK)

” Hello Google Colab! “と出力されればOKです。

AIじゃんけんをつくってみよう!

グー・チョキ・パーを撮影する

モデルに学習させるためのグー・チョキ・パーの画像を準備します。

GitHub等からでも画像の取得はできますが、今回は勉強の意味を込めて自分で撮影していきます。

準備するもの

・パソコン
・Webカメラ
・自動撮影ツール
・アノテーションツール

Webカメラ

PC付属のカメラでもiPhoneでも大丈夫です。
グー・チョキ・パー、それぞれ200枚ずつ写真を準備するので手間がかからないよう自動で撮影&確認できるようにLogicoolのWebカメラをパソコンにつけて撮影しました。
 

自動撮影ツール

グー・チョキ・パー、それぞれ200枚ずつで計600枚準備するため、撮影ボタンをカシャカシャするだけでも大変です。

今回は、インターバル撮影可能なYawcamというツールを利用して撮影を行います。もちろん、無料です。

撮影イメージはこんな感じ。

Yawcamダウンロードはこちら

Yawcamを動かすためにはJRE(Java Runtime Environment)と呼ばれる実行環境が必要になります。

Yawcamのインストール時になければ「JREをインストールしますか?」的なメッセージが表示されますので指示に従いインストールしてください。

Yawcam事前設定

インストール後、インターバル撮影を行うために以下の設定をします。

■日本語設定

 ・「Settings」→「Edit Settings…」を開く

 ・「Change」→「yawcam_lang_japanese_0.3.0a.xml」を選択。

 これで日本語に切り替わりました。

■インターバル設定

 ・「設定」→「設定編集」→「ファイル」選択

 ・インターバルに「2」を設定(2secondで2秒間隔で撮影)

 ・パスのファイル名に最大撮影枚数を指定({}内の数字が枚数 )

 ちなみに撮影画像はCドライブ直下にjankenフォルダを作成し、そこに保存するようにしました。

撮影した画像にアノテーションしていく

アノテーションツール

アノテーションとは「注釈」という意味で、撮影した画像が何なのかをラベリングすることです。

(雰囲気でいうと、SNSのタグ付けみたいな感じ)

600枚の画像にアノテーションしていくので一番地味で時間がかかります(笑

撮影した画像とラベリングした情報を学習させることでグー・チョキ・パーを判断するモデルを作っていきます。

アノテーションツールはこちら

 ・リンク先のwindows_v1.8.1.zipをダウンロードしてください。

 ・ダウンロード後、解凍して起動しましょう。

■labelimg設定

それでは、作業する前に事前設定していきます。

 1.画像フォルダの選択

  ・撮影した画像を保存しているフォルダを選択します。

  ・このとき、グー・チョキ・パーを同じフォルダに入れると作業しやすいです。

 2.ラベル付け名称設定

  ・アノテーション作業の流れは「囲む」→「ラベル名称設定」→「保存」です。

  ・「ラベル名称設定」でいちいちラベル名を入力するのが面倒なので「Use default label」にチェックを入れます。

  ・グー・チョキ・パーの変わり目では名称を変更します。

 3.YOLOへ切り替える

  ・YOLOとは物体検出アルゴリズムの一つ。

  ・今回はYOLOのアルゴリズムを利用するため、YOLOへ変更する。

■ラベル付けの結果

 撮影した画像フォルダの中身をみるとjpgファイル名と同名で.txtとclasses.txtが作成されば成功です。

classes.txtはラベル内容が保存されています。

そして「.txt」の先頭の数字(今回、chokiは15)はclasses.txtを上から数えて何番目のラベル内容なのかを紐つけています。

事前準備まとめ

ここまでが学習モデル作成の事前準備となっています。

めちゃくちゃ地味ですよね。。実際の現場でもこの事前準備が一番時間かかります。(8割くらいが事前準備)

ここまで乗り越えることができればあとはサクッと行くと思います(たぶん)

でも、最初はゆっくり丁寧に自分ですることでAI(機械学習)の基礎をしっかり学べると思いますので諦めず・楽しくやっていきましょう^^

次回はいよいよモデル作成です!

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました