Blog

【技術シェア】Google Vision API でヤリイカ・アオリイカ・コウイカ・スルメイカを一瞬で見分けて、市場でカモにされない

今回は Google Vision API を使って、ヤリイカ(ケンサキイカ)、アオリイカ、コウイカ、スルメイカを見分ける画像認識モデルを作ってみます。機械学習の知識はあまりないけれど市場へ買い物に行くお母さんにぴったりの内容です。Vision API は Google が提供するサービスで、機械学習モデルを自分で作れない人でも簡単に画像分類器を作れます。

Google Vision API でヤリイカ・アオリイカ・コウイカ・スルメイカを一瞬で見分ける

今回は Google Vision API を使って、ヤリイカ(ケンサキイカ)、アオリイカ、コウイカ、スルメイカを見分ける画像認識モデルを作ってみます。機械学習の知識はあまりないけれど市場へ買い物に行くお母さんにぴったりの内容です。(その共通部分はたぶん null だとわかっていますが)

前置きはこのくらいにして、Vision API は Google が提供するサービスで、機械学習モデルを自分で作れない人でも簡単に画像分類器を作れます。

機械学習について知りたい方は こちらの記事をどうぞ。

今回の練習は、だいたい次のステップで進めます。

  1. GCP プロジェクトを作成し、GCP AutoML を有効にする
  2. 十腕形の軟体動物たちの画像を集める
  3. GCP で storage bucket を作成し、画像をアップロードする
  4. AutoML の画面を開き、指を動かすだけでモデルを完成させる

とても簡単でしょう?

始める前に、ヤリイカ、アオリイカ、コウイカ、スルメイカ、そしてタコの違いを知っておくことをおすすめします。こちらの動画がわかりやすいです。

では!まずは GCP の申し込みから。こちらの動画を見ながら一歩ずつ進めてください。

GCP の申し込みが終わったら、AutoML のページで API が有効(Enable)になっているか確認しましょう。

準備ができたら、Google でヤリイカやアオリイカなどの画像を集め、あらかじめ作っておいたフォルダにそれぞれ保存します。フォルダ構成は次のとおりです。

seafood 
- cuttlefish        
- neritic        
- softneritic        
- squid        
- octopus

‍

  • cuttlefish はコウイカ
  • neritic はヤリイカ(ケンサキイカ、小ぶりのものも含む)
  • softneritic はアオリイカ
  • squid はスルメイカ
  • octopus はタコ

‍

画像を集めるときに困ったのが、料理された状態の写真があまりにも多いことです。これでは画像学習の効率が落ちてしまうので、何枚か選んでおきました。一緒にやってみたい方はこちらからダウンロードしてください!

解凍すると、画像入りのフォルダが 5 つと、index.csv、test.py が入っているはずです。

index.csv の中身は次のとおりです。

‍

gs://first-850611-vcm/seafood/cuttlefish/0_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/1_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/2_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/3_demo.jpg,cuttlefish
...

‍

これは、このあと AutoML に渡すファイルです。

test.py は、ダウンロードした画像を整理して index.csv を作るために書いた Python ファイルです。

私の圧縮ファイルをダウンロード済みなら、おめでとうございます。もう半分終わっています!

ステップ 3 では、GCP Storage に bucket を作成します。名前は次の形式にする必要があります。

<your-project-id>-vcm
Google Cloud Storage のバケット作成画面。名前を入力し、リージョンとストレージのオプションを選択できる。

たとえば、私が作成した bucket の名前は first-850611-vcm です。

作成したら、first-850611-vcm の中に seafood というフォルダを作り、cuttlefish、neritic、softneritic、squid、octopus と index.csv をすべて seafood フォルダにアップロードします。

これでステップ 3 は完了です!

最後のステップです。AutoML のページを開き、右上で自分のプロジェクト名を選んで、Get started with AutoML をクリックします。

Google Cloud AutoML Vision の開始画面。プロジェクトを選んでカスタムモデルの作成を始める。

続いて、上部の NEW DATASET をクリックし、学習させるデータを追加します。

AutoML Vision のデータセット画面。新しい学習用データセットを作成する「NEW DATASET」ボタンが赤枠で示されている。

Dataset name を入力します。自分で見分けがつけば何でもかまいません。

次に Select a CSV を選び、次のように入力します。

gs://<your-project-id>-vcm/seafood/index.csv

‍

私の場合なら、次のように入力します。

gs://first-850611-vcm/seafood/index.csv

‍

そして CREATE DATASET をクリックし、学習データのアップロードを待ちます。

AutoML Vision のデータセット作成画面。名前を入力し、クラウド上のラベルファイルを指定して魚介の学習データを取り込む。

アップロードが終わると、学習させる画像とラベルが表示されます!

続けて、上部の TRAIN をクリックして学習を始めます。

AutoML Vision の学習用データセット画面。複数のイカの画像と squid ラベルが表示され、ラベル付きデータを取り込んで学習の準備ができた状態。

「画像が少なすぎますよ~」といった警告が出ます。

エンジニアたるもの、勝つときは攻め、負けそうなら引く。こういうときは恐れずに押し切って学習させましょう。一緒に勇気を出して START TRAINING をクリック。

Google のビジョンモデル学習画面。各ラベルの画像が不足していると表示され、学習開始ボタンを押す直前。

‍

Training budget は free プランを選び、START をクリックします。

Google AutoML Vision の学習画面。画像不足の警告と新しいモデルの設定ウィンドウが表示され、無料の学習予算を選べば学習を開始できる。
AutoML Vision に魚介分類モデルの学習の進み具合が表示され、所要時間の目安とキャンセルの選択肢が示されている。

長い待ち時間のあと、model の学習が終わったら、上部の PREDICT をクリックして学習成果をテストできます。

ヤリイカとスルメイカの写真を 1 枚ずつアップロードして、model に判定させてみます。

白いプラスチックかごに並んだ複数のイカ。モデルの魚介認識をテストするためにアップロードするサンプル写真。
これがヤリイカ
ヤリイカ 1 杯を横から撮った写真。Google Vision API のモデルがヤリイカを認識できるかのテスト用サンプル。
これがスルメイカ

model の予測結果は下の画像のとおりです。

Google AutoML Vision の PREDICT テスト画面。ヤリイカの写真をアップロードした後の認識ラベルと信頼度スコアが表示されている。
AutoML Vision のモデル予測画面。スルメイカの写真の認識結果は squid、信頼度スコアは 0.982。

ご覧のとおり、Google は本当にすごい!!!!!!!!!!!

もう機械学習エンジニアなんていらないのでは?機械学習エンジニアはみんな辞めて魚屋になるしかない QQ

さて!認めざるを得ませんが、Vision AutoML は本当に強力です。これほど少ない画像でも、ここまで正確に学習できるのですから。

こんなにおもしろいもの、ここで終わらせるわけにはいきません。次回は、この model の API を連携させて、新米ママが実際に使えるようにする方法を探ります。もうヤリイカのつもりでスルメイカを買ってきて姑に叱られることもありません。嫁姑問題を解決する最強の切り札です!!

ここで宣伝です:

LINE チャットボットに、画像認識、音声認識、さらには動画認識など、機械学習を組み合わせた機能が必要な企業の皆さま、以下のメールアドレスまでお気軽にお問い合わせください。

service@oakmega.com

おすすめの記事

Scikit で台湾株価指数のトレンドを学ぶ
2019-04-06

【機械学習の練習】Scikit で台湾株価指数のトレンドを学ぶ(1)- 機械学習入門

機械学習は統計分析の手法の一つです。ざっくり言うと、機械学習で扱える問題は、分類(classification)、回帰(regression)、クラスタリング(clustering)、ルール抽出(Rule Extraction)の4つに大別できます。

Khan LeeCTO
ヘッドレスでの Raspberry Pi インストール
2019-03-12

【技術シェア】ヘッドレスでの Raspberry Pi インストール — Headless Raspberry Pi Installation

Raspberry Pi の紹介:Raspberry Pi は Linux ベースのシングルボードコンピューターです。小さな基板ながら、USB、HDMI、カメラ、Wi-Fi モジュールなど多くの外部インターフェースを備えています。開発エコシステムも充実していて、いろいろなものが作れます。今回は Echo Dot を買ったので、家の赤外線機器と連携させようと、以前買った Raspberry Pi 3 を引っ張り出してきました。

Khan LeeCTO
柯文哲の LINE チャットボットのセグメント実装
2019-03-11

【技術シェア】選挙が終わったので、柯文哲(コー・ウェンジェ)の LINE チャットボットのセグメント実装を語る

ウイスキーにセグメントがあるなら、KP だって LINE でセグメントしたっていいじゃないか!?そうして生まれたのが、アイラ島のような柯おじさん、スペイサイドのような柯市長、キャンベルタウンのような柯教授。このチャットボットを作るには、市長ならではの瞬間的な超大量トラフィック、多様なセマンティックモジュールの構築、セグメント運用という課題を乗り越える必要がありました。

Khan LeeCTO
お問い合わせ

AI によるデジタル変革を、今すぐ始めましょう。

OakMega を選んだ企業・機関