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

相关文章

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

Springboot的配置文件及其优先级说明

《Springboot的配置文件及其优先级说明》文章介绍了SpringBoot的配置文件,包括application.properties和application.yml的使用,以及它们的优先级,还讨... 目录配置文件内置配置文件yml与properties的比较优先级比较外置配置文件springboot

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

Springboot主配置文件解析

《Springboot主配置文件解析》SpringBoot主配置文件application.yml支持多种核心值类型,包括字符串、数字、布尔值等,文章详细介绍了Profile环境配置和加载位置,本文... 目录Profile环境配置配置文件加载位置Springboot主配置文件 application.ym

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务