零基础小样本图像分类入门到毕业①:基础概念

前言

本入门博客面向零基础的小样本图像菜狗硕士,或者其他想学习小样本图像分类的业余人士。本篇简单介绍一下小样本的图像分类的前置基础知识和几个小样本图像分类任务的基本概念,以及我对小样本图像领域发论文,毕业情况的看法。

前置知识

  1. 卷积神经网络
  2. cnn实现图像分类

卷积神经网络

卷积神经网络的教程网络上非常多,我这里不多赘述。我推荐一个基础网络的b站up主,叫做霹雳吧啦Wz(点击链接),他的视频讲解非常细致,并且他不是只讲论文,他会手把手带你入门pytorch模型搭建,这一点难能可贵,解决了大家对于模型代码的理解。我当时就是看了他的视频,才理解LeNet,ResNet等模型的代码。
大家这里不用急,只需看完他对于卷积网络CNN的讲解,并能够理解代码结构即可,后面的我们用到再学都可以。

CNN实现图像分类

同上,推荐霹雳吧啦Wz(点击链接) 这里讲解了一个基础图像分类的代码以及理论逻辑。

小样本图像分类基础

  1. 小样本图像分类在做什么?
  2. 训练集,验证集和测试集
  3. 元训练集与元验证集
  4. 5-way 5-shot
  5. 支持集与查询集
  6. SOTA

小样本图像分类中在做什么?

我们知道传统的图像分类,为了训练出一个可以分类的模型,需要的每一类别图片数量是成百上千的;而小样本图像分类,就是只需要少量的图片样本,就能训练出一个用于图像分类的模型。那么这个“少量”是多少呢?一般来说,每类的话是5张图片,或者每类1张图片。

训练集,验证集和测试集

如果你看过了上面前置知识的CNN实现图像分类的视频,那么你对这三个数据集合不会陌生。如果你已经明白这几个名词,但别急,这里还是希望你留意一下,因为小样本图像分类的数据集和任务定义真的很绕…

  • 训练集(train)就是我们用于训练CNN的数据集,它会参与到loss计算,反向传播更新参数的过程
  • 验证集(validation)则是在模型训练过程中实时监测模型性能的集合,它一般比较小,不参与loss计算与参数更新,就是它与模型无关,是一个“第三方”的检测数据集
  • 测试集(test)用于模型训练完成后,测试模型的性能,它通常比验证集大很多,为的是测试模型性能时更准确。

小样本图像分类的模型,大多数分为上游下游两个阶段。上游阶段我们会训练好一个传统图像分类的网络;下游阶段,我们会用这个网络完成小样本情景下图像分类的任务。

  • 传统图像分类里的训练集,对应上游的元训练集,用于模型(骨干网络)的训练
  • 而传统分类里的测试集对应下游里的元测试集

为什么没有元验证集?不提验证集了,怕你晕,而且验证集大多数时候用处不大,很多小样本图像分类论文为了性能直接拿验证集当训练集用了。这里你就忘了它吧。

元训练集与元测试集

元训练集也称meta training set,元测试集也称meta testing set。小样本图像分类的模型,大多数分为上游下游两个阶段。这两个的概念如上一小节所示,

  • 传统图像分类里的训练集,对应上游的元训练集,用于模型(骨干网络)的训练
  • 而传统分类里的测试集对应下游里的元测试集

这里希望大家一定要记清这两个概念,因为很容易和后面的支持集和查询集搞混淆。

支持集与查询集

支持集又称support set,查询集又称query set。首先,明确一点,支持集和查询集都是元测试集的子集! 也就是说,支持集和查询集组成元测试集,用于测试模型的小样本图像分类性能。

如何理解呢?举个例子,我们训练好了小样本图像分类模型,那么应该怎样测试模型的性能呢?用元测试集,而元测试集就是一个个小样本的分类任务。每一个图像分类任务包含用于训练的小训练集和用于测试的小测试集。这里的小训练集就是支持集,而小测试集就是查询集。

所以一个个小的支持集和查询集组成了用于测试模型的元测试集。

在这里插入图片描述

5-way 5-shot

我们后面在看论文时,会经常遇见什么“5-way 5-shot”, “5-way 1-shot”这种概念。那么这几个概念是什么意思呢?其中way表示分类的类别个数,shot则表示该类中用于训练模型的图片有几张。例如,

  • “5-way 5-shot”则表示该任务是一个五分类的小样本图像分类任务,其中每类用于训练模型图像样本有5张。
  • “5-way 1-shot”则表示五分类的任务,每类用于训练的样本有1张。
    如下图则是一个3-way 1-shot的分类任务,三种类别,每类一张样本。

在这里插入图片描述

综合上一节的支持集与查询集的概念,这里的5-shot即是五张训练样本,也就是支持集。

SOTA

SOTA全程是state of the art。表示当前该领域最高水准的工作。
SOTA不特指任意一个模型,泛成本领域最高水准的工作。

小样本图像分类的思考

关于毕业

如果是你选择小样本图像分类写一个中流211硕士的毕业论文的话,我觉得还是没有问题的。目前紧靠自监督学习的大山,加上前辈们的不懈努力,怎么都可以毕业吧。起码我身边211硕士的毕业论文,还是没什么创新性的,比较水。

关于发论文

仅小样本图像分类领域的论文,个人觉得近两年很大程度依靠骨干网络的发展,比如自监督学习和知识蒸馏。所以只要CV的基础还能创新,小样本图像分类就能“水”。选择这个方向写论文,只要你自己想象力足够,创造一个还行的下游分类方法,性能指标交给前辈的骨干网络和新兴的训练方法,那么发一个B会还是没问题的。


希望大家点点订阅和关注,后续我会不断更新,感谢!

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: MATLAB是一种功能强大的科学计算软件,可用于像处理和分类小样本图像分类是指在样本数量较少的情况下,通过像特征提取和机器学习算法对像进行分类。以下是一个简单的MATLAB小样本图像分类代码示例: 首先,需要导入像数据集。可以从MATLAB内置的像数据集中选择合适的数据集,例如cifar10、mnist等。可以使用MATLAB的函数`imageDatastore`将像数据导入为数据存储对象。 接下来,需要对像进行特征提取。常用的像特征包括颜色直方、纹理特征、形状特征等。可以使用MATLAB提供的像处理函数和特征提取工具箱来实现。例如,可以使用`extractLBPFeatures`函数提取像的局部二值模式特征。 然后,选择合适的机器学习算法进行分类。常见的分类算法包括支持向量机、K近邻、决策树等。可以使用MATLAB的机器学习工具箱或者深度学习工具箱中的函数来实现。例如,可以使用`fitcecoc`函数构建一个多类支持向量机分类器,并使用`predict`函数对测试样本进行分类。 最后,可以评估分类器的性能。可以使用MATLAB的评估函数来计算准确率、召回率、F1值等指标。例如,可以使用`confusionmat`函数计算混淆矩阵,并根据混淆矩阵计算分类准确率。 综上所述,MATLAB提供了丰富的像处理和机器学习工具,可以用于实现小样本图像分类。通过导入像数据、特征提取、分类算法选择和性能评估,可以有效地进行图像分类研究和应用开发。 ### 回答2: MATLAB是一个功能强大的软件平台,可以进行像处理和分析。在进行小样本图像分类时,通常需要考虑以下几个方面的代码实现。 首先,需要导入像数据集,并对其进行预处理。预处理步骤可以包括像的灰度化、尺寸统一化、去噪等。使用MATLAB的像处理工具箱,可以实现这些预处理步骤,例如使用imread函数读取像,使用rgb2gray函数将像转为灰度像。 其次,需要提取像的特征。常用的特征提取方法包括颜色直方、纹理特征、形状特征等。MATLAB提供了丰富的特征提取工具,例如可以使用colorhist函数计算颜色直方,使用gaborFeatures函数计算纹理特征。 然后,可以使用机器学习算法进行分类。常用的机器学习算法包括支持向量机(SVM)、人工神经网络(ANN)等。MATLAB提供了一系列机器学习工具箱,可以轻松实现这些分类算法,例如可以使用fitcsvm函数实现SVM算法。 最后,需要评估分类器的性能。可以使用交叉验证方法对分类器进行评估,并计算准确率、召回率、F1值等指标。MATLAB提供了一系列的性能评估函数,例如使用cvpartition函数进行交叉验证,使用confusionmat函数计算混淆矩阵。 综上所述,MATLAB可以通过像的预处理、特征提取、机器学习算法和性能评估等步骤实现小样本图像分类。使用MATLAB的像处理和机器学习工具箱,可以简化这些步骤的实现,并且提供了丰富的函数和工具来支持图像分类的开发。 ### 回答3: Matlab是一种用于科学计算和数值计算的高级编程语言和环境。在小样本图像分类中,通常会使用机器学习的方法来训练分类模型。以下是一个示例代码,用于实现基于小样本图像分类的MATLAB代码。 首先,我们需要加载像数据集。可以使用MATLAB中的像处理工具箱来实现这一步骤。我们可以使用imagedatastore函数来加载像文件夹中的像,并将其存储为数据集。 ``` imageFolder = fullfile('路径至像文件夹'); imds = imageDatastore(imageFolder, 'LabelSource', 'foldernames'); ``` 接下来,我们可以将数据集分为训练集和测试集,以便训练和评估模型的性能。 ``` [trainSet, testSet] = splitEachLabel(imds, 0.7, 'randomized'); ``` 然后,我们可以选择合适的分类算法来训练我们的模型。在这个例子中,我们将使用支持向量机(SVM)作为我们的分类器。可以使用fitcecoc函数来训练SVM分类器。 ``` classifier = fitcecoc(trainSet, 'Learners', 'svm'); ``` 接下来,我们可以使用训练好的分类器对测试像进行分类,并评估模型的准确性。 ``` predictedLabels = predict(classifier, testSet); accuracy = mean(predictedLabels == testSet.Labels); disp(['分类准确率:', num2str(accuracy * 100), '%']); ``` 最后,我们可以使用我们的模型来预测新的图像分类。 ``` newImage = imread('待预测像路径'); predictedLabel = predict(classifier, newImage); disp(['预测的标签为:', char(predictedLabel)]); ``` 这只是一个简单的示例代码,用于演示如何使用MATLAB进行小样本图像分类。实际应用中,可能还需要进行特征提取、数据增强和模型调优等步骤,以提升分类器的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值