图像下采样再上采样维度不匹配

news2025/7/16 9:02:06

图像在下采样后再上采样,维度会发生不匹配,假设一幅图像的维度为(b,c,h,w),那么当h和w是偶数的时候,下采样和上采样是匹配的,当且仅当他是偶数的时候才匹配,然而图像的h和w往往不一定是偶数。当然有许多种方法可以将图像的长和宽变为偶数,但是如果图像下采样的倍数过多时,比如:
(1,3,240,320)>(1,64,120,160)>(1,64,60,80)>(1,128,30,40)>(1,256,15,20)>(1,512,8,10)
上图是图片经过resnet34后的输出。
如果这时再进行上采样,那么维度就会变成(1,256,16,20)这和原始下采样是不匹配的,无法进行下一步操作。
那么如何在不进行图像剪切情况下还可以恢复到原图大小?
我认为转置卷积是一个很好的办法,转置卷积的out_padding参数就可以控制输出图片的大小。out_padding就是在图像的外围进行填充。
图片的长和宽有如下几种类型:
(奇数,偶数),(奇数,奇数),(偶数,偶数),(偶数,奇数)
针对不同的类型,我们设置不同的padding。

import torch
import torch.nn as nn

def convt_bn_relu(x,ch_in, ch_out, kernel=3, stride=2, padding=1,):
    assert (kernel % 2) == 1, \
        'only odd kernel is supported but kernel = {}'.format(kernel)
    b,c,h,w = x.shape
    if (h % 2 == 0) and (w % 2 == 0):
        output_padding = (1,1)
    elif (h % 2 == 1) and (w % 2 == 0):
        output_padding = (0,1)
    elif(h % 2 == 0) and (w % 2 == 1):
        output_padding = (1,0)
    else:#(h % 2 == 1) and (w % 2 == 1)
        output_padding = (0, 0)
    x = nn.ConvTranspose2d(ch_in,ch_out,kernel,stride,padding,output_padding)
    return x

y = torch.rand(1,3,120,150)

l = nn.Conv2d(3,64,kernel_size=3,stride=2,padding=1)
f = l(y)
print(f.shape)#(1,64,23,25)

o = nn.Conv2d(64,64,kernel_size=3,stride=2,padding=1)
r = o(f)
print(r.shape) #(1,64,12,13)

z = convt_bn_relu(f,ch_in=64,ch_out=64,kernel=3,stride=2,padding=1)#y只起到确定outpadding的作用
m = z(r)
print(m.shape)#torch.Size([1, 64, 6, 8])

k = convt_bn_relu(y,ch_in=64,ch_out=3,kernel=3,stride=2,padding=1)
j = k(m)
print(j.shape)

假设下采样两倍,我们同时上采样两倍。原始的图片尺寸是(奇数,偶数),代码会执行: elif (h % 2 == 1) and (w % 2 == 0):,那么output_padding = (0,1)。
下采样:(1,3,15,20)>(1,64,8,10)>(1,64,4,5)
上采样:(1,64,4,5)>(1,64,8,10)>(1,3,15,20)
在这里插入图片描述
这里下采样了两次,是因为有些情况,比如(45,60)>(23,30)>(12,15)每次都除不尽,用上述代码也可以正确的恢复出来。

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

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

相关文章

【Shell 脚本速成】06、Shell 数组详解

目录 一、数组介绍 二、数组定义 三、数组赋值方式 四、数组取值 案例演示 五、关联数组 5.1 定义管理数组 5.2 关联数组赋值 5.3 管理数组取值 5.4 综合案例 有这样一个现实问题:一个班级学员信息系统,要求存储学员ID、NAME、SCORE、AGE、GE…

关于订单功能的处理和分析

这两天看了一下RABC的权限管理处理,梳理了一下订单功能的表创建,界面,功能分析。 目录 RABC RBAC0模型 那么对于RABC模型我们怎么创建数据库表? 订单模块的梳理 RABC RABC说的是在用户和权限之间多一个角色,用户与…

软件测试基础

⭐️前言⭐️ 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaSE】、【备战蓝桥】、【JavaEE初阶】、【MySQL】、【数据结构】 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟&…

Spring Cloud OpenFeign - - - >拦截器

源码地址:https://download.csdn.net/download/weixin_42950079/87209379 SpringMVC拦截器 和 OpenFeign拦截器 的区别 初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器: …

虹科分享 | 麦氏比浊仪在药敏试验中的应用

细菌是重要的病原微生物,人类针对不同的病原菌研发了各类抗菌药,这些药物对细菌性疾病的治疗与控制起到了关键作用。然而随着新型致病菌的不断出现,加上细菌在药物使用过程中逐渐产生了耐药性,抗菌药的防治效果越来越差。病原菌对…

Python 中的类与继承

类的定义以及实例的建立 Python中,类通过 class 关键字定义。 例如最简单的一个类定义可以为: class Person(object):pass Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。…

解决单文件组件里的跨域请求数据问题(使用vue单文件组件请求数据必会遇到的问题!!!)

为什么要解决跨域问题: 因为浏览器有限制,只有同域名同端口号下的数据才能拿来用;那如果想拿到不同域名不同端口号下的数据就不行了; 在单文件组件中如何去解决跨域问题: 因为服务器没有跨域限制,只有浏览…

PyTorch(四)Torchvision 与 Transforms

文章目录Log一、Torchvision1. CIFAR10① 介绍② 使用2. 与 Transforms 结合使用总结Log 2022.11.28接着开启新的一章2022.11.29继续学习 一、Torchvision 视频教程中 Torchvision v0.9.0文档Torchvision 官方文档Torchvision Datasets API 文档 1. CIFAR10 ① 介绍 CIFAR…

HBuilder X实现banner轮播图

第一步还是去仔细阅读官方文档,找到组件下面的内置组件里面的swiper,如图所示 官方是提供了一个用来制作轮播图的滑块视图容器:swiper 一般来说,轮播图的图片地址是由后端返回给前端遍历显示在页面上的,所以基本的结构…

世界杯的“中国元素”昂扬大国担当,点面科技全新推出的多模态多功能移动终端踏上卡塔尔征途!

本次世界杯中国足球队没有参加,但是在世界杯的赛场上到处都有中国元素。 中国承建的卢赛尔体育场 卡塔尔世界杯主体育场——卢赛尔球场由中国铁建以总承包身份承建,引发了全球瞩目。在本届世界杯赛事中,该场馆将承担包括决赛在内的10场比赛&…

idea手动创建webapp(在main文件夹下)

SSM自学笔记 文章目录一、Maven使用正常情况首先不使用骨架创建好Maven项目然后选择Project Structure...选择要创建webapp的模块修改路径二、Maven不正常工作时一、Maven使用正常情况 首先不使用骨架创建好Maven项目 然后选择Project Structure… 选择要创建webapp的模块 选好…

前置微小信号放大器在光声技术的血管识别研究中的应用

实验名称:前置微小信号放大器在光声技术的血管识别研究中的应用 研究方向:生物识别技术 测试目的: 利用MATLAB对光声血管进行识别:1、对光声血管图库的图像进行预处理包括归一化、二值化、平滑、细化和毛刺修剪得到细化图像&#…

0109 蓝桥杯真题12

/* * 观察下面的现象,某个数字的立方,按位累加仍然等于自身。 * 1^3 1 * 8^3 512 5128 * 17^3 4913 491317 ... *请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个? *填写该数字,不要填写任何多余的内…

【DevPress】V2.4.3版本发布,增加内容收录管理

DevPress V2.4.3版本于2022年11月10日发版,增加内容收录模块,方便用户内容收录。 一、该版本功能包含 1、新需求 1)控制台增加内容收录管理模块,包括收录内容额度管理、自动收录功能、基于内容搜索做收录以及收录内容列表。 - …

凯利公式 - Kelly formula

欢迎关注沉睡者IT,点上面关注我 ↑ ↑ 凯利公式的概述 凯利公式是一条可应用在投资资金和赌注的公式。应用于多次的随机赌博游戏,资金的期望增长率最高,且永远不会导致完全损失所有资金的后果。它假设赌博可无限次进行,而且没有下…

Netty进阶——粘包与半包(滑动窗口)

TCP 以一个段(segment)为单位,每发送一个段就需要进行一次确认应答(ack)处理,但如果这么做,缺点是包的往返时间越长性能就越差。 为了解决此问题,引入了窗口概念,窗口大小…

微慕积分商城插件

微信小程序专业版在第一个正式版发布的时候,就推出了积分系统。用户登录小程序、签到、发表文章、评论文章、发表话题、回复话题、点赞、赞赏、付费阅读后都可以获得相应的积分。但这个积分攒了足够多后,有什么用呢?可以用于积分阅读文章&…

论文代码测试

一、代码所属论文 1. Document Image Enhancement with GANs - TPAMI journal 代码中的介绍提供了处理四种情况的模型,这四种模型功能分别为 : 1)二值化图片文字; 2)清晰化图片中模糊文字; 3)去除图片水印; 4&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好,今天给大家带来的内容是,基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧(PS侧数据发送至PL侧并没有实现,但是保留了PL读取PS测数据的接口) 2、如果大家用到SoC这种高级功能,那大家应该对于…

系列ML.Net 学习篇【一】——初识机器学习

由于公司项目涉及到机器学习和图像识别,虽然我并不是算法专家,但毕竟需要了解和知道其运转原理,因此自我进行了学习进化,决定在机器学习上有所进展,结合.NET技术的ML.NET,把机器学习的技能提升一个Level,如果你也有兴趣…