Gradio是一個Python庫,用于構建快速的Web界面,以便于使用機器學習模型進行實時演示和交互。使用Gradio,您可以輕松地將機器學習模型封裝為交互式應用程序,無需編寫任何前端代碼。
安裝Gradio
pip install gradio
示例用法
使用Gradio創(chuàng)建了一個簡單的應用程序,將輸入文本進行反轉并返回結果。在啟動應用程序時,您還添加了共享選項和身份驗證。
import gradio as gr
def reverse(text):
return text[::-1]
demo = gr.Interface(reverse, "text", "text")
demo.launch(share=True, auth=("username", "password"))
在這個示例中,reverse
函數(shù)接受一個文本輸入并返回反轉后的文本。然后,您使用gr.Interface
類創(chuàng)建了一個接口對象demo
,指定輸入類型為"text"(文本輸入)和輸出類型為"text"(文本輸出),并將reverse
函數(shù)作為處理函數(shù)傳遞給gr.Interface
。
最后,使用demo.launch()
方法來啟動Gradio應用程序。您還傳遞了share=True
參數(shù),允許其他人通過生成的URL來訪問您的應用程序,并且添加了身份驗證信息auth=("username", "password")
來限制訪問權限。
運行該代碼后,您將在命令行中看到一個本地的URL地址,類似于http://127.0.0.1:7860/
。將此URL復制到瀏覽器中,您將能夠訪問該應用程序,并在輸入框中輸入文本,看到反轉后的結果。
運行界面:
訪問http://127.0.0.1:7860/
會顯示登錄界面。
輸入賬號密碼后的界面:
應用界面
Gradio提供了兩種主要的組件來創(chuàng)建交互式界面:gr.Interface
和gr.Blocks
。它們都可以用于構建Web界面,但在功能和使用方式上有所不同。
1. gr.Interface
是Gradio的主要接口類,用于創(chuàng)建簡單而強大的交互式應用程序。它使您能夠定義輸入和輸出的類型,并使用處理函數(shù)來處理輸入并生成輸出。您可以指定不同的輸入和輸出類型,包括文本、圖像、音頻、視頻等。
代碼實例:
這段代碼使用Gradio創(chuàng)建了一個簡單的圖像分類器應用程序。它接受一張圖像作為輸入,并返回一個包含分類結果的字典。
import gradio as gr
def image_classifier(inp):
return {'cat': 0.3, 'dog': 0.7}
demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label")
demo.launch()
運行界面:
在實例中,image_classifier
函數(shù)是處理函數(shù),它接受一個圖像輸入并返回一個包含分類結果的字典。在這個示例中,為了簡化,我們返回了一個固定的結果字典 {'cat': 0.3, 'dog': 0.7}
,其中表示該圖像有 30% 的概率是貓,70% 的概率是狗。
使用gr.Interface
類創(chuàng)建了一個接口對象 demo
,指定輸入類型為 “image”(圖像輸入)和輸出類型為 “l(fā)abel”(標簽輸出)。在這個示例中,我們只使用了默認的圖像和標簽組件,因此不需要顯示地定義輸入和輸出界面。
最后,使用 demo.launch()
方法啟動Gradio應用程序,并在本地的 Web 服務器上運行它。
運行該代碼后,您將在命令行中看到一個本地的 URL 地址,類似于 http://127.0.0.1:7860/
。將此 URL 復制到瀏覽器中,您將能夠訪問該應用程序,并上傳圖像進行分類。
請注意,為了使圖像分類器真正有效,您需要將 image_classifier
函數(shù)實現(xiàn)為一個真實的模型,該模型將根據(jù)輸入圖像進行實際的分類預測。
2. gr.Blocks
是Gradio的另一個功能,它提供了一種可視化方式來組合和重用交互式組件。通過使用gr.Blocks
,您可以創(chuàng)建復雜的界面布局,并將輸入、輸出和其他組件組合在一起。每個塊都有自己的輸入和輸出,可以連接到其他塊,以構建數(shù)據(jù)流和處理流程。
代碼實例:
使用Gradio的gr.Blocks創(chuàng)建的交互式界面示例。它允許用戶輸入姓名,并在點擊按鈕后顯示歡迎消息。
import gradio as gr
def update(name):
return f"Welcome to Gradio, {name}!"
with gr.Blocks() as demo:
gr.Markdown("Start typing below and then click **Run** to see the output.")
with gr.Row():
inp = gr.Textbox(placeholder="What is your name?")
out = gr.Textbox()
btn = gr.Button("Run")
btn.click(fn=update, inputs=inp, outputs=out)
demo.launch()
運行界面:
在這個示例中,使用了gr.Blocks()
上下文管理器來創(chuàng)建Gradio界面。然后,使用gr.Markdown
組件添加了一個文本說明。
接下來,在gr.Row()
中創(chuàng)建了一個輸入文本框(gr.Textbox
)和一個輸出文本框(gr.Textbox
)。輸入文本框用于接收用戶輸入的姓名,輸出文本框用于顯示歡迎消息。
然后,使用gr.Button
創(chuàng)建了一個按鈕(btn
),并使用btn.click()
方法指定了按鈕點擊事件的處理函數(shù)為update
。update
函數(shù)接受用戶輸入的姓名,并返回歡迎消息。
最后,使用demo.launch()
來啟動Gradio應用程序,并在本地的Web服務器上運行它。
運行該代碼后,您將在命令行中看到一個本地的URL地址,類似于http://127.0.0.1:7860/
。將此URL復制到瀏覽器中,您將能夠訪問該應用程序,并在輸入框中輸入姓名,然后點擊按鈕來查看歡迎消息的輸出。
gr.Interface
適用于創(chuàng)建簡單的交互式應用程序,而gr.Blocks
則適用于創(chuàng)建更復雜的界面布局和數(shù)據(jù)流程。您可以根據(jù)自己的需求選擇適合的方法。
Gradio的輸入和輸出組件
Gradio提供了多種輸入和輸出組件,您可以根據(jù)您的應用程序需求選擇適當?shù)慕M件類型。以下是Gradio常用的輸入和輸出組件:
輸入組件(Inputs)
- Textbox(文本框):單行或多行文本輸入框。
- Textarea(文本區(qū)域):多行文本輸入框。
- Checkbox(復選框):單個或多個選項的復選框。
- Radio(單選框):單個選項的單選框。
- Dropdown(下拉菜單):選擇一個選項的下拉菜單。
- Slider(滑塊):滑動條,用于選擇范圍內(nèi)的數(shù)值。
- Number(數(shù)字輸入框):允許輸入數(shù)字的文本框。
- File(文件上傳):用于上傳文件的組件。
輸出組件(Outputs)
- Label(標簽):顯示文本標簽。
- Textbox(文本框):顯示輸出文本的文本框。
- Image(圖像):顯示圖像輸出。
- KeyValues(鍵值對):顯示鍵值對的列表。
- JSON(JSON數(shù)據(jù)):顯示格式化的JSON數(shù)據(jù)。
- Audio(音頻):播放音頻輸出。
- File(文件下載):提供輸出文件的下載鏈接。
除了以上列出的常用組件,Gradio還提供了其他一些特殊用途的組件,如地圖(Map)、視頻(Video)等。
您可以根據(jù)您的應用程序需求選擇適當?shù)妮斎牒洼敵鼋M件,并使用它們來定義gr.Interface
或gr.Blocks
的輸入和輸出。文章來源:http://www.zghlxwxcb.cn/news/detail-474325.html
其他
Gradio官網(wǎng):https://www.gradio.app/
Gradio官方文檔:https://www.gradio.app/docs/文章來源地址http://www.zghlxwxcb.cn/news/detail-474325.html
- ??博客主頁:https://blog.csdn.net/qq233325332
- ??歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正!
- ??本文由 陌北v1 原創(chuàng),首發(fā)于 CSDN博客??
- ??停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
到了這里,關于Python之Gradio簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!