当前位置:   article > 正文

基于DELF(DEep Local Features)深度局部特征的图像检索实践_delf特征

delf特征

本文记录利用官方源代码复现DELF图像检索算法的过程,希望能帮助有同样任务需求的小伙伴们避开一些坑,更快捷地完成实现!
注意:以下演示过程为Linux Ubuntu 下,且为GPU版本。
先决条件:
克隆TensorFlow Model Garden 存储库并移动到该models/research/delf/delf/python/training文件夹中。
https://github.com/tensorflow/models

git clone https://github.com/tensorflow/models.git
cd models/research/delf/delf/python/training
  • 1
  • 2

1安装DELF库

(1)Tensorflow2.3.0 python3.8

pip install tensorflow-gpu==2.3.0
pip install tensorflow-probability==0.11.0
  • 1
  • 2

(2)TF-Slim

git clone https://gitee.com/zhuxiucui/tf-slim.git
cd tf-slim
pip install .
  • 1
  • 2
  • 3

(3)Protobuf

wget https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip 
unzip protoc-3.3.0-linux-x86_64.zip
PATH_TO_PROTOC=`pwd`
  • 1
  • 2
  • 3

(4)Python dependencies

pip install matplotlib numpy scikit-image scipy
sudo apt-get install python3-tk
  • 1
  • 2

(5)tensorflow/models

连续 cd .. 进入research目录下
#From tensorflow/models/research/

export PYTHONPATH=$PYTHONPATH:`pwd`
  • 1

然后 cd delf 进入delf目录下
#From tensorflow/models/research/delf/

${PATH_TO_PROTOC?}/bin/protoc delf/protos/*.proto --python_out=.
pip install -e .
  • 1
  • 2

最后可以执行

python -c 'import delf'
  • 1

如果没有异常输出则DELF包加载成功。

2下载GLDv2训练数据

GLDv2由TRAIN INDEX和TEST 三部分组成,每部分中的图像被分组到 .tar文件中,并在.csv包含训练元数据和许可信息的文件中单独引用。*.tar每个数据集的文件数如下:
在这里插入图片描述
在training目录下可运行download_dataset.sh脚本下载数据
bash download_dataset.sh 500 100 20
该脚本按顺序采用以下参数:
要下载的 TRAIN 数据集中的图像文件数(最多 500 个)。
要下载的 INDEX 数据集中的图像文件数(最多 100 个)。
要下载的 TEST 数据集中的图像文件数(最多 20 个)。
由于 GLDv2 数据集很大,下载可能需要长达 12 小时和 1 TB 的磁盘空间。为了节省带宽和磁盘空间,可以先只下载训练所需的 TRAIN 数据集,从而节省大约 95 GB,相当于 INDEX 和 TEST 数据集。为了进一步节省磁盘空间, *.tar可以在下载和重新打包文件后将其删除。
本人在测试期间只下载很小的训练数据量:

bash download_dataset.sh 10
  • 1

然后在https://www.kaggle.com/sai11fkaneko/gldv2-clean-dataset 下载tfrecord 并将tfrecord数据文件放入gldv2_dataset目录下:
在这里插入图片描述

3训练

在training目录下修改build_image_dataset.py文件,将以下4行注释掉即可。
在这里插入图片描述
运行

curl -Os http://storage.googleapis.com/delf/resnet50_imagenet_weights.tar.gz
tar -xzvf resnet50_imagenet_weights.tar.gz
  • 1
  • 2

然后可以使用局部特征进行训练:

python3 train.py \
  --train_file_pattern=gldv2_dataset/tfrecord/train* \
  --validation_file_pattern=gldv2_dataset/tfrecord/validation* \
  --imagenet_checkpoint=resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5 \
  --dataset_version=gld_v2_clean \
  --logdir=gldv2_training \
  --batch_size=4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

或者使用全局和局部特征训练:

python3 train.py \
  --train_file_pattern=gldv2_dataset/tfrecord/train* \
  --validation_file_pattern=gldv2_dataset/tfrecord/validation* \
  --imagenet_checkpoint=resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5 \
  --dataset_version=gld_v2_clean \
  --logdir=gldv2_training \
  --delg_global_features \
  --batch_size=4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/375745?site
推荐阅读
相关标签
  

闽ICP备14008679号