Superpoint运行过程问题总结

一.安装

安装的时候通过make install
安装之前需要先在makfile中确认两件事情:

  1. pip还是用pip3.6
  2. 是否需要使用sudo

安装的过程中需要给出数据和实验结果的绝对路径,以后我也得这样写,其实这个给错了也没关系,可以在/superpoint/settings.py中修改,而且建议运行前查看下这个文件的绝对路径对不对

二. 运行

1. 每个命令运行前都需要加上

export TMPDIR=/tmp/

如果有多个GPU,还可以指定用哪个

export CUDA_VISIBLE_DEVICES=0#,1

2. 运行前可能需要修改配置文件,加上:

data_format: 'channels_last'

3. 运行前可能需要去除ros的opencv

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')

4. 运行过程中,出现如下的错误

E tensorflow/stream_executor/cuda/cuda_dnn.cc:378] Loaded runtime CuDNN library: 7501 (compatibility version 7500) but source was compiled with 7004 (compatibility version 7000).  If using a binary install, upgrade your CuDNN library to match.  If building from sources, make sure the library loaded at runtime matches a compatible version specified during compile configuration.
2019-12-06 03:08:52.029312: F tensorflow/core/kernels/conv_ops.cc:717] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms) 
Aborted (core dumped)

意思是cudnn的版本不对,需要7004,但是本机装的是7500,卸载了重新装。

5. 修改/生成运行文件,例子如下:

#!/bin/sh
cd ./superpoint
export TMPDIR=/tmp/
python3.6 experiment.py train configs/magic-point_coco_train.yaml magic-point_coco

命令解析:
(1)train代表是训练,还可以是evaluate,评估;
(2)xxx.yaml配置文件
(3)magic-point_coco代表训练的网络名称,会在/EXPER_DIR下生成对应的网络结构的运行日志,网络模型等文件

6. 如果想要自己的数据集进行训练

参考https://github.com/rpautrat/SuperPoint/issues/100
如果需要自己的数据来进行训练,需要进行如下步骤:

1.创建自己的数据集解析器,可以复制datasets/coco.py,将其改成新的名字,例如datasets/my_dataset.py并进行修改.
2.修改配置文件,可以将configs/magic_point_coco_export.yaml复制后修改,将名字'coco'改成'my_dataset'

然后就可以用这些来直接进行step2,即在该数据集上生成检测结果

7. step 1 Training MagicPoint on Synthetic Shapes

这一步是在合成数据集上训练magic-point网络,结果为magic-point_synth
在第一次执行该步骤的时候,就会生成训练magic-point需要的合成数据集。可以根据这个数据集去训练别的网络
这一步训练上train_iter: 50000就行了,作者也只训练了40000次,并不需要训练20w次

8. step 2 Exporting detections on MS-COCO

这一步是利用在合成数据集上训练的magic-point网络,对COCO数据集进行标注,生成模拟的ground-truth。
这里作者只对COCO的训练集进行了标注,生成的标注文件在 $EXPER_DIR/outputs/magic-point_coco-export1/

9. step 3 Training MagicPoint on MS-COCO

这一步是利用COCO数据集以及其对应的标注好的ground-truth来进一步训练magic-point网络.

10. step 4 Evaluating the repeatability on HPatches

这一步是在进行训练superpoint之前,先评估下基础的magic_point网络的效果,主要关注重复度是否满足了论文说的。这里利用Haptches进行验证。
这一步首先使用作者给出的命令,用已经在COCO数据集上训练好的magic-point网络来对Haptches数据集进行检测,生成检测结果。
然后利用notebooks/detector_repeatability_coco.ipynb来量化检测结果。
在结果中主要关注重复度,像素级别的精度,召回率,甚至loss都没有太大的参考意义。
为了对比,还需要对经典法也生成相应的结果,然后对比评估,注意notebooks中的文件,文件名的列表和生成结果的文件夹的名字需要一致。
生成结果这一步可能出现:580/1000就结束程序,这个是对的,因为haptches就只有116个图像,进行5中变换,总计580个结果。其他同理。

11. step 5 Validation on MS-COCO

上面是用Hpatches进行评估,作者还利用COCO数据进行了评估
首先,需要从原始的COCO数据集中生成成对的数据集,会自动放在/DATA_DIR/COCO/patches
然后向第四步一样去进行评估,注意对于COCO数据集需要没有视角和光照变化的区别,需要修改配置文件这里为’all’
注意在生成数据的过程中,网络加载可能就需要几分钟,不知道为什么。

12. step 6 Training of SuperPoint on MS-COCO

用第二步生成的模拟的ground-truth继续来训练superpoint网络。

13. step 7 Evaluation of the descriptors with homography estimation on HPatches

利用训练好的网络对HPatches数据集生成描述子,这个会很慢很慢(几个小时),而且生成的数据达到了120多个G
然后用notebooks/descriptors_evaluation_on_hpatches.ipynb对描述子进行评估,这个也特别慢。

你可能感兴趣的:(特征点检测)