ML Study Jams 覚書_中級編

GCP By Output不足なエンジニア

初級編の続きです。 中級編は今回追加されました。 全般的には初級編でやったAPIを束ねたり、色々なGoogle Cloud APIを組み合わせてより実践的な感じになっています。当然初級編と同様APIの紹介が目的だとは思うのですが、APIを組み合わせるだけでそれなりに形になってしまうので「APIは用意してるぜ。今更やらなくても良い実装に労力を使わないで、もっと面白いことやれ」って言われてる感じがしました。笑



Classify Images of Clouds in the Cloud with AutoML Vision(英語)

これが今回の本命です。データだけ用意すれば勝手にモデル作成して勝手に学習・評価までしてくれます。題材はcloud(雲)の画像分類でcirrus(巻雲)、cumulonimbus( 積乱雲)、cumulus(積雲)を分類する画像分類でした。
何より素晴らしかったのが、評価とScore Thresholdが自動で作られる点ですね(画像参照)。大事なことだとわかっていても、正直ここら辺が面倒ですからね。

画像は無いんですけど、「分類誤りした画像」も自動的に抽出してくれます。どういうエラーがあったか分析する準備まで自動的にやってくれるので、お金さえあればもうAutoMLで良いじゃんって感じです。

ただ、モデル選択も自動なので、内部でどんなモデル使ってるかわからないのが個人的にはちょっとだけ気になります。例えば画像が少なかったらSiamese Netにするとか人間だったら当然やることをしてくれてるのかどうか…結果が本当に良いモデルを選択したからなのかわからないので(まぁこれは本当の正解は存在しませんが)。

Detect Labels, Faces, and Landmarks in Images with the Cloud Vision API (英語)

Cloud Vision API の紹介って感じです (雑すぎか) 。画像を与えて画像のラベル付け(後述)したりWeb上の類似画像のURLを返してくれたり、顔やLandMark(目とか鼻とか)の位置を返すAPIを叩く感じです。
ラベル付けは「こんだけ砂糖かけたら体に悪いだろってくらい砂糖がかかったドーナツ」画像を渡すと Food の確度が94、 Baked Goods の確度が90…と返してくれるAPIです。画像分類として使うというよりは画像分類用のデータをスクレイピングで集めて、本当にそのラベルがつくか確認するとかデータ収集のツールとして使えそうです。

Real Time Machine Learning with Google Cloud ML(英語)

シミュレーションデータですが、リアルタイムに生成されるデータを訓練済みTensorflowモデルに予測させて、BigQueryに流し込んで参照する面白い試みでした。IoT端末から定期的にデータを送信させて、異常検知とかするんでしょうね。データ分析基盤作ってないでこういう仕事がしたいなぁと思ってしまいました。
非常に面白い題材なのですが、Cloud Shell以外のSSHが必要だったり落とし穴が多かった…

Integrating Machine Learning APIs(英語)

PythonスクリプトからCloud API を起動しようって感じでした。まぁ起動できればcurlでもなんでも良いので特になんともって感じですが、PythonでスクレイピングしてCloud Vision APIでラベルが正しいか確認して、画像分類モデルに喰わせるなんてフローであればPythonで完結したほうがありがたいですかね。APIなんで起動は好み。

Natural Language API を使用してテキストをカテゴリに分類する(日本語)

これは時間の関係でスキップしました…。手順書をざっと見た感じ単純にテキストをカテゴリ分類するだけじゃなくて、2000以上の記事があるデータセットをBigQueryに入れて分類モデルを作り、分類結果もBigQueryにいれるっぽいです。テキストの分類はそれほど興味無いのですが、このフローは面白そうです。

Awwvision: Cloud Vision API from a Kubernetes Cluster (英語)

出ました。Kubernetes。私は未だにこれをまともに触ったことが無いコンプレックスです。まぁDockerもあくまで自分用の検証環境作るくらいで正直満足には触ってませんが…。時代に取り残されてる感。(あれ、これはこれで1記事のネタになるじゃん)
redditから画像をスクレイピングしてきて、Cloud Vision APIでラベル付けして、画像とラベルを表示するアプリケーションをKubernetesで作ってデプロイしました。
サンプルのソースはgithubに公開されています。アプリは画像参照。
コマンドは用意されているのでKubernetesやってる感は無いのですが、Podとかいじれば簡単にスケールするのかなと思うとWeb系エンジニアでは無いとはいえKubernetes出来ないのはちょっと危機感募ります。

Google Cloud のAPIはかなり使いやすく精度もよさそうでした。スクレイピングして自動でラベル付けってフローはかなり重宝すると思いますし、これからIoTの時代ですから超大量のデータを低コストで貯蔵できるBigQueryで機械学習が回せるのは非常に良いと思います。今回は使いませんでしたが、GCPのPub/Sub(AWSでいうSQSとSNSを組み合わせた感じ)はN対Nで使えたりもします。データフローも意識した機械学習アプリケーションを組むならかなり良いプラットフォームではないでしょうか。なんでうちの会社はAWS信者なんだろう?


カテゴリー:GCP,MachineLearning

Output不足なエンジニア

統計が好きになれず、機械学習やったら必然的に統計が必要になるだろうと思ったら想像以上に機械学習にハマる。数学は芸術なので商売にするつもりはないけど、DeepLearningは数学じゃないし商売にしたいと思っているところ。画像処理がメイン。