欢迎关注我的个人微信公众号:小纸屑

图片分类是机器学习经典问题,也是深度学习声名鹊起之作。正是2012年AlexNet在图片分类竞赛ImageNet出乎寻常的性能,使得深度学习一夜爆红,方有今天人工智能的井喷之势。

由于深度学习在图片分类上极其成功,且代码简单,图片分类便成为深入学习入门学习任务。通常几行代码,就可以调起一个模型训练。由于太简单,导致大家对图片分类缺乏能够整体认识。

本文拟从问题定义、图片分类的粒度、常用数据集、评判标准和经典论文等角度,完整充分展现图片分类这个经典问题,让读者有个完整印象。

问题定义

图片分类的定义如下:

输入:一张图片

输出:图片类别

这里的图片类别是指图片内所包含物体的类别。

传统的图片分类中,一张图片只包含一个类别物体的一个或多个实例。多标签图片分类中,一张图片一般包含多个类别物体的一个或多个实例(如多标签猫狗图片分类,大部分照片不但包含猫,还同时包含狗)。

我们这里只讲传统的图片分类。以下是几个样例:

输入上述图片,正确的输出应该是猫(图片来自数据集ImageNet)

输入上述图片,正确的输出应该是类别9(图片来自数据集MNIST)

输入上图,正确的输出应该是飞机(图片来自数据集CIFAR10)

图片分类的粒度

粗粒度分类

粗粒度图片分类是指跨物种语义级别的分类,比较常见的包括如猫狗分类、ImageNet的1000个类别的分类、CIFAR10的10个类别的分类等。这样的图像分类,各个类别之间因为属于不同的物种或大类,往往具有较大的类间方差,具有较小的类内方差。

下面是cifar10 中的10个类别的示意图,这就是一个典型的例子。

细粒度分类

细粒度图像分类,相对于跨物种的图像分类,级别更低一些。它往往是同一个大类中的子类的分类,如不同鸟类的分类,不同狗类的分类,不同车型的分类等。

下面是以鸟的子类间分类为例,细粒度分类类间因为较为相似,所以类间方差小,而类内由于姿态、光纤等问题,类内方差大。

实例级分类

如果我们要区分不同的个体,而不仅仅是物种类或者子类,那就是一个识别问题,或者说是实例级别的图像分类,最典型的任务就是人脸识别。

常用数据集

上图是经典常用的粗粒度图片分类数据集。

MNIST

MNIST是手写体数据集,每一张图片是0-9个数字中的一个,图片分辨率28x28,所有图片均是灰度图,因此图片表示为tensor是28x28x1,训练集60000张照片,测试集10000张照片。 以下是16张MNIST中的样本。

Fashion-MNIST

Fashion-MNIST的提出是为了方便学者测试算法的有效性,因为MNIST数据集的特征过于简单,导致在MNIST表现好的算法,很难说是算法改进了,还是数据集过于简单。 Fashion-MNIST,除了类别换成了服装和鞋子等,其他与MNIST一模一样,同样分辨率28x28,同样灰度图,训练集同样60000,测试集同样10000。基本上在MNIST测试的算法,不用任何修改,就可以在Fashion-MNIST上测试和训练。 以下是30张Fashion-MNIST中的样本。

CIFAR-10

CIFAR-10数据集由10类32x32的彩色图片组成,一共包含60000张图片,每一类包含6000图片。其中50000张图片作为训练集,10000张图片作为测试集。

CIFAR-10数据集被划分成了5个训练的batch和1个测试的batch,每个batch均包含10000张图片。测试集batch的图片是从每个类别中随机挑选的1000张图片组成的,训练集batch以随机的顺序包含剩下的50000张图片。不过一些训练集batch可能出现包含某一类图片比其他类的图片数量多的情况。训练集batch包含来自每一类的5000张图片,一共50000张训练图片。

以下是数据集中的类,以及来自每个类的10个随机图像:

这些类完全相互排斥。汽车和卡车之间没有重叠。“汽车”包括轿车,SUV,这类东西。“卡车”只包括大卡车。都不包括皮卡车。

CIFAR-100

CIFAR-100数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像。每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)

ImageNet

ImageNet数据集本身有约1500万张照片,2.2万个类。基于ImageNet的大规模计算机视觉挑战赛ISLVRC包含5个任务,图像分类(Image Classification)、目标定位(Image Localization)、目标检测(Object Detection)、视频目标检测(Video Object Detection)、场景分类。

由于其图像分类任务名声太盛,导致一般提到ImageNet,通常指的就是其图像分类子任务,这个子任务共有1000个类别,训练集有1,281,167张照片,验证机50,000张,测试集100,000张照片,每张图片大小不一,均为彩色图片。

性能评判标准

图片分类的评判标准比较简单。

top1准确率

对一个图片,取概率最大值作为预测。统计下预测正确的比率,即为top1准确率。

top5准确率

对一个图片,如果概率前五中包含正确答案,即认为正确。再统计预测正确的比率,即为top5准确率。

经典算法

图像分类任务是计算机视觉的基础任务,大量的图像分类经典算法,大幅度推动了计算机视觉的发展。下图是各个经典算法的时间轴,图中都给出了各个经典模型的提出时间点。

上图看起来有点乱,把相同系列的模型放在一起,重新整理如下图:

这里只列出经典算法,后面我会逐一讲解这些经典论文。另外,也建议各位每篇都亲自阅读(除了LeNet),非常经典。

总结

本文从问题定义、图片分类的粒度、常用数据集、评判标准和经典论文等多个角度完整展示了图片分类这个经典的计算机视觉任务。我相信,一个完整的认识,能让大家更好的开始学习深度学习。

转载于:https://juejin.im/post/5d236d645188252bd255c6c2

【经典算法必读】图片分类系列之(一): 你真的了解图片分类(Image Classification)吗?...相关推荐

  1. 图片操作系列 —(2)手势旋转图片

    前言 在上次的文章:图片操作系列 -(1)手势缩放图片功能中,我们已经学会了如何用手势来对图片进行缩放.这次我们继续来看第二个操作,那就是如何用手势来旋转图片. 所以我们本文我们一共要实现二个功能: ...

  2. 人脸识别三大经典算法_人脸识别系列四 | DeepID1算法

    前言 这是人脸识别系列的第5篇文章,前4篇文章可以在公众号的人脸识别栏里找到,这篇文章主要是解析CVPR 2014年的经典人脸识别论文DeepID1算法.论文的地址如下:http://mmlab.ie ...

  3. 【机器学习经典算法源码分析系列】-- 逻辑回归

    1.逻辑回归(Logistic Regression)又常被成为"逻辑斯蒂回归",实质上是一个二元分类问题. 逻辑回归代价函数: 代价函数导数: Matlab实现: 采用matla ...

  4. 数据挖掘十大经典算法(详解)

                                                           数据挖掘十大经典算法  一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法 ...

  5. DataMining学习2_数据挖掘十大经典算法

     数据挖掘十大经典算法  一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: ...

  6. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

     经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...

  7. FlyAI资讯:收藏!深度学习必读10篇经典算法论文总结!

    前言 目录 前言 1998年:LeNet 2012年:AlexNet 2014年:VGG 2014年:GoogLeNet 2015年:Batch Normalization 2015年:ResNet ...

  8. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  9. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

最新文章

  1. 写给工程师的十条精进原则
  2. python怎么用excel-Python怎么写入excel文件?详细实例在这里。。。
  3. ssm(springMVC + spring+MyBatis) 小例
  4. java axure_【Java】Axure线框图
  5. 状态栏和navigationbar 关联上,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。...
  6. 剑指offer:矩阵中的路径(递归回溯法DFS类似迷宫)
  7. Spring Security笔记:HTTP Basic 认证
  8. SpringBoot指南(二)——常用注解及操作
  9. 【雷达通信】基于matlab多普勒连续波测速【含Matlab源码 642期】
  10. 基于PHP的新闻管理系统(基础版)
  11. 数据分析知识体系模型
  12. HTML5游戏开发进阶指南.pdf
  13. 编码格式转换--常见编码间的转换以及中文简繁互换
  14. php cpu主频,处理器主频概念及 xxxGHz 的运算速度
  15. html插入动态背景,HTML 动态背景
  16. uml的用例图中扩展关系与包含关系
  17. Oracle数据库迁移到AWS云的方案
  18. CSDN是怎么样的一个网站
  19. 关于搭建yuanshen(yuan神)私人服务器教程
  20. Hadoop安装教程_单机伪分布式配置_Hadoop2.6.0(2.7.1)Ubuntu14.04(16.04)

热门文章

  1. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #20 使用fio进行I/O的基准测试...
  2. 辽宁鞍山与中国联通签订智慧城市大数据云计算中心项目
  3. 百度的TSDB——可针对tag查询,应该类似kairosDB
  4. Tomcat 启动错误 org/eclipse/jdt/debug/core/JDIDebug...
  5. 人生的意义—我们为什么活着?
  6. python将一组数分成每3个一组
  7. 使用 qrcodejs 生成二维码的几个问题
  8. .net使用websocket
  9. 【云周刊】第126期:硬货!云存储成本到底省在哪儿
  10. Python命令行参数学习