机 器 学 习 秒 变 小 程 序

共 2307字,需浏览 5分钟

 ·

2020-11-15 02:47

↑↑↑点击上方蓝字,回复资料,10个G的惊喜

今天我们来展示一款适合于机器学习的更轻量UI设计库--Gradio。它轻量但是绝对绝对绝对实用,一定要看到文末

官方链接:https://www.gradio.app/ 







如果你想秒开发类似APP
Gradio的定位类似于Streamlit,但是更轻量(一行代码),因为它推荐的应用场景都是对“单个函数”进行调用的应用,并且不需要对组件进行回调。比如下列场景(以下代码参考官方文档):
  • Image Classifier (图像辨别)
    • 用户可以上传一个图画或者手画一张图片,系统输出识别出的字符
    • 用户拖拽上传一张图片,系统判定是阿猫还是阿狗,还是阿三

  • Text Analysis (文本分析)
    • 用户输入文字,系统做出情感分析
    • 用户输入多段文字,并且提出问题,系统回答问题(图中有彩蛋)
  • Webcam Analysis (视频/图像处理)
    • 根据视频中截图进行人脸识别,输入为视频流(手动截图),输出为识别的人脸 (可惜我的小黄鸭大脸没有被识别出,手动狗头.jpg),有兴趣的可以去识别抖音大神。
  • Forecast 预测分析
    • 比如输入某个国家COVID传播的R值,预测某个月特定条件下(是否保持社交距离等)的感染人数,可以看到该APP包含多组输入组件。
如果上面的应用场景符合你的需求,那就可以愉快的尝试Gradio了。






动手秒建APP
安装很简单,pip即可。
pip install gradio

问:使用Gradio创建APP统共需要几步?
答:三步!
我们以图像识别分类器APP为例,来讲解代码实现,以下代码参考官方文档。
第一步,导入gradio
import gradio as grimport tensorflow as tf # 用于训练模型import numpy as npimport requests # 获取标签
第二步,定义模型(函数),确定输入和输出
这里输入的参数为图像,输出为识别的结果。结果是一个字典类型,key值为标签,value 为该标签预测置信度。
inception_net = tf.keras.applications.InceptionV3() # load the model
# Download human-readable labels for ImageNet.response = requests.get("https://git.io/JJkYN")labels = response.text.split("\n") # 获取标签
def classify_image(inp): inp = inp.reshape((-1, 299, 299, 3)) inp = tf.keras.applications.inception_v3.preprocess_input(inp) prediction = inception_net.predict(inp).flatten() return {labels[i]: float(prediction[i]) for i in range(1000)}
第三步,关联输入和输出到相应的组件,然后一键创建APP。
image = gr.inputs.Image(shape=(299, 299, 3))label = gr.outputs.Label(num_top_classes=3)gr.Interface(fn=classify_image, inputs=image, outputs=label, capture_session=True).launch()

我们需要给第二步的函数的输入参数(图像)关联Image 组件,这个组件允许用户上传和编辑图像。主要的参数是shape,用于裁剪图像的大小以适合机器学习模型识别。
函数的输出是分类问题的结果,包含不同类别的标签以及对应的置信度,这里采用Label组件来显示。当然输入输出还有其他组件,可以参考官方API文档。
创建APP只需要调用Interface 以及调用launch来运行。so easy!!!






运行APP
运行Python程序,系统自动弹出浏览器来显示APP。默认网址是本地IP以及7860端口。如果使用的是Jupyter notebook,则APP会嵌入到当前notebook中,如下图所示。
我们上传图片可以进行测试,测试结果还算ok,草泥马英文为Llama (发音:辣么)






重磅Bonus
你以为这是一个只能本地玩玩的小程序吗?No!
这是一个可以共享的小程序,只需在launch函数里面设置参数share=True,就会得到一个神奇的public 网址,格式为https://xxxx.gradio.app (https 协议,安全靠谱)。
这个网址你可以愉快的分享给你的伙伴了,可以在电脑或者手机打开,比如分享到微信里,就是一个活脱脱的小程序






总结
Gradio一行代码就能让你干巴巴的算法脚本变成活生生的交互APP,还能发布到公网,分享给其他小伙伴和其他平台。
还等啥,赶快发布你的APP吧。
欢迎勾搭老胡↑↑↑

推荐阅读:

自 学 机 器 学 习 十 诫

假如特朗普是一门编程语言

众所周知,YouTube是个学习网站

2020年度最佳的23个的机器学习项目

经典教材《统计学习导论》Python版

浏览 104
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报