目录
一、GIM简介
项目全名:GIM: Learning Generalizable Image Matcher From Internet Videos
项目链接:GIM
论文链接:https://arxiv.org/abs/2402.11095
Github链接:https://github.com/xuelunshen/gim
用途:
1.可以实现图片的双目匹配,并再次基础上重建
2.多目重建
3.通过Gaussian Splatting方法渲染
官方匹配效果:
二、安装和使用(Ubuntu)
1.项目安装
参考github页面,打开安装文件夹,右键打开控制台:
# 创建环境
conda create -n gim python=3.8
# 安装依赖
pip install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
pip install albumentations==1.0.1 --no-binary=imgaug,albumentations
pip install pytorch-lightning==1.5.10
pip install opencv-python==4.5.3.56
pip install imagesize==1.2.0
pip install kornia==0.6.10
pip install einops==0.3.0
pip install loguru==0.5.3
pip install joblib==1.0.1
pip install yacs==0.1.8
pip install h5py==3.1.0
# 克隆该项目
git clone https://github.com/xuelunshen/gim.git
# 进入gim文件夹
cd gim
下载预训练模型gim_dkm:
链接:https://drive.google.com/file/d/1gk97V4IROnR1Nprq10W9NCFUv2mxXR_-/view
放置在weights文件夹中
2.使用方法(双目匹配)
将需要匹配的文件放在指定的位置
# 默认图片位置和名称
.
/gim/assets/demo/b1
.png
.
/gim/assets/demo/b2
.png
如果需要修改输入图片的路径,可以修改demo.py文件
# 第378-383行
name0 = 'b1'
name1 = 'b2'
postfix = '.png'
image_dir = join('assets', 'demo')
img_path0 = join(image_dir, name0 + postfix)
img_path1 = join(image_dir, name1 + postfix)
在gim环境下,使用以下命令,两者使用的检测器不同,检测到的关键点和数量不同,效果相近
# 使用DKM模式
python demo.py --model gim_dkm
# 使用SuperGlue模式
python demo.py --model gim_lightglue
该程序可以对两张图片进行匹配,输出关键点匹配图和将b2图转换为b1角度的效果,效果如下:
输出图像也保存在该文件夹中
关键点匹配效果 | 转换效果 |
![]() | ![]() |
转换的时候有两种模式可以选择,模式的选择可以通过修改demo.py文件
Homography:单应性模式只有图像b2会变形,即把图像b2转换为b1的角度
Fundamental:基础模式图像b2和b1都会变形,程序将两者转换为同角度
# 第477-478行,修改最后一个参数
wrapped_images = wrap_images(image0, image1, geom_info,
"Homography")
三、效果测试
双目匹配_DKM
test1
原图a | 原图b |
| |
test2
原图a | 原图b |
| |