用纯 python 写 web app:Streamlit
![用纯python写web app:Streamlit](https://static001.geekbang.org/infoq/ee/ee002f0cd5e85e4b356cdbd3522a7f35.png)
1. Streamlit
一句话,Streamlit 是一个可以用 python 编写 web app 的库,可以方便的动态展示你的机器学习的项目。
优点
你不需要懂 html, css, js 等,纯 python 语言编写 web app
包括 web 常用组件:文本框, 按钮,单选框,复选框, 下拉框,多媒体(图片,视频)和文件上传等
应用场景
可以动态的探索数据
可以方便动态展示你的机器学习成果(可以和 jupyter notebook 做个比较)
https://github.com/streamlit/streamlit
2. 安装
3. 基本组件介绍
3.1 布局
web 中通常有布局 layout css, 如 Bootstrap 中的 12 列删格系统;streamlit 最多只有左右两栏,通常是一栏。 通过st.sidebar
添加侧边栏,通常可作为菜单,选择控制操作。在上下结构上,streamlit 按照代码顺序从上到下,依次布局
![](https://static001.geekbang.org/infoq/ea/ea3192b35637d6da87536ae3d8a3a6ba.png)
3.2 text
streamlit 提供了许多文本显示命令,还支持 markdown 语法
3.3 表单控件
streamlit 提供丰富的表单控件,如按钮,单选框,复选框,下拉框,文本框和文件上传。用法提炼如下:
函数调用为定义显示控件,返回值是表示是否触发,或者触发返回结果;比如按钮,
st.button('Say hello')
定义了一个按钮, 如果按下按钮返回 True,否则为 False
![](https://static001.geekbang.org/infoq/93/93d868a0c80f072d8596ef24355a901e.png)
3.4 图像
常用的图像库都支持,通过st.image
展示图片
3.5 图表
支持 pandas 中的 dataframe 展示图表(折线图,面积图和柱状图)
还支持 matplotlib 的图表展示,这个你应该很熟悉
![](https://static001.geekbang.org/infoq/8b/8b5dfeb677da924c7e0e886a2a98caf0.png)
3.6 缓存
streamlit 中数据的缓存使用st.cache
装饰器来修饰, 注意是作用于函数。缓存的好处顾名思义就是避免每次刷新的时候都要重新加载数据。
4. 动态数据 demo
![](https://static001.geekbang.org/infoq/a6/a69f6f8c08dc32b4fb5ee1f77a93aba4.png)
5. 机器视觉项目 demo
这个例子我们用人脸检测
来说明下机器视觉项目的展示。
功能:上传一张图片,检测出人脸框
人脸检测算法来自 facenet 项目
https://github.com/davidsandberg/facenet/tree/master/src/align
中的 MTCNN 算法布局为左右布局,左边为上传空间, 右边是展示
![](https://static001.geekbang.org/infoq/ee/ee002f0cd5e85e4b356cdbd3522a7f35.png)
6. 总结
是不是觉得很方便,分分钟就可以构建一个 web app 来展示你的项目。希望对你有帮助, 快动起手来吧!摘要如下:
数据记得要用缓存
@st.cache()
streamlit 可以支持 matplotlib
streamlit 有漂亮的表单控件,函数的返回值就是触发的值
streamlit 支持 markdown
官方提供了其他复杂的 demo(官方推荐用函数的方式的封装业务,这里也推荐, 本文主要是为了说明功能,采用比较直观的方式来编写)
https://github.com/streamlit/demo-face-gan
https://github.com/streamlit/demo-self-driving
版权声明: 本文为 InfoQ 作者【AIWeker】的原创文章。
原文链接:【http://xie.infoq.cn/article/c16545f7366b85248dfafb4b3】。文章转载请联系作者。
评论