MMDETECTION微调模型
在 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微调模型相关推荐
- 谷歌创造ImageNet1K新纪录:性能不佳的微调模型不要扔,求一下平均权重就能提升性能...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 如何最大限度地 ...
- NLP论文解读:无需模板且高效的语言微调模型(下)
©原创作者 | 苏菲 论文题目: Prompt-free and Efficient Language Model Fine-Tuning 论文作者: Rabeeh Karimi Mahabadi 论 ...
- 【深度学习-微调模型】使用Tensorflow Slim fine-tune(微调)模型
本文主要讲解在现有常用模型基础上,如何微调模型,减少训练时间,同时保持模型检测精度. 首先介绍下Slim这个Google公布的图像分类工具包,可在github链接:modules and exampl ...
- 在线部分:werobot服务、主要逻辑服务、句子相关模型服务、BERT中文预训练模型+微调模型(目的:比较两句话text1和text2之间是否有关联)、模型在Flask部署
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...
- TensorFlow 工程实战(一):在TFhub中下载预训练的pb文件,并使用 TF-Hub 库微调模型评估人物年龄
实例描述 有一组照片,每个文件夹的名称为具体的年龄,里面放的是该年纪的人物图片. 微调 TF-Hub 库,让模型学习这些样本,找到其中的规律,可以根据具体人物的图片来评估人物的年龄. 即便是通过人眼来 ...
- 训练自己的ChatGPT-OpenAI 微调模型
OpenAI终于下定决心--正式开放ChatGPT API! ChatGPT API地址:https://platform.openai.com/docs/guides/chat gpt-3.5-tu ...
- Hugging Face实战(NLP实战/Transformer实战/预训练模型/分词器/模型微调/模型自动选择/PyTorch版本/代码逐行解析)下篇之模型训练
模型训练的流程代码是不是特别特别多啊?有的童鞋看过Bert那个源码写的特别特别详细,参数贼多,运行一个模型百八十个参数的. Transformer对NLP的理解是一个大道至简的感觉,Hugging F ...
- 打造自己的图像识别模型2——使用 TensorFlow Slim 微调模型
最近在搞自己的深度学习图像识别模型.这是第二步 本文主要讲解在现有常用模型基础上,如何微调模型,减少训练时间,同时保持模型检测精度. 主要参考书籍<21个项目玩转深度学习:基于TensorFlo ...
- 【mmdetection】模型初始化
mmdetection中的模型初始化 1. Pretrained:加载预训练模型来初始化 2. Constant:用常数初始化模型 mmdetection 中对模型进行初始化源码在 mmcv/cnn/ ...
- 哈工大团队开源医学智能问诊大模型 | 华佗: 基于中文医学知识的LLaMa指令微调模型
原文: CVHub 门头沟学院AI视觉实验室御用公众号 | 学术 | 科研 | 就业 185篇原创内容 公众号 Title: HuaTuo: Tuning LLaMA Model with Chine ...
最新文章
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数011,ocr,字符识别
- turtlebot3安装遇到的问题总结
- 实现-驼峰和下划线的转换 工具类
- Py之terminaltables:terminaltables的简介、安装、使用方法之详细攻略
- postgresql 删除触发器_PostgreSQL:我没有带闪,不讲武德
- leetcode15 3Sum 从数组中找到三个整数,它们的和为0
- kendo-ui学习笔记——题记
- 通过cookie保存并读取用户登录信息实例
- Windows8测试版使用感受
- 上海python工资一般多少-python数据分析师待遇有多少?工资待遇如何?
- JDK8启动时,参数传递过程
- 软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(转载)
- KVM虚拟化平台的基础知识及搭建部署!
- VS code 修改注释颜色的三种方式(总结)
- 后台如何清理软Raid
- 实现企业邮箱登录验证功能
- python---基础知识回顾(三)(面向对象)
- java中 int、char、long各占多少字节数
- 靶机17 GROTESQUE: 3.0.1
- linux肉鸡检测,一台linux肉鸡的简单手工入侵检测过程