SuperGlue: Learning Feature Matching with Graph Neural Networks跑通及训练模型的过程

文章介绍了如何在PyTorch环境中基于GitHub开源项目训练SuperGlue匹配网络,用于SIFT关键点和描述符的学习。在训练过程中遇到了两个问题:1)特征数量不足导致的ValueError;2)缺少opencv-contrib模块引起的错误。解决方案包括增加特征和安装opencv-contrib的特定版本。

开源项目:GitHub - HeatherJiaZG/SuperGlue-pytorch: [SuperGlue: Learning Feature Matching with Graph Neural Networks] This repo includes PyTorch code for training the SuperGlue matching network on top of SIFT keypoints and descriptors.

论文笔记:CVPR论文笔记| SuperGlue - 知乎

  1. 下载anaconda:Conda使用指南 - 知乎
  2. 在anaconda建立python3.8环境,按照开源项目在该环境下安装
  3. Python 3
  4. PyTorch >= 1.1
  5. OpenCV >= 3.4 (4.1.2.30 recommended for best GUI keyboard interaction, see this note)
  6. Matplotlib >= 3.1
  7. NumPy >= 1.18
  8. 环境,

下载数据集 wget http://images.cocodataset.org/zips/train2014.zip,解压

配置环境

conda create --name py38 python=3.8

source activate py38

pip3 install numpy opencv-python torch matplotlib tqdm scipy

训练模型

python train.py  --train=./train2014/

问题1:ValueError: Expected more than 1 value per channel when training

原因:从根本上说,这是特征数量少时出现的问题

解决方法

try:
  desc0 = desc0 + self.kenc(kpts0, torch.transpose(data['scores0'], 0, 1))
except:
  desc0 = desc0 + self.kenc(kpts0, data['scores0'])
try:
  desc1 = desc1 + self.kenc(kpts1, torch.transpose(data['scores1'], 0, 1))
except:
  desc1 = desc1 + self.kenc(kpts1, data['scores1'])

问题2:module'cv2'has no atttibute 'xfeatures2d'

原因:xfeatures2d.cpp有专利,需要安装对应版本的opencv-contrib

解决方法

安装对应版本的opencv-contrib

pip install opencv-python==4.7.0.72

pip install opencv-contrib-python==4.7.0.72

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值