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

相关文章

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

[数据集][目标检测]智慧农业草莓叶子病虫害检测数据集VOC+YOLO格式4040张9类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4040 标注数量(xml文件个数):4040 标注数量(txt文件个数):4040 标注类别数:9 标注类别名称:["acalcerosis","fertilizer","flower","fruit","grey

Centos9 网卡配置文件

1、Centos stream 9 网络介结 Centos以前版本,NetworkManage以ifcfg格式存储网络配置文件在/etc/sysconfig/networkscripts/目录中。但是,Centos steam 9现已弃用ifcfg格式,默认情况下,NetworkManage不再创建此格式的新配置文件。从Centos steam 9开始采用密钥文件格式(基于INI文件),Netw