深度学习之图像分类

article/2025/11/7 14:00:50

第一篇CSDN文章,写的不好,还请各位大佬指正。万事开头难,千里之行始于足下!

1.什么是图像分类

图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签总是来自预定义的可能类别集。
示例:我们假定一个可能的类别集categories = {dog, cat, eagle},之后我们提供一张图片(图1)给分类系统:

在这里插入图片描述
图1 图像分类目标是根据输入图片且根据预定义类别分配标签

这里的目标是根据输入图像,从类别集中分配一个类别,这里为eagle,我们的分类系统也可以根据概率给图像分配多个标签,如eagle:95%,cat:4%,panda:1%。

2.图像分类和图像识别的区别

图像分类和图像识别这两个概念很容易搞混,很多做了几年视觉的人也搞不清它俩的区别,在此说明他俩的区别,让初学者少走弯路。
以人脸识别为例,假设一个班级里有20个人,用图像分类做来区分每个学生,可以采集20个人的人脸图片进行训练模型分类,但是如果班级新来一个同学,我们就需要采集新来同学的图像重新训练模型,预测的图像是把训练好的模型作为特征提取器给softmax分类器做分类;而图像识别是使用卷积网络训练大量人脸图像,训练好的模型作为特征提取器,预测的时候利用特征提取器和注册人脸图像计算相似度。

在这里插入图片描述

3.图像分类适合什么场景

图像中待分类物体是单一的,如上图(1),如果图像中包含多个目标物,如下图(2),可以使用多标签分类或者目标检测算法。
在这里插入图片描述

4.目前图像分类的网络模型

常用的标准网络模型:Lenet、Alxnet、Vgg系列、Resnet系列、Inception系列、Densenet系列、Googlenet、Nasnet、Xception、Senet(state of art)

轻量化网络模型:Mobilenet v1,v2、Shufflenet v1,v2,Squeezenet
以上网络模型不做具体说明,网络博客很多,如有不懂,可加我微信:JGQ863995835

目前轻量化模型在具体项目应用时用的比较广泛:

优点:(1)参数模型小,方便部署(2)计算量小,速度快

缺点:(1)轻量化模型在精度上没有Resnet系列、Inception系列、Densenet系列、Senet的accuracy高

如果使用Finetune tricks,轻量化模型也能达到上述模型精度的水平,所以在此力推轻量化模型。

(注:我个人在项目中常用的网络模型resnet系列、mobilenet v2、lenet,不要小瞧lenet,在工业领域绝对大杀器,自然场景不适用。我自己改进lenet的模型,在项目应用中比lenet高3%,大家可以参考:https://github.com/machine52vision/Imporve-lenet

5.图像分类中的tricks

利用好tricks可以有效改善模型精度,下面介绍各种方法

方法一:魔改网络结构

(1)使用resnet的shortcut方法

(2)使用Inception 多尺度卷积核

(3)使用convolution的stride代替pool层

(4)使用正则化方法Batch normalization、Layer normalization、Instance normalization、Group Normalization;如果使用多GPU可以使Synchronized Batch Normalization

(5)对于不规则目标使用deform convolution

(6)轻量化模型使用group convolution

(7)小卷积核大视野使用dilate convolution

(8)去掉线性层使用全卷积层

(9)如果使用线性层,使用一维的Normalization,可以加快收敛并且(此方法其他网络没有)

方法二:模型初始化

(1)如果不使用finetune方法,尽量不使用随机初始化,推荐kaiming方法初始化,是xavier的改进版;

(2)大力推荐finetune方法,少量数据就可达到较高的accuracy;

方法三:损失函数和优化器

(1)一般分类使用softmax+Cross Entropy损失,MSE(均方误差)由于非凸函数,尽量不使用

(2)优化器推荐又快又好的AdaBound(新鲜出炉的算法,比SGD快,比Adam好,反正是又快又好!!!)

方法四:学习率调整

(1)Warmup

(2)Linear scaling learning rate

(3)力荐cosine learning rate或ReduceLROnPlateau learing rate

方法五:激活函数

(1)sigmoid,tanh由于后期梯度消失或者梯度很小,导致收敛比较慢,尽量不使用;

(2)推荐relu及其各种改进版本,Elus、Leaky relu、Slus、PRelu、RRule等;

方法六:数据扩增方法

(1)Random image cropping and patching (RICP)

(2Cutout

(3)Mixup train

(4)随机旋转

(5)上下、左右flip

(6)调整亮度、对比度、饱和度

(7)其他各种裁剪方法

方法七:其他方法

(1)Knowledge distillation

(2)batch size不要设置太大(收敛慢),也不要太小(梯度随机性大),依据经验在224*224图像,在现存不溢出的时候,batch size=64。

(3)使用finetune方法,一般epoch=10左右就可达到很高的accuracy;如果不使用finetune方法,一般epoch=50~100左右(以上是根据工程经验,数据集在几万张,类别小于100的情况下,如果误导,还请指正)

(4)对权重使用L2正则化,可以有效抑制过拟合

(5)Momentum一般设置0.9,根据前10次梯度方向向量的经验来加上此次的梯度方向向量来更新梯度(防止梯度突变;1/(1-0.9)=10)

(6)label smooth

以上是我依据工程项目经验的一些心得,如果写的有误还请多多包涵并指出!喜欢可关注我微信公众号:52机器视觉

下一篇会介绍深度学习之目标检测,这是一个大坑


http://chatgpt.dhexx.cn/article/p0erIhJl.shtml

相关文章

关于图像分类

https://www.zhihu.com/question/57075015/answer/194397802https://www.zhihu.com/question/57075015/answer/194397802 先定义一下图像分类,一般而言,图像分类分为通用类别分类以及细粒度图像分类 那什么是通用类别以及细粒度类别呢?这里…

(一)图像分类任务介绍 Image Classification

目录 一、什么是图像分类任务?它有哪些应用场景? 二、图像分类任务的难点? 三、基于规则的方法是否可行? 四、什么是数据驱动的图像分类范式? 数据集构建 分类器设计与学习 分类器决策 五、常用的分类任务评价指…

图像分类的数据集

图像分类的数据集 1. MNIST2. Fashion-MNIST3.CIFAR-10和CIFAR-1004. Caltech 1015. ImageNet5.1 ImageNet是什么?5.2 ILSVRC 6. 各个数据集上的最新进展其他参考资料 1. MNIST MNIST数据集的一个样例 一般机器学习框架都使用MNIST作为入门,就像"He…

机器学习——图像分类

1 图像分类的概念 1.1 什么是图像分类? 图像分类,根据图像信息中所反映出来的不同特征,把不同类别的目标区分开来的图像处理方法 1.2 图像分类的难度 ●任何拍摄情 况的改变都将提升分类的难度 1.3 CNN如何进行图像分类 ●数据驱动型方法通…

图像分类算法

图像分类 参考链接1.前言2.K近邻与KMeans算法比较KNN原理和实现过程(1) 计算已知类别数据集中的点与当前点之间的距离:(2) 按照距离递增次序排序(3) 选取与当前点距离最小的k个点(4) 确定前k个点所在类别的出现频率(5) 返回前k个点出现频率最高的类别作为当前点的预…

图像分类方法总结

1. 图像分类问题描述 图像分类问题是计算机视觉领域的基础问题,它的目的是根据图像的语义信息将不同类别图像区分开来,实现最小的分类误差。具体任务要求是从给定的分类集合中给图像分配一个标签的任务。总体来说,对于单标签的图像分类问题&…

9.图片分类数据集

1. 图像分类数据集 MNIST数据集 [LeCun et al., 1998] 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集。 %matplotlib inline import torch import torchvision from torch.utils import data from t…

CNN实现花卉图片分类识别

CNN实现花卉图片分 前言 本文为一个利用卷积神经网络实现花卉分类的项目,因此不会过多介绍卷积神经网络的基本知识。此项目建立在了解卷积神经网络进行图像分类的原理上进行的。 项目简介 本项目为一个图像识别项目,基于tensorflow,利用C…

常用图像分类网络

想对图像分类网络写个简要的概括,如有介绍不当之处,还望指出。 一、VGG网络 更新于2018年10月20日 参考博客:深度学习经典卷积神经网络之VGGNet 论文地址:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITIO…

干货——图像分类(上)

这是译自斯坦福CS231n课程笔记image classification notes,由课程教师Andrej Karpathy授权进行翻译。本篇教程由杜客翻译完成。非常感谢那些无偿奉献的大师,在此代表所有爱好学习者向您们致敬,谢谢! 这是斯坦福大学的课程&#xf…

图像分类

图像物体分类与检测算法综述 转自《计算机学报》 目录 图像物体分类与检测算法综述 目录图像物体分类与检测概述物体分类与检测的难点与挑战物体分类与检测数据库物体分类与检测发展历程 图像物体分类与检测是计算机视觉研究中的两个重要的基本问题,也是图像分割、…

【图像分类数据集】非常全面实用的垃圾分类图片数据集共享

【图像分类数据集】非常全面实用的垃圾分类图片数据集共享 数据集介绍: 训练集 文件夹结构如下(部分: 第0类文件夹下数据展示如下(部分: 测试集 大致如下: 数据集获取方式: 总结&#xf…

python学习(18)--图片分类

图片分类 学习动机. 在这一节中我们会引入图片分类为题。这也是从一个合适的集合中分配给图片一个标记的任务。这是计算机视觉的核心问题之一。鉴于它的简单性,有一大批实用应用。更多的是,我们可以在以后的章节中看到,一些看似分离的计算机…

【OpenMMLab】图片分类发展简史

一、发展简述 图片分类是CV领域的基础任务,也是检测、分割、追踪等任务的基石。简而言之,图片分类就是给定一张图片,判断其类别,一般而言所有的候选类别是预设的。 从数学上描述,图片分类就是寻找一个函数&#xff0…

深度学习(1) ——图像分类

图像分类概述 图像分类实质上就是从给定的类别集合中为图像分配对应标签的任务,当我们输入一张图片,返回一个该图像类别的标签。限制条件:只能输入单目标图像。常用数据集:mnist、CIFAR-10、CIFAR-100、ImageNet 图像分类算法 …

CNN图片分类(Pytorch)

这篇文章主要讲述用 pytorch 完成简单 CNN 图片分类任务,如果想对 CNN 的理论知识进行了解,可以看我的这篇文章,深度学习(一)——CNN卷积神经网络。 图片分类 我们以美食图片分类为例,有testing、training、validation文件夹。下…

JavaWeb学习思维导图

这是我最近总结的JavaWeb学习思维导图,希望可以帮到大家:

javaweb学习总结

重定向 请求转发 区别:重定向后浏览器地址值会发生改变。 重定向request域对象不能共享数据,因为request域的范围是一次请求一次响应。而转发能够共享数据 请求转发的路径写法,只是需要写url-pattern的地址即可,不用带项目名&am…

JavaWeb学习心得总结

JavaWeb(JSPServlet)新手学习心得总结 说明: 由于篇幅的原因,本文只是对于JavaWeb项目的大致数据流程做一个介绍,同时引出一些JavaWeb开发中很基础的知识点,且不会精确到具体代码实现。 所以本文的适合读…

JavaWeb学习笔记总结(一)

前言:因为我是大三,这学期开课是JavaWeb,前端三剑客htmlcssjs,还有一个springboot框架的课,大二下学期才学的java跟sql,所以跨度直接到springboot有点大吧,ssm框架都没学,但是b站上有挺多教程的&#xff0c…