【问题记录_01】运行VPD代码遇到的问题

发布时间:2024年01月11日

VPD代码运行遇到的问题

VPD概况

文章地址

Unleashing Text-to-Image Diffusion Models for Visual Perception

代码地址

代码

基本介绍

VPD是一个框架,它利用预训练文本到图像扩散模型的高层和低层知识来完成下游的视觉感知任务。据博主所知,这是第一个尝试使用stable diffusion作为backbone来抽取特征的文章。
博主实验了一下,单卡大概需要21GB才能跑起这个实验。
框架为:
在这里插入图片描述
文章的论文讲解在之前的文章中有提到,具体在:讲解地址

遇到的问题

前言

准备仓库的部分不直接说明,因为很简单,我没有遇到问题。
文章代码使用的是mmseg框架,但是直接使用官方仓库的命令安装是不行的,因为mmcv版本对不上,使用min install mmcv安装的是最新的,当仓库中的代码使用的不是最新的mmcv。
想吐槽的是,mmcv里面也没有说明修改的或者删去的库转移到哪个包里面去了。这就很费时间去找。
网上的解决办法也千篇一律,我自己试了没有效果。

遇到的问题

CommandNotFoundError: Your shell has not been properly configured to use conda activate

博主在autodl上配置好环境后,使用conda activate ldm激活环境,出现了 CommandNotFoundError错误,解决办法为:

source activate

然后就可以了。

ImportError: cannot import name ‘revert_sync_batchnorm’ from 'mmcv.cnn.utils

这个问题是因为mmcv版本不一致导致的,博主刚开始安装的是mmcv 2.0版本。仓库里面使用的是:

from mmcv.cnn.utils import revert_sync_batchnorm

但是这种方式在mmcv 2.0以上是无效的。mmseg的仓库中有提到这个问题:issue
它里面有提到revert_sync_batchnorm被移动到mmengine中去了。
博主去mmengine中去找了,确实找到了,如下:
在这里插入图片描述
因此如果你使用的仍然是mmcv 2.0版本的,可以使用

from mmengine.model import revert_sync_batchnorm
# from mmcv.cnn.utils import revert_sync_batchnorm

同时,mmcv 2.0中的runner里面的get_dist_info, init_dist也都移除了,转移到了mmengine中,因此也可以做出相应的修改:

from mmengine.dist import get_dist_info, init_dist
# from mmcv.runner import get_dist_info, init_dist
mmcv和mmseg版本不对应

mmcv和mmseg的对应版本:对应的版本
博主最后没有使用mmcv 2.0,而是降低了mmcv的版本,通过很多次的实验,以上版本是可行的:mmseg:0.30 mmcv:1.6.2 mmcv-full:1.6.2
其中mmseg 0.3可以从release中下载,然后解压,使用如下命令编译即可:

cd mmsegmentation
pip install -v -e .
ModuleNotFoundError: No module named ‘vpd’

在需要导入的包的前面加上:
sys.path.append(‘导入包的父目录’)
在本文的项目是:

sys.path.append('/root/Project/VPD/')
from vpd import UNetWrapper, TextAdapter
TypeError: FormatCode() got an unexpected keyword argument ‘verify

改成yapf==0.40.1,使用命令:

pip install yapf==0.40.1

结果

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_41234663/article/details/135537879
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。