按关键词阅读:
模型训练为了训练该图像数据集 , 使用了预训练的CNN模型 。 这种方法称为转移学习 。 杰里米(Jeremy)建议使用预先训练的模型 , 以加快训练速度并提高准确性 。 这尤其适用于计算机视觉问题 。
learn = cnn_learner(data, resnet34, metrics=error_rate)learn.fine_tune(4)
文章插图
使用ResNet34体系结构 , 并根据错误率验证结果 。 由于使用预先训练的模型进行训练 , 因此使用微调方法而不是对模型进行拟合 。
你可以运行更多时期 , 并查看模型的性能 。 选择正确的时期数以避免过拟合 。
你可以尝试使用准确性(准确性= 1-错误率)来验证模型性能 , 而不是使用error_rate 。 两者都用于验证模型的输出 。 在此示例中 , 保留了20%的数据用于验证 。 因此 , 该模型将仅对80%的数据进行训练 。 这是检查任何机器学习模型性能的非常关键的一步 。 你也可以通过更改ResNet层(选项为18、50、101和152)来运行此模型 。 除非你有一个大型数据集将产生准确的结果 , 否则这可能再次导致过拟合 。
验证模型性能模型性能可以通过不同的方式进行验证 。 一种流行的方法是使用混淆矩阵 。 矩阵的对角线值指示每种类别的正确预测 , 而其他单元格值指示许多错误的预测 。
interp = ClassificationInterpretation.from_learner(learn)interp.plot_confusion_matrix()
文章插图
Fastai提供了一个有用的功能 , 可以根据最高丢失率查看错误的预测 。 该函数的输出指示每个图像的预测标签 , 目标标签 , 丢失率和概率值 。 高概率表示模型具有较高的置信度 。 它在0到1之间变化 。 高丢失率表示模型性能有多差 。
interp.plot_top_losses(5, nrows=1, figsize = (25,5))
文章插图
另一个很棒的Fastai功能 ,ImageClassifierCleaner(GUI) , 它可以通过删除故障图像或重命名其标签来清除故障图像 。 这非常有助于数据预处理 , 从而提高了模型的准确性 。
杰里米(Jeremy)建议在对图像进行基本训练后再运行此功能 , 因为这可以了解数据集中异常的种类 。
from fastai.vision.widgets import *cleaner = ImageClassifierCleaner(learn)cleaner
保存和部署模型训练完模型并对结果满意后 , 就可以部署模型了 。 要将模型部署到生产环境中 , 你需要保存模型体系结构以及对其进行训练的参数 。 为此 , 使用了导出方法 。 导出的模型另存为PKL文件 , 该文件是pickle(Python模块)创建的文件 。
learn.export()
从导出的文件中创建一个推理学习器 , 该学习器可用于将模型部署为应用程序 。 推理学习器一次预测一个新图像的输出 。 预测返回三个参数:预测类别 , 预测类别的索引以及每个类别的概率 。
learn_inf = load_learner(path/'export.pkl')learn_inf.predict("img")
(‘noCovid’, tensor(1), tensor([5.4443e-05, 9.9995e-01])) – prediction
有多种方法可以创建用于部署模型的Web应用程序 。 最简单的方法之一是使用作为GUI组件的IPython小部件在Jupyter notebook中为应用程序创建所需的对象 。
from fastai.vision.widgets import *btn_upload = widgets.FileUpload()out_pl = widgets.Output()lbl_pred = widgets.Label()
文章插图
【使用Fastai开发和部署图像分类器应用】设计应用程序元素后 , 请使用像Web应用程序一样运行Jupyter notebook的Voila来部署模型 。 它删除所有单元格输入 , 仅显示模型输出 。 要将notebook作为VoilàWeb应用程序查看 , 请将浏览器URL中的“notebook”一词替换为“ voila/render” 。 必须在包含受过训练的模型和IPython小部件的同一notebook中安装和执行Voila 。
!pip install voila!jupyter serverextension enable voila --sys-prefix
结论就这样 , 你已经使用fastai库构建并部署了一个很酷的图像分类器应用程序 , 只需八个步骤!这还只是我在本文中展示的冰山一角 。 有更多的fastai组件可用于与NLP和计算机视觉相关的各种深度学习用例 , 你可以探索这些组件 。
以下是fastai学习资源 , 以及我的git repo , 其中包含本文中解释的图像分类器的代码和图像 。
- Covid19 X射线图像分类器:包含本文中讨论的完整代码和数据集
稿源:(未知)
【傻大方】网址:http://www.shadafang.com/c/111J310362020.html
标题:使用Fastai开发和部署图像分类器应用( 二 )