迁移学习训练集准确率一直上不去_可以提高你的图像识别模型准确率的7个技巧...
假定,你已经收集了一个数据集,建立了一个神经网络,并训练了您的模型。
但是,尽管你投入了数小时(有时是数天)的工作来创建这个模型,它还是能得到50-70%的准确率。这肯定不是你所期望的。
下面是一些提高模型性能指标的策略或技巧,可以大大提升你的准确率。
得到更多的数据
这无疑是最简单的解决办法,深度学习模型的强大程度取决于你带来的数据。增加验证准确性的最简单方法之一是添加更多数据。如果您没有很多训练实例,这将特别有用。
如果您正在处理图像识别模型,您可以考虑通过使用数据增强来增加可用数据集的多样性。这些技术包括从将图像翻转到轴上、添加噪声到放大图像。如果您是一个强大的机器学习工程师,您还可以尝试使用GANs进行数据扩充。
请注意,您使用的增强技术会更改图像的整个类。例如,在y轴上翻转的图像没有意义!
添加更多的层
向模型中添加更多层可以增强它更深入地学习数据集特性的能力,因此它将能够识别出作为人类可能没有注意到的细微差异。
这个技巧图解决的任务的性质。
对于复杂的任务,比如区分猫和狗的品种,添加更多的层次是有意义的,因为您的模型将能够学习区分狮子狗和西施犬的微妙特征。
对于简单的任务,比如对猫和狗进行分类,一个只有很少层的简单模型就可以了。
更多的层->更微妙的模型
更改图像大小
当您对图像进行预处理以进行训练和评估时,需要做很多关于图像大小的实验。
如果您选择的图像尺寸太小,您的模型将无法识别有助于图像识别的显著特征。
相反,如果您的图像太大,则会增加计算机所需的计算资源,并且/或者您的模型可能不够复杂,无法处理它们。
常见的图像大小包括64x64、128x128、28x28 (MNIST)和224x224 (vgg -16)。
请记住,大多数预处理算法不考虑图像的高宽比,因此较小尺寸的图像可能会在某个轴上收缩。
从一个大分辨率的图像到一个小尺寸的图像,比如28x28,通常会导致大量的像素化,这往往会对你的模型的性能产生负面影响
增加训练轮次
epoch基本上就是你将整个数据集通过神经网络传递的次数。以+25、+100的间隔逐步训练您的模型。
只有当您的数据集中有很多数据时,才有必要增加epoch。然而,你的模型最终将到达一个点,即增加的epoch将不能提高精度。
此时,您应该考虑调整模型的学习速度。这个小超参数决定了你的模型是达到全局最小值(神经网络的最终目标)还是陷入局部最小值。
全局最小是神经网络的最终目标。
减少颜色通道
颜色通道反映图像数组的维数。大多数彩色(RGB)图像由三个彩色通道组成,而灰度图像只有一个通道。
颜色通道越复杂,数据集就越复杂,训练模型所需的时间也就越长。
如果颜色在你的模型中不是那么重要的因素,你可以继续将你的彩色图像转换为灰度。
你甚至可以考虑其他颜色空间,比如HSV和Lab。
RGB图像由三种颜色通道组成:红、绿、蓝
转移学习
迁移学习包括使用预先训练过的模型,如YOLO和ResNet,作为大多数计算机视觉和自然语言处理任务的起点。
预训练的模型是最先进的深度学习模型,它们在数百万个样本上接受训练,通常需要数月时间。这些模型在检测不同图像的细微差别方面有着惊人的巨大能力。
这些模型可以用作您的模型的基础。大多数模型都很好,所以您不需要添加卷积和池化
迁移学习可以大大提高你的模型的准确性~50%到90%!
https://www.nvidia.com/content/dam/en-zz/ensg/ai-innovation-day-2019/assets/pdf/9NVIDIA-Transfer-Learning-Toolkit-for-Intelligent-Video-Analytics.pdf
超参数
上面的技巧为你提供了一个优化模型的基础。要真正地调整模型,您需要考虑调整模型中涉及的各种超参数和函数,如学习率(如上所述)、激活函数、损失函数、甚至批大小等都是非常重要的需要调整的参数。
总结
这些技巧是希望大家在不知道如何去做的时候可以快速的找到提高的思路。
还有无数其他方法可以进一步优化你的深度学习,但是上面描述的这些方法只是深度学习优化部分的基础。
另外:每次改变深度学习模型时都要保存模型。这将帮助您重用先前的模型配置,如果它提供了更大的准确性。
作者:Jason Dsouza
deephub翻译组
迁移学习训练集准确率一直上不去_可以提高你的图像识别模型准确率的7个技巧...相关推荐
- 田渊栋的2021年终总结:多读历史!历史就是一个大规模强化学习训练集
视学算法报道 作者:田渊栋 编辑:好困 LRS [新智元导读]田渊栋博士最近又在知乎上发表了他的2021年度总结,成果包括10篇Paper和1部长篇小说及续集.文章中还提到一些研究心得和反思, ...
- pytorch1.7教程实验——迁移学习训练卷积神经网络进行图像分类
只是贴上跑通的代码以供参考学习 参考网址:迁移学习训练卷积神经网络进行图像分类 需要用到的数据集下载网址: https://download.pytorch.org/tutorial/hymenopt ...
- python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值、可视化模型效能
python可视化多个机器学习模型在训练集(train set)上交叉验证(cross validation)的AUC值.可视化模型效能 # 所有的模型中填写的参数都是通过randomsearchcv ...
- 迁移学习训练分类模型实践第一篇
迁移学习训练分类模型实践第一篇 前言 数据获取.预处理 构建模型 查看模型参数量和FLOPs 测试模型 前言 为了简洁,本文不包含任何训练过程,仅介绍处理数据.构建模型.使用随机初始化权重推断: 关于 ...
- 迁移学习算法之TrAdaBoost ——本质上是在用不同分布的训练数据,训练出一个分类器...
迁移学习算法之TrAdaBoost from: https://blog.csdn.net/Augster/article/details/53039489 TradaBoost算法由来已久,具体算法 ...
- ResNet网络详解并使用pytorch搭建模型、并基于迁移学习训练
1.ResNet网络详解 网络中的创新点: (1)超深的网络结构(突破1000层) (2)提出residual模块 (3)使用Batch Normalization加速训练(丢弃dropout) (1 ...
- Python批量处理表格有用吗_python批量读入图片、处理并批量输出(可用于深度学习训练集的制作)...
最近工作实在是太忙了,白浪花的项目没有及时跟进,很多知识也没有自学.好了,趁着现在等领导回复微信的时间,我把上周趁着零散时间做的工作总结一下.内容依然小白,但是却很重要. 项目情况简单描述一下,最终要 ...
- 全网都在讲迁移学习,可你会写代码了吗?收藏我这个,10分钟开始你的迁移学习训练
文章目录 前言 第一步 加载预训练模型并修改类别数 第二步 选择模型所有层/最后一层进行反向传播优化 探讨:如何确定模型最后一层的名字是什么 方法一: 查询源代码 方法二: 查询模型的子模块名字 前言 ...
- NVIDIA之TLT迁移学习训练自己的数据集
0 背景 NVIDIA Transfer Learning Toolkit是英伟达推出的迁移学习工具包,使用提供的预训练模型来训练自己的数据,并可以完成模型裁剪.导出到deepstream框架中,实现 ...
最新文章
- PHP数组基本的操作方法
- 科技领域看不见的手如何影响企业未来命运
- ansible 介绍
- sqlalchemy mysql配置中怎么设置utf8_sqlalchemy 的设置及使用
- SQL旁注精华珍藏版代码
- SegNet 语义分割网络以及其变体 基于贝叶斯后验推断的 SegNet
- VMware 安装ubuntu 18.04遇到的问题
- python批量写入数据库engine_python 快速写入postgresql数据库方法
- 重新分析connection reset by peer, socket write error错误原因
- 【文末福利】500行代码,教你用python写个微信飞机大战
- 华为安装gsm框架_华为Mate30Pro怎么安装谷歌服务框架?谷歌服务GMS框架安装方法...
- Pycharm返回上一次编辑处的快捷键
- oracle打开audit,oracle开启audit(审计)
- 手机双摄像头原理及产业解析----转载
- 来自灵魂的拷问:之迁移之后SQL执行变慢了
- IDEA 搜索常用方法
- Java并发-交替打印的四种方法。
- 微信小游戏屏幕适配方案
- 基于飞桨实现的“太空保卫战士”——地球同步静止轨道空间目标检测系统
- VELOCITY三种属性加载方式