Unleashing Text-to-Image Diffusion Models for Visual Perception
VPD是一个框架,它利用预训练文本到图像扩散模型的高层和低层知识来完成下游的视觉感知任务。据博主所知,这是第一个尝试使用stable diffusion作为backbone来抽取特征的文章。
博主实验了一下,单卡大概需要21GB才能跑起这个实验。
框架为:
文章的论文讲解在之前的文章中有提到,具体在:讲解地址
准备仓库的部分不直接说明,因为很简单,我没有遇到问题。
文章代码使用的是mmseg框架,但是直接使用官方仓库的命令安装是不行的,因为mmcv版本对不上,使用min install mmcv
安装的是最新的,当仓库中的代码使用的不是最新的mmcv。
想吐槽的是,mmcv里面也没有说明修改的或者删去的库转移到哪个包里面去了。这就很费时间去找。
网上的解决办法也千篇一律,我自己试了没有效果。
博主在autodl上配置好环境后,使用conda activate ldm
激活环境,出现了 CommandNotFoundError错误,解决办法为:
source activate
然后就可以了。
这个问题是因为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 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 .
在需要导入的包的前面加上:
sys.path.append(‘导入包的父目录’)
在本文的项目是:
sys.path.append('/root/Project/VPD/')
from vpd import UNetWrapper, TextAdapter
改成yapf==0.40.1,使用命令:
pip install yapf==0.40.1