30分钟吃掉ipywidgets交互工具

 ipywidgets 是一个在jupyter notebook 中开发用户交互界面的简单工具。

可以用它来做机器学习模型的演示,构建数据分析dashboard,或者做一些小工具。

先看个效果,再介绍原理~

4c99783886b11897bb4a76952af90c06.gif

公众号算法美食屋后台回复关键词源码获取本文notebook源代码~

相比streamlit和gradio,ipywidgets具有如下优势:

⚫️ 灵活高效:ipywidgets的组件可以和notebook的输出很好地结合在一起。

⚫️ 方便调试:ipywidgets和代码一起直接在jupyter中展示和运行, all in one notebook。

⚫️ 便于分享:任何可以托管notebook的环境都可以使用和展示它。

大多数的ipywidgets应用一般由如下最常用的基础模块构成。

⚫️ 应用界面:interact(简易场景), interact_manual(简易场景手动触发), interactive_output(定制化输入), display(完全定制化场景)

⚫️ 输入输出:Output(笔记本输出), Image(图像), Text(文本框), Textarea(文本块),  Dropdown(下拉选项), IntSlider(整数滑条), FloatSlider(浮点数滑条), HTML, Viedio(视频),

⚫️ 控制组件:Button(按钮), Play(播放器)

⚫️ 布局组件:Tab(标签页), HBox(行布局), VBox(列布局), Layout(外观)

我们将由易到难通过4个范例来介绍ipywidgets的使用方法。

⚫️ hello world范例

⚫️ 文本分类

⚫️ 图片浏览工具

⚫️ 图片分类

一,Hello World (难度系数: ⭐️)

 
 
import ipywidgets as widgets
def greet(name):
    return "Hello " + name + "!!"


w = widgets.interact(greet,name='LiLei');
w

53a405fa64cc9da9ca98f5d48ab47438.png

二,图片浏览工具 (难度系数: ⭐️⭐️)

 
 
from ipywidgets import widgets,interact
from pathlib import Path
from PIL import Image
from  torchkeras.data import download_baidu_pictures 
download_baidu_pictures(keyword='猫咪表情包',needed_pics_num=20, save_dir = 'cats')
files = [str(x) for x in Path('cats').rglob('*.jpg') if 'checkpoint' not in str(x)]
def browser_image(path):
    return Image.open(path) 
    
interact(browser_image, path=files)

f0e485a9bb0018fe3231ad2ed0e1d262.png

三,文本分类 (难度系数: ⭐️⭐️)

 
 
#解决国内下载huggingface仓库慢的问题
import os 
os.environ['HF_ENDPOINT']='https://hf-mirror.com'  


import ipywidgets as widgets
from transformers import pipeline


pipe = pipeline("text-classification")


@widgets.interact_manual(text='Good morning')
def clf(text):
    result = pipe(text)
    label = result[0]['label']
    score = result[0]['score']
    res = {label:score,'POSITIVE' if label=='NEGATIVE' else 'NEGATIVE': 1-score}
    return res

60aaea4b1d77483a718fbe7e861e5420.png

四,图片分类 (难度系数: ⭐️⭐️⭐)

 
 
import ipywidgets as widgets
from IPython.display import HTML,display 


import pandas as pd 
from ultralytics import YOLO
from skimage import data
from PIL import Image


model = YOLO('yolov8n-cls.pt')


def predict(img):
    ...
    return res


title = ...


files = widgets.Dropdown(
    ...
)


button = widgets.Button(...)
button.style.button_color = 'lightgreen'


out1 = widgets.Output() #widgets.Textarea(value='',layout=widgets.Layout(width='100%',height='100px'))
out2 = widgets.Output()
output = widgets.HBox([out1,out2])


display(title,files,button,output)


def on_button_clicked(btn):
    ...
    with out1:
        display(Image.open(files.value))
    
    with out2:
        display(fig)


button.on_click(on_button_clicked)

b53c913de8812c441bde9de21177bbf2.gif

公众号算法美食屋后台回复关键词: 源码获取本文notebook源代码~

万水千山都是情,点个在看行不行?😊

abedce01b439b52907aac9282befbec1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值