首页 > 其他分享 >目标检测框架MMDetection训练自定义数据集实验记录

目标检测框架MMDetection训练自定义数据集实验记录

时间:2023-09-30 21:02:38浏览次数:46  
标签:文件 定义数据 框架 py mmdet 训练 dict MMDetection type


在上一篇博文中,博主完成了MMDetection框架的环境部署与推理过程,下面进行该框架的训练过程,训练的入口文件为tools/train.py,我们需要配置的内容如下:

修改Train.py文件

确定自己要用的模型

parser.add_argument('--config',default="/home/ubuntu/programs/mmdetection/configs/faster_rcnn/faster-rcnn_r50_fpn_2x_coco.py", help='train config file path')
parser.add_argument('--work-dir',default="output/", help='the dir to save logs and models')

首先是指明要训练模型的配置文件,这里博主使用的是Faster-RCNN,该模型的骨干网络为ResNet50,使用的是COCO数据集,随后指明保存的路径。
此外,我们可以指定预训练模型,即指定resume参数,由于博主使用的是自制数据集,直接使用其权重模型会报错,所以我们就直接从头开始训练。

自定义数据集

博主使用的是自定义数据集,那么就需要修改几个内容:
首先是数据集的配置,修改mmdet文件下的datasets/coco.py:

目标检测框架MMDetection训练自定义数据集实验记录_计算机视觉

随后修改mmdet/evaluation/functional/下的class_names.py:

def coco_classes() -> list:
    """Class names of COCO."""
    return [
        'pedestrains'
    ]

这里需要一提的是,在MMdetection文件下有一个mmdet文件,而我们配置的环境中也有一个mmdet文件,默认是使用系统里的文件的,因此博主先前一直是修改的mmdetetcion里面的mmdet文件,这会报错:

data_bytes = np.concatenate(data_list) File "<__array_function__ internals>", line 6, in concatenate

这时就要修改环境中mmdet文件了,当然也可以把这个包删掉,但对博主而言无所谓,因为博主并不打算在上面修改代码。该包的路径:

/home/ubuntu/.conda/envs/mmdet/lib/python3.7/site-packages/mmdet/

模型修改

完成上面的配置后,只需要再修改faster-rcnn中的类别数目即可,默认是80,我们改为1:

目标检测框架MMDetection训练自定义数据集实验记录_人工智能_02

训练设置

MMDetection的训练参数设置需要主要是调整scheduler.py文件,其中max_epochs为训练的epoch次数,有时也会用total_epoch,随后便是val_interval参数,这个参数是比较重要的,其含义为每多少个epoch次数进行验证,默认为1,每次验证之后便会保留一次权重文件,之所以要注意的原因在于如果训练次数较多,那么就有可能保留很多权重文件,这些文件可能要占用大量的磁盘空间,因此,这个参数要谨慎设置,此外,该参数也关系到模型的学习情况,每次验证都会对参数进行修正,而修正的次数过少,那么结果也可能受影响。

train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=100, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')
# learning rate
param_scheduler = [
    dict(
        type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),
    dict(
        type='MultiStepLR',
        begin=0,
        end=100,
        by_epoch=True,
        milestones=[78, 91],
        gamma=0.1)
]
# optimizer
optim_wrapper = dict(
    type='OptimWrapper',
    optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))

训练开始

随后便可以运行了,完成一个epoch用时大约50分钟,还是可以接受的。不过值得主要的是,使用该框架的显存占用较大,此外,显存占用还有上升趋势。

目标检测框架MMDetection训练自定义数据集实验记录_目标检测_03

GPU占用情况:

目标检测框架MMDetection训练自定义数据集实验记录_人工智能_04


标签:文件,定义数据,框架,py,mmdet,训练,dict,MMDetection,type
From: https://blog.51cto.com/u_15876949/7664967

相关文章

  • 目标检测框架MMDetection推理实验记录
    在进行目标检测算法的学习过程中,需要进行对比实验,这里可以直接使用MMDetection框架来完成,该框架集成了许多现有的目标检测算法,方便我们进行对比实验。环境配置首先是环境配置,先前博主曾经有过相关方面的配置,这里就简要记录一下:创建conda环境:condacreate--nameopenmmlabpython=......
  • FlyUI-WPF框架
    关注我,WPFFlyUI框架作者github地址:https://github.com/AatroxBot/FlyUI.Demo.git码云地址:https://gitee.com/Aatrox1/fly-ui-demo.git......
  • PPT| IBM企业流程框架方法论 P43
    本人从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货.【智能制造数字化咨询】该PPT共43页,由于篇幅有限,以下为部分资料,如需完整原版 方案,点击关注下方。当企业进行IT系统建设或数据资产盘点时,一般......
  • Spring缓存框架使用及原理
    使用maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId>......
  • Java集合框架(部分)
    类图List:有序可重复集合特点1.元素允许重复2.元素有序(元素的顺序就是插入时的顺序)3.元素可以通过索引来访问或者设置{ArrayLIst:底层为数组,查询速度快,增删慢LinkedList:底层是链表,查询速度慢,增删快两者的优缺点,:效率高,线程不安全}Set:无序不可重复集合HashSet:底层为数组,......
  • Go每日一库之184:katana(新一代爬虫框架)
    项目链接https://github.com/projectdiscovery/katana项目简介katana是一个使用golang编写的新一代爬虫框架,支持HTTP和headless抓取网页信息不仅可以作为库集成到Golang项目,还可以通过命令行直接抓取,对于有一些轻量级的抓取任务的开发者配合jq一起使用简直就是福......
  • Go每日一库之146:bbs-go(bbs框架)
    概要bbs-go是一款基于Go语言研发的开源、前后端分离、精美小巧、跨平台的社区系统。初期该项目仅用过学习和交流,开源之后越来越多的小伙伴儿开始喜欢和关注他,这也是我长期升级和维护的动力。bbs-go为前后端分离设计,后端接口服务使用简洁的Go语言进行开发,前端页面使用Vue.js进......
  • Go每日一库之135:Ent(Facebook 开源 Golang 实体框架)
    对于后端开发者来说,一款好用的框架能够大大提升应用的开发效率。为了降低开发者使用TiDB的门槛,方便开发者快速连接到TiDB,我们也在和合作伙伴一起,逐步完善面向主流开发语言和框架的连接支持。近日,Facebook开源的Golang实体框架Ent完成了对TiDB数据库的支持。Ent是......
  • vue前端框架ruoyi介绍
    Ruoyi是一个基于Vue.js和SpringBoot框架构建的开源前后端分离的企业级快速开发平台。它遵循了前后端分离的架构模式,将前端和后端进行解耦,使得系统更加灵活、可扩展和易于维护。Ruoyi的前端部分采用了Vue.js框架,这是一个流行的JavaScript前端框架,专注于构建用户界面。Vue......
  • 在线CAD 的前端框架搭建(网页显示CAD图纸)
    前言DWG格式的图纸是AutoCAD的私有格式,很多用户需要在网页端查看和编辑CAD图纸,传统的方式是企业购买梦想CAD控件的OCX方案,此方案开发时间久且编辑功能丰富,但因新版谷歌浏览器不再支持AcitveX控件,因此更多的用户希望以Html5的方式实现在线CAD功能,今天我们就来讲一下梦想CAD控件的H5......