在 COCO 数据集上预训练的检测器可以作为其他数据集(例如 CityScapes 和 KITTI 数据集)的良好预训练模型。本教程指导用户将Model Zoo 中提供的模型用于其他数据集以获得更好的性能。

在新数据集上对模型进行微调有两个步骤。

按照教程 2:自定义数据集添加对新数据集的支持。
修改本教程中将讨论的配置。
以 Cityscapes Dataset 的微调过程为例,用户需要修改配置中的五个部分。

继承基本配置
为了减轻编写整个配置的负担并减少错误,MMDetection V2.0 支持从多个现有配置继承配置。为了微调 Mask RCNN 模型,新的配置需要继承 _base_/models/mask_rcnn_r50_fpn.py以构建模型的基本结构。要使用 Cityscapes 数据集,新配置也可以简单地继承_base_/datasets/cityscapes_instance.py. 对于训练计划等运行时设置,新配置需要继承_base_/default_runtime.py. 这个配置在configs目录中,用户也可以选择写入整个内容而不是使用继承。

_base_ = ['../_base_/models/mask_rcnn_r50_fpn.py','../_base_/datasets/cityscapes_instance.py', '../_base_/default_runtime.py'
]

修改头
然后新配置需要根据新数据集的类号修改头部。通过仅num_classes在 roi_head 中改变,预训练模型的权重除最终预测头外大部分都被重用。

model = dict(pretrained=None,roi_head=dict(bbox_head=dict(type='Shared2FCBBoxHead',in_channels=256,fc_out_channels=1024,roi_feat_size=7,num_classes=8,bbox_coder=dict(type='DeltaXYWHBBoxCoder',target_means=[0., 0., 0., 0.],target_stds=[0.1, 0.1, 0.2, 0.2]),reg_class_agnostic=False,loss_cls=dict(type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),loss_bbox=dict(type='SmoothL1Loss', beta=1.0, loss_weight=1.0)),mask_head=dict(type='FCNMaskHead',num_convs=4,in_channels=256,conv_out_channels=256,num_classes=8,loss_mask=dict(type='CrossEntropyLoss', use_mask=True, loss_weight=1.0))))

修改数据集
用户可能还需要准备数据集并编写有关数据集的配置。MMDetection V2.0 已经支持 VOC、WIDER FACE、COCO 和 Cityscapes 数据集。

修改训练计划
微调超参数与默认计划不同。它通常需要较小的学习率和较少的训练时期

# optimizer
# lr is set for a batch size of 8
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)
# learning policy
lr_config = dict(policy='step',warmup='linear',warmup_iters=500,warmup_ratio=0.001,step=[7])
# the max_epochs and step in lr_config need specifically tuned for the customized dataset
runner = dict(max_epochs=8)
log_config = dict(interval=100)

使用预训练模型
要使用预训练模型,新配置在load_from. 用户可能需要在训练前下载模型权重,以避免训练期间的下载时间。

load_from = 'https://download.openmmlab.com/mmdetection/v2.0/mask_rcnn/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'  # noqa

MMDETECTION微调模型相关推荐

  1. 谷歌创造ImageNet1K新纪录:性能不佳的微调模型不要扔,求一下平均权重就能提升性能...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 如何最大限度地 ...

  2. NLP论文解读:无需模板且高效的语言微调模型(下)

    ©原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论 ...

  3. 【深度学习-微调模型】使用Tensorflow Slim fine-tune(微调)模型

    本文主要讲解在现有常用模型基础上,如何微调模型,减少训练时间,同时保持模型检测精度. 首先介绍下Slim这个Google公布的图像分类工具包,可在github链接:modules and exampl ...

  4. 在线部分:werobot服务、主要逻辑服务、句子相关模型服务、BERT中文预训练模型+微调模型(目的:比较两句话text1和text2之间是否有关联)、模型在Flask部署

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...

  5. TensorFlow 工程实战(一):在TFhub中下载预训练的pb文件,并使用 TF-Hub 库微调模型评估人物年龄

    实例描述 有一组照片,每个文件夹的名称为具体的年龄,里面放的是该年纪的人物图片. 微调 TF-Hub 库,让模型学习这些样本,找到其中的规律,可以根据具体人物的图片来评估人物的年龄. 即便是通过人眼来 ...

  6. 训练自己的ChatGPT-OpenAI 微调模型

    OpenAI终于下定决心--正式开放ChatGPT API! ChatGPT API地址:https://platform.openai.com/docs/guides/chat gpt-3.5-tu ...

  7. Hugging Face实战(NLP实战/Transformer实战/预训练模型/分词器/模型微调/模型自动选择/PyTorch版本/代码逐行解析)下篇之模型训练

    模型训练的流程代码是不是特别特别多啊?有的童鞋看过Bert那个源码写的特别特别详细,参数贼多,运行一个模型百八十个参数的. Transformer对NLP的理解是一个大道至简的感觉,Hugging F ...

  8. 打造自己的图像识别模型2——使用 TensorFlow Slim 微调模型

    最近在搞自己的深度学习图像识别模型.这是第二步 本文主要讲解在现有常用模型基础上,如何微调模型,减少训练时间,同时保持模型检测精度. 主要参考书籍<21个项目玩转深度学习:基于TensorFlo ...

  9. 【mmdetection】模型初始化

    mmdetection中的模型初始化 1. Pretrained:加载预训练模型来初始化 2. Constant:用常数初始化模型 mmdetection 中对模型进行初始化源码在 mmcv/cnn/ ...

  10. 哈工大团队开源医学智能问诊大模型 | 华佗: 基于中文医学知识的LLaMa指令微调模型

    原文: CVHub 门头沟学院AI视觉实验室御用公众号 | 学术 | 科研 | 就业 185篇原创内容 公众号 Title: HuaTuo: Tuning LLaMA Model with Chine ...

最新文章

  1. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数011,ocr,字符识别
  2. turtlebot3安装遇到的问题总结
  3. 实现-驼峰和下划线的转换 工具类
  4. Py之terminaltables:terminaltables的简介、安装、使用方法之详细攻略
  5. postgresql 删除触发器_PostgreSQL:我没有带闪,不讲武德
  6. leetcode15 3Sum 从数组中找到三个整数,它们的和为0
  7. kendo-ui学习笔记——题记
  8. 通过cookie保存并读取用户登录信息实例
  9. Windows8测试版使用感受
  10. 上海python工资一般多少-python数据分析师待遇有多少?工资待遇如何?
  11. JDK8启动时,参数传递过程
  12. 软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(转载)
  13. KVM虚拟化平台的基础知识及搭建部署!
  14. VS code 修改注释颜色的三种方式(总结)
  15. 后台如何清理软Raid
  16. 实现企业邮箱登录验证功能
  17. python---基础知识回顾(三)(面向对象)
  18. java中 int、char、long各占多少字节数
  19. 靶机17 GROTESQUE: 3.0.1
  20. linux肉鸡检测,一台linux肉鸡的简单手工入侵检测过程

热门文章

  1. 【初识Unity】UI游戏:看看你能答对几题?(游戏可下载)
  2. 5.学城项目 支付宝支付
  3. win10更换自己喜欢的鼠标样式,马里奥、wow、lol都可以哦
  4. Ubuntu18.04 打不开系统蓝牙适配器,也连接不上任何蓝牙设备Bug解决方案
  5. phpcms图库_love.php
  6. Windows 系统封装
  7. 【一牛鸣】大盘将持续震荡9.13
  8. 使用Vue获取外网ip地址
  9. phalapi可以依赖注入么_3.2 PhalApi 配置
  10. 用场景应用™玩转#冰桶挑战#