国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Gradio入門到進(jìn)階全網(wǎng)最詳細(xì)教程[二]:快速搭建AI算法可視化部署演示(側(cè)重參數(shù)詳解和案例實(shí)踐)

這篇具有很好參考價(jià)值的文章主要介紹了Gradio入門到進(jìn)階全網(wǎng)最詳細(xì)教程[二]:快速搭建AI算法可視化部署演示(側(cè)重參數(shù)詳解和案例實(shí)踐)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Gradio入門到進(jìn)階全網(wǎng)最詳細(xì)教程[二]:快速搭建AI算法可視化部署演示(側(cè)重參數(shù)詳解和案例實(shí)踐)

相關(guān)文章:Gradio入門到進(jìn)階全網(wǎng)最詳細(xì)教程[一]:快速搭建AI算法可視化部署演示(側(cè)重項(xiàng)目搭建和案例分享)

在教程一中主要側(cè)重講解gradio的基礎(chǔ)模塊搭建以及demo展示,本篇文章則會(huì)側(cè)重實(shí)際任務(wù)的搭建。

1.經(jīng)典案例簡單的RGB轉(zhuǎn)灰度

保持一貫作風(fēng)簡單展示一下如何使用

import gradio as gr
import cv2


def to_black(image):
    output = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return output

interface = gr.Interface(fn=to_black, inputs="image", outputs="image")

interface.launch()

gradio的核心是它的gr.Interface函數(shù),用來構(gòu)建可視化界面。

  • fn:放你用來處理的函數(shù)
  • inputs:寫你的輸入類型,這里輸入的是圖像,所以是"image"
  • outputs:寫你的輸出類型,這里輸出的是圖像,所以是"image"

最后我們用interface.lauch()把頁面一發(fā)布,一個(gè)本地靜態(tài)交互頁面就完成了!在瀏覽器輸入http://127.0.0.1:7860/,查收你的頁面:

  • 上傳一張圖片,點(diǎn)擊「SUBMIT」

對(duì)于任何圖像處理類的ML代碼來說,只要定義好一個(gè)圖像輸入>>模型推理>>返回圖片的函數(shù)(邏輯和RGB轉(zhuǎn)灰度圖本質(zhì)上沒區(qū)別),放到fn中即可。

1.1 增加example

可以在頁面下方添加供用戶選擇的測試樣例。

在gr.Interface里的examples中放入圖片路徑,格式為[[路徑1],[路徑2],...]。

import gradio as gr
import cv2

def to_black(image):
    output = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return output

interface = gr.Interface(fn=to_black, inputs="image", outputs="image",
                        examples=[["gradio/test.png"]])
interface.launch()

增加example不僅能讓你的UI界面更美觀,邏輯更完善,也有一些其他意義:比如做了一個(gè)圖像去噪算法,但是用戶手頭并沒有躁點(diǎn)照片,example能讓他更快的體驗(yàn)到效果

  • 創(chuàng)建一個(gè)外部訪問鏈接

    • 創(chuàng)建外部訪問鏈接非常簡單,只需要launch(share=True)即可,在打印信息中會(huì)看到你的外部訪問鏈接。

    • 需要注意:免費(fèi)用戶的鏈接可以使用24小時(shí),想要長期的話需要在gradio官方購買云服務(wù)。

2. 文本分類

在Gradio中搭建一個(gè)實(shí)用的自然語言處理應(yīng)用最少只需要三行代碼!讓我們?nèi)写a來搭建一個(gè)文本分類模型的演示系統(tǒng),這里使用的模型是uer/roberta-base-finetuned-dianping-chinese,代碼如下

#導(dǎo)入gradio
import gradio as gr
#導(dǎo)入transformers相關(guān)包
from transformers import *
#通過Interface加載pipeline并啟動(dòng)服務(wù)
gr.Interface.from_pipeline(pipeline("text-classification", model="uer/roberta-base-finetuned-dianping-chinese")).launch()

過程中需要加載一個(gè)400MB的模型。

直接運(yùn)行即可,運(yùn)行后,服務(wù)默認(rèn)會(huì)啟動(dòng)在本地的7860端口,打開鏈接即可。

可以在左側(cè)輸入待分類文本,而后點(diǎn)擊submit按鈕,右側(cè)便會(huì)展示出預(yù)測的標(biāo)簽及概率,如下圖所示

3. 閱讀理解

#導(dǎo)入gradio
import gradio as gr
#導(dǎo)入transformers相關(guān)包
from transformers import *
#通過Interface加載pipeline并啟動(dòng)服務(wù)
gr.Interface.from_pipeline(pipeline("question-answering", model="uer/roberta-base-finetuned-dianping-chinese")).launch()

再次打開,可以看到界面中除了幾個(gè)按鈕外的內(nèi)容全部進(jìn)行了更新,變成了閱讀理解相關(guān)的內(nèi)容,輸入部分包括了context和question兩部分,輸出也變成了answer和score兩部分。

效果上不佳可以考慮重新加載以及微調(diào)模型

3.1完善頁面

盡管我們快速的啟動(dòng)了一個(gè)demo,但是頁面整體還是較為簡陋的,除了標(biāo)題和實(shí)際的調(diào)用部分,缺少一些其他內(nèi)容,我們可以通過配置幾個(gè)簡單的參數(shù),將頁面進(jìn)行完善,還是以閱讀理解任務(wù)為例,代碼如下:

import gradio as gr
from transformers import *

#標(biāo)題
title = "抽取式問答"
#標(biāo)題下的描述,支持md格式
description = "輸入上下文與問題后,點(diǎn)擊submit按鈕,可從上下文中抽取出答案,趕快試試吧!"
#輸入樣例
examples = [
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大?!贰ⅰ吨聞P恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "著名詩歌《假如生活欺騙了你》的作者是"],
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大?!?、《致凱恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "普希金創(chuàng)作的敘事詩叫什么"]
    ]
#頁面最后的信息,可以選擇引用文章,支持md格式
article = "感興趣的小伙伴可以閱讀[gradio專欄](https://blog.csdn.net/sinat_39620217/category_12298724.html?spm=1001.2014.3001.5482)"

gr.Interface.from_pipeline(
    pipeline("question-answering", model="uer/roberta-base-chinese-extractive-qa"),
    title=title, description=description, examples=examples, article=article).launch()
  • 運(yùn)行上述代碼,將看到如下頁面,這里的example是可以點(diǎn)擊的,點(diǎn)擊后將自動(dòng)填充至context和question中
  • 由于description和article字段支持md語法,因此我們可以根據(jù)需求,自行的去豐富完善各部分內(nèi)容

4.Interface使用詳解

前面的內(nèi)容中構(gòu)建演示系統(tǒng)都是基于pipeline的,各個(gè)部分的模塊都是定義好的,快速啟動(dòng)的同時(shí),在靈活性上有所欠缺。

簡單的說,就需要兩步:

  • 第一步,定義執(zhí)行函數(shù);
  • 第二步,綁定執(zhí)行函數(shù)并指定輸入輸出組件。

假設(shè)還是閱讀理解任務(wù),但是我們這次不適用基于pipeline的加載方式,而是自定義實(shí)現(xiàn),要求輸入包含context、question,輸出包含answer和score,但是這里的answer要求要把問題拼接上,如前面的示例,answer為普希金,這里的答案要變?yōu)椋褐姼琛都偃缟钇垓_了你》的作者是:普希金 ,針對(duì)這一需求,我們看下要如何實(shí)現(xiàn)。

  • 首先,定義執(zhí)行函數(shù)。該函數(shù)輸入包括context和question兩部分,輸出包括answer和score,本質(zhì)上還是調(diào)用pipeline進(jìn)行推理,但是在答案生成時(shí)我們做了額外的拼接處理。
qa = pipeline("question-answering", model="uer/roberta-base-chinese-extractive-qa")
def custom_predict(context, question):
    answer_result = qa(context=context, question=question)
    answer = question + ": " + answer_result["answer"]
    score = answer_result["score"]
    return answer, score
  • 接下來,在Interface中綁定執(zhí)行函數(shù)并指定輸入輸出組件,fn字段綁定執(zhí)行函數(shù);inputs字段指定輸入組件,這里是context和question兩個(gè)文本輸入,因此inputs字段的值為["text", "text"]數(shù)組(這里的text表示輸入組件為TextBox,text只是一種便捷的指定方式);outputs字段指定輸出組件,answer是文本輸出,score可以用標(biāo)簽輸出,這里采取了和inputs字段不一樣的創(chuàng)建方式,我們直接創(chuàng)建了對(duì)應(yīng)的組件,這種方式的使用優(yōu)勢在于可以對(duì)組件進(jìn)行更精細(xì)的配置,例如這里我們便分別指定了兩個(gè)輸出模塊的label 。
gr.Interface(fn=custom_predict, inputs=["text", "text"], outputs=[gr.Textbox(label="answer"), gr.Label(label="score")], 
             title=title, description=description, examples=examples, article=article).launch()

注意點(diǎn):

  1. 輸入輸出要與函數(shù)的輸入輸出個(gè)數(shù)一致
  2. outputs字段,推薦使用創(chuàng)建的方式,否則頁面顯示的標(biāo)簽都是output*,不夠清晰

完整代碼:

import gradio as gr
from transformers import *

#標(biāo)題
title = "抽取式問答"
#題下的描述,支持md格式
description = "輸入上下文與問題后,點(diǎn)擊submit按鈕,可從上下文中抽取出答案,趕快試試吧!"
#輸入樣例
examples = [
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大海》、《致凱恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "著名詩歌《假如生活欺騙了你》的作者是"],
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大?!?、《致凱恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "普希金創(chuàng)作的敘事詩叫什么"]
    ]
#頁面最后的信息,可以選擇引用文章,支持md格式

article = "感興趣的小伙伴可以閱讀[gradio專欄](https://blog.csdn.net/sinat_39620217/category_12298724.html?spm=1001.2014.3001.5482)"

qa = pipeline("question-answering", model="uer/roberta-base-chinese-extractive-qa")

def custom_predict(context, question):
    answer_result = qa(context=context, question=question)
    answer = question + ": " + answer_result["answer"]
    score = answer_result["score"]
    return answer, score

gr.Interface(fn=custom_predict, inputs=["text", "text"], outputs=[gr.Textbox(label="answer"), gr.Label(label="score")], 
             title=title, description=description, examples=examples, article=article).launch()

可以看到,其他的部分與我們使用pipeline創(chuàng)建的方式都一致,只是在answer部分有了變化。通過這種方式,我們可以創(chuàng)建出更加復(fù)雜的包含任意輸入、輸出的系統(tǒng)。

5.Blocks使用詳解

事實(shí)上,Interface是一個(gè)更加高級(jí)的組件,雖然它已經(jīng)支持了了一定的自定義內(nèi)容,但是靈活性還是略差一些,如果有注意的話,可以回到上文看下,所有的組件都是被劃分為了左右兩部分,左側(cè)輸入,右側(cè)輸出。使用Interface就要接受這樣的默認(rèn)設(shè)定,那么假設(shè)你現(xiàn)在就想做成上下結(jié)構(gòu),上面輸入,下面輸出,那么,我們就需要用到Block。

Blocks是比Interface更加底層一些的模塊,支持一些簡單的自定義排版,那么下面就讓我們來重構(gòu)一下上面組件排列。整體是上下結(jié)構(gòu),從上到下,依次是context輸入、question輸入,clear按鈕和submit按鈕(在一橫排),answer輸出,score輸出,其余如title、examples等內(nèi)容不變,代碼如下

import gradio as gr
from transformers import *

title = "抽取式問答"

description = "輸入上下文與問題后,點(diǎn)擊submit按鈕,可從上下文中抽取出答案,趕快試試吧!"

examples = [
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大?!?、《致凱恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "著名詩歌《假如生活欺騙了你》的作者是"],
    ["普希金從那里學(xué)習(xí)人民的語言,吸取了許多有益的養(yǎng)料,這一切對(duì)普希金后來的創(chuàng)作產(chǎn)生了很大的影響。這兩年里,普希金創(chuàng)作了不少優(yōu)秀的作品,如《囚徒》、《致大海》、《致凱恩》和《假如生活欺騙了你》等幾十首抒情詩,敘事詩《努林伯爵》,歷史劇《鮑里斯·戈都諾夫》,以及《葉甫蓋尼·奧涅金》前六章。", "普希金創(chuàng)作的敘事詩叫什么"]
    ]

article = "感興趣的小伙伴可以閱讀[Transformers實(shí)用指南](https://zhuanlan.zhihu.com/p/548336726)"


#預(yù)測函數(shù)
qa = pipeline("question-answering", model="uer/roberta-base-chinese-extractive-qa")
def custom_predict(context, question):
    answer_result = qa(context=context, question=question)
    answer = question + ": " + answer_result["answer"]
    score = answer_result["score"]
    return answer, score

#清除輸入輸出
def clear_input():
    return "", "", "", ""

#構(gòu)建Blocks上下文
with gr.Blocks() as demo:
    gr.Markdown("# 抽取式問答")
    gr.Markdown("輸入上下文與問題后,點(diǎn)擊submit按鈕,可從上下文中抽取出答案,趕快試試吧!")
    with gr.Column():    # 列排列
        context = gr.Textbox(label="context")
        question = gr.Textbox(label="question")
    with gr.Row():       # 行排列
        clear = gr.Button("clear")
        submit = gr.Button("submit")
    with gr.Column():    # 列排列
        answer = gr.Textbox(label="answer")
        score = gr.Label(label="score")
    #綁定submit點(diǎn)擊函數(shù)
    submit.click(fn=custom_predict, inputs=[context, question], outputs=[answer, score])
    # 綁定clear點(diǎn)擊函數(shù)
    clear.click(fn=clear_input, inputs=[], outputs=[context, question, answer, score])
    gr.Examples(examples, inputs=[context, question])
    gr.Markdown("感興趣的小伙伴可以閱讀[Transformers實(shí)用指南](https://zhuanlan.zhihu.com/p/548336726)")

demo.launch()

當(dāng)我們的服務(wù)啟動(dòng)起來后,還是在本地的,雖然訪問是能訪問了,但是還是會(huì)受到網(wǎng)絡(luò)的限制。Gradio提供了一種非常方便的方式,可以使得本地的服務(wù)在任何地方都可以調(diào)用。代碼上,我們只需要在launch方法調(diào)用時(shí),指定share參數(shù)值為True。服務(wù)除了有一個(gè)本地地址,還有一個(gè)公網(wǎng)的地址https://11886.gradio.app,雖然時(shí)間只有72小時(shí)

demo.launch(inbrowser=True, inline=False, validate=False, share=True)
  • inbrowser - 模型是否應(yīng)在新的瀏覽器窗口中啟動(dòng)。
  • inline - 模型是否應(yīng)該嵌入在交互式python環(huán)境中(如jupyter notebooks或colab notebooks)。
  • validate - gradio是否應(yīng)該在啟動(dòng)之前嘗試驗(yàn)證接口模型兼容性。
  • share - 是否應(yīng)創(chuàng)建共享模型的公共鏈接。用于處理。

參考鏈接:

Gradio官方倉庫

基于Gradio可視化部署機(jī)器學(xué)習(xí)應(yīng)用

gradio官方文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-425911.html

到了這里,關(guān)于Gradio入門到進(jìn)階全網(wǎng)最詳細(xì)教程[二]:快速搭建AI算法可視化部署演示(側(cè)重參數(shù)詳解和案例實(shí)踐)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包