首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Detectron2微调自定义数据和类的对象检测模型?

如何使用Detectron2微调自定义数据和类的对象检测模型?
EN

Stack Overflow用户
提问于 2022-08-25 18:19:05
回答 1查看 298关注 0票数 1

我有一个预先训练的模型权重(如.pth)和它的配置(作为.yaml),我想微调这个模型在我的下游任务。唯一的问题是,我有一个类,而预先训练的模型有5个类,当我用Detectron2对模型进行精细调整时,它给出了所有5个类的结果,而不是我的1个类。我该如何处理这种情况呢?

这正是我所遵循的教程。 --但我不想把我所有5个班的课程训练成thing_classes= ['None','text', 'title', 'list', 'table', 'figure'],我只想在一个班级上训练为text。作者已经回答了,但是这并没有帮助我,因为当我在测试中得到结果时,我得到了所有5个类的结果。

预训练模型权重 预训练的Config模型

我已经将每个实例的'category_id' 设为0 (因为我只有一个类)。

下面是我注册了数据和所有内容的代码,培训没有问题,模型很好地训练

代码语言:javascript
运行
复制
from detectron2.config import get_cfg
from detectron2.engine import DefaultPredictor, DefaultTrainer

!wget -O ./faster_rcnn_R_50_FPN_3x.pth 'https://www.dropbox.com/s/dgy9c10wykk4lq4/model_final.pth?dl=1'

!wget -O ./faster_rcnn_R_50_FPN_3x.yaml 'https://www.dropbox.com/s/f3b12qc4hc0yh4m/config.yml?dl=1'

cfg = get_cfg()
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1 # Just one class predictions

cfg.merge_from_file("./faster_rcnn_R_50_FPN_3x.yaml")
cfg.MODEL.WEIGHTS= './faster_rcnn_R_50_FPN_3x.pth' # layout parser Pre trained weights

cfg.SOLVER.IMS_PER_BATCH = 4
cfg.SOLVER.BASE_LR = 0.0025
cfg.SOLVER.MAX_ITER = 50 #adjust up if val mAP is still rising, adjust down if overfit
cfg.SOLVER.GAMMA = 0.05
cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 4

cfg.DATASETS.TRAIN = (Data_Resister_training,)
trainer = DefaultTrainer(cfg) 
trainer.resume_or_load(resume=False)
trainer.train()
EN

回答 1

Stack Overflow用户

发布于 2022-08-25 19:52:42

不确定这是否会修复它,但请尝试倒转merge_from_file调用和设置的类数:

代码语言:javascript
运行
复制
cfg = get_cfg()
cfg.merge_from_file("./faster_rcnn_R_50_FPN_3x.yaml")
cfg.MODEL.ROI_HEADS.NUM_CLASSES = 1 # Just one class predictions
...

也许这个参数会被覆盖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73492096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档