资讯详情

MMD整体构建流程—训练核心组件

MMD-核心组件的训练

Backbone

img

作用是特征提取

具体见文件:mmdet/models/backbones

骨架网络:

__all__ = [     'RegNet', 'ResNet', 'ResNetV1d', 'ResNeXt', 'SSDVGG', 'HRNet',     'MobileNetV2', 'Res2Net', 'HourglassNet', 'DetectoRS_ResNet',     'DetectoRS_ResNeXt', 'Darknet', 'ResNeSt', 'TridentResNet', 'CSPDarknet',     'SwinTransformer', 'PyramidVisionTransformer',     'PyramidVisionTransformerV2', 'EfficientNet' ] 

上述网络可以继承,然后通过注册机制注册使用:

# 骨架预训练权重路径 pretrained='torchvision://resnet50', backbone=dict(     type='ResNet', # 骨架类名,后面的参数都是该类的初始化参数     depth=50,     num_stages=4,     out_indices=(0, 1, 2, 3),     frozen_stages=1,     norm_cfg=dict(type='BN', requires_grad=True),      norm_eval=True,     style='pytorch'), 

Neck

认为是 backbone 和 head 主要负责连接层 backbone 高效地整合和增强输入的特征,可以整合输入的单尺度或多尺度特征,增强输出等

具体见文件:mmdet/models/necks

已经实现的neck:

__all__ = [
    'FPN', 'BFP', 'ChannelMapper', 'HRFPN', 'NASFPN', 'FPN_CARAFE', 'PAFPN',
    'NASFCOS_FPN', 'RFP', 'YOLOV3Neck', 'FPG', 'DilatedEncoder',
    'CTResNetNeck', 'SSDNeck', 'YOLOXPAFPN', 'DyHead'
]

最常用的FPN的典型用法:

neck=dict(
    type='FPN',
    in_channels=[256, 512, 1024, 2048], # 骨架多尺度特征图输出通道
    out_channels=256, # 增强后通道输出
    num_outs=5), # 输出num_outs个多尺度特征图

Head

目标检测算法输出一般包括分类和框坐标回归两个分支,不同算法 head 模块复杂程度不一样,灵活度比较高

已经实现的dense_heads

__all__ = [
    'AnchorFreeHead', 'AnchorHead', 'GuidedAnchorHead', 'FeatureAdaption',
    'RPNHead', 'GARPNHead', 'RetinaHead', 'RetinaSepBNHead', 'GARetinaHead',
    'SSDHead', 'FCOSHead', 'RepPointsHead', 'FoveaHead',
    'FreeAnchorRetinaHead', 'ATSSHead', 'FSAFHead', 'NASFCOSHead',
    'PISARetinaHead', 'PISASSDHead', 'GFLHead', 'CornerHead', 'YOLACTHead',
    'YOLACTSegmHead', 'YOLACTProtonet', 'YOLOV3Head', 'PAAHead',
    'SABLRetinaHead', 'CentripetalHead', 'VFNetHead', 'StageCascadeRPNHead',
    'CascadeRPNHead', 'EmbeddingRPNHead', 'LDHead', 'CascadeRPNHead',
    'AutoAssignHead', 'DETRHead', 'YOLOFHead', 'DeformableDETRHead',
    'SOLOHead', 'DecoupledSOLOHead', 'CenterNetHead', 'YOLOXHead',
    'DecoupledSOLOLightHead', 'LADHead', 'TOODHead', 'MaskFormerHead',
    'Mask2FormerHead', 'SOLOV2Head', 'DDODHead'
]

Enhance

即插即用、能够对特征进行增强的模块,其具体代码可以通过 dict 形式注册到 backbone、neck 和 head 中


BBox Assigner

正负样本属性分配模块作用是进行正负样本定义或者正负样本分配(可能也包括忽略样本定义)

正样本就是常说的前景样本(可以是任何类别),负样本就是背景样本

对应的代码在mmdet/core/bbox/assigners

__all__ = [
    'BaseAssigner', 'MaxIoUAssigner', 'ApproxMaxIoUAssigner', 'AssignResult',
    'PointAssigner', 'ATSSAssigner', 'CenterRegionAssigner', 'GridAssigner',
    'HungarianAssigner', 'RegionAssigner', 'UniformAssigner', 'SimOTAAssigner',
    'TaskAlignedAssigner', 'MaskHungarianAssigner'
]

BBox Sampler

确定每个样本的正负属性后,可能还需要进行样本平衡操作,对前面定义的正负样本不平衡进行采样,力争克服该问题

对应的代码在mmdet/core/bbox/samplers中

__all__ = [
    'BaseSampler', 'PseudoSampler', 'RandomSampler',
    'InstanceBalancedPosSampler', 'IoUBalancedNegSampler', 'CombinedSampler',
    'OHEMSampler', 'SamplingResult', 'ScoreHLRSampler', 'MaskPseudoSampler',
    'MaskSamplingResult'
]

BBox Encoder

收敛和平衡多个 loss,bbox 编码阶段对应的是对正样本的 gt bbox 采用某种编码变换(反操作就是 bbox 解码)

最简单的编码:gt bbox 除以图片宽高进行归一化以平衡分类和回归分支

对应的代码在mmdet/core/bbox/coder中

__all__ = [
    'BaseBBoxCoder', 'PseudoBBoxCoder', 'DeltaXYWHBBoxCoder',
    'LegacyDeltaXYWHBBoxCoder', 'TBLRBBoxCoder', 'YOLOBBoxCoder',
    'BucketingBBoxCoder', 'DistancePointBBoxCoder'
]

Loss

对网络 head 输出的预测值和 bbox encoder 得到的 targets 进行梯度下降迭代训练

对应的代码在mmdet/models/losses中

__all__ = [
    'accuracy', 'Accuracy', 'cross_entropy', 'binary_cross_entropy',
    'mask_cross_entropy', 'CrossEntropyLoss', 'sigmoid_focal_loss',
    'FocalLoss', 'smooth_l1_loss', 'SmoothL1Loss', 'balanced_l1_loss',
    'BalancedL1Loss', 'mse_loss', 'MSELoss', 'iou_loss', 'bounded_iou_loss',
    'IoULoss', 'BoundedIoULoss', 'GIoULoss', 'DIoULoss', 'CIoULoss', 'GHMC',
    'GHMR', 'reduce_loss', 'weight_reduce_loss', 'weighted_loss', 'L1Loss',
    'l1_loss', 'isr_p', 'carl_loss', 'AssociativeEmbeddingLoss',
    'GaussianFocalLoss', 'QualityFocalLoss', 'DistributionFocalLoss',
    'VarifocalLoss', 'KnowledgeDistillationKLDivLoss', 'SeesawLoss', 'DiceLoss'
]

Training tricks

tributionFocalLoss’, ‘VarifocalLoss’, ‘KnowledgeDistillationKLDivLoss’, ‘SeesawLoss’, ‘DiceLoss’ ]


------

##### Training tricks

[外链图片转存中...(img-XcFkTRNf-1657205037743)]

> 调参很大一部分工作都是在设置这部分超参

标签: 贴片二极管bfp

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台