以图搜图模式的图像检索是CBIR(基于内容的图像检索)任务中最难的一块,传统的基于SIFT、SURF、ORB的方法主要基于点结构特征和统计模型。DELF是google基于CNN框架提出的一种图像点特征抽取方法和匹配方法,特点是引入了注意力得分判断模型。DELF: DEep Local Features是一系列相关研究的起点,该团队后续研究都可以在delf的官方资料中找到。这个项目的环境配置比较复杂,本文记录相关环境的配置过程,后续文章会对论文的思路进行介绍。
目录
0 编译环境
参考资料
1.delf官方资料
models/research/delf at master · tensorflow/models · GitHub
所需软件包及版本
windows 10 20H2 | |
anaconda3-5.2 | |
python 3.6.5 | |
cuda10.1 | |
tensorflow 2.2 | |
vscode | |
1.安装显卡驱动和CUDA
不使用GPU的TX可以跳过本节,在安装tensorflow时选择cpu版本即可。
1.1 查看显卡控制面板
红线标记了CUDA 最高支持版本,只要版本号高于10.1就可以安装。
如果CUDA驱动版本号低于10.1,可以去官方下载高版本驱动。
显卡驱动下载地址,官方 GeForce 驱动程序 | NVIDIA。
1.2 下载CUDA10.1
CUDA版本需要和cuDNN版本一致,cuDNN很难从官方下载,貌似中国区被屏蔽了。所以先在官网下载CUDA10.1。
CUDA Toolkit Archive | NVIDIA Developer
下载地址 CUDA Toolkit 10.1 update2 Archive | NVIDIA Developer
然后去百度网盘下载cuDNN。(这是一位网友分享的,非常感谢。)
cudnn-10.1-windows10-x64-v7.6.0.64.zip_免费高速下载|百度网盘-分享无限制
如果可以访问官网也可以去官网下载,注意选择匹配的版本。
Download cuDNN v8.0.5 (November 9th, 2020), for CUDA 10.1
下载地址 cuDNN Archive | NVIDIA Developer
1.3安装CUDA10.1
CUDA安装很简单,运行CUDA安装程序,全程默认安装。
cuDNN安装比较奇特,需要先解压,然后将下面的文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1目录,这个是CUDA10.1默认安装目录。
覆盖完成后的文件夹是这样的
1.4 配置环境变量
在高级系统设置中选择path
在path中添加以下目录,
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\lib64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\common\lib\x64
1.5 测试
打开运行(win+R),输入cmd,打开命令提示符(管理员) 在命令提示符中,输入nvcc -V(中间有空格)后,按回车,会显示CUDA的版本号信息,表明安装成功!
2.安装python环境
2.1安装Anaconda3 5.2
Anaconda3 5.2对应的是python3.6.5,DELF需要python支持,所以选这个版本,对应的tensorflow版本是2.2。
anaconda3 推荐在清华镜像下载,注意选择5.2版本,默认安装。
.Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror22
2.2安装tensorflow2.2
1.以管理员身份运行cmd,输入以下命令升级pip
python -m pip install --upgrade pip
2. 然后运行以下命里安装tensorflow-gpu
pip install tensorflow-gpu==2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
也可以使用下面的命令安装cpu版本的tensorflow
pip install tensorflow==2.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
上面是用清华镜像安装,公网用户可以将镜像地址替换为豆瓣
http://pypi.douban.com/simple --trusted-host pypi.douban.com
3.可能的错误
1.ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
输入 pip install -U --ignore-installed wrapt enum34 simplejson netaddr
2.3测试
在python中输入以下程序测试
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
hello=tf.constant('Hello,Tensorflow!')
sess=tf.compat.v1.Session()
print(sess.run(hello))
3.安装DELF配套环境
推荐使用conda部署DELF的配套环境。
建议先在硬盘上创建一个工程文件夹,然后在该文件夹执行以下指令,本文使用的目录是C:\dlenv。
3.1 准备工作
注册GITHUB账号,添加SSH。具体方法可参考下面文章。
Github 生成SSH秘钥(详细教程)_sunwenxu的博客-CSDN博客_github ssh
3.2 安装tf-Slim
cd c:\dlenv
git clone git@github.com:google-research/tf-slim.git
cd tf-slim
pip3 install .
3.3 安装Protobuf
下载protobuf Releases · protocolbuffers/protobuf · GitHub
本文下载的是3.17.3版本,项目要求版本>=3.3即可
Releases · protocolbuffers/protobuf · GitHub
下载上述文件包后解压到工程目录
将protoc-3.17.3-win64\bin下的protoc.exe复制到protobuf-python-3.17.3\protobuf-3.17.3\src
打开cmd窗口,执行下面的命令编译
cd C:\dLenv\protobuf-python-3.17.3\protobuf-3.17.3\python
python setup.py build
执行命令,测试编译是否成功
python setup.py test
执行下面命令安装
python setup.py install
进入python,执行下面命令测试安装是否成功
import google.protobuf
4. 安装Delf
安装前建议先安装vscode。
4.1 安装tensorflow/models
打开cmd,进入工程文件夹,执行下面命令
git clone git@github.com:tensorflow/models.git
或者,这个会快一点。
git clone https://github.com/tensorflow/models.git
下载有点慢,还会卡住,如果卡住可以关掉后重新执行。
4.2 编译delf中的protoc文件
打开cmd执行以下命令。
cd C:\dLenv\models\research\delf
C:\dLenv\protoc-3.17.3-win64\bin\protoc delf/protos/*.proto --python_out=.
4.3安装DELF包
建议先修改C:\dLenv\models\research\delf\setup.py文件,将版本需求的>=改为==。
打开cmd执行以下命令。
cd C:\dLenv\models\research\delf
pip install -e .
4.4 常见错误
这里可能会自动升级到较高的版本,下面是一些降版本的方法。
numpy版本过高,在编译程序时会出现以下问题。
报错
ImportError: cannot import name '_validate_lengths'
打开cmd修改版本
pip install numpy==1.16.1
4.5 测试图像
http://www.robots.ox.ac.uk/~vgg/data/oxbuildings/oxbuild_images.tgz
将图像数据解压到C:\dLenv\models\research\delf\data\oxford5k_images目录,data文件夹需要自己创建。
另外在data文件夹创建一个oxford5k_features文件夹存放特征文件
4.6 模型文件
下载模型文件 http://download.tensorflow.org/models/delf_v1_20171026.tar.gz
创建parameters目录存放解压的模型文件
4.7 图像列表
在delf根目录创建list_image.txt文本文件,将图像文件名和路径填写到文件中,文件编码为utf-8。
4.8 执行特征抽取
用vscode打开C:\dLenv\models\research\delf目录
打开python\example目录下的delf_config_example.pbtxt文件,修改默认输入参数与前面设定的一致。
打开python\example目录下的extract_features.py文件,修改默认输入参数与前面设定的一致。
执行extract_features.py,抽取的特征文件保存在C:\dLenv\models\research\delf\data\oxford5k_features中。
4.9 执行特征匹配
打开python\example目录下的match_images.py文件,修改默认输入参数。
执行match_images.py
匹配结果输出到C:\dLenv\models\research\delf的aaa文件。