赞
踩
本文记录利用官方源代码复现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)Tensorflow2.3.0 python3.8
pip install tensorflow-gpu==2.3.0
pip install tensorflow-probability==0.11.0
(2)TF-Slim
git clone https://gitee.com/zhuxiucui/tf-slim.git
cd tf-slim
pip install .
(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`
(4)Python dependencies
pip install matplotlib numpy scikit-image scipy
sudo apt-get install python3-tk
(5)tensorflow/models
连续 cd ..
进入research目录下
#From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`
然后 cd delf 进入delf目录下
#From tensorflow/models/research/delf/
${PATH_TO_PROTOC?}/bin/protoc delf/protos/*.proto --python_out=.
pip install -e .
最后可以执行
python -c 'import delf'
如果没有异常输出则DELF包加载成功。
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
然后在https://www.kaggle.com/sai11fkaneko/gldv2-clean-dataset 下载tfrecord 并将tfrecord数据文件放入gldv2_dataset目录下:
在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
然后可以使用局部特征进行训练:
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
或者使用全局和局部特征训练:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。