傻大方


首页 > 潮·科技 > >

使用Fastai开发和部署图像分类器应用



按关键词阅读:

介绍Fastai是一个流行的开源库 , 用于学习和练习机器学习以及深度学习 。 杰里米·霍华德(Jeremy Howard)和蕾切尔·托马斯(Rachel Thomas)创立了 fast.ai ,其目标是使深度学习资源更容易获得 。 fast.ai中提供的所有详尽的资源 , 例如课程 , 软件和研究论文都是完全免费的 。
2020年8月 , fastai_v2发布 , 该版本有望更快 , 更灵活地实现深度学习框架 。 在2020 fastai课程结合了机器学习和深入学习的核心概念 。 它还向用户介绍了模型生产和部署的重要方面 。
在本文中 , 我将讨论fast.ai初学者课程的前三课中介绍的有关建立快速简单的图像分类模型的技术 。 在构建模型的同时 , 你还将学习如何轻松地为模型开发Web应用程序并将其部署到生产环境 。
本文将遵循Jeremy在其课程中所采用的自上而下的教学方法 。 你将首先学习有关训练图像分类器的知识 。 稍后 , 将解释有关用于分类的模型的细节 。 要理解本文 , 你必须具备Python知识 , 因为fastai是用Python编写并基于PyTorch构建的 。 建议你在Google Colab或Gradient中运行此代码 , 因为我们需要GPU访问权限 , 而且fastai可以轻松安装在这两个平台上 。
安装 , 导入和加载数据集!pip install -Uqq fastbookimport fastbookfastbook.setup_book()from fastbook import *from fastai.vision.widgets import *安装fastai并导入必要的库 。 如果你使用的是Colab , 则必须提供对Google云端硬盘的访问权限以保存文件和图像 。 你可以从Kaggle和Bing图像搜索等来源下载任何图像数据集 。 Fast.ai也有大量的图像集合 。 我在本文中使用了来自的一组胸部X射线图像 。
path = Path ('/content/gdrive/My Drive/Covid19images')将数据集位置的路径保存在Path()对象中 。 如果使用fast.ai数据集 , 则可以使用以下代码:
path = untar_data(URLs.PETS)/'images'这将从fastai PETS数据集集合中下载并提取图像 。
检查图像路径并显示数据集中的一些样本图像 。 我已经为此使用了Python Imaging Library(PIL) 。
path.lsfrom PIL import Imageimg = Image.open(path'/train/covid/1-s2.0-S1684118220300682-main.pdf-002-a2.png')print(img.shape)img.to_thumb(128,128)使用Fastai开发和部署图像分类器应用文章插图
在此图像分类问题中 , 我将训练模型 , 以将X射线图像分类为COVID或No COVID类 。 预处理数据集已放置在单独的COVID和No COVID文件夹中(来源:ChristianTutivénGálvez) 。
如果你使用的是fast.ai数据集 , 请使用以下函数根据宠物的名称对图像进行分组:
def is_cat(x): return x[0].isupper()PETS是猫和狗图像的集合 。 Cat图片标有大写的第一个字母 , 因此很容易对其进行分类 。
图像变换图像变换是训练图像模型的关键步骤 。 它也称为数据扩充 。 为了避免模型过拟合 , 必须进行图像变换 。 可以使用多种方法来转换图像 , 例如调整大小 , 裁剪 , 压缩和填充 。 但是 , 压缩和填充会抢夺图像中的原始信息 , 并分别添加其他像素 。 因此 , 随机调整图像大小会产生良好的效果 。
如以下示例所示 , 在此方法中 , 在每个时期都对每个图像的随机区域进行采样 。 这使模型可以了解每个图像的更多细节 , 从而获得更高的准确性 。
要记住的另一个要点是 , 始终仅变换训练图像 , 而不修改验证图像 。 在fastai库中 , 默认情况下会处理此问题 。
item_tfms=Resize(128, ResizeMethod.Squish))item_tfms=Resize(128, ResizeMethod.Pad, pad_mode='zeros')item_tfms=RandomResizedCrop(128, min_scale=0.3) - 30% of the image area is zoomed by specifying 0.3Fastai库通过aug_transforms函数提供了一组标准的扩充 。 如果图像尺寸均匀 , 可以批量应用 , 节省大量训练时间 。
tfms = aug_transforms(do_flip = True, flip_vert = False, mult=2.0)使用Fastai开发和部署图像分类器应用文章插图
fastai中的DataLoaders类非常便于存储用于训练和验证模型的各种对象 。 如果要自定义训练期间要使用的对象 , 则可以将DataBlock类与DataLoaders结合使用 。
data= http://kandian.youth.cn/index/ImageDataLoaders.from_folder(path,train ="train", valid_pct=0.2, item_tfms=Resize(128), batch_tfms=tfms, bs = 30, num_workers = 4)如果你在图元文件中定义了图像标签 , 则可以使用DataBlock将图像和标签分为两个不同的块 , 如下面的代码片段所示 。 将定义的数据块与数据加载器功能一起使用以访问图像 。
Data = http://kandian.youth.cn/index/DataBlock( blocks=(ImageBlock, CategoryBlock), get_items=get_image_files, splitter=RandomSplitter(valid_pct=0.2, seed=42), get_y=parent_label, item_tfms=Resize(128))dls = Data.dataloaders(path)


稿源:(未知)

【傻大方】网址:http://www.shadafang.com/c/111J310362020.html

标题:使用Fastai开发和部署图像分类器应用


上一篇:如何在Linux,macOS和Windows中查看SSH密钥

下一篇:windows本地通过Java API方式监控远程Yarn