configs/base/文件目录下有三个文件夹,datasets:为数据集相关配置文件;models:为一些经典模型配置;schedules:主要是对potimizer和lr,以及runner组件的配置;此外,还有一个default_runtime.py文件。
这里我还是以mmdetection官网第一个训练demo为例。也就是训练KittiTiny数据集。

cfg = Config.fromfile('./configs/faster_rcnn/faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py')

faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py的继承文件:

_base_ = './faster_rcnn_r50_fpn_1x_coco.py'

faster_rcnn_r50_fpn_1x_coco.py的继承文件:

_base_ = ['../_base_/models/faster_rcnn_r50_fpn.py','../_base_/datasets/coco_detection.py','../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

我们先只看和datasets相关的代码

# 对输入图片进行标准化处理的配置,减去mean,除以std,不要将读取的bgr转为rgb排列
img_norm_cfg = dict(mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False)
#train_pipeline 我把它理解为训练数据处理流程
train_pipeline = [dict(type='LoadImageFromFile'),# 首先读取数据dict(type='LoadAnnotations', with_bbox=True),# 读取ann标注文件,默认用于检测,带bbox# 增强,将图片和标注文件都resize,最大尺寸由img_scale给出,resize保持高宽比dict(type='Resize',img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),(1333, 768), (1333, 800)],#img_scale (tuple or list[tuple]): 当multiscale_mode为'range'时,tuple元素个数为2multiscale_mode='value',# 随机选择size为[(1333, 640), (1333, 672), (1333, 704), (1333, 736),(1333, 768), (1333, 800)]keep_ratio=True),dict(type='RandomFlip', flip_ratio=0.5),#定义在transforms.py文件中,实现对图片、bbox的随机水平,垂直,对角线翻转dict(type='Normalize', **img_norm_cfg),#用之前的img_norm_cfg参数进行图像标准化dict(type='Pad', size_divisor=32),#填充图像到固定大小或者是填充到一个能被指定数字整除的尺寸dict(type='DefaultFormatBundle'),#定义在formating.py中,这一步就是把img、bboxes、labels转换为tensor,再转换为DataContainerdict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),#定义在formating.py中,把一些标注信息插入到results['img_metas']
]
#test_pipeline 测试数据处理流程
test_pipeline = [dict(type='LoadImageFromFile'),dict(#在测试集上测试时,必须要用MultiScaleFlipAug!即使不采用多尺度测试,也要用MultiScaleFlipAug。#因为aseDetector.forward_test只接受list[]。并且值得注意的是,若采用了多尺度训练,即num_augs大于1,#那么batch必须为1;若num_augs等于1时,batch可以大于1。type='MultiScaleFlipAug',img_scale=(1333, 800),flip=False,transforms=[dict(type='Resize', keep_ratio=True),dict(type='RandomFlip'),dict(type='Normalize', **img_norm_cfg),dict(type='Pad', size_divisor=32),dict(type='ImageToTensor', keys=['img']),dict(type='Collect', keys=['img']),])
]
#下面是train/val/test用到的不同数据和配置参数
data = dict(train=dict(pipeline=train_pipeline),val=dict(pipeline=test_pipeline),test=dict(pipeline=test_pipeline))

下面是coco_detection.py的代码,faster_rcnn_r50_caffe_fpn_mstrain_1x_coco.py继承了这个文件,并做了更改,大部分参数都相同。

# dataset settings
dataset_type = 'CocoDataset'
data_root = 'data/coco/'
img_norm_cfg = dict(mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [dict(type='LoadImageFromFile'),dict(type='LoadAnnotations', with_bbox=True),dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),dict(type='RandomFlip', flip_ratio=0.5),dict(type='Normalize', **img_norm_cfg),dict(type='Pad', size_divisor=32),dict(type='DefaultFormatBundle'),dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]
test_pipeline = [dict(type='LoadImageFromFile'),dict(type='MultiScaleFlipAug',img_scale=(1333, 800),flip=False,transforms=[dict(type='Resize', keep_ratio=True),dict(type='RandomFlip'),dict(type='Normalize', **img_norm_cfg),dict(type='Pad', size_divisor=32),dict(type='ImageToTensor', keys=['img']),dict(type='Collect', keys=['img']),])
]
data = dict(samples_per_gpu=1,workers_per_gpu=1,train=dict(type=dataset_type,ann_file=data_root + 'annotations/instances_train2017.json',img_prefix=data_root + 'train2017/',pipeline=train_pipeline),val=dict(type=dataset_type,ann_file=data_root + 'annotations/instances_val2017.json',img_prefix=data_root + 'val2017/',pipeline=test_pipeline),test=dict(type=dataset_type,ann_file=data_root + 'annotations/instances_val2017.json',img_prefix=data_root + 'val2017/',pipeline=test_pipeline))
evaluation = dict(interval=1, metric='bbox')

训练数据处理流程:1、导入图片以及标注信息,2、实现对图片、bbox的随机resize,3、实现对图片、bbox的随机水平,垂直,对角线翻转,4、会对图片进行归一化处理,5、填充图像到固定大小或者是填充到一个能被指定数字整除的尺寸6、把img、bboxes、labels转换为tensor,再转换为DataContainer,7、 对DefaultFormatBundle的结果进一步封装,把meta_keys指定的键值对经DataContainer包装后,插入到results[‘img_metas’]。

除了这些数据增强,mmdetection还实现了RandomCrop、CutOut、Mosaic等数据增强策略。

mmdetection - config配置文件之datasets相关推荐

  1. Python中logging.config配置文件解读

    Python中logging.config配置文件解读 下面的函数用于配置logging模块,它们位于logging.config模块中.你可以使用这些函数来配置,也可以在logging或是loggi ...

  2. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

  3. web.config配置文件详解

    一.认识Web.config文件 Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式), ...

  4. 使用ssh config配置文件来管理ssh连接

    我本人其实及其烦使用配置文件这种东西,有时候看到巨大又复杂的配置文件,甚至复杂过代码的时候,总感觉设计配置文件的人有些本末倒置. 但是ssh这个配置文件真的非常简单好用,让我稍微体验了一次配置文件使用 ...

  5. .NET Core 2.0迁移技巧之web.config配置文件

    大家都知道.NET Core现在不再支持原来的web.config配置文件了,取而代之的是json或xml配置文件.官方推荐的项目配置方式是使用appsettings.json配置文件,这对现有一些重 ...

  6. [网络收集]Web.config配置文件详解

    摘录自:http://hi.baidu.com/fanfanwuji/blog/item/a7fd8928d49a7ef098250a06.html 花了点时间整理了一下ASP.NET Web.con ...

  7. 为每一个应用程序池单独设置aspnet.config配置文件

    为每一个应用程序池单独设置aspnet.config配置文件 ASP.NET2.0之后的版本号就在各Framework的根文件夹下提供了一个aspnet.config文件.这个文件用来配置全局的一些信 ...

  8. WPF读写config配置文件

    WPF读写config配置文件单. 1. 在你的工程中,添加app.config文件.文件的内容默认为: 1 <?xml version="1.0" encoding=&qu ...

  9. Winform—C#读写config配置文件

    现在FrameWork2.0以上使用的是:ConfigurationManager或WebConfigurationManager.并且AppSettings属性是只读的,并不支持修改属性值. 一.如 ...

最新文章

  1. GreenPlum学习笔记:基础知识
  2. block关键字的使用
  3. zabbix 监控 redis
  4. python读取文件名写入excel_Python实现读取并写入Excel文件过程解析
  5. 实操《深入浅出React和Redux》第二期—Flux
  6. ksnapshot运行look up error undefined symbol错误解决方案
  7. nginx利用image_filter动态生成缩略图
  8. bigquery 教程_bigquery挑战实验室教程从数据中获取见解
  9. js控制语句练习(回顾)
  10. 互联网日报 | 虎牙与斗鱼官宣合并;国内第四大运营商中国广电成立;拍拍贷完成存量业务清退...
  11. python语言for else和 if else误区
  12. 转:最详细的JavaScript 教程,入门级都能看懂
  13. 傻瓜式解决神舟系电脑rerun占用过高
  14. 涉密计算机用户登录密码多久换一次,涉密计算机口令应根据其密级进行设置并定期更换,秘密级计算机口令更换周期不得超过30天,机密级计算机口令更换周期不得超过10天 - 作业在线问答...
  15. Android 点击换头像(拍照和从相册选择)
  16. WIN7 安装 SQL2000
  17. 机器学习图像特征提取—颜色(RGB、HSV、Lab)特征提取并绘制直方图
  18. Maven 导入 com.sun.javadoc包
  19. C语言中String库函数大全
  20. 【C++新手教程】C++ 循环

热门文章

  1. 塔米狗2022年地方国企名单,总计816家企业,第二批150家
  2. Progressive Minimal Path Method for Segmentation of 2D and 3D Line Structures论文学习
  3. 从头到脚撸一个多人视频聊天 — WebRTC 实战(一)
  4. 原生js日历选择器插件开发实例教程
  5. 微信小程序之滔搏运动
  6. MacOS VSCode配置c++环境
  7. 抢东西用的时间软件_紧急重要四象限软件用哪款?这款时间管理便签软件适合你...
  8. 声呐数据集---处理
  9. 职业高中学计算机高考后能报什么,「新高考」新高考选哪些科目可以报计算机专业?高中生如何提分?...
  10. 电子价签带来的竞争优势