ImageNet Classification with Deep Convolutional Neural Networks

(一)Some Words:

这里主要是通过记录一些笔记来阅读这篇 Paper,它的产生跟 ImageNet LSVRC-2010 竞赛有关,通过训练一个大的、深的卷积网络来将 1.2 million 的 HR 图像分成 1000 类 ,这个网络实现了 top-1 37.5% 和 top-5 17.0% 的错误率,相较于之前先进的方法实现了很大的改进。

在LeNet的基础上提出了CNN ,打破了传统的方法的局限;

Link:https://dl.acm.org/doi/pdf/10.1145/3065386

1.1 LSVRC-2010:

全称是 Large Scale Visual Recognition Challenge 2010,中文意为大规模视觉识别挑战赛2010

LSVRC是一个针对计算机视觉领域的竞赛,旨在推动图像分类和目标识别等任务的研究和发展。该竞赛由ImageNet项目发起,是计算机视觉领域最具影响力和知名度的竞赛之一。

在LSVRC-2010中,参赛者需要使用给定的数据集(即ImageNet提供的数据集),在图像分类和目标识别任务上进行算法和模型的评估。该竞赛的数据集包含来自多个类别的数百万张图像,并且参赛者需要开发出能够准确识别和分类这些图像的算法和模型。

1.2 ImageNet:

ImageNet数据集的产生源于斯坦福大学的一个研究项目,旨在解决计算机对图像的理解和识别能力的挑战。2006年,斯坦福大学的计算机科学教授Fei-Fei Li等人启动了一个名为"ImageNet项目"的研究计划,旨在构建一个大规模的图像数据库,涵盖丰富的物体类别和场景。他们认识到,要想使计算机能够真正理解图像,需要一个庞大而多样的数据集,能够覆盖人类生活中的各种物体和概念。


(二)Abstract:

这个网络的成绩(省略) & 网络的主要结构

The neural network,which has 60 million parameters and 650,000 neurons, consists of five convolutional layers, some of which are followed by max-pooling layers, and three fully connected layers with a final 1000-way softmax.

网络有 60 million 参数,650000 神经元,组成了 5 层卷积,后 +最大池化层+ 3个有着softmax的全连接层。

To make training faster, we used nonsaturating neurons and a very efficient GPU implementation of the convolution operation. To reduce overfitting in the fully connected layers we employed a recently developed regularization method called “dropout” that proved to be very effective. We also entered a variant of this model in the ILSVRC-2012 competition and achieved a winning top-5 test error rate of 15.3%, compared to 26.2% achieved by the second-best entry.

非饱和的神经元:即非线性的神经元,引入网络非线性元素,例如ReLu...

使用高效的 GPU使得训练的速度加快 ; 使用dropout正则化方式来减少过拟合;


(三)PROLOGUE (前言)

CNN的一些前期发展困难和反向传播的使用等等...


(四)Introduction

说明了目前数据集不够大所带来的模型不够好的问题并已被认证,想尝试通过保留标签的转换来尝试获得更多的数据集。使得能够在不过拟合的情况下,充分训练一个模型。还介绍了本论文的一些贡献:本文的具体贡献如下:(1)训练了一个大规模的CNN网络并且取得了不错的成绩。(2)编写了一个高度优化的GPU实现的2D卷积和训练cnn中固有的所有其他操作。我们的网络包含了一些新的和不寻常的特性,提高了性能,减少了训练时间。(3)我们的网络的规模使过拟合成为一个重大的问题,即使有120万个标记的训练例子,所以我们使用了几种有效的技术来防止过拟合。我们最终的网络包含5个卷积层和3个完全连接的层,这个深度似乎很重要:我们发现去除任何卷积层(每个层包含不超过1%的模型参数)会导致较差的性能。


(五)THE DATASET

ImageNet是一个包含超过1500万张被标记的高分辨率图像的数据集,大约属于22,000个类别。这些图片是从网上收集下来的,并由人类标签者使用亚马逊的工具进行标记。从2010年开始,作为 Pascal Visual Object Challenge 的一部分,一个名为ImageNet大规模视觉识别挑战(ILSVRC)的年度竞赛已经举行。ILSVRC使用了ImageNet的一个子集,在1000个类别中,每个类别中有大约1000张图像。总共,大约有120万张训练图像,5万张验证图像和15万张测试图像。
ILSVRC-2010是ILSVRC中唯一一个有测试集标签的版本,所以这是我们执行了大部分实验的版本。由于我们也进入了ILSVRC-2012竞赛中的模型,在第7节中,我们也报告了这个版本的数据集的结果,因为测试集标签是不可用的。在ImageNet上,通常会报告两个错误率:前1和前5,其中前5错误率是模型认为最可能的5个标签中的测试图像的比例。ImageNet由可变分辨率的图像组成,而我们的系统需要一个恒定的输入维数。因此,我们将图像进行降采样到256×256的固定分辨率。给定一个矩形图像,我们首先重新将图像缩放,使较短的一侧长度为256,然后从结果图像中裁剪出中央的256×256Patch。我们没有以任何其他方式对图像进行预处理,除了从每个像素中减去训练集上的平均活动。所以我们根据像素的(中心)原始RGB值来训练我们的网络。

(六)THE ARCHITECTURE

6.1 Rectified Linear Unit nonlinearity

饱和非线性激活函数(如Sigmoid和Tanh)在某些输入范围内导数接近于零,容易导致梯度消失的问题。而非饱和非线性激活函数(如ReLU、Leaky ReLU和ELU)的导数在整个输入范围内保持较大的值,有助于缓解梯度消失问题,并提供更强的非线性表达能力。选择适合的激活函数取决于具体的任务和网络结构,需要综合考虑梯度传播、非线性表示能力和计算效率等因素。 

如上图,我们可以看到一个四层的卷积神经网络使用ReLU比tanh训练达到同一错误率的速度快;


6.2 Training on multiple GPUs

主要是在两个GPU上进行训练,使用DPL并行训练,提升训练网络的速度;


6.3 Local response normalization

局部响应归一化,能够对网络有很好的泛化效果;


6.4 Overlapping pooling

具有池化重叠相较于不重叠的反而效果是更好的;


6.5 Overall architecture

以 AlexNet网络为例子,来回忆一下卷积的流程,包括卷积层和全连接层一共有八层;

0.输入层:AlexNet 接受输入为227x227大小的图像

        输入维度为:227X227X3(有一些争议,但是基本上以代码为主)

1.卷积层-ReLu-池化层(最大池化):

        (1)卷积:包含96个大小为11x11的卷积核K,步幅S为4,没有填充。

                输入维度为:227X227X3

                输出维度为:55x55x96

                H_out = (H_in + 2P - K) / S + 1 = (227 + 2x0 - 11) / 4 + 1 = 55
                W_out = (W_in + 2P - K) / S + 1 = (227 + 2x0 - 11) / 4 + 1 = 55

        (2)激活函数:ReLU非线性激活函数;

        (3)池化:池化核大小3 × 3,不扩充边缘padding = 0,步长stride = 2,因此输出大小为(55-3+0×2)/2+1=27

                输入维度为:55x55x96

                输出维度为:27x27x96(如果是两个GPU,那就是48)

2.卷积层-ReLu-池化层(最大池化):

        (1)卷积:输入27×27×96,256个5×5×96的卷积核,扩充边缘padding = 2, 步长stride = 1,因此输出结果为(27-5+2×2)/1+1 = 27,即27×27×256;
        (2)激活函数:ReLU;
        (3)池化:池化核大小3 × 3,不扩充边缘padding = 0,步长stride = 2,输出大小为(27-3+0)/2+1=13;

                输入维度为:27x27x256

                输出维度为:13x13x256

3.卷积层-ReLu:

        (1)卷积:输入13×13×256,384个3×3×256的卷积核, 扩充边缘padding = 1,步长stride = 1,因此其FeatureMap大小为(13-3+1×2)/1+1 = 13,即13×13×384;

                输入维度为:13x13x256

                输出维度为:13x13x384

        (2)激活函数:ReLu

4. 卷积层-ReLu:

        (1)卷积:输入13×13×384,384个3×3×384的卷积核, 扩充边缘padding = 1,步长stride = 1,因此其FeatureMap大小为(13-3+1×2)/1+1 = 13,即13×13×384;

                输入维度为:13x13x384;

                输出维度为:13x13x384

        (2)激活函数:ReLU;

5.卷积层-ReLu-池化层(最大池化)

        (1)卷积:输入13×13×384,256个3×3×384的卷积核,扩充边缘padding = 1,步长stride = 1,因此其FeatureMap大小为(13-3+1×2)/1+1 = 13,即13×13×256;

        (2)激活函数:ReLU;

        (3)池化:池化核大小3 × 3, 扩充边缘padding = 0,步长stride = 2,因此其FeatureMap输出大小为(13-3+0×2)/2+1=6;

                输入维度为:13x13x384;

                输出维度为:6x6x256;

6.全连接层-ReLu-Droupt:包含4096个神经元,应用ReLU激活函数。

        (1)全连接实际上是通过卷积进行的,输入6×6×256,4096个6×6×256的卷积核,扩充边缘padding = 0, 步长stride = 1

                输入维度为:6x6x256;

                输出维度为:1x1x4096;

        (2)激活函数:ReLU;

        (3)Dropout:全连接层中去掉了一些神经节点,达到防止过拟合,输出为1×1×4096;

 

7.全连接层-ReLu-droupout:

        (1)全连接:此层的全连接,输入1×1×4096;
        (2)激活函数:ReLU;
        (3)Dropout:全连接层中去掉了一些神经节点,达到防止过拟合,输出为1×1×4096;

8.全连接层-sofmax

       (1)全连接:此层的全连接,输入1×1×4096;
       (2)softmax:softmax为1000,输出为1×1×1000;


(七)REDUCING OVERFITTING

当网络没有过拟合时,它意味着模型在训练数据上的性能良好,可以很好地拟合训练数据的特征和标签。然而,这并不意味着网络能够学习到更多的参数或更复杂的模式。

一个网络的容量(capacity)是指其可以学习的模型的复杂程度或灵活性。容量较低的网络可能无法学习到复杂的模式和关系,导致欠拟合;而容量较高的网络可以更好地适应训练数据,但也容易发生过拟合。


7.1 Data augmentation

(1)保留标签的变换;

We do this by extracting random 224 × 224 patches (and their horizontal reflections) from the 256 × 256 images and training our net work on these extracted patches. d This increases the size of
our training set by a factor of 2048.
图像平移:33*33=1089
水平反射:1089x2=2178 又会包括一些重复

(2)改变训练图像RGB通道的强度;


7.2 Dropout

主要是用在前两个全连接网络中,来防止网络的过拟合;

7.3 DETAILS OF LEARNING

        我们使用随机梯度下降(stochastic gradient descent),bs = 128,momentum =0.9,weight decay = 0.0005;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPU显存泄露/显存溢出/显存爆炸 解决方案

问题描述 最近在跑一个基于pytorch的强化学习代码,在训练过程中显存增大非常明显,迭代不到200个iteration就可以占据70G的显存。由于博主是第一次在pytorch实现的强化学习算法上加入自己的实现,很没有应对经验,现将调试过程记录下…

计算机网络(5) --- http协议

计算机网络(4) --- 协议定制_哈里沃克的博客-CSDN博客协议定制https://blog.csdn.net/m0_63488627/article/details/132070683?spm1001.2014.3001.5501 目录 1.http协议介绍 1.协议的延申 2.http协议介绍 3.URL 4.urlencode和urldecode 2.HTTP协…

使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

本文由社区用户 Albert 贡献,首发于 NebulaGraph 论坛,旨在提供多一种的部署方式使用 NebulaGraph。 在本文,我将会详细地记录下我用 K8s 部署分布式图数据库 NebulaGraph 的过程。下面是本次实践的内容规划: 一到十章节为 K8s 集…

用html+javascript打造公文一键排版系统16:更新单个附件说明排版,实现多个附件说明排版

利用公休的时间继续完善。 一、更新单个附件说明排版 之前实现单个附件说明排版时,我们只考虑了“附件:”中冒号为半角的情况,而没有考虑存在多任余空格的情况,我们今天先针对存在多任余空格的情况进行完善,增加了温…

APP外包开发的开发语言对比

在开发iOS APP时有两种语言可以选择,Swift(Swift Programming Language)和 Objective-C(Objective-C Programming Language),它们是两种不同的编程语言,都被用于iOS和macOS等苹果平台的软件开发…

[国产MCU]-BL602开发实例-定时器

定时器 文章目录 定时器1、BL602定时器介绍2、定时器驱动API介绍3、定时器使用实例3.1 单次计时3.2 持续计时通用定时器,用于定时,当时间到达我们所设置的定时时间会产生定时中断,可以用来完成定时任务。本文将详细介绍如何使用BL602的定时器功能。 1、BL602定时器介绍 BL6…

如何搭建自动化测试框架?资深测试整理的PO模式,一套打通自动化...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Po模型介绍 1、简…

Redis 报错 RedisConnectionException: Unable to connect to x.x.x.x:6379

文章目录 Redis报错类型可能解决方案 Redis报错类型 org.springframework.data.redis.connection. spingboot调用redis出错 PoolException: Could not get a resource from the pool; 连接池异常:无法从池中获取资源; nested exception is io.lettuce.core. 嵌套异常 RedisConn…

聊聊JDK动态代理原理

1. 示例 首先,定义一个接口: public interface Staff {void work(); }然后,新增一个类并实现上面的接口: public class Coder implements Staff {Overridepublic void work() {System.out.println("认真写bug……");…

一起学数据结构(3)——万字解析:链表的概念及单链表的实现

上篇文章介绍了数据结构的一些基本概念,以及顺序表的概念和实现,本文来介绍链表的概念和单链表的实现,在此之前,首先来回顾以下顺序表的特点: 1.顺序表特点回顾: 1. 顺序表是一组地址连续的存储单元依次存…

图像提示词攻略--基于 stable diffusion v2

Stable Diffusion 是一种潜在的文本到图像扩散模型,能够在给定任何文本输入(称为提示)的情况下生成逼真的图像。 在本文中,我将讨论和探索一些提高提示有效性的方法。从在提示中添加某些关键字和组合词、从更改单词顺序及其标点符…

24v转3.3v输出3A用什么芯片

问:客户需要一个能够将24V输入电压转换为3.3V输出电压,并且能够提供1-3A的电流输出的芯片。还希望它能够内置MOS管。有什么推荐的型号吗?(vin24v、5v,vout3.3v,Io1-3A) 答:推荐使用…

【福建事业单位-推理判断】08逻辑论证-加强-原因解释-日常总结

福建事业单位-推理判断】08逻辑论证-加强 一、加强题1.1 建立联系——搭桥1.2 补充论据必要条件(没它不行)补充论据(解释原因和举例论证) 总结 二、原因解释题三、日常结论复习建议 一、加强题 加强的题型,一般只加强…

替换开源LDAP,某科技企业用宁盾目录统一身份,为业务敏捷提供支撑

客户介绍 某高科技企业成立于2015年,是一家深耕于大物流领域的人工智能公司,迄今为止已为全球16个国家和地区,120余家客户打造智能化升级体验,场景覆盖海陆空铁、工厂等货运物流领域。 该公司使用开源LDAP面临的挑战 挑战1 开源…

详解Kafka分区机制原理|Kafka 系列 二

Kafka 系列第二篇,详解分区机制原理。为了不错过更新,请大家将本号“设为星标”。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 上一篇文章介绍了 Kafka 的基本概念和术语,里面有个概念是 分区(Part…

高翔《自动驾驶中的SLAM技术》代码详解 — 第6章 2D SLAM

目录 6.2 扫描匹配算法 6.2.1 点到点的扫描匹配 6.2 扫描匹配算法 6.2.1 点到点的扫描匹配 // src/ch6/test_2dlidar_io.cc // Created by xiang on 2022/3/15. // #include <gflags/gflags.h> #include <glog/logging.h> #include <opencv2/highgui.hpp>…

解释器模式(Interpreter)

解释器模式是一种行为设计模式&#xff0c;可以解释语言的语法或表达式。给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;然后定义一个解释器&#xff0c;使用该文法来解释语言中的句子。解释器模式提供了评估语言的语法或表达式的方式。 Interpreter is a behav…

行业追踪,2023-08-07

自动复盘 2023-08-07 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

ros tf

欢迎访问我的博客首页。 tf 1. tf 命令行工具1.1 发布 tf1.2 查看 tf 2.参考 1. tf 命令行工具 1.1 发布 tf 我们根据 cartographer_ros 的 launch 文件 backpack_2d.launch 写一个 tf.launch&#xff0c;并使用命令 roslaunch cartographer_ros tf.launch 启动。该 launch 文件…

【Renpy】设置选项不满足条件禁止选择

【要求】如果某个属性不满足某个要求&#xff0c;则无法选择这个选项。 【版本】Renpy 8.1.1 【实现】 1.在options.rpy文件中添加 define config.menu_include_disabled True 2.在选项中增加if条件。 menu:"Yes" if money > 20: ##如果money小于20这个选项…