使用Pytorch实现图像花朵分类

这篇具有很好参考价值的文章主要介绍了使用Pytorch实现图像花朵分类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于pytorch-classifier这个源码进行实现的图像分类

代码的介绍在这个链接里面,这篇博客主要是为了带着大家通过实践的方式熟悉一下代码的使用,并且了解相关功能。

1. 下载相关资料

这里我提供了一个花朵数据集,里面总共有十个类别的花朵作为本次实验的数据集。
我们下载代码和数据集到本地,然后我们在下图创建一个名字为dataset的文件夹,然后把花朵数据集放到里面并重命名为train,具体如下:
使用Pytorch实现图像花朵分类
至此,完成第一步。

2. 配置环境

  1. 首先推荐使用anaconda作为你的python环境,代码工具可以使用vscode或者pycharm,这个根据使用者爱好,这边我使用的是pycharm,那么这里默认各位已经准备好anaconda和(vscode或者pycharm),不会安装的话可以百度一下,这方面的教程都非常丰富。
  2. 安装torch和torchvision
    你可以在这个pytorch官网中找到对应的安装命令,这里版本要求torch==1.12.0+,下面贴出torch==1.12.0的各项安装命令,各位看官可以根据自己的电脑情况进行选择
    CUDA 11.6
    pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
    CUDA 11.3
    pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 --extra-index-url https://download.pytorch.org/whl/cu113
    CUDA 10.2
    pip install torch==1.12.0+cu102 torchvision==0.13.0+cu102 --extra-index-url https://download.pytorch.org/whl/cu102
    CPU only
    pip install torch==1.12.0+cpu torchvision==0.13.0+cpu --extra-index-url https://download.pytorch.org/whl/cpu
  3. 安装成功后,进入到代码路径进行pip install -r requirements.txt

至此,完成第二步。

3.分割数据集

在第一步中我们已经放好数据集,但是还没有划分验证集和测试集,这个代码中的processing.py提供了分割数据集的功能,其主要参数如下
使用Pytorch实现图像花朵分类
其中–val_size --test_size就是验证集和测试集的比例,这里的分割思想是,先在全部数据集上分出–test_size比例的数据,然后再从剩下的分出-val_size比例的数据。具体参数解释可以看Readme.md文件。
使用Pytorch实现图像花朵分类
那么我们默认参数即可,如果各位看官需要修改,可以自行修改即可,那么我们的运行命令就是:

python processing.py

如果需要更改参数,可以直接在命令后面指定,比如我想验证集比例是0.1:

python processing.py --val_size 0.1

运行成功后你可以看到下图所示:
使用Pytorch实现图像花朵分类
至此,完成第三步。

4. 训练模型

在本次实验中我们训练ghostnet,其中训练的代码在main.py中,具体参数解释请看Readme.md,都已经解释得比较详细了。那么这里我们直接上命令并附带一些解释:

python main.py --model_name ghostnet --pretrained --config config/config.py --save_path runs/ghostnet_flower --lr 1e-4 --warmup --amp --imagenet_meanstd  --Augment AutoAugment 

运行后,你可以看到以下信息:
使用Pytorch实现图像花朵分类
其中会输出所有参数的设置信息,可以通过这个表格观看你的参数设置是否有误。我们也可以看到其在下载预训练权重到本地路径,有些看官的网络不好的话,其可能会卡在这里不动,那我们可以手动复制这个链接:

https://github.com/z1069614715/pretrained-weights/releases/download/ghostnet_1x_v1.0/ghostnet_1x-f97d70db.pth

到迅雷或者浏览器上进行下载到:

C:\Users\Admin/.cache\torch\hub\checkpoints\ghostnet_1x-f97d70db.pth

上述的下载链接和路径在各位看官的输出信息中都可以找到。
然后就会开始训练:
使用Pytorch实现图像花朵分类
我们可以看到显示了你选择的模型是ghostnet,也显示了这个模型的flops和参数量,然后就开始训练,并显示训练的进度条和每个epoch的log信息。然后我们就可以等待训练结束。
使用Pytorch实现图像花朵分类
我们从图中可以看到其训练到83个epoch就停止,是因为代码中有一个–patience参数,默认值为30,也就是经过30个epoch没有提升,模型就会认为已经收敛,就停止训练。训练完成后我们可以打开刚设定好的–save_path路径:
使用Pytorch实现图像花朵分类
其中我们可以看到以下的可视化:

  1. 曲线迭代图
    使用Pytorch实现图像花朵分类
  2. 学习率曲线变化图
    使用Pytorch实现图像花朵分类
  3. 训练过程中的图像可视化
    使用Pytorch实现图像花朵分类
    使用Pytorch实现图像花朵分类

这里就只展示两张图,默认是生成五张。
当然你对上述曲线可视化不满意,可以自行读取–save_path中的train.log文件进行自定义可视化。这个文件相当于记录了曲线上的值,方便后期各位美工图像等等…
使用Pytorch实现图像花朵分类

我们还看到有一个best.pt和last.pt,后续的测试和预测的步骤,都会读取best.pt作为我们的模型进行测试和预测,其余文件有兴趣可以看看Readme.md中的Some explanation的第八点。
至此,完成第四步

5. 测试

我们在第四步中使用了训练集进行训练,验证集测试,那么剩下测试集就是用训练好的模型进行检测,那么这里我演示如何使用我们的metrice.py进行检测。

python metrice.py --task test --save_path runs/ghostnet_flower

–task 就是任务的意思 其支持train、val、test、fps。这里我们演示的是test,就是使用测试集进行测试计算指标。运行后的截图如下:
使用Pytorch实现图像花朵分类
我们可以看到其会显示你当前的模型类型,显示你这个模型训练过程最好精度的指标,然后下面就是显示精度,类别平均精度,以及每个类别的preciesion、recall、f1-score、Kappa、accuracy.
你还可以在–save_path中的test文件夹中找到混淆矩阵,其中csv文件就是数据的存储,如果有作图、美工的需求,可以自行读取。
使用Pytorch实现图像花朵分类
使用Pytorch实现图像花朵分类
当然我们的测试过程是支持tta(详情可看Readme.md文件中的第10点)的,只需要额外加一个参数即可

python metrice.py --task test --save_path runs/ghostnet_flower --test_tta

使用Pytorch实现图像花朵分类
我们可以看到使用tta可以增加精度,但是会增加一点时间。
我们的metrice.py中还支持可视化数据集的识别情况和tsne可视化,也是只需要添加两个参数即可。

python metrice.py --task test --save_path runs/ghostnet_flower --visual --tsne

当然这个过程也支持test_tta,但是为了节省时间就不加了。运行结束后,我们可以在–save_path路径中找到对应的数据文件:
使用Pytorch实现图像花朵分类
使用Pytorch实现图像花朵分类
其中tsne的坐标信息也保存到tsne.csv中,方便后期美工。
还有生成了correct.csv,incorrect.csv这两个csv文件,其中里面记录了文件路径,预测的类别,正确的类别,预测的类别对应的概率,以方便后期进行错误预测的分析。
至此,完成第五步。

6. 预测

预测的代码文件是predict.py,其支持输入单张图片或者一个文件夹,那么这里我们就展示一个文件夹的预测。
假如我们把测试集中其中一类的文件进行预测,我们可以运行以下命令:

python predict.py --source dataset/test/00 --save_path runs/ghostnet_flower

当然此过程也是支持test_tta,也是只需要在后面添加参数即可。
这是运行成功的截图:
使用Pytorch实现图像花朵分类
我们可以打开–save_path的predict文件夹:
使用Pytorch实现图像花朵分类
我们随便打开一张图像:
使用Pytorch实现图像花朵分类
我们可以看到图像的预测类别和对应预测类别的概率。
你以为结束了吗?并没有,我们的predict.py文件结合pytorch_grad_cam库实现了热力图可视化,并支持多种热力图计算方法详情请看–cam_type参数和Some explanation第十二点,也是只需要加一个参数:

python predict.py --source dataset/test/00 --save_path runs/ghostnet_flower --cam_visual --cam_type GradCAMPlusPlus

运行成功后依然在–save_path的predict文件夹中可以找到对应保存的图像,这里我们也是随便打开一张图像:
使用Pytorch实现图像花朵分类
我们可以看到在图像中添加了这个热力图可视化。
你们在文件夹中还可以找到一个result.csv文件,其记录了文件的路径,预测的类别,预测的类别对应的概率信息。
至此,完成第六步。

总结

整个程序的功能演示就到此结束,当然程序的功能不仅仅于此,具体可以看Readme.md中的具体解释,其还支持知识蒸馏,有兴趣的可以看一下代码中的Knowledge_Distillation.md,使用起来也是比较简单的,但是知识蒸馏的参数设置比较吃经验,需要使用者自行尝试。
如果遇到bug等等问题可以留言或者私信作者。
本次实验的代码数据模型全部文件:百度云链接文章来源地址https://www.toymoban.com/news/detail-400802.html

最后致敬bubbliiing的开源精神!

如果内容对你有帮助,麻烦点个赞,谢谢!

有计算机视觉合作项目可以私信作者!

到了这里,关于使用Pytorch实现图像花朵分类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于PyTorch使用LSTM实现新闻文本分类任务

    PyTorch深度学习项目实战100例 https://weibaohang.blog.csdn.net/article/details/127154284?spm=1001.2014.3001.5501 基于PyTorch使用LSTM实现新闻文本分类任务的概况如下: 任务描述:新闻文本分类是一种常见的自然语言处理任务,旨在将新闻文章分为不同的类别,如政治、体育、科技等。 方法:使

    2024年02月09日
    浏览(43)
  • 基于 PyTorch 的 cifar-10 图像分类

    本文的主要内容是基于 PyTorch 的 cifar-10 图像分类,文中包括 cifar-10 数据集介绍、环境配置、实验代码、运行结果以及遇到的问题这几个部分,本实验采用了基本网络和VGG加深网络模型,其中VGG加深网络模型的识别准确率是要优于基本网络模型的。 cifar-10 数据集由 60000 张分辨

    2023年04月24日
    浏览(45)
  • pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

    目录 1.迁移学习概念 2.数据预处理  3.训练模型(基于迁移学习) 3.1选择网络,这里用resnet 3.2如果用GPU训练,需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.7优化器 3.8训练模块(可以理解为主函数) 3.9开始训练 3.10微调

    2024年02月14日
    浏览(48)
  • pytorch搭建LeNet网络实现图像分类器

    pytorch 中的卷积、池化、输入输出层中参数的含义与位置,可参考下图: 常用的卷积(Conv2d)在pytorch中对应的函数是 经卷积后的输出层尺寸计算公式为: 例如:当定义 Conv2d(3, 16, 5) 和 input(3, 32, 32),步长 S 为 1,P 为0时,此时卷积核尺度 F 为5,W 为32,计算得到 output(16, 28,

    2024年02月10日
    浏览(37)
  • 使用PyG(PyTorch Geometric)实现基于图卷积神经网络(GCN)的节点分类任务

    PyG(PyTorch Geometric)是一个基于PyTorch的库,可以轻松编写和训练图神经网络(GNN),用于与结构化数据相关的广泛应用。 它包括从各种已发表的论文中对图和其他不规则结构进行深度学习的各种方法,也称为几何深度学习。此外,它还包括易于使用的迷你批处理加载程序,用

    2023年04月20日
    浏览(45)
  • 深度学习pytorch实战五:基于ResNet34迁移学习的方法图像分类篇自建花数据集图像分类(5类)超详细代码

    1.数据集简介 2.模型相关知识 3.split_data.py——训练集与测试集划分 4.model.py——定义ResNet34网络模型 5.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 6.predict.py——利用训练好的网络参数后,用自己找的图像进行分类测试 1.自建

    2024年02月09日
    浏览(60)
  • PyTorch: 基于【MobileNet V2】处理MNIST数据集的图像分类任务【准确率99%+】

    PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】 在深度学习和计算机视觉的世界里,MNIST数据集就像一颗璀璨的明珠,被广大研究者们珍视并广泛使用。这个数据集包含了大量的手写数字图像,为图像分类任务提供了丰富的素材。今天,我们将带您一同探索

    2024年02月04日
    浏览(48)
  • 【pytorch】Vision Transformer实现图像分类+可视化+训练数据保存

    Transformer的核心是 “自注意力” 机制。 论文地址:https://arxiv.org/pdf/2010.11929.pdf 自注意力(self-attention) 相比 卷积神经网络 和 循环神经网络 同时具有并行计算和最短的最大路径⻓度这两个优势。因此,使用自注意力来设计深度架构是很有吸引力的。对比之前仍然依赖循环神

    2023年04月08日
    浏览(45)
  • Python基于Pytorch Transformer实现对iris鸢尾花的分类预测,分别使用CPU和GPU训练

    iris数据集是机器学习中一个经典的数据集,由英国统计学家Ronald Fisher在1936年收集整理而成。该数据集包含了3种不同品种的鸢尾花(Iris Setosa,Iris Versicolour,Iris Virginica)各50个样本,每个样本包含了花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度

    2024年02月01日
    浏览(60)
  • 人工智能(Pytorch)搭建模型1-卷积神经网络实现简单图像分类

    本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、Pytorch深度学习框架 二、 卷积神经网络 三、代码实战 内容: 一、Pytorch深度学习框架 PyTorch是一个开源的深度学习框架,它基于Torch进行了重新实现,主要支持GPU加速计算,同时也可以在CPU上运行

    2024年02月03日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包