安装的时候通过make install
安装之前需要先在makfile中确认两件事情:
安装的过程中需要给出数据和实验结果的绝对路径,以后我也得这样写,其实这个给错了也没关系,可以在/superpoint/settings.py中修改,而且建议运行前查看下这个文件的绝对路径对不对
export TMPDIR=/tmp/
如果有多个GPU,还可以指定用哪个
export CUDA_VISIBLE_DEVICES=0#,1
data_format: 'channels_last'
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
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,卸载了重新装。
#!/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下生成对应的网络结构的运行日志,网络模型等文件
参考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,即在该数据集上生成检测结果
这一步是在合成数据集上训练magic-point网络,结果为magic-point_synth
在第一次执行该步骤的时候,就会生成训练magic-point需要的合成数据集。可以根据这个数据集去训练别的网络
这一步训练上train_iter: 50000就行了,作者也只训练了40000次,并不需要训练20w次
这一步是利用在合成数据集上训练的magic-point网络,对COCO数据集进行标注,生成模拟的ground-truth。
这里作者只对COCO的训练集进行了标注,生成的标注文件在 $EXPER_DIR/outputs/magic-point_coco-export1/
这一步是利用COCO数据集以及其对应的标注好的ground-truth来进一步训练magic-point网络.
这一步是在进行训练superpoint之前,先评估下基础的magic_point网络的效果,主要关注重复度是否满足了论文说的。这里利用Haptches进行验证。
这一步首先使用作者给出的命令,用已经在COCO数据集上训练好的magic-point网络来对Haptches数据集进行检测,生成检测结果。
然后利用notebooks/detector_repeatability_coco.ipynb来量化检测结果。
在结果中主要关注重复度,像素级别的精度,召回率,甚至loss都没有太大的参考意义。
为了对比,还需要对经典法也生成相应的结果,然后对比评估,注意notebooks中的文件,文件名的列表和生成结果的文件夹的名字需要一致。
生成结果这一步可能出现:580/1000就结束程序,这个是对的,因为haptches就只有116个图像,进行5中变换,总计580个结果。其他同理。
上面是用Hpatches进行评估,作者还利用COCO数据进行了评估
首先,需要从原始的COCO数据集中生成成对的数据集,会自动放在/DATA_DIR/COCO/patches
然后向第四步一样去进行评估,注意对于COCO数据集需要没有视角和光照变化的区别,需要修改配置文件这里为’all’
注意在生成数据的过程中,网络加载可能就需要几分钟,不知道为什么。
用第二步生成的模拟的ground-truth继续来训练superpoint网络。
利用训练好的网络对HPatches数据集生成描述子,这个会很慢很慢(几个小时),而且生成的数据达到了120多个G
然后用notebooks/descriptors_evaluation_on_hpatches.ipynb对描述子进行评估,这个也特别慢。