评论:AlexNet和CaffeNet有何区别?

一、说明

        在这个故事中,我们回顾了AlexNetCaffeNet。AlexNet 是2012 年ILSVRC(ImageNet 大规模视觉识别竞赛的获胜者,这是一项图像分类竞赛。而CaffeNet是AlexNet的单GPU版,因此,我们平时在普通电脑的AlexNet实际上是CaffeNet、

二、2012年的ImageNet竞赛

        ImageNet 是一个包含超过 1500 万张带标签的高分辨率图像的数据集,其中包含大约 22,000 个类别。ILSVRC 使用 ImageNet 的子集,其中每个类别包含约 1000 个图像。总共大约有 120 万张训练图像、5 万张验证图像和 15 万张测试图像。

        AlexNet,ILSVRC 2012 图像分类冠军,错误率显着降低

答:对于AlexNet,我们将介绍:

  1. 建筑学
  2. ReLU(修正线性单元)
  3. 多个 GPU
  4. 局部响应标准化
  5. 重叠池化
  6. 数据增强
  7. 辍学
  8. 学习参数的其他细节
  9. 结果

        B. 对于CaffeNet来说,它只是AlexNet 的单 GPU 版本。由于通常情况下,人们只有一个 GPU,因此 CaffeNet 是一个用于模拟 AlexNet 的单 GPU 网络。我们也将在本故事的结尾介绍这一点。

        通过遍历每个组件,我们可以知道每个组件的重要性。其中一些现在不太有用。但它们确实激发了其他网络的发明。

三、AlexNet网络描述

1. 架构

亚历克斯网

AlexNet 包含八层

输入:227×227×3输入图像(论文中和图中也提到了224×224×3尺寸,但是后来指出应该是227,或者在计算过程中填充了224×224×3第 1 次卷积。)

第一:卷积层:2组,每组48个核,大小11×11×3
(stride:4,pad:0)

输出55×55×48特征图×2组
然后3×3重叠最大池化(stride:2)
输出27×27×48特征图×2组
然后局部响应归一化
输出27×27×48特征图×2组

第二:卷积层:2组,每组128个核,大小为5×5×48
(步长:1,pad:2)

输出27×27×128特征图×2组
然后3×3重叠最大池化(步长:2)
输出13×13×128特征图×2组
然后局部响应归一化
输出13×13×128特征图×2组

第三:卷积层:2组,每组192个核,大小为3×3×256
(stride:1,pad:1)

输出13×13×192个特征图×2组

第四:卷积层:2组,每组192个核,大小为3×3×192
(stride:1,pad:1)

输出13×13×192个特征图×2组

第五:卷积层:256个大小为3×3×192的核
(步长:1,pad:1)

输出13×13×128特征图×2组
然后3×3重叠最大池化(步长:2)
输出6×6 ×128个特征图×2组


第 6 层: 4096 个神经元的全连接(密集)层


第 7 层: 4096 个神经元的全连接(密集)层

第 8 层:输出的全连接(密集)层
1000 个神经元(因为有 1000 个类)
Softmax用于计算损失。

总共有6000万个参数需要训练!!!

2.ReLU

激活函数

在 Alexnet 之前,使用的是 Tanh。AlexNet 中引入了 ReLU。
ReLU比Tanh 快六倍,达到 25% 的训练错误率。

3.多个GPU

当时使用的是NVIDIA GTX 580 GPU,只有3GB显存。因此,我们可以在架构中看到它们分成两条路径并使用 2 个 GPU 进行卷积。相互通信仅发生在一个特定的卷积层上。

因此,使用 2 个 GPU 是由于内存问题,而不是为了加快训练过程。

整个网络与只有一半内核(只有一条路径)的网络相比, Top-1和top-5错误率分别降低了1.7%和1.2%。

4. 局部响应标准化

正常化

在AlexNet中,使用了局部响应归一化。正如我们在方程中看到的,它与批量归一化不同。标准化有助于加速收敛。如今,使用批量归一化而不是使用本地响应归一化。

通过本地响应标准化,Top-1 和 top-5 错误率分别降低了 1.4% 和 1.2%。

5. 重叠池化

重叠池化是步幅小于内核大小的池化,非重叠池化是步幅等于或大于内核大小的池化。

通过重叠池化,Top-1 和 top-5 错误率分别降低了 0.4% 和 0.3%。

6. 数据增强

数据增强的两种形式。

第一:图像平移和水平反射(镜像)

从一张 256×256 图像加上水平反射中提取随机 224×224。训练集的大小增加了 2048 倍。计算公式如下:

通过图像平移:(256–224)²=32²=1024

通过水平反射:1024 × 2 = 2048

测试时,使用四个角斑块加上中心斑块及其对应的水平反射(总共10个斑块)进行预测,并取所有结果的平均值以获得最终的分类结果。

第二:改变强度

PCA 在训练集上执行。对于每个训练图像,添加数量:

强度改变量

其中 pi 和 λi 分别是 RGB 像素值的 3×3 协方差矩阵的第 i 个特征向量和特征值,αi 是平均值为 0、标准方差为 0.1 的随机变量。

通过数据增强来增加训练集的大小,Top-1 错误率降低了 1% 以上。

7. 辍学

辍学

对于使用 dropout 的层,在训练期间,每个神经元都有概率不参与前馈传递并参与反向传播。因此,每个神经元都可以有更大的机会接受训练,而不是过分依赖某些非常“强”的神经元。

考试期间,不会出现掉线的情况。

在 AlexNet 中,前两个全连接层使用 0.5 的概率。Dropout是一种减少过度拟合的正则化技术。

8.学习参数的其他细节

批量大小:128
动量 v:0.9
权重衰减:0.0005
学习率 ϵ:0.01,当验证错误率停止改善时手动减少 10,减少 3 倍。

动量v和权重w的更新

包含 120 万张图像的训练集。
网络训练了大约 90 个周期。
使用两个 NVIDIA GTX 580 3GB GPU 可以使用五到六天。

9. 结果

ILSVRC 2010 中的错误率

在 ILSVRC 2010 中,AlexNet 的 Top-1 和 top-5 错误率分别为 37.5% 和 17.0%,优于其他方法。

如果没有通过数据增强对 10 个补丁上的 10 个预测进行平均AlexNet 仅获得 Top-1 和 top-5 错误率,分别为 39.0% 和 18.3%。

ILSVRC 2012 中的错误率

通过1个AlexNet(1个CNN),验证错误率为18.2%

通过对5 个 AlexNet(5 个 CNN)的预测进行平均,错误率降低到16.4%。这是LeNet 中已经用于数字分类的一种 boosting 技术。

通过向 AlexNet (1 CNN*) 添加一层卷积层,验证错误率降低至16.6%

通过对2 个修改后的 AlexNet 和 5 个原始 AlexNet(7 个 CNN*)的预测进行平均,验证错误率降低至15.4%

AlexNet 的一些前 5 名结果

四、CaffeNet

        CaffeNet 是 AlexNet 的 1-GPU 版本。该架构是:

注意点:

        我们可以看到 AlexNet 中的 2 条路径合并为一条路径。

        值得注意的是,对于 CaffeNet 的早期版本,池化层和归一化层的顺序是相反的,这是偶然的。但在 Caffe 提供的当前版本的 CaffeNet 中,它已经为 Caffenet 提供了池化层和归一化层的正确顺序。

通过对每个组件的逐一研究,我们可以了解每个组件的有效性。:)

如果有兴趣,还有一个关于使用 Nvidia-Docker 和 Caffe 快速设置 CaffeNet 的教程[3]。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文懂得电源模块过温保护测试方法 ate测试软件助力测试

过温保护测试是电源模块保护功能测试项目之一,也是电源模块测试的重要测试指标,以保证电源模块过温保护功能正常,确保电源模块不受损坏。用ate测试软件测试电源模块过温保护,不仅可以保证测试结果的准确性,还可以多维度…

revit获取FamilySymbol的name

因为想解析把Element的CategoryId跟FamilySymbolId解析并存下来,这样就可以还原Revit中项目浏览器,里面的族的结构层次了。 参考:Revit中“Category、Family、 Familysymbol、 FamilyInstance”之间的关系​​​​​​ 但是对于wall和floor等…

通过key在数仓里查询dt的时候报错

现象 Query failed (#20231114_080638_00103_iaf4c) in hive: line 3:11: Column tyc_web_company_workright cannot be resolved 原因 key应该被单引号括起来,字段名称才应该被双引号括起来 修改 把单引号换成双引号就好了

软件测试自学指南,十年阿里测试工程师的建议

通过技能提升,入行IT可以的,但得先积累足够的经验,才能拿高薪,有个成长的过程。 软件测试岗介绍 软件测试岗位主要负责系统的测试工作,属于IT项目中的质量管理(QA)模块。 这个岗位分为两种类…

Python+Appium自动化测试框架详解

appium简介 Appium 是一个开源的、跨平台的测试框架,可以用来测试 Native App、混合应用、移动 Web 应用(H5 应用)等,也是当下互联网企业实现移动自动化测试的重要工具。Appium、Appium-desktop、Appium Client 的区别是 Appium …

识别代理IP:保障网络安全的重要一环

在互联网的世界中,代理服务器被广泛用于隐藏用户真实IP地址,带来了一些挑战,特别是在网络安全和欺诈检测方面。本文将探讨如何识别代理IP,以确保网络的安全性和可靠性。 1. 代理IP的背景与用途 代理服务器是位于用户和目标服务器…

进程间通信--管道

一、为什么要有进程间通信(目的) 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事…

cmake 开 asan 未生效

为什么有的时候 cmake 开 asan 没有生效 当使用CMake构建项目时,启用ASan(AddressSanitizer)的方式可能因为多种原因而没有生效。以下是一些常见的可能原因和解决方法: 1. 检查编译器和CMake版本:确保您使用的编译器…

一文解码语言模型:语言模型的原理、实战与评估

在本文中,我们深入探讨了语言模型的内部工作机制,从基础模型到大规模的变种,并分析了各种评价指标的优缺点。文章通过代码示例、算法细节和最新研究,提供了一份全面而深入的视角,旨在帮助读者更准确地理解和评估语言模…

功能强大的国产API管理神器 Eolink,亲测好用

前言 大家好,我是小月,今天给大家讲讲最近很火的Eolink,一款功能强大且非常实用的国产 API管理工具。在我们日常的前端、后端开发测试过程中经常会用到API,特别是在大型项目中API管理工具也就必不可少。工欲善其事必先利其器&…

git快速上传代码

① git init; 初始化git,之后在文件夹里有.git文件,这个需要 勾选才能查看。 ② git remote add test myFisrtTest: 测试专用 这里的test是自定义的,myFisrtTest: 测试专用 是远程仓库 ③ git branch -a 这里是查看分支 ④ …

Git推送本地代码到远程仓库

Git推送本地代码到远程仓库 1、首先需要安装Git,如果已经安装,请跳过。下载地址:https://git-for-windows.github.io/ 2、安装好git服务器后。首先找到你项目的文件夹,比如项目名称为Item,进入到这个文件夹&#xff0…

%与floormod方法区别

%求余数 计算步骤: 10 / -3 -3.333333........... %是向0方向取整,因此-3.3333.......取整数-3 10 % -3 10-(-3*-3) 1 floormod方法 计算步骤:floormod(10,-3) floormod是向负无穷方向取整,因此-3…

Java数据结构

Java 数据结构 数据结构主要包括以下几种接口和类: 枚举(Enumeration) 接口定义了一种从数据结构中取回连续元素的方式。 nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。 位集合(BitSet…

嵌入式行业算青春饭吗?

今日话题,嵌入式行业算青春饭吗?嵌入式行业的技术要求确实非常广泛,需要深厚的知识广度和深度。这意味着入行门槛较高,我们需要了解不仅是软件和硬件,还要熟悉底层接口和硬件信号的处理方式,了解数据在计算…

kube-bench-CIS基准的自动化扫描工具学习

仓库地址:GitHub - aquasecurity/kube-bench: Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark kube-bench,检查 Kubernetes 是否根据 CIS Kubernetes 基准中定义的安全最佳实践部署,下载…

基于51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)

PCF8591数字电压表数码管显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲…

【每日一题】阈值距离内邻居最少的城市

文章目录 Tag题目来源题目解读解题思路方法一:多源最短路 写在最后 Tag 【多源最短路】【数组】【2023-11-14】 题目来源 1334. 阈值距离内邻居最少的城市 题目解读 题目翻译过来是这样的:一共 n 个城市,统计在每个城市 dt 距离范围内所有…

Linux必备基础命令,JAVA程序员必备

目录 一、了解基本的左侧栏什么意思​编辑 二、ls,ll(list,查找目录内容) 三、cd(change directory,切换目录) 小技巧,我们在查找东西的时候,可以使用tab进行智能补全。 四、touch(建立文件…

R程序 示例4.3.2版本包 在centos进行编译部署

为了在CentOS上下载和编译R语言4.3.2包,可以按照以下步骤进行操作: 1.首先,需要安装一些必要的依赖项。可以使用以下命令安装它们: sudo yum install -y epel-release sudo yum install -y gcc gcc-c gcc-gfortran readline-dev…