五、卷积神经网络CNN7(图像卷积与反卷积)

news2024/11/15 0:19:31

图像卷积

首先给出一个输入输出结果

那他是怎样计算的呢?
卷积的时候需要对卷积核进行 180 的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下:

这样计算出左上角(即第一行第一列)像素的卷积后像素值。
给出一个更直观的例子,从左到右看,原像素经过卷积由 1 变成-8。

通过滑动卷积核,就可以得到整张图片的卷积结果

图像反卷积

这里提到的反卷积跟 1 维信号处理的反卷积计算是很不一样的, FCN 作者称为 backwards convolution,有人称 Deconvolution layer is a very unfortunate name and should rather be called a transposed convolutional layer. 我们可以知道,在 CNN 中有 con layer pool layer con layer
进行对图像卷积提取特征,pool layer 对图像缩小一半筛选重要特征,对于经典的图像识别 CNN 网络,如 IMAGENET ,最后输出结果是 1X1X1000 1000 是类别种类, 1x1 得到的是。 FCN 作者,或者后来对 end to end 研究的人员,就是对最终 1x1 的结果使用反卷积(事实上 FCN作者最后的输出不是 1X1 ,是图片大小的 32 分之一,但不影响反卷积的使用)。
这里图像的反卷积与 full 卷积原理是一样的,使用了这一种反卷积手段使得图像可以变大,FCN 作者使用的方法是这里所说反卷积的一种变体,这样就可以获得相应的像素值,图像可以实现 end to end

这里说另外一种反卷积做法,假设原图是 3*3 ,首先使用上采样让图像变成 7*7 ,可以看到图像多了很多空白的像素点。使用一个 3*3 的卷积核对图像进行滑动步长为 1 valid 卷积,得到一个5*5 的图像,我们知道的是使用上采样扩大图片,使用反卷积填充图像内容,使得图像内容变得丰富,这也是 CNN 输出 end to end 结果的一种方法。韩国作者 Hyeonwoo Noh 使用 VGG16 层CNN 网络后面加上对称的 16 层反卷积与上采样网络实现 end to end 输出,其不同层上采样与反卷积变化效果如下:

经过上面的解释与推导,对卷积有基本的了解,但是在图像上的 deconvolution 究竟是怎么一回事,可能还是不能够很好的理解,因此这里再对这个过程解释一下。
目前使用得最多的 deconvolution 有 2 种,上文都已经介绍。
方法 1:full 卷积, 完整的卷积可以使得原来的定义域变大。
方法 2:记录 pooling index,然后扩大空间,再用卷积填充。
图像的 deconvolution 过程如下:

输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7
即输入为 2x2 的图片经过 4x4 的卷积核进行步长为 3 的反卷积的过程
1. 输入图片每个像素进行一次 full 卷积,根据 full 卷积大小计算可以知道每个像素的卷积后大小为 1+4-1=4, 即 4x4 大小的特征图,输入有 4 个像素所以 4 个 4x4 的特征图
2. 将 4 个特征图进行步长为 3 的 fusion(即相加); 例如红色的特征图仍然是在原来输入位置(左上角),绿色还是在原来的位置(右上角),步长为 3 是指每隔 3 个像素进行 fusion, 重叠部分进行相加,即输出的第 1 行第 4 列是由红色特阵图的第一行第四列与绿色特征图的第
一行第一列相加得到,其他如此类推。
可以看出翻卷积的大小是由卷积核大小与滑动步长决定, in 是输入大小, k 是卷积核大小, s 是滑动步长, out 是输出大小 得到 out = (in - 1) * s + k
上图过程就是, (2 - 1) * 3 + 4 = 7

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

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

相关文章

基于Dijkstra和A算法的机器人路径规划附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

JAVA SCRIPT设计模式--行为型--设计模式之Observer观察者模式(19)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能,所以不可能像C,JAVA等面向对象语言一样严谨,大部分程序都附上了JAVA SCRIPT代码,代码只是实现了设计模式的主体功能,不代…

Python图像识别实战(一):实现按比例随机抽取图像移动到另一文件夹

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用,分为分类问题(预测值是离散型)和回归问题(预测值是连续型)(具体见之前的文章)。 从本期开始,我将做一个关于图像识别的…

Nacos集群搭建

1、下载nacos http://t.csdn.cn/ejfu9 2、配置Nacos 进入nacos的conf目录,修改配置文件cluster.conf.example,重命名为cluster.conf: 然后添加内容: 添加的内容是你要启动的多台nacos的IP和端口 127.0.0.1:8845 127.0.0.1:8846…

如何批量注册推特账号

Twitter推特账号怎么注册?相信国内好多朋友都被推特注册卡住,不知怎么注册twitter账号,由于国内限制的问题,推特账号注册比以前更麻烦了,本文将详细讲解Twitter怎么注册,Twitter (推特)是一个广受欢迎的社交…

【C#基础学习】第十五章、结构

目录 结构 1.结构的构造函数 1.1 实例构造函数 1.2 静态构造函数 1.3 总结 2.结构体作为返回值和参数 结构 结构的定义:结构是一种可以由程序员自定义的密封的值类型。 结构与类的区别:结构与类类似,它们都有自己的数据成员和函数成员。…

Nginx篇之实现反向代理和端口转发

一、前言 在正式生产环境中,web服务器、反向代理服务器的选择大都会选择nginx,确实,在常见的高并发场景下,nginx能够支持以万为单位的并发请求量,并且服务性能稳定,应用极为广泛。 二、反向代理含义 反向代…

【LeetCode_字符串_中心扩散 】5. 最长回文子串

目录考察点第一次:2022年12月8日10:29:05解题思路代码展示:中心扩散题目描述5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s "babad" 输出:"bab" 解…

高通平台开发系列讲解(Camera篇)新增GC8034摄像头步骤

文章目录 一、新增配置文件二、配置摄像头三、设置效果文件四、修改设备树五、修改用户空间驱动程序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台新增摄像头步骤。 一、新增配置文件 在vendor/qcom/proprietary/common/config/device-vendor.…

一文读懂数据加密

文章目录本文前言一、可逆加密1.1 对称加密(传统加密算法)1.2 非对称加密(现代加密算法)二、不可逆加密三、 混合加密、消息摘要和数字签名四、文章最后本文前言 在计算机信息安全领域,之前软件设计师的网络安全部分了…

解决Elasticsearch Connection reset by peer异常

一、问题现象 随着ES的密集使用,线上环境,不同应用最近几天陆续有报java.io.IOException: Connection reset by peer异常,感觉不太正常。直接影响就是用户查询或者变更ES数据失败。 java.io.IOException: Connection reset by peerat org.e…

大数据:Storm集成HDFS和HBase

一、Storm集成HDFS 1.1 项目结构 1.2 项目主要依赖 项目主要依赖如下&#xff0c;有两个地方需要注意&#xff1a; 这里由于我服务器上安装的是 CDH 版本的 Hadoop&#xff0c;在导入依赖时引入的也是 CDH 版本的依赖&#xff0c;需要使用 <repository> 标签指定 CDH …

自适应且不可删除的水印蒙层

目录 canvas自适应文字长度&#xff0c;旋转角度生成水印背景图 生成蒙层 禁止蒙层的删除和修改 canvas自适应文字长度&#xff0c;旋转角度生成水印背景图 设置canvas字体大小后&#xff0c;通过ctx.measureText(text).width获取两行文字的宽度text1&#xff0c;text2&…

python-(6-5-1)爬虫---xpath解析实战

文章目录一 环境准备二 需求三 分析1 拿到页面源代码2 提取和解析数据四 步骤流程1 拿到页面源代码2 提取和解析数据五 完整代码xpath是在XML文档中搜索内容的一门语言 html是xml的一个子集 一 环境准备 安装lxml模块 二 需求 爬取某网站的数据 三 分析 1 拿到页面源代码 …

计算机领域热知识【2】消息队列与celery

Celery是实现消息队列的一个工具&#xff0c;本篇博客将介绍消息队列的基础知识&#xff0c;以及celery实现消息队列的总体方法。想要实现用Celery实现消息队列实例的朋友&#xff0c;可以从本篇博客中找到我写的另一篇介绍使用Celery和RabbitMQ实现消息队列的博客。 目录消息队…

Java+Swing+mysql天气信息管理系统

JavaSwingmysql天气信息管理系统一、系统介绍二、功能展示1.主要功能2.主页3.查询历史天气三、数据库四、其他系统一、系统介绍 该系统实现: 通过高德天气API查询天气数据 将查询的数据存入本地数据库 删除数据。 二、功能展示 1.主要功能 2.主页 3.查询历史天气 三、数据库…

Netty04——优化与源码

目录1. 优化1.1 扩展序列化算法1.2 参数调优1.2.1.CONNECT_TIMEOUT_MILLIS1.2.2.SO_BACKLOG1.2.3.ulimit -n1.2.4.TCP_NODELAY1.2.5.SO_SNDBUF & SO_RCVBUF1.2.6.ALLOCATOR1.2.7.RCVBUF_ALLOCATOR1.3 RPC 框架1.3.1.准备工作1.3.2.服务器 handler1.3.3.客户端代码第一版1.3…

C#车库信息管理系统

车库信息管理系统实现 技术 C# sqlserver 系统功能 基本的登录注册车库管理员进行车辆信息的添加&#xff0c;即给车库登记车辆信息管理员对登记信息进行修改管理员对登记信息进行删除管理员对登记信息进行查询管理员对登记的车辆进行进库&#xff0c;出库处理实时统计车库…

CS61A学习笔记 lecture1 Computer science

CS61A学习笔记 lecture1 Computer science SICP: Structure and Interpretation of Computer Programs 计算机程序的构造和解释 一开始其实是想做南大的SICP学习笔记的&#xff0c;但是没有找到南大这门课的视频&#xff0c;还有就是他是CS61A的clone&#xff0c;网上也有CS61A…

Qt 多线程之QtConcurrent::map(处理序列容器)

QtConcurrent::map()、QtConcurrent::mapped() 和 QtConcurrent::mappedReduced() 函数对一个序列中&#xff08;例如&#xff1a;QList、QVector&#xff09;的项目并行地进行计算。 1、map函数 map函数的功能是在其他线程运行指定的函数&#xff0c;map函数有两个参数 第一…