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实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

springboot实现配置文件关键信息加解密

《springboot实现配置文件关键信息加解密》在项目配置文件中常常会配置如数据库连接信息,redis连接信息等,连接密码明文配置在配置文件中会很不安全,所以本文就来聊聊如何使用springboot... 目录前言方案实践1、第一种方案2、第二种方案前言在项目配置文件中常常会配置如数据库连接信息、Red

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

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

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

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

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