【图像分类】从数据集和经典网络开始
欢迎大家来到图像分类专栏,本篇简单介绍数据集和图像分类中的经典网络的进展。
作者 | 郭冰洋
编辑 言有三
1 简介
一场完美的交响乐演出,指挥家需要充分结合每位演奏者和乐器的特点,根据演奏曲目把控节奏,才能将曼妙的音符传送到所有听众的耳中。
如果将图像分类看作一场盛大的交响乐演出,一幅幅图像数据便是其中身怀绝技的演奏家,他们各有千秋,不分高下。而这场演出如果没有指挥的存在,恐怕再多的乐器,也无法奏出曼妙的曲目。神经网络 ,便是图像分类中统筹全局的指挥者。正是在他的巧妙连接下,每张图片都展现出自己最独特的一面,从而构成了令人赏心悦目的华美乐章。
图像数据作为分类系统的输入,对最终的结果起着至关重要的作用,而适当的网络结构,才能充分发挥数据的最大性能。
本篇文章提炼出用于图像分类的数据集及其适用方向,涵盖人物、医学、动物、工业等多个领域,同时基于业界最权威的分类评价数据集——ImageNet,分析近年来图像分类中经典网络所取得的进展。
2 数据集
俗话说:巧妇难为无米之炊。数据作为驱动深度学习的源动力之一,更是图像分类任务的根基,直白来说,任何领域的分类研究都离不开数据。
不论学界还是工业界,确定特定的研究方向后,必须搭建相关的高质量数据集才可以进行进一步的研究,同时也能以更统一的标准对模型性能进行评判。
本文根据应用场景的不同,汇总了9个相关领域的数据集,并根据数据集自身特点,注明其容量、类别和适用的分类任务,以供大家参考使用。
抛开上文中列举的领域相关性,图像分类的数据集又可以分为初级版、进阶版和高级版。
初级版适合初入图像处理领域的同学,这一类数据集主要以MNIST、Cifar 10为代表,可以帮助新手迅速了解神经网络的构成,同时掌握深度学习和图像处理的相关基础知识。
进阶版适合已经有一定基础的同学,需要通过更多的实操来强化对不同结构和知识的理解,并实现调参、数据处理、网络结构替换等更高一层的任务,Cifar 100、表情分类相关的数据集则是其中代表。
高级版适用于经过多个任务历练并需要根据实际需求和科研方向来选择数据集的同学,这就涉及到多标签分类、细粒度分类和少样本分类等更复杂的任务,此时需要选择MS COCO、ImageNet等更高层级的数据集,同时还有可能同时利用这些数据集,从中选取合适的图像并结合爬虫或实际拍摄以搭建满足任务需求的数据集。
3 经典网络结构
ImageNet作为图像分类领域最权威的数据集,由Stanford的李飞飞团队在2009年CVPR会议上公布,随后的几年里均会开展基于ImageNet的图像分类竞赛。ImageNet竞赛的评价标准分为Top-1、Top-5两种,这也是图像分类的通用指标。其中Top-1是指对一张图片进行预测,只有预测概率最大的是正确答案时,才认为该图片预测正确,同理Top-5是指对一张图像进行预测,预测概率前五名中,只要有一个符合标注,即认为该图片预测正确。
ImageNet竞赛一经开展便成为世界各大高校、科研机构、科技公司的角斗场,每年均有诸多团队提出令人耳目一新的网络结构和相关算法。ImageNet竞赛也见证了图像分类由传统算法走向深度学习的过程,更见证了其所取得的巨大进步。
本文剩余篇幅将介绍几个经典的网络结构,回顾近年来图像分类领域取得的研究进展。
1、AlexNet
2012年,Imagenet比赛冠军— Alexnet直接刷新了ImageNet的识别率,奠定了深度学习在图像处理领域的优势地位。AlexNet作为真正意义上的深度网络,提出卷积+池化堆叠的网络结构,是深度学习领域内第一个有重大工程意义的网络设计。
其特点如下[1]:
(1) 使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征
(2) 使用了LRN归一化层,对局部神经元的活动创建竞争机制,抑制反馈较小的神经元放大反应大的神经元,增强了模型的泛化能力
(3) 使用Dropout抑制过拟合
(4) 使用数据增强抑制过拟合
(5) 使用Relu替换之前的sigmoid的作为激活函数,其收敛更快,同时解决了Sigmoid在网络较深时出现的梯度弥散问题
2、VGGNet
2014年ImageNet竞赛上,VGGNet在AlexNet的基础架构上增加网络层数和深度,进一步提升了模型的准确率,探索了网络深度与性能之间的关系,证明了增加网络的深度能够在一定程度上影响最终的性能,这也引发了人们对网络深度和宽度的大范围研究[2,3]。
3、GoogleNet
GoogleNet作为与VGGNet同年诞生的网络,力压VGGNet获得当年的冠军,并提出了著名的Inception模块,将分支的思想成功引进深度学习网络结构。
Inception模块共有 4个分支,每个分支承担不同的功能:分支1对输入进行1x1卷积可以跨通道组织信息,提高网络的表达能力; 分支2使用了1×1卷积和3×3卷积的组合,进行两次特征变换; 分支3采用1×1卷积和5×5卷积的组合,同样进行两次特征变换; 分支4则在3×3最大池化后直接使用1×1卷积。
通过多个卷积核提取图像不同尺度的信息,最后进行融合,可以得到图像更好的表征[4]。
4、ResNet
随着网络深度的增加,带来了许多问题,如梯度消散、梯度爆炸等,人们通过更好的优化方法,更好的初始化策略,BN层,Relu等各种激活函数在不断改善这些问题,但并没有真正有效的解决[5]。
ResnNet提出残差结构,增加一个恒等映射,将输出表述为输入和输入的一个非线性变换的线性叠加,通过跨层连接的方式缓解深层网络结构中的梯度消失问题,使得网络模型深度在很大范围内不受限制 ,对后续卷积神经网络的发展产生了深远的意义。
5、SENet
随着网络结构的不断完善和发展,人们已经从深度和宽度等多个空间维度提出改进方案,SENet则创新性地从特征通道之间的关系进行改进,通过额外的分支来得到每个通道的权重,自适应地校正原各通道激活值响应,以提升有用通道响应并抑制对当前任务用处不大的通道响应,不仅在一定程度上减少了计算量,防止了模型训练的过拟合,同时更有利于对图像特征的描述。
4 总结
随着深度学习的迅速发展,图像分类领域也搭上了这班飞速前行的列车,并大大提高了行业标准。
经典网络在ImageNet数据集上取得了非常优异的成绩,5个经典网络的准确率和参数量如上图所示,不难看出在Top-5评价指标下,已由AlexNet取得的85%的精度被SENet提升至97.75%,且在网络参数上也没有显著的爆炸现象。
如此优异的成绩不禁让许多人认为图像分类已经达到了算法的极限,却并不知道在Top-1评价指标下,仍然有巨大的提升空间。
通过上图不难发现,在更加严格也更加符合人类认知的Top-1指标下,经典网络所取得的成绩并不尽如人意,目前最高的准确率约在85%左右,仍然存在巨大的提升空间。因此,我们要怀着一颗敬畏之心,不断地向最优的目标前行,才能实现更广泛的应用。
参考文献:
[1] 【模型解读】从LeNet到VGG,看卷积+池化串联的网络结构
[2] 【AI不惑境】网络深度对深度学习模型性能有什么影响?
[3] 【AI不惑境】网络的宽度如何影响深度学习模型的性能?
[4] 【模型解读】GoogLeNet中的inception结构,你看懂了吗
[5] 【AI不惑境】残差网络的前世今生与原理
有三AI夏季划
有三AI夏季划进行中,欢迎了解并加入,系统性成长为中级CV算法工程师。
转载文章请后台联系
侵权必究
往期精选
【技术综述】你真的了解图像分类吗?
【技术综述】多标签图像分类综述
【图像分类】分类专栏正式上线啦!初入CV、AI你需要一份指南针!
【图像分类】从数据集和经典网络开始相关推荐
- 「图像分类」从数据集和经典网络开始
https://www.toutiao.com/i6715367170378826248/ 欢迎大家来到图像分类专栏,本篇简单介绍数据集和图像分类中的经典网络的进展. 作者 | 郭冰洋 编辑 言有三 ...
- 细粒度图像分类_北大提出PKU FG-XMedia:细粒度跨媒体检索数据集和评测基准
北京大学彭宇新教授团队建立了第一个包含 4 种媒体类型(图像.文本.视频和音频)的细粒度跨媒体检索公开数据集和评测基准 PKU FG-XMedia,并且提出了一种能够同时学习 4 种媒体统一表征的深度 ...
- 深度学习经典网络解析图像分类篇(二):AlexNet
深度学习经典网络解析图像分类篇(二):AlexNet 1.背景介绍 2.ImageNet 3.AlexNet 3.1AlexNet简介 3.2AlexNet网络架构 3.2.1第一层(CONV1) 3 ...
- 声音识别入门经典模型实践-基于大数据训练CNN14网络实现食物咀嚼声音识别
声音识别入门经典模型实践-基于大数据训练CNN14网络实现食物咀嚼声音识别 项目简介 声音分类是指可以定制识别出当前音频是哪种声音,或者是什么状态/场景的声音.通过声音,人的大脑会获取到大量的信息,其 ...
- 制作自己的segnet数据集_语义分割【论文解读】经典网络SegNet 值得仔细反复阅读...
摘要: 提出了一种新颖而实用的深度全卷积神经网络结构用于语义像素分割称为SegNet.这个核心的可训练分割引擎包括一个编码器网络,一个相应的解码器网络,以及一个像素级的分类层.编码器网络的架构与VGG ...
- 手撕 CNN 经典网络之 VGGNet(PyTorch实战篇)
大家好,我是红色石头! 在上一篇文章: 手撕 CNN 经典网络之 VGGNet(理论篇) 详细介绍了 VGGNet 的网络结构,今天我们将使用 PyTorch 来复现VGGNet网络,并用VGGNet ...
- 目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查
目前缺少用于语义分割的 3D LiDAR 数据吗?关于三维点云数据集和方法的调查 原文 Are We Hungry for 3D LiDAR Data for Semantic Segmentatio ...
- 智能驾驶 车牌检测和识别(三)《CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)》
智能驾驶 车牌检测和识别(三)<CRNN和LPRNet实现车牌识别(含车牌识别数据集和训练代码)> 目录 智能驾驶 车牌检测和识别(三)<CRNN和LPRNet实现车牌识别(含车牌识 ...
- 深度学习-基础知识-经典网络
目录 经典网络 CNN(卷积神经网络) BN层 LeNet AlexNet VGGNet inception structure(GoogLeNet) RFBnet ResNet残差网路 Encode ...
最新文章
- [故障解决]图文:python启动报错:api-ms-win-crt-runtime-l1-1-0.dll丢失解决
- 使用 conda 和 Jupyter 在 R 中实现数据科学分析
- 5G UE — USIM Card — 5G 的 USIM 卡
- 【转载】tkinter多线程防假死
- Leetcode 134. 加油站 解题思路及C++实现
- 白话Elasticsearch63-生产集群部署之硬件配置、jvm以及集群规划建议
- linux cp 覆盖不确认,cp命令强制覆盖,不提示确认信息
- 周报速递丨百度与美团等互联互通;京东Shopify达成合作
- 名企程序员被裁实录:早上还在改 Bug,晚上就成下岗工
- vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用
- JavaScript的函数声明与函数表达式的区别
- Java内存中的堆和栈
- 黑帽大会:苹果网络服务器比微软易入侵
- C# 查询集合中某个元素里的值
- 计算机管理模糊,电脑显示器显示有点模糊怎么办
- 关于studio 3T
- 前端js获取文件名、后缀,截取文件名后缀
- 和面试官对线HashMap
- 解决每次运行Xcode都需要输入密码问题
- 在win8.1系统下运行VC++6.0
热门文章
- 好奇,我们常用的 Integer 内部为什么会去实现 Comparable 接口,他的作用是什么?...
- java基础集合类之set
- Android Studio的gradle项目构建
- ElasticSearch学习笔记(二)—结构了解和索引文档增删改
- C语言中文件的基本操作函数fprintf和fscanf实例介绍
- 使用ffmpeg+nginx将rtmp直播流转为hls直播流
- Java 里的泛型简介.
- 实用的 GitHub 仓库搜索技巧
- java 获取资源,Java资源获取
- 查看linux的用户 7.2,linux下查看用户登入系统相关命令及编写脚本(七)