以图搜图模式的图像检索是CBIR 基于内容的图像检索 任务中最难的一块,传统的基于SIFT、SURF、ORB的方法主要基于点结构特征和统计模型。DELF是google基于CNN框架提出的一种图像点特征抽取方法和匹配方法 特点是引入了注意力得分判断模型。DELF: DEep Local Features是一系列相关研究的起点 该团队后续研究都可以在delf的官方资料中找到。这个项目的环境配置比较复杂 本文记录相关环境的配置过程 后续文章会对论文的思路进行介绍。
目录
0 编译环境
参考资料
所需软件包及版本
1.安装显卡驱动和CUDA
1.1 查看显卡控制面板
1.2 下载CUDA10.1
1.3安装CUDA10.1
1.4 配置环境变量
1.5 测试
2.安装python环境
2.1安装Anaconda3 5.2
2.2安装tensorflow2.2
2.3测试
3.安装DELF配套环境
3.1 准备工作
3.2 安装tf-Slim
3.3 安装Protobuf
4. 安装Delf
4.1 安装tensorflow/models
4.2 编译delf中的protoc文件
4.3安装DELF包
4.4 常见错误
4.5 测试图像
4.6 模型文件
4.7 图像列表
4.8 执行特征抽取
4.9 执行特征匹配
0 编译环境 参考资料1.delf官方资料
models/research/delf at master · tensorflow/models · GitHub
所需软件包及版本 windows 10 20H2anaconda3-5.2python 3.6.5cuda10.1tensorflow 2.2vscode 1.安装显卡驱动和CUDA不使用GPU的TX可以跳过本节 在安装tensorflow时选择cpu版本即可。
1.1 查看显卡控制面板红线标记了CUDA 最高支持版本 只要版本号高于10.1就可以安装。
如果CUDA驱动版本号低于10.1 可以去官方下载高版本驱动。
显卡驱动下载地址 官方 GeForce 驱动程序 | NVIDIA。
1.2 下载CUDA10.1CUDA版本需要和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.1CUDA安装很简单 运行CUDA安装程序 全程默认安装。
cuDNN安装比较奇特 需要先解压 然后将下面的文件复制到C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1目录 这个是CUDA10.1默认安装目录。
覆盖完成后的文件夹是这样的
1.4 配置环境变量在高级系统设置中选择path
在path中添加以下目录,
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1libx64
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1include
C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1extrasCUPTIlib64
C:ProgramDataNVIDIA CorporationCUDA Samplesv10.1binwin64
C:ProgramDataNVIDIA CorporationCUDA Samplesv10.1commonlibx64
1.5 测试
打开运行(win R) 输入cmd 打开命令提示符(管理员) 在命令提示符中 输入nvcc -V(中间有空格)后 按回车 会显示CUDA的版本号信息 表明安装成功
2.安装python环境 2.1安装Anaconda3 5.2Anaconda3 5.2对应的是python3.6.5 DELF需要python支持 所以选这个版本 对应的tensorflow版本是2.2。
anaconda3 推荐在清华镜像下载 注意选择5.2版本 默认安装。
.Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror22
2.2安装tensorflow2.21.以管理员身份运行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-Slimcd 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-win64bin下的protoc.exe复制到protobuf-python-3.17.3protobuf-3.17.3src
打开cmd窗口 执行下面的命令编译
cd C:dLenvprotobuf-python-3.17.3protobuf-3.17.3python python setup.py build
执行命令 测试编译是否成功
python setup.py test
执行下面命令安装
python setup.py install
进入python 执行下面命令测试安装是否成功
import google.protobuf4. 安装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:dLenvmodelsresearchdelf C:dLenvprotoc-3.17.3-win64binprotoc delf/protos/*.proto --python_out .4.3安装DELF包
建议先修改C:dLenvmodelsresearchdelfsetup.py文件 将版本需求的 改为 。
打开cmd执行以下命令。
cd C:dLenvmodelsresearchdelf pip install -e .4.4 常见错误
这里可能会自动升级到较高的版本 下面是一些降版本的方法。
numpy版本过高 在编译程序时会出现以下问题。
报错
importError: cannot import name _validate_lengths
打开cmd修改版本
pip install numpy 1.16.14.5 测试图像
http://www.robots.ox.ac.uk/~vgg/data/oxbuildings/oxbuild_images.tgz
将图像数据解压到C:dLenvmodelsresearchdelfdataoxford5k_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:dLenvmodelsresearchdelf目录
打开pythonexample目录下的delf_config_example.pbtxt文件,修改默认输入参数与前面设定的一致。
打开pythonexample目录下的extract_features.py文件,修改默认输入参数与前面设定的一致。
执行extract_features.py 抽取的特征文件保存在C:dLenvmodelsresearchdelfdataoxford5k_features中。
打开pythonexample目录下的match_images.py文件,修改默认输入参数。
执行match_images.py
匹配结果输出到C:dLenvmodelsresearchdelf的aaa文件。



