【2023 CCF 大数据与计算智能大赛】基于TPU平台实现超分辨率重建模型部署 基于预训练ESPCN的轻量化图像超分辨率模型TPU部署方案

2023 CCF 大数据与计算智能大赛

《基于TPU平台实现超分辨率重建模型部署》

作品名:基于预训练ESPCN的轻量化图像超分辨率模型TPU部署方案

队伍名:Absofastlutely

蒋松儒

计算机科学与技术系 硕士

南京大学

中国-江苏

kahsolt@qq.com

吕欢欢

计算机科学与技术系 博士

南京大学

中国-江苏

huanhuanlv@smail.nju.edu.cn

张凯铭

物理学系 本科

四川大学

中国-四川

2835742517@qq.com

团队简介

一个喜欢折腾神经网络和量子计算的无名小队,学艺不精脑洞不大,啥都只会一点,但没关系可以慢慢学的嘛……

摘要

本文介绍了一种在TPU平台上部署轻量化超分模型ESPCN的方法。介绍了三种图像分块策略、两种定义和搜索最优分块大小的方法;介绍了多线程加速、后处理滤波等模型性能优化技巧。最后在TPU平台上进行了模型部署和性能评估实验。

关键词

超分辨率,轻量化,TPU,模型部署

1 引言

2022年是图像生成式网络发展再度爆炸的一年。自Stable Diffusion开源,Embedding/Hypernetwork/LoRA微调、Depthmap/ControlNet条件化、AnimeDiff/Tune-A-Video连续帧化等等优化技术和下游应用也快速涌现。

但Stable Diffusion能直接产出相对优质图像尺寸是512~1024px,而我们时常需要更高分辨率如4k/8k的图像才能满足生产需求,因此超分辨率模型成了解决这个问题的一个可行桥梁方案。

总之就是,比赛要求参赛者在边缘设备TPU上移植并部署一个超分辨率模型。

2 解决方案

2.1 模型选择

考虑到TPU设备的计算性能相对较低,我们主要调研了轻量化的图像和视频超分辨率网络,并先后尝试了Real-ESRGAN[1]、NinaSR[4]、CARN、FSRCNN、ESPCN[2]等多种网络结构,最后选定了使用ESPCN。

2.1 图像分块

模型编译过程中需要确定输入张量的尺寸,虽然TPU文档里指出支持动态大小输入,但可用的SDK并未提供此功能,因此为了应对尺寸各异的输入图像,做统一尺寸的图像分块是必要的步骤。

2.1.1 分块策略

我们尝试了三种典型的分块策略:

  • 朴素分块:即无重叠地裁剪后,各块分别推理,最后无重叠地粘接在一起。这种方式有最低的时间开销,但是会导致生成图像存在接缝。
  • 重叠缝合:有重叠地裁剪后,各块分别推理,最后有重叠地粘接在一起,重叠区域按朴素平均、高斯羽化等方式做缝合。这种方式需要计算CNN模型的填充感受野,在重叠区域设置大于填充感受野时可以做到理论的无接缝,但缝合会产生额外的时间开销。
  • 边缘裁剪:有重叠地裁剪后,各块分别推理并裁剪掉一圈边缘,最后无重叠地粘接在一起。这种方式也能实现理论的无接缝,额外计算面积比重叠缝合法小,但如果分片尺寸设置不合适,可能会导致更多的分片数量,反而增加额外计算量。

在这里插入图片描述

图1:三种分块策略(朴素分块、重叠缝合、边缘裁剪)

在这里插入图片描述

图2:朴素分块导致的接缝

考虑到时间效率优先,我们最终选用了朴素分块的策略。

2.1.2 最优分块大小

分块大小直接决定了分块数量,间接决定了模型处理处理的事件,因此合适的分块大小选取可以节省不必要的额外计算开销。我们探索了两种估算最优分块大小的方法:

  • 最小化冗余计算量:考虑最小化分片导致的外向填充区域的面积。定义代价函数:

如图3所示,为代表原始图像大小的灰色区域,为所有红色分片总共覆盖的面积大小,为分片数量;是一个正则化常数,避免分片尺寸退化到无穷小,实验中取值为1。

在这里插入图片描述

图3:分片外向填充

使用双重退火、差分演化或者暴力穷举法最小化此代价函数都可以得到最优解 。

  • 最小化单位计算费率:考虑最小化TPU处理张量中每个数据单元的时间开销。我们测试了ESPCN模型在TPU上处理不同尺寸输入的开销:

在这里插入图片描述

图4:TPU上处理不同尺寸输入的开销

观察可知,TPU设备上使用批处理并没有时间并行化效果,并且越小的张量尺寸计算费率越低。可以得到最优解 。

2.2 性能优化

为了进一步加速运行和提高图像质量,我们引入多线程处理和经典后处理滤波EDGE_ENHANCE和一个简化版本的UnsharpMask。后处理可以在CPU或者TPU上实现,视具体情况而定。
在这里插入图片描述

图5:引入多线程和后处理的稳定提升

3 部署和评估

模型部署:使用TPU-mlir[5]工具箱,将预训练好的ESPCN网络权重编译为TPU可加载的bmodel格式,量化类型设置为FP16,输入张量形状绑定为[1, 3, 128, 128],部署运行时代码到TPU设备sophon BM1684[6]上。

使用下列计算公式来评估模型得分:

其中为平均自然图像质量评估度量[7]的得分,越小越好,而为模型的平均推理运行时间(单位为秒),同样越小越好。在两个各含有600张2k以下尺寸图像的数据集上测试表现如下:

模型数据集runtimeniqescore
Real-ESRGANtest5.24623.936466.7269
ESPCNtest0.19244.44651661.0888
ESPCNval0.09834.37613295.7186

对比可见,轻量化的ESPCN相比作为基准模型的Real-ESRGAN而言,虽然NIQE质量还很差,但凭借极高的推理速度,从而在综合得分方面有显著的提升。

致谢

感谢CCF BDCI平台提供的比赛机会和开放计算资源;感谢其他参赛队伍令人触目惊心的刷榜分数;感谢无数个太阳、朝露、地神的吐息。

参考

[1] Wang X, Xie L, Dong C, et al. Real-esrgan: Training real-world blind super-resolution with pure synthetic data[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 1905-1914.

[2] Shi W, Caballero J, Huszár F, et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 1874-1883.

[3] Lornatang. ESPCN-PyTorch [EB/OL] https://github.com/Lornatang/ESPCN-PyTorch

[4] Coloquinte. NinaSR: scalable neural network for Super-Resolution [EB/OL] https://github.com/Coloquinte/torchSR/blob/main/doc/NinaSR.md

[5] sophgo. TPU-MLIR [EB/OL] https://github.com/sophgo/tpu-mlir

[6] sophgo. BM1684X Introduction V1.7 [EB/OL] https://sophon-file.sophon.cn/sophon-prods3/drive/23/03/02/20/BM1684X%20Introduction%20V1.7.pdf

[7] Anish Mittal, Rajiv Soundararajan and Alan C. Bovik, Fellow, IEEE. Making a ‘Completely Blind’ Image Quality Analyzer. [EB/OL] http://live.ece.utexas.edu/research/quality/niqe_spl.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI产品经理 - 如何做一款软硬协同AI产品

【背景】从0做一款软硬协同的AI产品,以智能医药保温箱 1.以智能医药保温箱 2.调研定义市场方向 地点:医药、实验室 场景:长宽高/装箱/运输/实验室 3.需求挖掘 4.如何进行软硬件AI产品工作 软硬件产品设计:功能/硬件外观设计、…

《数据库开发实践》之存储过程【知识点罗列+例题演练】

一、什么是存储过程? 1.概念理解: 存储过程是一组为了完成特定功能的SQL语句集。通过组成SQL语句和控制语句,提供一种封装任务的方法。因此在创建编译好某个存储过程后,因为存储过程中有可执行操作的sql语句,用户可以…

OFDM——PAPR减小

文章目录 前言一、PAPR 减小二、MATLAB 仿真1、OFDM 信号的 CCDF①、MATLAB 源码②、仿真结果 2、单载波基带/通频带信号的 PAPR①、MATLAB 源码②、仿真结果 3、时域 OFDM 信号和幅度分布①、MATLAB 源码②、仿真结果 4、Chu 序列和 IEEE802.16e 前导的 PAPR①、MATLAB 源码②…

模型 KANO卡诺模型

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。需求分析。 1 卡诺模型的应用 1.1 餐厅需求分析故事 假设你经营一家餐厅,你想了解客户对你的服务质量的满意度。你可以使用卡诺模型来收集客户的反馈,并分析客户的…

MySQL的日志管理以及备份和恢复

MySQL日志管理 mysql的日志默认保存位置为/usr/local/mysql/data vim /etc/my.cnf #开启二进制日志功能 vim /etc/my.cnf [mysqld]##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 log-error/usr/local/mysql/data/mysql_…

Python从入门到网络爬虫、自动化

可以创建C、C#、Python、Golang、Java、React、Node、Vue、PHP项目 创建Java项目 创建Python项目 简单if……else……语句 # 简单的if……else……语句 state True if state:print("状态正常") else:print("状态异常")# 复杂的if……elif……语句 score …

基于 LangChain + GLM搭建知识本地库

一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 受GanymedeNil的项目document.ai和AlexZhangji创建的ChatGLM-6B Pull Request启发,建立了全流程可使用开源模…

【Linux C | 文件I/O】文件数据的同步 | sysc、fsync 和 fdatasync 函数

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

电压,电流,温度采样检测原理

电流采集电路: 电流采样原理: 电压采样电路: 温度检测:通过热敏电阻实现 以上资料来源于:正点原子,仅做学习笔记使用

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

2013年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

“一元复始,万象更新。行而不辍,未来可期。” 努力学习和奋斗的时光总是过得飞快,不知不觉,2024年已经悄然而至,今天是2024年1月1日,六分成长祝所有的读者朋友和孩子们新年快乐!学习进步&#…

Django 学习教程- Django 入门案例

Django学习教程系列 Django学习教程-介绍与安装 前言 本教程是为 Django 5.0 编写的,它支持 Python 3.10 至以上。如果 Django 版本不匹配,可以参考教程 使用右下角的版本切换器来获取你的 Django 版本 ,或将 Django 更新到最新版本。如果…

uni-app js语法

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

1.项目简介

本次项目建立的基础是基于Django后台admin管理功能上的二次加工以符合实际情况,所以需要读者对Django这个架构有一定的了解,具体可以查看作者的另一个专栏Django详解。 随着信息技术的迅猛发展,图书馆的借阅系统也在不断地进行更新和改进。传…

Element|InfiniteScroll 无限滚动组件的具体使用方法

目录 InfiniteScroll 无限滚动 基本用法 详细说明 v-infinite-scroll 指令 infinite-scroll-disabled 属性 infinite-scroll-distance 属性 总结 需求背景 : 项目统计管理列表页面,数据量过多时在 IE 浏览器上面会加载异常缓慢,导致刚…

「实验记录」CS144 Lab1 StreamReassembler

目录 一、Motivation二、SolutionsS1 - StreamReassembler的对外接口S2 - push_substring序列写入ByteStream 三、Result四、My Code五、Reference 一、Motivation 我们都知道 TCP 是基于字节流的传输方式,即 Receiver 收到的数据应该和 Sender 发送的数据是一样的…

jmeter的常用功能及在测试中的基本使用和压测实战

Jmeter基础功能 了解Jmeter的常用组件 元件:多个类似功能组件的容器(类似于类) 一:Test Plan(测试计划) 测试计划通常用来给测试的项目重命名,使用多线程脚本运行时还可以配置线程组运行方式…

无监督学习(下)

1.高斯混合模型(GMM) (1)简单概念 高斯混合模型是一种概率模型,它假定实例是由多个参数未知的高斯分布的混合生成的。从单个高斯分布生成的所有实例都形成一个集群,通常看起来像一个椭圆。每个集群都可以由不同的椭圆形状,大小,密…

C# 给方形图片切圆角

写在前面 在有些场景中&#xff0c;给图片加上圆角处理会让视觉效果更美观。 代码实现 /// <summary>/// 将图片处理为圆角/// </summary>/// <param name"image"></param>/// <returns></returns>private Image DrawTranspar…

C语言-环境搭建

文章目录 内容Notepad的安装gcc编译工具的配置 编写软件的安装&#xff1a;软件传送门&#xff1a;Notepad软件选择一个合适的路径&#xff0c;一键傻瓜式安装即可 编译工具gcc在windows环境下的配置&#xff1a;解压gcc编辑工具包解压出来的mingw64文件放到一个合适的磁盘路径…