こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。
今から3分で機械学習アプリを作ります。
Contents
【Step1】Google Colaboratory のノートブックを新規作成
Google Colab を起動して、ノートブックを新規作成します。
【Step2】Gradio インストール
以下のコマンドでPythonライブラリの Gradio をインストールします。
!pip install -q gradio
【Step3】プログラミング
約20行のソースコード書きます。
Import
まずはimportから
1 2 3 4 5 |
import gradio as gr import torch from torchvision import transforms import requests from PIL import Image |
PyTorch Hubからモデルをダウンロード
PyTorch Hub から好きな学習済みモデルをダウンロードします。今回は ResNeSt を採用しました。
1 2 3 4 5 |
model = torch.hub.load('zhanghang1989/ResNeSt', 'resnest50', pretrained=True) model.eval() response = requests.get("https://git.io/JJkYN") labels = response.text.split("\n") |
ResNeSt について知りたい人は、以下の参考資料を読んでみて下さい。
『月刊ディープラーニング部 vol.1 “ResNeSt”特集』の表紙だけでも見てほしい。
機械学習モデルによる画像認識の関数を作る
先程ダウンロードしたモデルを使って、画像認識(推論)を行う関数を作成します。
1 2 3 4 5 6 |
def predict(inp): inp = Image.fromarray(inp.astype('uint8'), 'RGB') inp = transforms.ToTensor()(inp).unsqueeze(0) with torch.no_grad(): prediction = torch.nn.functional.softmax(model(inp)[0], dim=0) return {labels[i]: float(prediction[i]) for i in range(1000)} |
インターフェイスを作成して起動
好きなインターフェイス(UI)を作成して、アプリを起動します。
1 2 3 4 5 |
inputs = gr.inputs.Image() outputs = gr.outputs.Label(num_top_classes=5) interface = gr.Interface(fn=predict, inputs=inputs, outputs=outputs) interface.launch() |
今回は画像関連のUIを作成したので、上記のアプリが起動します。
3分で機械学習アプリを作れました。
機械学習アプリのデモ
好きな画像をアップロードし、SUBMITすれば推論結果が表示されます。
愛鳥”くるる”の画像をアップロードしたところ、great grey owl(和名:カラフトフクロウ)という結果が表示されました。
正解は Southern white-faced owl(和名:アフリカオオコノハズク) でした。
と思ったけど、ラベル確認したら、owl(フクロウ)と名の付くラベルが great grey owl しかないようです。
アフリカオオコノハズクの”くるるちゃん”が今日も可愛い(*・ω・)ノ♪
GradioはPyTorch・TensorFlow・scikit-learnのモデルをサポート
今回はPyTorchのモデルを採用しましたが、GradioならTensorFlow・scikit-learnのモデルも簡単に扱うことができます。
Gradio Hub で様々な機械学習アプリ(Interfaces for your ML Models)を公開しているので、遊んでみてください。
まとめ -3分で機械学習アプリ作成-
Gradioを活用し3分で機械学習アプリを作りました。本記事で良い刺激をもらえた人は、ぜひ機械学習アプリ作りに挑戦してみて下さい。
本記事では学習済みモデルを採用しましたが、自作モデルを使ったオリジナルMLアプリとか作れたらカッコイイですね(*・ω・)ノ♪
本記事をきっかけに…
などを考えながら、楽しく”機械学習”と”アプリ”の勉強をしてくれたら、とても嬉しいです。
おまけ -本ブログのサポートについて-
もし本記事が参考になり、ブログ『はやぶさの技術ノート』をサポートしたいという人がいれば、以下の方法でサポートして頂けると嬉しいです!
- 本ブログの記事をSNS(Twitterやfacebookなど)でシェア
- ブログをやっている人ならリンクを張ってシェア
- 本ブログで紹介した本などを購入
- LINEスタンプ 購入
- 【くるるの野望ショップ】でフクロウグッズ購入
私のプロフィールにも書いていますが、学生さんや勉強したい人の”学び”を支援したいと考えています。
ブログ『はやぶさの技術ノート』では本記事も含め、多くのチュートリアル記事を無料で公開しています。SNSなどで友達にも教えてあげてほしいです!
また応援メッセージなどを頂けると、次も良い記事書きたいな!というモチベーションに繋がります。Twitterなどで気軽にコメントして頂けると嬉しいです。