了解图像分类与imageNet数据集
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解图像分类与imageNet数据集相关的知识,希望对你有一定的参考价值。
一、图像分类
图像分类实质上就是从给定的类别集合中为图像分配对应标签的任务。也就是说我们的任务是分析一个输入图像并返回一个该图像类别的标签。
假定类别集为categories = dog, cat, panda,之后我们提供一张图片给分类模型,如下图所示:
分类模型给图像分配多个标签,每个标签的概率值不同,如dog:95%,cat:4%,panda:1%,根据概率值的大小将该图片分类为dog,那就完成了图像分类的任务。
二、常用数据集
2.1 mnist数据集¶
该数据集是手写数字0-9的集合,共有60k训练图像、10k测试图像、10个类别、图像大小28×28×1.我们可以通过tf.keras直接加载该数据集:
from tensorflow.keras.datasets import mnist
# 加载mnist数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
随机选择图像展示结果如下所示:
2.2 CIFAR-10和CIFAR-100
- CIFAR-10数据集5万张训练图像、1万张测试图像、10个类别、每个类别有6k个图像,图像大小32×32×3。下图列举了10个类,每一类随机展示了10张图片:
- CIFAR-100数据集也是有5万张训练图像、1万张测试图像、包含100个类别、图像大小32×32×3。
在tf.keras中加载数据集时:
import tensorflow as tf
from tensorflow.keras.datasets import cifar10,cifar100
# 加载Cifar10数据集
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()
# 加载Cifar100数据集
(train_images, train_labels), (test_images, test_labels)= cifar100.load_data()
2.3 ImageNet
ImageNet数据集是ILSVRC竞赛使用的是数据集,由斯坦福大学李飞飞教授主导,包含了超过1400万张全尺寸的有标记图片,大约有22000个类别的数据。ILSVRC全称ImageNet Large-Scale Visual Recognition Challenge,是视觉领域最受追捧也是最具权威的学术竞赛之一,代表了图像领域的最高水平。从2010年开始举办到2017年最后一届,使用ImageNet数据集的一个子集,总共有1000类。
该比赛的获胜者从2012年开始都是使用的深度学习的方法:
- 2012年冠军是AlexNet,由于准确率远超传统方法的第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。自此之后,CNN成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。
- 2013年冠军是ZFNet,结构和AlexNet区别不大,分类效果也差不多。
- 2014年亚军是VGG网络,网络结构十分简单,因此至今VGG-16仍在广泛使用。
- 2014年的冠军网络是GooLeNet ,核心模块是Inception Module。Inception历经了V1、V2、V3、V4等多个版本的发展,不断趋于完善。GoogLeNet取名中L大写是为了向LeNet致敬,而Inception的名字来源于盗梦空间中的"we need to go deeper"梗。
- 2015年冠军网络是ResNet。核心是带短连接的残差模块,其中主路径有两层卷积核(Res34),短连接把模块的输入信息直接和经过两次卷积之后的信息融合,相当于加了一个恒等变换。短连接是深度学习又一重要思想,除计算机视觉外,短连接思想也被用到了机器翻译、语音识别/合成领域
- 2017年冠军SENet是一个模块,可以和其他的网络架构结合,比如GoogLeNet、ResNet等。
上述图像分类模型都比较经典,特别是VGG16、GoogLeNet和ResNet,现在仍然在广泛使用,在接下来的课程中我们对这些网络进行逐一介绍。
以上是关于了解图像分类与imageNet数据集的主要内容,如果未能解决你的问题,请参考以下文章
基于paddlex图像分类模型训练:图像分类数据集切分:文件夹转化为imagenet训练格式