mmdetection中yolo配置文件的注释

2024-03-13 10:48

本文主要是介绍mmdetection中yolo配置文件的注释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 配置文件的地址在.\configs\yolo\yolov3_d53_mstrain-608_273e_coco.py
  • 有些没有注释的和我猜测的地方请朋友们不吝赐教

在MMDetection中,模型组件基本上分为4种类型。

骨干网:通常是FCN网络,用于提取特征图,例如ResNet。
颈部:骨干和头部之间的部分,例如FPN,ASPP。
头部:用于特定任务的部分,例如bbox预测和蒙版预测。
roi提取器:用于从要素地图中提取要素的部分,例如RoI Align。

_base_ = '../_base_/default_runtime.py'                                     # 猜测可能是继承这个模型的配置
# model settings
model = dict(type='YOLOV3',                                                          # 模型的类型pretrained='open-mmlab://darknet53',                                    # 预训练模型backbone=dict(type='Darknet', depth=53, out_indices=(3, 4, 5)),         # type:backbone的类型,(特征提取骨干网络);depth:backbone的深度;out_indices:输出stage的序号neck=dict(type='YOLOV3Neck',                                                  # 颈部的类型,MMD的颈部就是特征融合层num_scales=3,                                                       # 需要scale的层数in_channels=[1024, 512, 256],                                       # 输入各个scale的通道数out_channels=[512, 256, 128]),                                      # 输出的通道数bbox_head=dict(type='YOLOV3Head',                                                  # 头部的类型,MMD中的头部就是用来预测BBOX的(网上说是全连接层)num_classes=80,                                                     # 需要预测的类的数量in_channels=[512, 256, 128],                                        # 输入的通道数out_channels=[1024, 512, 256],                                      # 输出的通道数anchor_generator=dict(type='YOLOAnchorGenerator',                                     # 先验框的类型base_sizes=[[(116, 90), (156, 198), (373, 326)],                # 先验框的尺寸[(30, 61), (62, 45), (59, 119)],[(10, 13), (16, 30), (33, 23)]],strides=[32, 16, 8]),                                           # 网络输出层相对于输入的缩放步长(来自评论中“demon_soul”这位朋友)bbox_coder=dict(type='YOLOBBoxCoder'),featmap_strides=[32, 16, 8],                                        # (跟上面含义类似,缩放步长)loss_cls=dict(                                                      # 这是YOLO里需要的四个不同LOSStype='CrossEntropyLoss',                                        # Loss函数的类型use_sigmoid=True,                                               # 是否需要SIGMOID函数loss_weight=1.0,                                                # 猜测可能是LOSS的权重(因为有4个不同的LOSS)reduction='sum'),                                               # 四种LOSS相加的意思吧???loss_conf=dict(                                                     # 30到40行同上type='CrossEntropyLoss',use_sigmoid=True,loss_weight=1.0,reduction='sum'),loss_xy=dict(type='CrossEntropyLoss',use_sigmoid=True,loss_weight=2.0,reduction='sum'),loss_wh=dict(type='MSELoss', loss_weight=2.0, reduction='sum')))
# training and testing settings
train_cfg = dict(assigner=dict(type='GridAssigner', pos_iou_thr=0.5, neg_iou_thr=0.5, min_pos_iou=0)) # type:正负样本划分类型;pos_iou_thr:正样本的iou阈值;neg_iou_thr:负样本的iou阈值;min_pos_iou:正样本的iou最小值(低于这个会被忽略)
test_cfg = dict(nms_pre=1000,                                                           # ???min_bbox_size=0,                                                        # BBOX最小尺寸score_thr=0.05,conf_thr=0.005,nms=dict(type='nms', iou_threshold=0.45),max_per_img=100)
# dataset settings
dataset_type = 'CocoDataset'                                                # 数据集类型
data_root = 'data/coco/'                                                    # 数据集目录
img_norm_cfg = dict(mean=[0, 0, 0], std=[255., 255., 255.], to_rgb=True)    # 输入图像初始化,减去均值mean并处以方差std,to_rgb表示将bgr转为rgb
train_pipeline = [dict(type='LoadImageFromFile', to_float32=True),dict(type='LoadAnnotations', with_bbox=True),dict(type='PhotoMetricDistortion'),dict(type='Expand',mean=img_norm_cfg['mean'],to_rgb=img_norm_cfg['to_rgb'],ratio_range=(1, 2)),dict(type='MinIoURandomCrop',min_ious=(0.4, 0.5, 0.6, 0.7, 0.8, 0.9),min_crop_size=0.3),dict(type='Resize', img_scale=[(320, 320), (608, 608)], keep_ratio=True), # 对图像resizedict(type='RandomFlip', flip_ratio=0.5),                                # flip_ratio是图像的随机左右翻转的概率dict(type='Normalize', **img_norm_cfg),                                 # 归一化dict(type='Pad', size_divisor=32),                                      # 猜测是填充灰条    dict(type='DefaultFormatBundle'),dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])            # 猜测是将数据集中的'img', 'gt_bboxes', 'gt_labels'三个信息写入新的文本文件
]
test_pipeline = [dict(type='LoadImageFromFile'),dict(type='MultiScaleFlipAug',img_scale=(608, 608),                                               # 输入图像尺寸,最大边608,最小边608flip=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=8,                                                      # 每个gpu计算的图像数量workers_per_gpu=4,                                                      # 每个gpu分配的线程数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))
# optimizer
optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0005)   # 优化参数,lr为学习率,momentum为动量因子,weight_decay为权重衰减因子
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))           # 梯度均衡参数
# learning policy
# learning policy
lr_config = dict(policy='step',                                                          # 优化器策略warmup='linear',                                                        # 学习率调整的策略,linear是线性调整warmup_iters=2000,  # same as burn-in in darknet                        # 在初始的2000次迭代学习率增加warmup_ratio=0.1,                                                       # 初始学习率step=[218, 246])                                                        # 在第218和246个epoch减低学习率
# runtime settings
total_epochs = 273                                                          # 训练的总epoch数
evaluation = dict(interval=1, metric=['bbox'])                              # 

这篇关于mmdetection中yolo配置文件的注释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804610

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

SpringBoot3使用Jasypt实现加密配置文件

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... 目录一. 使用步骤1. 添加依赖2.配置加密密码3. 加密敏感信息4. 将加密信息存储到配置文件中5

SpringBoot中配置文件pom.xml的使用详解

《SpringBoot中配置文件pom.xml的使用详解》SpringBoot的pom.xml文件是Maven项目的核心配置文件,用于定义项目的依赖、插件、构建配置等信息,下面小编就来和大家详细介绍一... 目录1. 基本结构2. 关键部分详解2.1 <modelVersion>2.2 项目坐标2.3 <p

Python中的输入输出与注释教程

《Python中的输入输出与注释教程》:本文主要介绍Python中的输入输出与注释教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、print 输出功能1. 基础用法2. 多参数输出3. 格式化输出4. 换行控制二、input 输入功能1. 基础用法2. 类

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件

Rust中的注释使用解读

《Rust中的注释使用解读》本文介绍了Rust中的行注释、块注释和文档注释的使用方法,通过示例展示了如何在实际代码中应用这些注释,以提高代码的可读性和可维护性... 目录Rust 中的注释使用指南1. 行注释示例:行注释2. 块注释示例:块注释3. 文档注释示例:文档注释4. 综合示例总结Rust 中的注释

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

spring6+JDK17实现SSM起步配置文件

《spring6+JDK17实现SSM起步配置文件》本文介绍了使用Spring6和JDK17配置SSM(Spring+SpringMVC+MyBatis)框架,文中通过示例代码介绍的非常详细,对大家的... 目录1.配置POM文件2.在resource目录下新建beans.XML文件,用于配置spirng3

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题