当前位置: 首页 > news >正文

[PyTorch][chapter 33][卷积神经网络]

前言

   参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强,

     图像卷积: 空间域图像增强

     图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除

某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的应用来说

比原始图像更适用。因此这类处理时为例某种特殊应用,去改善图像的质量,处理

的结果更适合于人的观察或机器的识别系统

目录

   1: 卷积

   2: LeNet-5

   3: Conv2d


一  卷积

      卷积神经网络的核心是卷积层

     1.1 卷积定义

      对图像的每一个点(x,y)执行以下操作

       1: 对预先定义的以(x,y)为中心点的领域内的像素运算

       2:  将1中的运算结果作为(x,y)点新的响应

      用数学公式来表示

      g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b} k(s,t) f(x-s,y-t)

      

      图像 f(x,y)

      卷积核 k(s,t)

     如 下图

    

  1.2 卷积网络中的卷积

       在 传统的 数字图像处理里面,卷积核权重系数大小是固定的,

深度学习里面需要预先定义一下,通过训练得到里面权重系数

      

kernel channel卷积核的个数
kernel size卷积核大小
stride滑动的步伐,决定滑动多少步可以到图像边缘
padding填充系数,填0 或边缘像素的扩展,总长能被步长整除。

1.3  input

N图片的个数
channel图片的通道,如RGB c=3, 灰度图 c=1
width图片的宽度
height图片的高度

   例:

   


二  LeNet-5

输入

                     [1,1,28,28]

112828
图像个数网络输入的通道数,灰度图=1图像宽图像高

LeNet-5 共包含 8 层

C1  卷积层

                   [6,1,5,5]

m=6channel=1width=5height=5
网络输出的通道数: 卷积核个数网络输入的通道数:图像的通道卷积核的宽卷积核的高

                    卷积核的channel 数必须和输入的channel 一致

                    偏置 bias: 每个卷积核对应一个bias,共6个

                     输出6张28*28特征图

                    C1 有 156 个可训练参数(每个滤波器 5x5=25 个 bunit 参数和一个 bias 参数,一共 6 个滤波器,共(5x5+1)x6=156个参数,共 156x(28x28)=122,304个连接。

                     

S2  采样层

         有 6 个 14x14 的特征图。特征图中的每个单元与 C1 中相对应特征图的 2x2 邻域相连接。S2层每个单元的 4 个输入相加,乘以一个可训练参数,再加上一个可训练偏置。每个单元的 2x2 感受野并不重叠,因此 S2 中每个特征图的大小是 C1 中特征图大小的 1/4(行和列各 1/2)。

      2*2池化层

      输出 6个14*14 特征图

       S2 层有 12个(6x(1+1)=12)个可训练参数和 5880(14x14 (2 2+1) 6=5880)个连接。

C3 卷积层

       卷积核

m=16channel=1width=5height=5
输出的通道数输入的通道数卷积核的宽卷积核的高

                     输出 16个10*10的feature map

S4 下采样层

       由 16 个 5x5 大小的特征图构成。特征图中的每个单元与 C3 中相应特征图的 2x2 邻域相连接,跟 C1 和 S2 之间的连接一样。S4 层有 32 个可训练参数(每个特征图1个因子和一个偏置16x(1+1)=32)和 2000(16 (2 2+1)x5 x5=2000)个连接。

C5 卷积层

                   卷积核

m=120channel=1width=1height=1
卷积核个数图像的通道卷积核的宽卷积核的高

               输出 有 120 。由于 S4 层特征图的大小也为 5x5 (同滤波器一样),故 C5 特征图的大小为 1x1(5-5+1=1),这构成了 S4 和 C5 之间的全连接。

F6  全连接层

   有 84 个单元(之所以选这个数字的原因来自于输出层的设计)

,与 C5 层全相连。有 10164(84x(120x(1x1)+1)=10164)个可训练参数。如同经典神经网络,F6 层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给 sigmoid 函数产生单元i的一个状态。

最后,输出层由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有 84 个输入。


三 Conv2d函数详解

 def __init__(self,in_channels: int,out_channels: int,kernel_size: _size_2_t,stride: _size_2_t = 1,padding: _size_2_t = 0,dilation: _size_2_t = 1,groups: int = 1,bias: bool = True,padding_mode: str = 'zeros'  # TODO: refine this type):
参数意义
in_channels网络输入的通道数,RGB =3 

out_channels

网络输出的通道数, 卷积核的个数
kernel_size卷积核的大小
stride是卷积过程中移动的步长。默认情况下是1。一般卷积核在输入图像上的移动是自左至右,自上至下
padding填充,默认是0填充
dilationdilation:扩张。一般情况下,卷积核与输入图像对应的位置之间的计算是相同尺寸的,也就是说卷积核的大小是3X3,那么它在输入图像上每次作用的区域是3X3,这种情况下dilation=0。当dilation=1时,表示的是下图这种情况
groups分组。指的是对输入通道进行分组,如果groups=1,那么输入就一组,输出也为一组。如果groups=2,那么就将输入分为两组,那么相应的输出也是两组。另外需要注意的是in_channels和out_channels必须能整除groups。
bias偏置参数,该参数是一个bool类型的,当bias=True时,表示在后向反馈中学习到的参数b被应用
padding_mode填充模式, padding_mode=‘zeros’表示的是0填充

 例

  

# -*- coding: utf-8 -*-
"""
Created on Mon May 15 15:31:26 2023@author: chengxf2
"""import torch
import torch.nn as nndef main():img = torch.randn(10,3,28,28)conv = nn.Conv2d(3,16,4,stride=2,padding=0)output = conv(img)print(output.shape)
main()
===============
out: torch.Size([10, 16, 13, 13])

  输入:

             10张RGB 图片,图片大小28*28

             [10,3,28,28]

   卷积核

           [16,3,4,4]

  输出

      输出图像的宽度,高度利用下面的公式

       

                          

                             = 13

  torch 里面通过F 函数提供另一种,更加直接的方式定义了 卷积核的shape

参考:

卷积神经网络简介

卷积神经网络基础知识

CNN中的stride、kernel、padding计算 - 知乎

https://blog.csdn.net/jiaoyangwm/article/details/80011656/

Conv2d函数详解(Pytorch)_phil__naiping的博客-CSDN博客

相关文章:

[PyTorch][chapter 33][卷积神经网络]

前言 参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强, 图像卷积: 空间域图像增强 图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除 某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的…...

Lift, Splat, Shoot 论文学习

1. 解决了什么问题? LSS 在工业界具有非常重要的地位。自从 Tesla AI Day 上提出了 BEV 感知后,不少公司都进行了 BEV 工程化的探索。当前 BEV 下的感知方法大致分为两类: 自下而上:利用 transformer 的 query 机制,…...

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)

【密码产品篇】动态口令系统密钥体系结构(SM3、SM4) 动态口令是一种一次性口令机制,用户无须记忆口令,也无须手工更改口令。口令通过用户持有的客户端器件生成,并基于一定的算法与服务端形成同步,从而作为…...

PDF工具Adobe Arcrobat Pro DC下载安装教程

wx供重浩:创享日记 对话框发送:adobe 免费获取Adobe Arcrobat Pro DC安装包 Acrobat是一款PDF(Portable Document Format,便携式文档格式)编辑软件。借助它,您可以以PDF格式制作和保存你的文档 &#xff0c…...

大量从IT培训班出来的程序员们最后都怎样了?

在当今信息时代,IT行业越来越受到人们的关注。越来越多的年轻人选择进入IT行业学习编程技术,而IT培训班也因此应运而生。据统计,在中国,每年约有100万人通过各种途径进入IT行业。其中,通过IT培训班获得技能认证的人数也…...

【论文阅读笔记】Federated Unlearning with Knowledge Distillation

个人阅读笔记,如有错误欢迎指出 Arxiv 2022 [2201.09441] Federated Unlearning with Knowledge Distillation (arxiv.org) 问题: 法律要求客户端有随时要求将其贡献从训练中消除的权利 让全局模型忘记特定客户的贡献的一种简单方法是从头开始对模型进…...

常用MQ介绍与区别

RabbitMQ RabbitMQ是实现AMQP协议(0.9.1) 的消息中间件的一种,由RabbitMQ Technologies Ltd开发并且提供商业支持的,最初起源于金融系统,服务器端用Erlang语言编写,用于在分布式系统中存储转发消息,在易用性、扩展性、…...

今天面试招了个20K的人,从腾讯出来的果然都有两把刷子···

现在找个会自动化测试的人真是难呀,10个里面有8个写了会自动化,但一问就是三不知 公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的…...

加速度传感器的量程估算

下面推导过程中包含一个重要的错误:sinx/x1没有错,但是这里的x是 t,当x t时,位移并非sin(t),而是n*sin(t),我稍後修訂。 在测震动和噪声的场合,现有的加速度传感器,需要客户提供加…...

0601-指针的基础

内存 物理存储器和存储地址空间 物理存储器:实际存在的具体存储器芯片。比如:内存条、RAM芯片、ROM芯片。 存储地址空间:对存储器编码的范围。 编码:对每个物理存储单元(一个字节)分配一个号码寻址&…...

关于K8S库中高可用的锁机制详解

简介 对于无状态的组件来说,天然具备高可用特性,无非就是多开几个副本而已;而对于有状态组件来说,实现高可用则要麻烦很多,一般来说通过选主来达到同一时刻只能有一个组件在处理业务逻辑。 在Kubernetes中,…...

常用中外文献检索网站大盘点

一、常用中文文献检索权威网站: 1、知网:是全球最大的中文数据库。提供中国学术文献、外文文献、学位论文、报纸、会议、年鉴、工具书等各类资源,并提供在线阅读和下载服务。涵盖领域包括:基础科学、文史哲、工程科技、社会科学、…...

公司招了一个00后,以为是个小年轻,没想到人家是个卷王...

公司前段缺人,也面了不少测试,结果竟然没有一个合适的。一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资也不低,面试的人很多,但平均水平很让人失望。 令我印象最深的是一个00后测试员,…...

数字化转型难?怎么转?听听厂商、CIO、CEO怎么说

数字化转型已经成为当今商业领域中的热门话题。对于许多企业来说,数字化转型是一项重要而且必不可少的战略,以适应快速变化的市场环境并保持竞争力。然而,数字化转型并不是一项容易的任务,它涉及到许多方面,需要综合考虑技术、组织和文化等因素。那么,让我们来听听一些厂…...

C++面试题汇总

C面试题汇总 1. new/delete和malloc/free:2. delete和delete[]:3. 常引用:4. overload、override、overwrite的介绍5. C是不是类型安全的?6. main 函数执行以前,还会执行什么代码?7. 数组与指针的区别&…...

OpenAi编写基于Python+OpenCV的人脸识别实现带墨镜效果

要基于Python和OpenCV实现带墨镜效果的人脸识别,你可以按照以下步骤进行操作: 安装所需的库:确保你已经安装了Python和OpenCV库。你可以使用pip命令来安装OpenCV库:pip install opencv-python。 导入必要的库:在Pytho…...

安卓闲谈吹水

一、熟练掌握 Java 语言,面向对象分析设计能力,反射原理,自定义注解及泛型,多次采用设计模式重构项目 首先我们先了解什么是对象。 1.对象是由我们自己定义的类来创建出来的。 2.对象实际上就是类的具体实现。 (对象是类的一个实…...

测试类的使用

1.在pom文件中添加依赖 <dependencies> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope> </dependency> </dependencies>2.在s…...

【物联网技术对生活的影响与展望】

随着科技日新月异的发展&#xff0c;物联网&#xff08;IoT&#xff09;技术正在快速地影响着我们的生活。它是将各种设备和物品连接在一起&#xff0c;通过互联网使它们可以相互交流和传递数据的技术。它的应用范围广泛&#xff0c;可以涵盖从智能家居到工业网络的各个领域。 …...

MySQL数据库函数详解及示例

以下是一份按照常见MySQL数据库函数&#xff0c;并且包含函数示例&#xff1a; 字符串函数 字符串函数用于处理和操作文本数据。 CONCAT&#xff1a;将多个字符串连接为一个字符串。SUBSTRING&#xff1a;提取字符串的一部分。LENGTH&#xff1a;返回字符串的长度。REPLACE&…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...