Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VPR_Project — 视觉位置识别(Visual Place Recognition)

基于 ResNet50 + GeM + BatchHard TripletLoss 的昼夜跨域视觉位置识别项目。使用 GardensPoint 数据集,白天(day_left / day_right)作为参考图库,夜晚(night_right)作为查询图,实现昼夜场景匹配。(当然还有其他的db与q组合)

若上传test和train文件超出了bb上2560mb的限制,所以本文件夹中已删除,可以通过prepocess_data.py复现


目录结构 & 文件说明

📁 demonstrate/ — 稳定版(也是最后选择的版本)

该目录下的代码是最稳定的训练/评估管线,使用 随机切分demonstrate/train/demonstrate/test/ 数据集(由 preprocess_data.py 以 seed=42, 70/30 划分生成)。

文件 说明
train_cnn_resnet50_ultimate.py 最终成功训练出0.75以上的模型,请以这个的算法为主-----------------------
---------------------------------------------------
preprocess_data.py 数据预处理:从 images/GardensPoint 按 70/30 随机划分训练/测试集
train_cnn_resnet50_stable_version.py ResNet50 + GeM + BatchHardTripletLoss 稳定训练版(已验证 R@1 ≈ 0.767~0.786)
train_cnn_good1_demo_try.py good1 的优化版:+RandomRotation +Dropout +梯度裁剪 +早停
#但是实际结果也是停留在0.7附近
train_cnn_resNet101_demo.py ResNet101 版本尝试(仅在 backbone 上做单变量改动)
#感觉101参数量比较大,小数据集效果不是很好
train_cosplace_demo.py CosPlace 预训练模型在 demonstrate 数据集上的微调(两阶段策略)
evaluate_model.py 模型评估展示:计算 Recall@1 / Recall@5,可视化成功/失败匹配案例
vpr_resnet50_0.833.pth 综合最优优模型权重(R@1 ≈ 0.833)

📁 norland_code/ — task2相关代码(看挪威代码就看这里)

该目录下的代码是最稳定的训练/评估管线,使用顺序切分前70/后30的 norland_code/train/norland_code/test/ 数据集(由 preprocess_data.py 70/30 划分生成)。

文件 说明
[train_nordland.py] task2使用的主要代码,请以这个的算法为主-----------------------
---------------------------------------------------
[preprocess_data.py] 数据预处理
[evaluta_nordland_topk] 模仿外层的evalute写的评估recall以及匹配率的测试文件
[nordland_match_123.png] 任务要求的匹配图,3/3
[nordland.pth] 训练出来的参数权重,recall1=0.69,更多version在https://huggingface.co/ye999/train_vpr_form_resnet/

📁 根目录 — 各种实验性尝试

🔹 训练脚本(基于 images/GardensPoint 数据集)

文件 尝试方向
train_cnn_explain.py 早期版本,使用物理文件夹划分(train_img/test_img),420张图训练
train_cnn_explain_good1.py good1 经典配置:R@1 > 0.75 的基准版,超参数经充分调优,但是也是随机切分数据集版本
train_cnn_explain_fair.py 公平版:仅用 day_right + night_right训练,(不含 day_left)但是按顺序划分数据集,使用物理文件夹划分
tritrain_cnn.py 三元组训练第一第二次尝试,在小数据集(420图)上遇到过拟合 / R@1 卡在 0.30
tritrain_cnn_fixed.py 三元组AI加强版:更强数据增强 + 辅助分类损失 + 平均模式 TripletLoss
train_cosplace_vpr.py CosPlace 微调的简化版(单阶段,仅训练分类头,使用 train_img/test_img 数据)

🔹 基线评估

这些基线是直接调用模型,还没有训练,来对比自己的微调有没有效果

文件 尝试方向
baseline_resnet50.py ImageNet 预训练 ResNet50 零训练基线(含三重诊断:对齐检查 → 特征质量 → 可视化)
baseline_cosplace.py CosPlace 预训练模型 zero-shot 基线(无微调)
baseline_eigenplaces.py EigenPlaces 预训练模型 zero-shot 基线
baseline_netvlad.py NetVLAD 基线

🔹 数据诊断工具

文件 尝试方向
check_data_alignment.py 检查 train_img / test_img 中 day_right 与 night_right 文件名是否一一对应
quick_check.py 超快速数据对齐检查
diagnose_offset.py 用 CosPlace 做全库匹配,诊断昼夜图片间是否存在系统性的索引偏移
adjacent_sampler.py 相邻位置采样器:滑动窗口策略让 Triplet Loss 聚焦于 Hard Negative(相邻位置)
check_cosplace_arch.py 快速诊断本地 CosPlace 模型结构

🔹 测试脚本

文件 尝试方向
test_model.py 加载训练好的 .pth 模型,输出前 10 张 night_right 的匹配结果(作业第 4 问)
test_cosplace_model.py 快速测试 CosPlace_VPR_CNN 模型结构及冻结策略
test_seq_search.py 测试 CosPlace + 序列搜索(滑动窗口),模拟实际 VPR 的序列匹配
evaluate_model.py 评估模型性能,特色是可视化成功/失败匹配案例,可以看dayleft-nightright,dayright-nightright分别的泛化情况

🔹 可视化分析

文件 说明
offset_analysis_训练集.png 训练集偏移分析图
offset_analysis_测试集.png 测试集偏移分析图
offset_analysis_全部.png 全部数据偏移分析图
loss_curve_fair.png 公平版训练损失曲线

📁 工具模块

路径 说明
evaluation/ 评估指标(recallAtK)及匹配可视化工具
models/cosplace/ CosPlace 网络架构定义 + 预训练权重
models/eigenplaces/ EigenPlaces 网络架构定义 + 预训练权重

📁 数据集

路径 说明
train_img/ 物理划分的训练集(day_left / day_right / night_right,不同位置)
test_img/ 物理划分的测试集(day_left / day_right / night_right,完全未见过的位置)
images/ GardensPoint 原始完整数据集
norland_images/ Norland 数据集(备用)
[norland_images/][images/] 这两个目前在文件夹中没有
是因为划分了训练集和测试集后我删了,完整在
https://huggingface.co/ye999/train_vpr_form_resnet/

现状与后续方向

当前稳定成果

  • demonstrate 版:R@1 稳定在 0.783-0.833(使用随机切分数据集,seed=42
  • 模型架构:ResNet50 + GeM 池化 + BatchHard TripletLoss + 余弦退火
  • 训练数据:demonstrate/train/(day_left + day_right + night_right,每个位置 3 张)
  • 测试数据:demonstrate/test/(同上,30% 未见过位置)

About

tuning resnet50 for vpr tasks

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages