关于图像分类

article/2025/11/7 14:02:56

https://www.zhihu.com/question/57075015/answer/194397802icon-default.png?t=LA92https://www.zhihu.com/question/57075015/answer/194397802

先定义一下图像分类,一般而言,图像分类分为通用类别分类以及细粒度图像分类

那什么是通用类别以及细粒度类别呢?这里简要介绍下:

通用类别是指我们日常生活中的一些大类别物体,比如说,奔驰,宝马,法拉利什么的都可以归到车这个大类别,因为他们视觉特征(形状,外观等)非常相似;
细粒度类别这里就不仅仅要知道他们是奔驰,宝马了,更加要知道他们是奔驰哪个车系,比如S150,宝马7系(ps:这都不算最细粒度的)。

下面来说一说两类任务:

  • 通用图像分类是指,有很多个大类别,模型只负责识别出某个物品的大类别,而并不需要识别出他的细粒度类别,相关数据集有:ImageNet,这个数据集大概有1000多万图片,但是类别只有11k左右,要知道我们日常生活中光动物类的细粒度类别就有成千上万种类别,完全不能满足人们的认知需求,所以就有了更加细粒度的识别任务。
  • 细粒度图像分类,这个在视觉领域有个术语叫做Fine-grained Image Classification,这个任务具体是怎么样的呢?就是不仅要识别出他的大类别,而且要识别的他的细粒度类别,细粒度到什么程度呢,以昆虫为例子,基本是要到种的级别才算细粒度。

上面两个图中分别是灰绒麝凤蝶糙绒麝凤蝶,是不是很难辨认,基本是需要专家才能辨认出来,这就是细粒度图像分类,比较好的公开数据集有Caltech-UCSD Birds-200-2011(CUB200),目前state of the art模型效果top1 准确率有85%左右,效果很不错,但是才两百类!!鸟类可远远不止200类,据我所知至少上万类了!可见细粒度的分类还有很长一段路要走。

但是要知道,自然界光昆虫种类就有几十万种,更别提其他的类别,但是这里有个存在一个很严重的问题,细粒度的模型对太多类别的通用图像分类又不是很work,你想训练一个大而全的模型能识别出大类别又能识别出小类别,是基本不可能的(即使训练出来效果也不是很那么令人赏心悦目),那怎么做呢?目前一个比较主流的方案是,训练一个通类模型来识别出物体的大类别,也就是触发模型,再针对各个小类别训练一个fine grain模型识别。

这里讲一讲通用图像分类以及fine-grain的相关工作:

  • 通用图像分类:主要是基于CNN,从97年的lenet到12年AlexNet,13年的ZF-Net,14年的GoogleNet(Inception-v1),VGG,15年的Inception v2,16年的Resnet,Inception v3,Inception v4,模型细节去看paper,目前在ImageNet上面state of the art performance大概是top5 5% error,已经完全超过人的表现了,效果十分惊人,但是注意了这毕竟是较为粗粒度的类别,侯晓迪大神说过一句话,我觉得很有道理,当一个benchmark刷到极致的时候,这个benchmark就应该退出历史的舞台了,会有新的benchmark替代,就像coco替代VOC一样,今年也是ImageNet最后一届比赛了。通用图像分类任务已经做到足够好了(实际场景下性能其实不咋样。。各种问题,后续补充),但是针对每个类目底下的细粒度分类还远远不止这样。
  • fine-grain:一般而言都是针对每个类目做细粒度分类,这个类目底下的物体有着大致一样的外观,目前有两种主流的方法:
  1. 基于强监督信息的fine-grain模型,这里指的强监督信息是指bounding box或者landmark,举个例子,针对某一种鸟类,他和其他的类别的差异一般在于它的嘴巴、腿部,羽毛颜色等,针对输入目标图片,我们先通过一个detector检测出这些部件,在经过一个CNN去做分类,主流的方法像Part-based R-CNN,Pose Normalized CNN,Part-Stacked CNN等。
  2. 基于弱监督信息的fine-grain模型,什么是弱监督信息呢?就是说没有bounding box或者landmark信息,只有类别信息,开山之作应该属于Bilinear CNN,这个模型当时在CUB200上是state of the art,即使和strong supervise 方法也只是差1个点左右,但是这个方法有个极大的缺陷,那就是极大的占用显存,类别一多,速度极其慢,因此后来衍生来的Compact Bilinear Pooling,Low-rank Bilinear Pooling,Factorized Bilinear的performance都差不多,但是速度越来越快。

大致方法是这些,paper太多了,不一一列举了,有疑问的可以互相学习交流下。

fine-grain这个方向,做的人感觉不多,没有什么像RCNN,Resnet这样的突破性质的进展,只能是慢慢摸索了,不过今年CVPR 2017有个fine-grain的workshop,可以期待下。我还参加了这个FGVC比赛,5800类左右,top5准确率90%左右。

至于为什么要叫细粒度图像分类这个非常奇怪的名字,可能只是为了和通用分类任务进行区分而已。对于人类世界来讲,现实世界常用的通用分类类别可能在30000-40000之间,这些全部都是so called 大类别,每个大类别之下都有一系列相关的小类,这些都有现成的结构可以借用。比如动植物的种属关系,现代社会商业产品的产品系列表,有机化学里面严格的命名规则。

正如前文所说,要想训练一个既能够识别大类有能够识别相关大类下属小类的系统可能是很困难的。但困难所在何呢?可能是数据集的收集和制作。这样一个复杂的分类任务,需要的参数可能会远远多于通用分类任务需要的数量,我们有足够体量的数据集来驱动这样的模型吗?驱动这样模型的意义又在那里呢?

仔细回想起来,识别人类和识别具体的某个人是否就是通用分类任务和细粒度分类任务的这种对应关系。像挪威以及东南沿海可能在做的三文鱼个体识别任务,某些猪脸识别,鸟类个体识别,应该都可以划归到细粒度分类任务。


http://chatgpt.dhexx.cn/article/2OpOSFTi.shtml

相关文章

(一)图像分类任务介绍 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…

一.JavaWeb学习路线

Java系统学习路线: 第一阶段 第一阶段: Java 基础,包括 Java 语法,面向对象特征,常见API,集合框架。(基础) 第二阶段:Java API:输入输出,多线程,网络编程,反…