【前沿模型解析】潜在扩散模型 2-2 | 手撕感知图像压缩基础块上下sample块

文章目录

  • 1 DownSample下采样部分
    • 1.1 两种实现方式
    • 1.2 代码实现
  • 2 UpSample上采样部分
    • 2.1 代码实现

在这里插入图片描述

1 DownSample下采样部分

1.1 两种实现方式

下采样,即改变特征图的尺寸

下采样的话源码实现了两种方式

  • 方式一:是通过卷积实现下采样,我们知道卷积操作天然就有改变特征图的效果
  • 方式二:是通过平均池化层实现下采样

方式一的话会增加参数

方式二的话是没有参数的

这两种是可以选择的

一般情况下

  • 如果我们感觉模型的能力不强,可以用带参数的卷积的方式做下采样
  • 如果我们感觉模型的能力比较强,可以用不带参数的池化做下采样,防止过拟合

上采样也是同样的道理

1.2 代码实现

这里注意一点,我们在实现过程中,用了非对称的填充

class Downsample(nn.Module):def __init__(self, in_channels, with_conv):super().__init__()self.with_conv = with_convif self.with_conv:# 非对称填充,必须我们自己来做self.conv = torch.nn.Conv2d(in_channels,in_channels,kernel_size=3,stride=2,padding=0)def forward(self, x):if self.with_conv:pad = (0,1,0,1)x = torch.nn.functional.pad(x, pad, mode="constant", value=0)#进行填充,填充的值为0x = self.conv(x)else:x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2)return x

即第15,16行

这是因为这个网络在设计的过程中,尽量维持卷积核尺寸大小统一且是奇数(这里是3),所以假设我们直接用卷积核自带的填充,则默认是对称填充,则会导致不能整除而出错

举例如下假设输入尺寸图大小128*128,则对称填充后,会变为130

最后输出尺寸大小为(公式 $ \frac{特征图长或宽+2*填充尺寸-卷积核尺寸}{步长}+1$)

130 − 3 2 + 1 \frac{130-3}{2}+1 21303+1 有没有发现左边不能整除

这时候我们只需要填充一侧(非对称填充)填充完后,尺寸大小是129

129 − 3 2 + 1 = 64 \frac{129-3}{2}+1=64 21293+1=64

2 UpSample上采样部分

上采样即改变特征图大小为原本的2倍

用插值(最近邻)的方式实现上采样

2.1 代码实现

class Upsample(nn.Module):def __init__(self, in_channels, with_conv):super().__init__()self.with_conv = with_convif self.with_conv:self.conv = torch.nn.Conv2d(in_channels,in_channels,kernel_size=3,stride=1,padding=1)def forward(self, x):x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode="nearest")if self.with_conv:x = self.conv(x)return x

这里的上采样方式比较简单,通过插值实现的

而之前有些工作是通过转置卷积实现的

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

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

相关文章

谈谈什么是 Redis

🔥博客主页:fly in the sky - CSDN博客 🚀欢迎各位:点赞👍收藏⭐️留言✍️🚀 🎆慢品人间烟火色,闲观万事岁月长🎆 📖希望我写的博客对你有所帮助,如有不足,请指正&#…

Linux(05) Debian 系统修改主机名

查看主机名 方法1:hostname hostname 方法2:cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名,可以采用以下的方式来修改主机名称。 修改主机名 注意,在linux中下划线“_”可能是无效的字符&…

软件测试学习之MySQL学习笔记(完结)

目录 1. 数据库**** 1.1. 概念**** 1.2. 分类**** 1.2.1. 关系型数据库**** 1.2.1.1. SQL**** 1.2.2. 安装**** 1.2.2.1. Navicat**** 2. SQL语句**** 2.1. 常用数据类型**** 2.2. 数据库**** 2.3. 表**** 2.3.1. 字段约束**** 2.4. 数据**** 2.4.1. 增 insert**…

JavaSE:图书管理系统

目录 一、前言 二、内容需求 三、类的设计 (一)图书类 1.Book 类 2.BookList 类 (二)操作类 1.添加图书AddOperation类 2.借阅图书BorrowOperation类 3.删除图书DelOperation类 4.显示图书ShowOperation类 5.退出系统Ex…

ChromeOS 中自启动 Fcitx5 和托盘 stalonetray

ChromeOS 更新的飞快,旧文章的方法也老是不好用,找遍了也没找到很好的可以开机自启动 Linux VM 和输入法、托盘的方法。 研究了一下(不,是很久),终于找到个丑陋的实现。 方法基于 ChromeOS 123.0.6312.94…

linux 开机自启动

方式1—依赖桌面启动,一般适用与UI相关程序 1、创建运行脚本,以管理员放方式运行,加入密码 vim runapp.sh #!/bin/bash cd /home/nvidia/test echo ‘passcode’ | sudo -S ./testapp 2、终端输入 gnome-session-properties 3、在com…

os.listdir()bug总结

今天测试出一个神奇的bug,算是教训吧,找了两天不知道问题在哪,最后才发现问题出现在这 原始文件夹显示 os.listdir()结果乱序 import os base_path "./file/"files os.listdir(base_path)print(files)问题原因 解决办法(排序) …

即插即用篇 | YOLOv8引入Haar小波下采样 | 一种简单而有效的语义分割下采样模块

本改进已集成到 YOLOv8-Magic 框架。 下采样操作如最大池化或步幅卷积在卷积神经网络(CNNs)中被广泛应用,用于聚合局部特征、扩大感受野并减少计算负担。然而,对于语义分割任务,对局部邻域的特征进行池化可能导致重要的空间信息丢失,这有助于逐像素预测。为了解决这个问题…

【进阶六】Python实现SDVRPTW常见求解算法——遗传算法(GA)

基于python语言,采用经典蚁群算法(ACO)对 带硬时间窗的需求拆分车辆路径规划问题(SDVRPTW) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整2.1 需求拆分2.2 需求拆分后的服务时长取值问题 3. 求解结果4. 代码片段…

智慧水库解决方案(打造水库智慧监测体系)

​作为一名水利自动化系统集成商,最近我司接手了一个智慧水库建设项目。这个项目位于一座山区的大型水库,目的是对其进行现代化、智能化改造,提升供水、防洪等管理水平。(key-iot.com.cn) 在方案设计之初,我们组织了现场勘测,全面了解水库的实际情况。这…

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中,作为原王下七武海之一的多弗朗明哥,可以说是新世界最大的流氓头子,拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介,控制着世界各地的诸多产业,人造恶魔果实工厂就…

基于springboot实现校园资料分享平台系统项目【项目源码+论文说明】

基于springboot实现校园资料分享平台系统演示 摘要 随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求&#xff…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.1-4.4

目录 第一门课:神经网络和深度学习 (Neural Networks and Deep Learning)第四周:深层神经网络(Deep Neural Networks)4.1 深层神经网络(Deep L-layer neural network)4.2 前向传播和反向传播(Forward and backward pro…

“逃离”OpenAI!36人出走,已拿600亿融资

“逃离”OpenAI!36人出走,已拿600亿融资© 由 智东西 提供 智东西 作者 | 程茜 编辑 | 心缘 最近OpenAI频繁高薪挖人,把马斯克惹毛了。 马斯克在社交平台X上公开爆料:OpenAI一直在高薪挖特斯拉工程师,甚至还想…

四、书城开发-2、热门搜索/推荐页面的开发

热门搜索的开发 热门搜索页面的交互主要有4个交互点 第一个交互是点击搜索框时,热门搜索会渐影显示;第二个交互是点击返回图标时热门搜索会渐影消失;第三个交互是热门搜索滑动页面的时候搜索栏下面会出现阴影,回到顶部时阴影会消…

深入浅出 -- 系统架构之微服务标准组件及职责

我们来认识一下微服务架构在Java体系中依托哪些组件实现的。 相对于单体架构的简单粗暴,微服务的核心是将应用打散,形成多个独立提供的微服务,虽然从管理与逻辑上更符合业务需要。但微服务架构也带来了很多急需解决的核心问题: 1…

PDF锐化

PDF Shaper Ultimate(pdf转图片) 编辑->添加文件->选中一个要处理的pdf 操作->转换->PDF转为图片 ComicEnhancerPro设置(把图片锐化) PDF Shaper Ultimate(图片转pdf) 编辑-添加图片->选中所有锐化处理后的图片 转换->图片转为pdf(会把所有图…

最新AI工具系统ChatGPT网站运营源码SparkAi系统V6.0版本,GPTs应用、AI绘画、AI换脸、垫图混图、Suno-v3-AI音乐生成大模型全支持

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…

《深入Linux内核架构》第4章 进程虚拟内存(2)

目录 4.3 内存映射原理 4.4 数据结构 4.4.1 树和链表 4.4.2 虚拟内存区域VMA的表示 4.4.3 相关数据结构 本节讲VMA结构体struct vm_area_struct和struct address_space。 4.3 内存映射原理 所有进程的虚拟空间总和比物理内存大得多,因此只有最常用的虚拟空间…

生活日常韩语成人外语培训中为什么韩国人说话喜欢用“~도록”?

많이 받는 질문 중 하나가 ‘~도록’을 자신에게 쓸 수 있는가 하는 것이다. 즉 “제가 하도록 하겠습니다” “조심하도록 하겠습니다” “말씀드리도록 하겠습니다” 등과 같은 표현이다. 我经常被问到的问题之一就是能否将“~도록”用于自己。比如“我来做吧”、“我会小心…