【Python】gradioに入門してみた

背景

前回はStreamlitについて軽く触れてみましたが、gradioについてもStreamlit同様に簡単にWebアプリが作れるPythonフレームワークとして並べられることが多いようです。そこで今回はgradioについても軽く触れてみようと思います。

★前回の記事

gradioとは

Streamlitと同様にPythonでシンプルにWebアプリを作成できるフレームワークの一つである。Streamlitと比べるとネット上に落ちている情報資源が少なく、見た目も若干劣るようだがJupyter/Corabノートブックと連携していたり使用できるUIコンポーネントがStreamlitより豊富であるといった利点もあるらしい(一長一短ですね)。

実際に使ってみる

公式にQuick startドキュメントが落ちていたので参考にしながら進めてみる。
公式ドキュメント:https://gradio.app/quickstart/

gradioのインストール

執筆時の環境は以下の通りです。

  • OS:WIndows 10

  • Python:3.10.5

  • gradio:3.35.2

> pip install gradio

クイックスタートの内容を実行してみる

任意のファイル名で.pyファイルを作成(今回はhelloGradio.pyを作成)し、クイックスタート同様のコーディングを行った。内容としてはテキストボックスに記載した文字列を入力に"Hello ****"という文言を返してくれるらしい。

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")

demo.launch()   

ここまで記載したらファイルを保存し、ターミナル上で実行する。実行するとlocal URLが発効されているのでアクセスしてみる。

> python.exe helloGradio.py
Running on local URL:  http://127.0.0.1:7860

画面が表示されました。Streamlitと同様にシンプルなコードで実現できましたね。

name欄に文字を入力して送信ボタンを押下。処理もちゃんと動きます。

もう1つぐらいクイックスタートから実施してみる。これは入力画像を拡大してセピア色になるように加工しているようです。

import numpy as np
import gradio as gr

def sepia(input_img):
    sepia_filter = np.array([
        [0.393, 0.769, 0.189], 
        [0.349, 0.686, 0.168], 
        [0.272, 0.534, 0.131]
    ])
    sepia_img = input_img.dot(sepia_filter.T)
    sepia_img /= sepia_img.max()
    return sepia_img

demo = gr.Interface(sepia, gr.Image(shape=(200, 200)), "image")
demo.launch()

実行。画像のドラッグ&ドロップでファイルをアップロード出来るのもgradioの特徴だそうで、Streamlitはこういった機能がない上にファイルアップロードサイズ上限が50Mbまでだそうですね。

入力画像に先日食べたピザの画像を入れて送信ボタンを押下!ちゃんと変換されましたね。Streamlitにアップロード上限がある以上、何らかのファイルをWebアプリ経由で入力するのであればgradioの方がいいかもしれませんね。

使ってみた感想

冒頭でも記載しましたがgradioはコミュニティが小さいようであまり情報が落ちていないのが現状のようです。ただし!その代わりなのか公式が結構な量のドキュメントを抱えているようなのでgradioを使う際には公式と睨めっこしながら進めるのがよさそうですね。
公式Guide:https://gradio.app/guides/

この記事が気に入ったらサポートをしてみませんか?