【DA-CLIP】图像复原在AutoDL上部署测试

2024-04-21 04:04

本文主要是介绍【DA-CLIP】图像复原在AutoDL上部署测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因:

虽然在本机Windows部署成功运行,但是由于计算资源少只有6G的GPU无法计算手机拍摄图像复原和其他一些数据集测试,尝试租用AutoDL的服务器部署测试

租AutoDL

 租的人很多,刚确定运行的镜像环境就报告说这个机子已经没卡了,又换了一台4090

上传权重文件、项目文件 

没用网盘和filezilla那些AutoDL帮助文档,一开始AutoDL文件存储 传了不同区,还有filezilla输了地址密码却连不上

我是直接JupyterLab上传的,因为本来以为能用ipynb输出Gradio的公网链接。

总共1.6G左右,接近花了20分钟才上传完成

文件夹是上传压缩包后解压的,只是演示的话只上传universal-image-restoration这个文件夹就行

修改test.yml文件里的权重文件地址,最好是绝对值地址

安装环境

requirement里面包含了torch和cudnn11的依赖。但是我选择的环境是与Windows相同的torch2.1.2+cu121并且已经安装好了。所以我把相关的依赖删了没有install免得重复。

运行

一开始我的考虑是懒得远程链接服务器,用ipynb创建一个Gradio公网链接。ipynb放在app.py文件目录下,对app.py的内容做了点界面修改。不能用命令行参数,我改为直接读yml文件。

但是没成功,有内网链接,但是我咋看啊?点进去啥也没有,frpc弄了但是没反应,可能是服务器挂了代理,开不了链接。

之前项目只用过pycharm专业版连服务器,不过认证过期了用不了,也懒得找种子卸载了。

转为vscode,跟了csdn的教程,本地链接打开能用,同样无公网链接

运行成功。 

疑问

显存占用问题:

  一开始是0显存占用

加载完模型没处理时是daclip模型的1.6G

处理完第一张图后是9个G

但是加载完第二张图准备复原时显存一下子到了16G并且报错OOM

 一时半会也搞不懂显存里有什么,而且计算量这么大吗,比模型参数都大了很多。

可能是有未释放的缓存和内存碎片?

torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 3.83 GiB. GPU 0 has a total capacty of 23.64 GiB of which 1.73 GiB is free. Process 930717 has 1.79 GiB memory in use. Process 947502 has 17.54 GiB memory in use. Process 947745 has 2.58 GiB memory in use. Of the allocated memory 2.01 GiB is allocated by PyTorch, and 107.05 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

无从下手,ps -ef根本找不到对应的process

nvidia-smi 又只有一个process

一下子从5G到20G

感觉缺少释放显存的方式?但是运行明显不那么需要显存的图像时,显存并没有增长。 

手机照片和Gopro运动模糊OOM

感觉是不是跟图像尺寸有关

GOPRO图像,虽然图像不大,但是分辨率比其他LQ图像都要大,尺寸一般五六百左右

就算我用了这个24G的4090还是跑不起LQ-image的运动模糊

 File "/root/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1527, in _call_implreturn forward_call(*args, **kwargs)File "/root/autodl-tmp/universal-image-restoration/config/daclip-sde/models/modules/attention.py", line 180, in forwardsim = einsum('b i d, b j d -> b i j', q, k) * self.scale
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 12.36 GiB. GPU 0 has a total capacty of 23.64 GiB of which 6.86 GiB is free. Process 94706 has 1.57 GiB memory in use. Process 177125 has 15.21 GiB memory in use. Of the allocated memory 14.55 GiB is allocated by PyTorch, and 192.95 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

两次都是重启了程序上传图片后一下子从3G跑到17G然后跟我讲OOM 

 

于是我用wps修改了一下图像的size,从右边改到左边,然后就跑出来了

手机拍摄的照片同理,这两张在白云山拍的本来分辨率4000左右直接缩小八倍 

但是问题是,在图像预处理明明设置了resize,而且读进去的图像在复原前也是224*224的图像大小,难道说这个插值计算花了显存?但是没to(device)啊,搞不懂哪里在吃显存

def clip_transform(np_image, resolution=224):# 这一行定义了一个名为clip_transform的函数,它接受两个参数:np_image(一个NumPy数组格式的图像)和resolution(一个可选参数,默认值为224,表示图像的目标分辨率)。pil_image = Image.fromarray((np_image * 255).astype(np.uint8))# 这一行将NumPy数组格式的图像转换为PIL(Python Imaging Library)图像。首先,将NumPy数组中的像素值乘以255,然后转换为无符号的8位整数格式,这是因为图像的像素值通常在0到255的范围内。return Compose([# 来自torchvision.transforms# 这一行开始定义一个转换流程,Compose是来自albumentations库的一个函数,用于组合多个图像转换操作。Resize(resolution, interpolation=InterpolationMode.BICUBIC),# 这一行使用Resize操作来调整图像大小到指定的分辨率。interpolation=InterpolationMode.BICUBIC指定了使用双三次插值方法来调整图像大小,这是一种高质量的插值算法。CenterCrop(resolution),# 这一行应用CenterCrop操作,将调整大小后的图像进行中心裁剪,以确保图像的尺寸严格等于指定的分辨率ToTensor(),# 这一行使用ToTensor操作将PIL图像转换为PyTorch张量。这是为了使图像能够被深度学习模型处理。Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711))])(pil_image)# 这一行应用Normalize操作,对图像的每个通道进行标准化。它使用两组参数,分别对应图像的均值和标准差。这些参数通常是根据预训练模型的要求来设置的。

 有没有朋友能提供一下思路

这篇关于【DA-CLIP】图像复原在AutoDL上部署测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922111

相关文章

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J