MMFewShot训练与测试流程

简介: MMFewShot训练与测试流程

1. mmfetshot环境安装


配置安装,以下的配置亲测可用:

image.png


安装指令:


# install mmcv mmclassification mmdetection
pip install mmcv-full==1.6.1 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
pip install mmcls==0.23.2
pip install mmdet==2.25.0
pip install mmfewshot
# install mmfewshot
git clone https://github.com/open-mmlab/mmfewshot.git
cd mmfewshot
pip install -r requirements/build.txt
pip install -v -e .  # or "python setup.py develop"


需要注意,一定要进行后续的 pip install -r requirements/build.txt 与 pip install -v -e . ,否则你的安装是不完整的,可能还会导致无法使用。


2. 模型训练


训练过程:此处以在vol数据集中训练tfa模型为例


Step1:基础训练

  • 使用基类的所有图像和注释来训练基本模型。
python tools/detection/train.py configs/detection/tfa/voc/split1/tfa_r101_fpn_voc-split1_base-training.py --gpu-id 0


Step2:重新初始化基本模型的bbox头部

  • 使用提供的脚本为所有类微调(基类 + 新类)创建一个新的 bbox 头。
  • new bbox head 中基类的权重直接使用原来的作为初始化。
  • new bbox head 中新类的权重使用随机初始化。
python tools/detection/misc/initialize_bbox_head.py \
     --src1 work_dirs/tfa_r101_fpn_voc-split1_base-training/latest.pth \
     --method random_init \
     --save-dir work_dirs/tfa_r101_fpn_voc-split1_base-training/


Step3:Few-shot微调

  • 使用 step2 中的基本模型作为模型初始化,并使用少量镜头数据集进一步微调 bbox 头部。

由于现在需要进行few-shot微调,需要进行特定的数据集处理,下载few-shot的标注信息,分别下载完解压到 data/few_shot_ann/ 路径下即可


coco数据集:https://download.openmmlab.com/mmfewshot/few_shot_ann/coco.tar.gz


  • 数据结构:
mmfewshot
├── mmfewshot
├── tools
├── configs
├── data
│   ├── coco
│   │   ├── annotations
│   │   ├── train2014
│   │   ├── val2014
│   │   ├── train2017 (optional)
│   │   ├── val2017 (optional)
│   ├── few_shot_ann
│   │   ├── coco
│   │   │   ├── annotations
│   │   │   │   ├── train.json
│   │   │   │   ├── val.json
│   │   │   ├── attention_rpn_10shot (for coco17)
│   │   │   ├── benchmark_10shot
│   │   │   ├── benchmark_30shot


voc数据集https://download.openmmlab.com/mmfewshot/few_shot_ann/voc.tar.gz


  • 数据结构:
mmfewshot
├── mmfewshot
├── tools
├── configs
├── data
│   ├── VOCdevkit
│   │   ├── VOC2007
│   │   ├── VOC2012
│   ├── few_shot_ann
│   │   ├── voc
│   │   │   ├── benchmark_1shot
│   │   │   ├── benchmark_2shot
│   │   │   ├── benchmark_3shot
│   │   │   ├── benchmark_5shot
│   │   │   ├── benchmark_10shot


处理完的数据集结构如下所示:

image.png


准备完数据集,即可进行训练


CUDA_VISIBLE_DEVICES=0,1,3 bash tools/detection/dist_train.sh \
    configs/detection/tfa/voc/split1/tfa_r101_fpn_voc-split1_5shot-fine-tuning.py 3


ps:这里的配置文件会自动的在相关的路径下架子基础训练的模型,比如:work_dirs/tfa_r101_fpn_voc-split1_base-training/base_model_random_init_bbox_head.pth,在配置文件中设置如下


# base model needs to be initialized with following script:
#   tools/detection/misc/initialize_bbox_head.py
# please refer to configs/detection/tfa/README.md for more details.
load_from = ('work_dirs/tfa_r101_fpn_voc-split1_base-training/'
             'base_model_random_init_bbox_head.pth')


训练结束后,由于此时已经微调结束,所以在对应的目录下tfa_r101_fpn_voc-split1_5shot-fine-tuning,会生成相对应的权重,如下所示:

image.png


在训练结束后,打印的信息有一个log文件记录,如下所示:


+-------------+------+-------+--------+-------+
| class       | gts  | dets  | recall | ap    |
+-------------+------+-------+--------+-------+
| aeroplane   | 285  | 2296  | 0.877  | 0.615 |
| bicycle     | 337  | 2700  | 0.840  | 0.457 |
| boat        | 263  | 2400  | 0.768  | 0.372 |
| bottle      | 469  | 5199  | 0.795  | 0.484 |
| car         | 1201 | 5936  | 0.938  | 0.780 |
| cat         | 358  | 2728  | 0.925  | 0.495 |
| chair       | 756  | 7951  | 0.799  | 0.400 |
| diningtable | 206  | 5288  | 0.859  | 0.367 |
| dog         | 489  | 3675  | 0.894  | 0.405 |
| horse       | 348  | 7908  | 0.937  | 0.462 |
| person      | 4528 | 14036 | 0.917  | 0.691 |
| pottedplant | 480  | 4764  | 0.729  | 0.295 |
| sheep       | 242  | 2452  | 0.884  | 0.467 |
| train       | 282  | 2988  | 0.837  | 0.398 |
| tvmonitor   | 308  | 5185  | 0.880  | 0.549 |
| bird        | 459  | 4232  | 0.693  | 0.247 |
| bus         | 213  | 4890  | 0.864  | 0.267 |
| cow         | 244  | 3942  | 0.947  | 0.380 |
| motorbike   | 325  | 6876  | 0.871  | 0.461 |
| sofa        | 239  | 6499  | 0.787  | 0.195 |
+-------------+------+-------+--------+-------+
| mAP         |      |       |        | 0.439 |
+-------------+------+-------+--------+-------+
2022-09-08 18:46:13,426 - mmfewshot - INFO - BASE_CLASSES_SPLIT1 mAP: 0.4825480580329895
2022-09-08 18:46:13,426 - mmfewshot - INFO - NOVEL_CLASSES_SPLIT1 mAP: 0.3099679946899414
2022-09-08 18:46:13,432 - mmfewshot - INFO - Exp name: tfa_r101_fpn_voc-split1_5shot-fine-tuning.py
2022-09-08 18:46:13,432 - mmfewshot - INFO - Iter(val) [1651]  AP50: 0.4390, BASE_CLASSES_SPLIT1: AP50: 0.4830, NOVEL_CLASSES_SPLIT1: AP50: 0.3100, mAP: 0.4394


3. 模型推理


将刚刚训练好的模型进行验证,以查看效果是否匹配,这里验证的是最新的模型,也就是latest.pth


python tools/detection/test.py \
    configs/detection/tfa/voc/split1/tfa_r101_fpn_voc-split1_5shot-fine-tuning.py \ 
    work_dirs/tfa_r101_fpn_voc-split1_5shot-fine-tuning/latest.pth \
    --eval mAP --gpu-id 2


验证结果:

image.png


可以看见,最后的验证结果与训练时刻的验证结果是一致的


参考资料:


https://mmfewshot.readthedocs.io/en/latest/index.html


目录
相关文章
|
14天前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
75 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
41 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
4月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
5991 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
1023 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
281 0
|
4月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
792 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
4月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
114 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
机器学习/深度学习 XML 并行计算
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用YOLOX完成图像目标检测任务的完整流程,包括数据准备、模型训练、验证和测试。
415 0
目标检测实战(七): 使用YOLOX完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
监控 测试技术 数据安全/隐私保护
新产品测试流程如何?
新产品测试流程如何?【10月更文挑战第10天】
213 0
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 7
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
  • 8
    用户说 | 通义灵码2.0,跨语言编码+自动生成单元测试+集成DeepSeek模型且免费使用
  • 9
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 10
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架