streamlit + opencv/YOLOv3 快速构建自己的图像目标检测demo网页

AI算法与图像处理

共 1252字,需浏览 3分钟

 · 2021-03-08


机器学习开发者想要打造一款 App 有多难?事实上,你只需要会 Python 代码就可以了,剩下的工作都可以交给一个工具。一些介绍可参考:


文章

公众号:机器之心从Python代码到APP,你只需要一个小工具:GitHub已超3000星




streamlit可以自行构建工具的流程:

部署 Flask app,写 HTML、CSS 和 JavaScript,尝试对从 notebook 到样式表的所有一些进行版本控制。

写此类工具感觉就像训练神经网络或者在 Jupyter 中执行点对点分析(ad-hoc analysis)!同时,我们还想保留强大 app 框架的灵活性。我们想创造出令工程师骄傲的好工具。

我们希望的 app 构建流程如下:

简而言之,Streamlit 的工作流程如下:

  • 每次用户交互均需要从头运行全部脚本。

  • Streamlit 根据 widget 状态为每个变量分配最新值。

  • 缓存保证 Streamlit 重用数据和计算。


同时streamlit 可以支持中文,很友好:

而且只要保存文件,不用重启api就可以直接反应上来,非常方便,同时如果运行有报错,就会如下面这般显示:

总的来说,可以把steamlit当作一种IDE,交互非常及时。


再来看笔者的一个图像识别的目标检测案例


本案例脱胎于Udacity自动驾驶汽车图像识别

代码链接:implemented in less than 300 lines of Python


原案例中无法自己上传本地图片进行检测,事先提供好了图片url连接(标记了所有图像Ground Truth的原标签数据集),直接download使用,所以不太满足要求 。


笔者这边对该案例进行了一定的魔改,让其可以支持本地图片的使用。


这样才能制作自己的检测器,先贴一下笔者最终微调的结果:




依赖安装使用之前需要加载:

pip install --upgrade streamlit opencv-python

或者直接用线上的文件也是可以的:


streamlit run https://raw.githubusercontent.com/streamlit/demo-self-driving/master/streamlit_app.py

页面使用


使用步骤:

  • 第一步:选择本地的一张图片(png/jpg)…

  • 第二步:调整目标检测参数

  • 第三步:点击检测的按钮

其中,切换页面模式,继承了源码的三种:目标检测 + 显示介绍 + 展示原始code


最终的效果如图,展示原图 + 目标检测之后的图:



练习题代码可见github
https://github.com/mattzheng/streamlit_demo/tree/main/demo2-opencv+yolov3
浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

举报