利用CLIP提取图像特征
2021年提出的CLIP中具有图像编码和文本编码两个模块,一些实验表明通过CLIP的图像编码器可以提取到高质量的图像特征,能够显著提高下游任务的性能。下面简单介绍通过CLIP的图像编码模块提取图像特征的方法。
复现一个项目的代码是一个麻烦的过程,幸运的是已经有人提供了用户友好的CLIP提取图像特征的方法,项目如下:
当需要使用CLIP提取特征时,只需要下载该项目并在命令行简单的输入一些参数即可。项目文档中提供的命令行指令如下:
经过实验,发现文档中的指令不够准确,下面是个人实际使用的命令行参数。
最后来讲一下CLIP编码图像特征的原理。基于CLIP训练过程的特点,它的图像编码模块可以将一张图片转化成一个512维向量的形式。但是在下游任务中,往往需要从一张图片中提取若干个,而非一个向量作为图像特征。基于这样的需求,容易想到的是将一整张图片均匀的切分为若干个patch再送入CLIP,就可以得到若干个512维向量,满足下游任务的需要。在这种思想的基础上,该项目对待提取特征的图像进行剪裁,并修改了部分CLIP代码,最终可以从一张图片中提取出50个向量作为特征,其中一个512维向量从整张图片中提取,49个2048维向量从图片patch中提取(以RN101为例)。