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


目录
相关文章
|
5月前
|
存储 人工智能 测试技术
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
本文深入解析HarmonyOS应用测试全流程,涵盖从一级类目通用测试到二级类目专项测试的技术方案。针对兼容性、性能、安全测试及分布式能力验证等关键环节,提供详细实践指导与代码示例。同时,结合典型案例分析常见问题及优化策略,帮助开发者满足华为严苛的质量标准,顺利上架应用。文章强调测试在开发中的核心地位,助力打造高品质HarmonyOS应用。
252 2
|
3月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
140 0
|
4月前
|
消息中间件 缓存 监控
性能测试怎么做?方法、流程与核心要点解析
本文系统阐述了性能测试的核心方法论、实施流程、问题定位优化及报告编写规范。涵盖五大测试类型(负载验证、极限压力、基准比对、持续稳定性、弹性扩展)与七项关键指标,详解各阶段任务如需求分析、场景设计和环境搭建,并提供常见瓶颈识别与优化实战案例。最后规范测试报告内容框架与数据可视化建议,为企业级实践提出建立基线库、自动化回归和全链路压测体系等建议,助力高效开展性能测试工作。
|
8月前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
502 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
6月前
|
人工智能 安全 测试技术
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
412 0
Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程
|
9月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
220 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
12月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
2836 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
12月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
823 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
12月前
|
监控 测试技术 数据安全/隐私保护
新产品测试流程如何?
新产品测试流程如何?【10月更文挑战第10天】
528 0
|
4月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
750 23

热门文章

最新文章