pytorch的pixel_shuffle转tflite文件

news2024/11/25 17:23:53

torch.pixel_shuffle()是pytorch里面上采样比较常用的方法,但是和tensoflow的depth_to_space不是完全一样的,虽然看起来功能很像,但是细微是有差异的

def tf_pixelshuffle(input, upscale_factor):
    temp = []
    depth = upscale_factor *upscale_factor
    channels = input.shape.as_list()[-1] // depth
    for i in range(channels):
        out_ = tf.nn.depth_to_space(input=input[:,:, :,i*depth:(i+1)*depth], block_size=upscale_factor)
        temp.append(out_)
    out = tf.concat(temp, axis=-1)
    return out

因为,有人发现在单通道的时候是depth_to_space和pixel_shuffle结果是一样的,所以拆分出来计算好在合并就行,这样速度基本上没有增加多少,亲测速度也是很快的,比从头开始实现pixel_shuffle是快非常多的。

如果使用这样的从头开始实现,转出来的tflite是没法运行在手机上面的,因为tf.transpose的维度太多了,tflite在手机上不支持6个维度的transpose的,因为超过5个维度就会产生flex层,flex层是不被支持的。

def pixel_shuffle(x, upscale_factor):
    batch_size, height, width, channels = x.shape
    channel_split = channels // (upscale_factor ** 2)

    # Reshape the input tensor to split channels
    x = tf.reshape(x, (batch_size, height, width, upscale_factor, upscale_factor, channel_split))

    # Transpose and reshape to get the pixel shuffled output
    x = tf.transpose(x, perm=[0, 1, 3, 2, 4, 5])
    x = tf.reshape(x, (batch_size, height * upscale_factor, width * upscale_factor, channel_split))

    return x

下面就测试一下:

新建pytorch模型

import torch
import torch.nn as nn


class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv=nn.Conv2d(in_channels=3,
                            out_channels=12,
                            kernel_size=3,
                            stride=2,
                            padding=1)

    def forward(self, input):
        x=self.conv(input)
        out=torch.pixel_shuffle(x,2)
        return out

可视化出来

利用tf_pixelshuffle转出来的结果:

利用pixel_shuffle转出来的结果:

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

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

相关文章

基于SpringBoot的微服务在线教育系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 用户管理 课程信息管理 学科管理 职业规划管理 我的笔记管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本…

张量-类型转换函数

代码示例如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior()a tf.constant(6) b tf.constant([1,2,3]) a1 tf.to_float(a,nameToFloat) b1 tf.cast(b,dtype tf.float32)with tf.Session() as session:print(session.run(a1))print(session.run(b1))

【LeetCode75】第六十五题买卖股票的最佳时机含手续费

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这是力扣里动态规划类题目里的一道系列题目,买卖股票,直接在题库里搜就能搜到这一系列。 我建议各位可以先去做一…

经验分享|甘肃某中型灌区信息化管理平台案例

河西走廊绿洲灌区,润泽万亩良田 甘肃某中型灌区位于河西走廊中端的黑河中游,从黑河引水自流灌溉,通过渠首输配水闸站,将水量输送并分配到田间,进行灌溉。 该灌区所处区域是农业灌溉大县,是甘肃河西走廊…

编程新时代:Amazon CodeWhisperer 助您轻松驾驭代码世界

文章目录 一、什么是 Amazon CodeWhisperer?二、个人无限免费使用三、安装配置3.1 手把手教你在pycharm配置3.2 同理在VSCODE安装 三、Pycharm上测试3.1 根据注释写代码3.2 检查修复代码错误3.3 构建一个简单爬虫 四、 VSCODE上测试4.1 个性化体验4.2 系统兼容性4.3…

项目任务管理上的一些总结

1. 开发任务管理现状: 1:基于禅道进行任务派发,缺少任务统计,进度上只能以“来不及”、“进度正常”、“进度延后”等模糊字眼。 2:“感觉”工作效率不高了,工作量是否饱和,任务投入产出偏差多…

桥梁模板人工费多少钱?

桥梁模板是桥梁工程中不可或缺的一部分,它起到支撑和固定混凝土浇筑的作用。在桥梁建设中,模板人工费用是一个重要的成本因素。那么,桥梁模板人工费到底是多少呢?下面我们来详细了解一下。 首先,需要明确的是&#xff…

目标检测算法改进系列之Backbone替换为EMO

EMO:结合 Attention 重新思考移动端小模型中的基本模块 近年来,由于存储和计算资源的限制,移动应用的需求不断增加,因此,本文的研究对象是端侧轻量级小模型 (参数量一般在 10M 以下)。在众多小模型的设计中&#xff0…

安防监控/视频监控系统EasyCVR平台界面侧边栏优化

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等,视频智能分析平台EasyCVR融合性强、开放度…

windows10系统镜像安装含驱动补丁

前言 都2023年了为什么不装windows11, 当然是硬件不支持了(TPM), 当然你也可以跳过TPM验证硬装 Windows11对系统的要求 如何检测TPM :WindowsR, 输入 tpm.msc 检测是否兼容TMP 言归正传,开始安装 windows10镜像下载 windows11镜像下载 下载工具按流程安装即可 驱动补丁安装…

【SpringCloud】-Ribbon负载均衡

一、背景介绍 项目中使用到的SpringCloud Alibaba这一套微服务架构中服务注册与发现Nacos兼容了Feign,而Feign默认集成了Ribbon,当Nacos下使用Feign默认实现了负载均衡的效果。即使是默认集成了,也要追根溯源。 二、过程 负载均衡是什么&am…

00后卷王的自述,我真的很卷吗?

前言 前段时间去面试了一个公司,成功拿到了offer,薪资也从12k涨到了18k,对于工作都还没两年的我来说,还是比较满意的,毕竟一些工作3、4年的可能还没我高。 我可能就是大家说的卷王,感觉自己年轻&#xff…

设计模式2、抽象工厂模式 Abstract Factory

解释说明:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 简言之,一个工厂可以提供创建多种相关产品的接口,而无需像工厂方法一样,为每一个产品都提供一个具体工厂 抽象工厂(Abstra…

【2251. 花期内花的数目】

来源:力扣(LeetCode) 描述: 给你一个下标从 0 开始的二维整数数组 flowers ,其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi (都 包含)。同时给你一个下标从 0 开始…

jeecgboot-3.5.5本地安装部署

一、开发环境说明 1、jdk1.8:java运行环境 2、Maven:项目依赖管理 3、git:代码管理 4、mysql5.7:数据管理。也可以是orcale、pgsql等 华为云HECS云服务器docker环境下安装mysql_supersolon的博客-CSDN博客 5、redis:缓存管理…

Goby 漏洞发布|Cockpit 平台 upload 文件上传漏洞(CVE-2023-1313)

漏洞名称:Cockpit 平台 upload 文件上传漏洞(CVE-2023-1313) English Name: Cockpit File Upload Vulnerability(CVE-2023-1313) CVSS core:7.2 影响资产数:3185 漏洞描述: Cockpit 是一个自托管、灵活…

[C++ 网络协议] 重叠I/O模型

目录 1. 什么是重叠I/O模型 2. 重叠I/O模型的实现 2.1 创建重叠非阻塞I/O模式的套接字 2.2 执行重叠I/O的Send函数 2.3 执行重叠I/O的Recv函数 2.4 获取执行I/O重叠的函数的执行结果 2.5 重叠I/O的I/O完成确认 2.5.1 使用事件对象(使用重叠I/O函数的第六个参…

【x265 源码分析系列】:概述

介绍 x265 也属于 VLC 的 project。 版本: x265-3.5(TAG-208) git: https://bitbucket.org/multicoreware/x265_git.git 编码特点: 研究了一段时间的 HEVC 编码标准,最近开始研究符合 HEVC 标准的开源…

STM32G070RBT6-MCU温度测量(ADC)

1、借助STM32CubeMX生成系统及外设相关初始化代码。 在以上配置后就可以生成相关初始化代码了。 /* ADC1 init function */ void MX_ADC1_Init(void) {/* USER CODE BEGIN ADC1_Init 0 *//* USER CODE END ADC1_Init 0 */ADC_ChannelConfTypeDef sConfig {0};/* USER COD…

MyBatis-Plus通用Service快速实现赠三改查[MyBatis-Plus系列] - 第489篇

历史文章(文章累计480) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 M…