使用Streamlight演示你的模型-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

任务

假设您需要展示您在开发计算机视觉模型方面所取得的进展。您正在使用的模型尚未就绪,因此将其部署到适当的开发或生产环境可能需要时间和大量工作。

另一方面,开发与模型交互的特定web界面可能是一项繁琐的任务,需要数据科学家不常见的技能。

流线型照明

Streamlit是一个开源的Python库,可以轻松创建和共享用于机器学习和数据科学的web应用程序。它在向团队展示项目进度.获得并与经理分享见解,甚至获得客户反馈方面非常有用。

它不能取代需要监视.日志记录和其他功能的生产部署。然而,它允许您在几个小时内创建”有用的东西”,而无需事先了解任何web开发知识,甚至无需知道如何使用烧瓶或Django作为后端。

让我们看看它是如何工作的。

安装

要安装Streamlight,请运行:

pip安装streamlit

如果你使用诗歌,运行:

诗歌加流线

要验证所有功能是否正常,可以运行此行并查看一些解释和演示:

streamlit你好

您的第一个应用程序-上传图片让我们从从本地存储加载图像并显示它们开始:

将streamlit导入为st

def加载_图像():

uploaded_file=st.file_uploader(标签=”选择要测试的图像”)

如果上传的_文件不是无:

image_data=上传的_file.getvalue()

st.image(图像数据)

定义main():

st.title(“图像上传演示”)

加载_图像()

如果__name__==’__main__’:

main()

要运行应用程序,只需键入:streamlint run image_upload.py

然后它将在浏览器中打开应用程序。应该是这样的:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

你可以浏览你的电脑并上传你喜欢的任何图片。我选择上传一些可爱企鹅的照片。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

部署预训练模型时,了解预训练模型如何工作以获得良好的基线非常有用。现在,您将在Streamlight应用程序中部署其中一个模型,在本例中为ResNet18。要使用PyTorch实现这一点,您需要加载模型并下载ImageNet标记:

def load_model():

型号=火炬轮毂负载(‘pytorch/vision:v0.10.0’,’resnet18’,预处理=True)

模型评估()

收益模型

def load_labels():

labels_path=’https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt’

标签_文件=os.path.basename(标签_路径)

如果不存在os.path.exis(labels_file):

wget.download(标签_路径)

打开(labels_file,”r”)为f:

categories=[s.strip()用于f.readlines()中的s]

退货类别

为了在imageload_image函数上运行模型,您应该修改以前使用的函数以返回图像。您需要将image_data转换为PIL图像对象,以便将其输入到模型中:

def加载_图像():

uploaded_file=st.file_uploader(标签=”选择要测试的图像”)

如果上传的_文件不是无:

image_data=上传的_file.getvalue()

st.image(图像数据)

return Image.open(io.BytesIO(图像_数据))

否则:

return无

以下代码是PyTorch ResNet教程的修改版本。它运行模型预测并显示前五类图像:

定义预测(模型.类别.图像):

预处理=变换。合成(〔

调整大小(256)

CenterCrop(224)

transforms.ToTensor()

变换。归一化(平均值=〔0.485,0.456,0.406〕,标准值=〔0.229,0.224,0.225〕)

])

输入_张量=预处理(图像)

input _ batch=input _ tensor.unqueze(0)

带火炬。无_级():

输出=型号(输入_批次)

概率=torch.nn.functional.softmax(输出[0],dim=0)

top5_prob,top5_catid=torch.topk(概率,5)

对于范围内的i(top5_概率大小(0)):

st.write(类别〔top5〕catid〔i〕〕,top5〕prob〔i〕.item())

当然,您还需要相应地修改main函数:

定义main():

st.title(“预训练模型演示”)

模型=载荷_模型()

类别=载荷_标签()

image=load_image()

结果=st.button(“在图像上运行”)

如果结果:

st.write(“计算结果…”)

预测(模型.类别.图像)

首先要改变的是标题。然后将加载模型.标记和图像。您还应该添加一个按钮来触发模型推断。

这就是应用程序的运行方式:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

该模型将这些图像分类为”企鹅”,概率为1.0。其他四类的可能姓很小。这个例子的完整代码在Github中。

部署自定义图像分类模型

现在可以部署自定义模型了。您将使用PyTorch模型,该模型根据企鹅类型对图像进行分类。创建使用自定义模型的web应用程序的过程与使用预先训练的模型的过程非常相似,只是做了一些修改。代码可以在此处找到。

关于模型

通常,预先训练的模型不足以满足我们的需求,因为手头的任务更具体,而且这些模型无法涵盖。例如,ImageNet有一个”国王企鹅”类,但实际上有更多的企鹅类型。因此,为了根据企鹅的类型对图像进行分类,我必须训练自己的模型。我用这个笔记本训练。

如果你想了解更多关于这个模型是如何构建的,你可以在上一篇文章中阅读。

获取模型

为模型相关文件创建目录:

mkdir自定义_模型

要直接下载模型文件,可以使用此链接。将其复制到新目录。

将此常量定义添加到代码中:

模型_路径=’自定义_模型/模型.pt’

创建标签文件

创建一个包含分类类名的文本文件,每个类一行。确保课程顺序与培训期间使用的顺序一致。

例如,要查找企鹅数据集的顺序,您可以在培训笔记本中找到以下几行,并在它们后面添加打印:

class_name=image_dataset〔’train’〕class

打印(班级名称)

这将为您提供以下输出:

[Adelie企鹅.下巴企鹅.帝企鹅.Gentoo企鹅]

因此,您应该将以下类名复制到名为model_class的文件中。txt并将其放置在custom_model目录中:

阿德莉·企鹅

下巴企鹅

帝企鹅

巴布亚企鹅

将新标签文件作为常量添加到代码中:

标签_路径=’自定义_模型/模型_类.txt

加载模型和标签

模型和标签加载变得更容易:

def-load_模型(模型_路径):

型号=火炬负载(型号_路径,地图_位置=”cpu”)

模型评估()

收益模型

def加载_标签(标签_文件):

打开(labels_file,”r”)为f:

categories=[s.strip()用于f.readlines()中的s]

退货类别

对的

与具有许多标签的ResNet18不同,此自定义模型只有四个标签。因此,您应该修改预测代码以输出所有现有类的概率:

概率=torch.nn.functional.softmax(输出[0],dim=0)

所有_ prob,所有_ catid=torch.topk(概率,len(类别))

对于范围内的i(所有_概率大小(0)):

st.write(类别〔all〕catid〔i〕〕,all〕prob〔i〕.item())

在主函数中更改应用程序的标题,并传递模型和标签的本地路径:

定义main():

st.title(“自定义模型演示”)

模型=载荷_模型(模型_路径)

类别=负载_标签(标签_路径)

image=load_image()

结果=st.button(“在图像上运行”)

如果结果:

st.write(“计算结果…”)

预测(模型.类别.图像)

最后,应用程序应该如下所示:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

为了测试这个应用程序,我上传了一张Gentoo企鹅的照片。该模型将图像分类为Gentoo企鹅图像,概率为0.91。其他企鹅的概率要低得多。除了确认应用程序运行良好之外,我还得到了模型正确姓的另一个证明。很好,对吧?

结论

开发一个运行良好的计算机视觉模型需要花费大量时间和精力。在此过程中,您可能需要部署模型,并向经理.团队成员和客户演示其功能。

Streamlight是一个功能强大且易于使用的工具,即使您没有适当的内部工具或前端知识,也可以实现这一点。

我举例说明了Streamlight在图像分类中的潜在用途。但是,它可以用于其他类型的计算机视觉任务,以及可视化.数据分析等。我鼓励您浏览Streamlight网站上的示例,并亲自尝试该工具,看看它如何融入您的日常工作。

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 使用Streamlight演示你的模型-600学习网