一、预处理部分

1.拿到数据首先对数据进行分析

对数据的分布有一个大致的了解,可以用画图函数查看所有类的分布情况。可以采取删除不合理类的方法来提高准确率;

对图像进行分析,在自定义的图像增强的多种方式中,尝试对图像进行变换,看是否存在主观上的特征增强,具体的增强

方法在aug.py文件中,可以在线下对数据进行测试,看是否在增强后对结果有好的影响。

2.模型的选取

依据新模型效果较好的原则,尽量选取已存在的最新模型,可以选取进几年再imagenet比赛上取得最好的效果的几种模型

分别进行测试,目前效果最好的模型是resnet(深度残差网络),是卷积神经网络的最新发展;

但仅仅单模型的效果肯定是不如多模型综合的效果好的,所以可以选取效果较好的几种模型,最后按其权重进行加权平均

来获取最终的预测结果;

始终要注意的一点是,模型是次要的,最主要最核心的问题还是在于对于数据的处理。

3.处理数据

对数据图像进行增强,不管是使用pytorch自带的transform模块,还是自定义的数据增强处理方式,都要对数据进行合理的

改变,最基本的改变是对图像进行简单的随机翻转、切割、旋转等,还有要注意的一点是需要改变图像的尺寸,以适应模型

的输入要求。

本次比赛数据进行的增强方式有:

  • RandomRotation(30)
  • RandomHorizontalFlip()
  • RandomVerticalFlip()
  • RandomAffine(45)

4.超参数的设置

对于整体代码中所需要的超参数进行单独处理,设置在一个文件中,使用时候直接调用即可。

二、输入数据进入模型进行训练

1.划分数据集

首先根据所给文件把每个类的图像都分类到各自的文件夹中去,模型的输入要求类型基本都是这样,然后对于数据集划分为

训练集、测试集、验证集,分别在模型的训练、测试阶段使用。

2.模型训练

根据pytorch的模型训练过程,输入训练集,对模型进行训练,每个epoch后对模型进行评价,在整个epoch结束后,得到最好

的模型。

3.测试阶段

把测试集输入保存的最好模型中去,得到输出结果,进行分析。

三、pytorch中的训练模块化

1.加载模型

2.优化器和loss函数的设置

3.训练集加载入pytorch的数据加载类Dataloader中,以便于调用

4.开始每个epoch的训练,输入,目标,loss,归零,反向传播,开始

5.评估模型,得出最优模型

参考大神chaojiezhu的github。

https://github.com/spytensor/plants_disease_detection

pytorch进行图像分类的流程,下一篇为实例源代码解析的更多相关文章

  1. 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[下]:管道是如何构建起来的?

    在<中篇>中,我们对管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管道是如何被构建起来的.总的来说,管道由一个服务器和一个HttpApplication构成 ...

  2. android7.x Launcher3源代码解析(3)---workspace和allapps载入流程

    Launcher系列目录: 一.android7.x Launcher3源代码解析(1)-启动流程 二.android7.x Launcher3源代码解析(2)-框架结构 三.android7.x L ...

  3. [源码解析] PyTorch 分布式 Autograd (6) ---- 引擎(下)

    [源码解析] PyTtorch 分布式 Autograd (6) ---- 引擎(下) 目录 [源码解析] PyTtorch 分布式 Autograd (6) ---- 引擎(下) 0x00 摘要 0 ...

  4. PyTorch在64位Windows下的Conda包(转载)

    PyTorch在64位Windows下的Conda包 昨天发了一篇PyTorch在64位Windows下的编译过程的文章,有朋友觉得能不能发个包,这样就不用折腾了.于是,这个包就诞生了.感谢@晴天14 ...

  5. 从零教你使用MindStudio进行Pytorch离线推理全流程

    摘要:MindStudio的是一套基于华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE上功能很多,涵盖面广,可以进行包括网络模型训练.移植.应用开发.推理运行及自定义算子开发等多种任务. 本 ...

  6. 调用altera IP核的仿真流程—下

    调用altera IP核的仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile All是 ...

  7. 基于modelsim-SE的简单仿真流程—下

    基于modelsim-SE的简单仿真流程—下 编译 在 WorkSpace 窗口的 counter_tst.v上点击右键,如果选择Compile selected 则编译选中的文件,Compile A ...

  8. phpcms新闻详情页上一篇下一篇的实现

    在新闻详情页(show.html或show_*.html) 只需要添加类似如下代码即可: <div>上一篇:<a href="{$previous_page[url]}&q ...

  9. PHPCMS 实现上一篇、下一篇

    方法一:直接调用phpcms系统的函数 <div class="info"> <span>上一篇:<a href="{$previous_p ...

随机推荐

  1. [No000012A]WPF(2/7):布局,容器和布局转换[译]

    概要 在上一篇文章中,我讨论了一些WPF应用的基础知识,它们是使用WPF的基本架构和内部结构.在本文中,我将讨论编写你的第一个WPF程序的基本的东西和怎么在你的窗口中布局控件.这是每一个想使用WPF的 ...

  2. app相关的一些网站

    https://www.qimai.cn   排名排行关键字原aso100

  3. vue 静态资源 压缩提交自动化

    需要安装co和child_process模块,co可以执行多个promise,child_process可以执行命令行的库(cmd命令) 配置winrar(压缩包)坏境变量,参考资料https://j ...

  4. Eisenstein's criterion

    https://en.wikipedia.org/wiki/Eisenstein%27s_criterion In mathematics, Eisenstein's criterion gives ...

  5. Xib给特定view添加手势

    步骤1.拖拽手势注意:拖拽到First Responder下方,成功后会出现一个分类Objects(如图 拖拽成功后会多出一个分类Objects ) 步骤2.给需要的view绑定手势控件 拖拽gest ...

  6. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at[转载]

    今天在添加友盟统计的podfile pod install报错了: bogon:Children songximing$ pod install /Library/Ruby/Gems//gems/co ...

  7. 查找->静态查找表->顺序查找(顺序表)

    文字描述 顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录:反之,若直至第一个记录,其关键字和给定值比较都 ...

  8. select下拉菜单实现通过数据库查询来设置默认值

    查询网上各种资料要不比较难理解,要么有问题,现有一种简单通俗的理解方法 思路:读取数据库数据1,数据2需用到select选择菜单,但是又想每次查看是都显示读数据库的默认信息 demo: {% for ...

  9. django--admin组件

    一,激活管理工具(一般建立工程已创建) 1,setting.py 中安装子应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.a ...

  10. threadPoolExecutor的基本解析

    线程池的构造方法中常见参数简介 corepoolsize:核心线程数,即便这里的线程处于空闲状态,也不会被回收,会一直存在线程池中 maxmumpoolsize:线程池所能容纳的最大线程数,超过这个数 ...