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

news2024/11/27 19:52:52

前言

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

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

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

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

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

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

目录

   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 nn

def 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博客

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

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

相关文章

有人问C# web怎么部署iis上面

C# web怎么部署iis上面 C# web项目怎么来???IIS作用 IIS怎么开启步骤一:打开控制面板->程序->启动或关闭windows 功能->找到**Internet Information Services**步骤二:勾选 web管理工具,http错误&…

超好用的工具类网站分享,打工人必备!

今天给大家推荐几个超好用的工具类网站,无论是工作还是生活中堪称打工人必备工具。 Background Maker https://colorkit.co/background-maker/82cedd-b04a0d-56d8a9/ 网站内置了 7 种不同风格的背景,如渐变色、波浪、低三角形等,非常适合用作…

基于梯度提升决策树的组合特征方法,《百面机器学习》学习笔记

《百面机器学习》学习笔记:基于梯度提升决策树的组合特征方法 基于梯度提升决策树的组合特征方法梯度提升决策树这里举一个例子来说明梯度提升决策树的思想方法假设对于某种类型的输入,经过上述介绍的梯度提升决策树构建流程得到的模型如下图所示 基于梯…

开源的表单系统效果怎么样?

当前,开源的表单系统得到了企业的重视和喜爱,因为它的简洁、灵活、便捷等优势特点,助力企业提质增效,各部门之间的协作沟通效率得到提升,数据资源也获得了有效整理和应用。今天,我们就一起来看看开源的表单…

不愧是腾讯 ,问的贼细

腾讯软件测试岗位的面试流程可能会因个人经验和公司而异,但通常情况下,腾讯软件测试的面试分为初试、二面、三面和四面。以下是每一轮面试可能涉及到的问题: 初试: 请介绍一下自己,以及为什么想要加入腾讯软件测试团…

oracle 学习之 unpivot/pivot函数及hive实现该功能

Oracle中pivot函数详解_实泽有之,无泽虚之的博客-CSDN博客pivot函数格式:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值));pivot函数说明:实现将指定字段的值转换为列的效果。https://blog.csdn.net/qq_40018576/…

最新DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟实践技术应用

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。。DNDC(Denitrification-Decomposition,反硝化-分解模型)是目前国际上最为成功的模拟生物地球化学循环的模型之一&a…

Flutter报错Building with plugins requires symlink support的解决方法

错误 Building with plugins requires symlink support. Please enable Developer Mode in your system settings. Runstart ms-settings:developers to open settings. 原因 这个错误表示你的系统尚未启用开发者模式,所以无法使用Flutter的插件功能。 Flutter插件会通过符号…

OJ刷题 第十六篇(递推较多,难)

31012 - 贴瓷砖 时间限制 : 1 秒 内存限制 : 32 MB 有一块大小是 2 * n 的墙面&#xff0c;现在需要用2种规格的瓷砖铺满&#xff0c;瓷砖规格分别是 2 * 1 和 2 * 2&#xff0c;请计算一共有多少种铺设的方法。 输入 输入的第一行包含一个正整数T&#xff08;T<20&…

第十三章 使用DHCP动态管理主机地址

文章目录 第十三章 使用DHCP动态管理主机地址一、动态主机地址管理协议1、DHCP简介2、DHCP常见术语 二、部署DHCP服务程序1、安装DHCP服务程序2、配置文件参考模板3、dhcpd服务程序配置文件中常见参数及作用 三、自动管理IP地址1、机房所用的网络地址以及参数信息2、关闭虚拟网…

Agisoft Metashape 红外影像处理

系列文章目录 文章目录 系列文章目录前言一、加载红外影像二、对齐照片三、构建 DEM四、生成 DOM五、温度值可视化前言 Agisoft Metashape 专业版支持处理来自 AscTec(ARA 格式)、WIRIS(TIFF 格式)热成像仪和以 R-JPEG(FLIR 数据)格式保存数据的热成像数据。 在本文中,…

如何编写自动化测试用例,一篇带你解决

自动化测试脚本 什么是自动化测试&#xff1f; 自动化测试是验证和验证软件是否满足所有用户需求&#xff0c;并使用自动化工具按预期运行。它检查在产品开发阶段期间和之后出现的错误、问题和其他类型的缺陷。这种类型的软件测试运行在由测试工具处理的编程脚本上。有多种测…

linux基础(IO)

目录&#xff1a; 1.复习C文件IO相关操作 2.介绍C程序会默认打开3个输入输出流 3.学习文件的系统调用接口 ---------------------------------------------------------------------------------------------------------------------------- 1.复习C文件IO相关操作 fopen函数…

HTTP协议格式及 fiddler 的使用

HTTP 协议格式 简述 HTTP 协议fiddler(抓包工具) 的使用协议格式总结 : 简述 HTTP 协议 HTTP 协议是个使用非常广泛的应用层协议, 应用层协议通常是需要 “自定义协议” 的, 自定义协议可以基于现有协议进行定制, HTTP 之所以应用广泛就是因为其可定制性非常强. 日常生活中遇到…

网络安全工程师的岗位需求,破237万了!

3月底凌晨&#xff0c;腾讯QQ和微信的相关业务都出现了功能异常。 包括微信语音对话、朋友圈、微信支付&#xff0c;以及QQ文件传输、QQ空间和QQ邮箱在内的多个功能无法使用。 这事儿都听说了吧&#xff1f; 据报道&#xff0c;这次的事故是因为电信机房冷却系统故障导致。 …

Linux安装Tomcat搭建Jenkins

前提条件 由于Tomcat服务器主要用于部署java web项目。所以先安装java jdk。安装过程大家应该很轻车熟练了。 一、安装Tomcat 创建/usr/tomcat文件夹 mkdir -p /usr/tomcat下载tomcat安装包 wget https://archove.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat…

umi4 实现msal aad 登录loginRedirect方式并获取令牌

在 Umi 4 中使用 Ant Design Pro Layout 以及 MSAL (Microsoft Authentication Library) 实现登录并获取令牌进入到首页&#xff0c;你需要按照以下步骤进行操作&#xff1a; 安装所需依赖&#xff1a; 使用 npm 或 yarn 安装所需的包&#xff1a; npm install azure/msal-bro…

从零开始Vue3+Element Plus后台管理系统(十)——自定义水印指令与全局注册

在实际项目开发中&#xff0c;自定义指令用得还是比较多的&#xff0c;比如&#xff1a;复制粘贴、输入框防抖、输入框禁止特殊字符、权限校验、背景水印、拖拽等等… 指令确实是个优雅的存在。 Vue3中定义一个普通的自定义指令的详细说明参见官网&#xff1a;https://cn.vue…

sentinel配置持久化到apollo

背景 sentinel-dashborad的配置默认是存储到内存中的&#xff0c;生产环境肯定不能这样使用&#xff0c;官网支持zookeeper、nacos、apollo的配置&#xff0c;本文就来介绍apollo的持久化 apollo sentinel-dashboard 整合 apollo 进行规则的持久化配置&#xff0c;主要方式是…

Kettle获取接口数据到表

kettle从接口服务获取数据 主要用到kettle输入菜单下的控件&#xff1a;生成记录、JSON input 查询菜单下的控件&#xff1a;HTTP client 输出菜单下的控件&#xff1a;表输出、插入/更新 生成记录&#xff1a;设置一个变量&#xff0c;用这个变量来保存要去访问接口的URL地址…