Spaces:
Sleeping
A newer version of the Gradio SDK is available:
5.23.3
模型配置
_C.MODEL.LOAD_PROPOSALS = False
: 设置是否加载预定义的提案。这决定了在训练或推断期间是否需要加载预生成的提案。_C.MODEL.MASK_ON = False
: 指定是否应该启用掩膜预测。如果为True
,则模型将生成对象掩膜。_C.MODEL.KEYPOINT_ON = False
: 指定是否启用关键点检测。如果设置为True
,则模型将进行关键点的预测。_C.MODEL.DEVICE = "cuda"
: 指定模型在哪个设备上运行,这里设定为CUDA
,即使用 GPU 进行加速。_C.MODEL.META_ARCHITECTURE = "GeneralizedRCNN"
: 指定模型的元架构,这里使用通用的 RCNN 架构。_C.MODEL.WEIGHTS = ""
: 指定加载预训练权重的路径。你可以设置一个文件路径或者 URL,比如模型动物园(model zoo)中的权重。_C.MODEL.PIXEL_MEAN = [103.530, 116.280, 123.675]
: 图像像素均值,用于图像归一化。这些值是根据 ImageNet 数据集的平均像素值计算的。_C.MODEL.PIXEL_STD = [1.0, 1.0, 1.0]
: 图像像素标准差,用于图像归一化。这些值被设置为1.0
,这是因为在某些预训练模型中,标准差已经被吸收到了权重中,所以这里设置为1.0
。
输入配置
_C.INPUT.MIN_SIZE_TRAIN = (800,)
: 训练期间图像最小边的大小。这里设置为(800,)
表示图像将被调整为最小边至少为 800 像素。_C.INPUT.MIN_SIZE_TRAIN_SAMPLING = "choice"
: 训练期间最小边大小的采样方式。这里设置为choice
,表示可以从INPUT.MIN_SIZE_TRAIN
中选择一个值进行采样。_C.INPUT.MAX_SIZE_TRAIN = 1333
: 训练期间图像最大边的大小。图像将调整为最大边不超过 1333 像素。_C.INPUT.MIN_SIZE_TEST = 800
: 测试期间图像的最小边大小。设置为 800 表示测试时图像将被调整为最小边至少为 800 像素。_C.INPUT.MAX_SIZE_TEST = 1333
: 测试期间图像的最大边大小。图像将调整为最大边不超过 1333 像素。_C.INPUT.RANDOM_FLIP = "horizontal"
: 数据增强过程中图像翻转的方式。这里设置为horizontal
表示训练时可以随机水平翻转图像。_C.INPUT.CROP.ENABLED = False
: 是否启用数据增强中的裁剪操作。默认为False
,表示不使用裁剪。_C.INPUT.CROP.TYPE = "relative_range"
: 裁剪操作的类型。这里设置为relative_range
,表示裁剪尺寸相对于原始图像尺寸的比例范围。_C.INPUT.CROP.SIZE = [0.9, 0.9]
: 裁剪操作的尺寸设置。如果CROP.TYPE
是relative_range
,则表示裁剪尺寸相对于原始图像尺寸的比例范围。_C.INPUT.FORMAT = "BGR"
: 图像输入格式。这里设置为BGR
,表示图像使用 BGR 格式,但在内部将会转换为 RGB。_C.INPUT.MASK_FORMAT = "polygon"
: 模型使用的真值掩码格式。这里设置为polygon
,表示模型将使用多边形表示掩码。
数据配置
_C.DATASETS.TRAIN = ()
: 训练时要使用的数据集名称列表,这些数据集必须在 DatasetCatalog 中注册。训练过程将合并并使用这些数据集中的样本作为训练数据。_C.DATASETS.PROPOSAL_FILES_TRAIN = ()
: 训练时用于预先计算的提议文件列表,这些文件必须与DATASETS.TRAIN
中列出的数据集一致。_C.DATASETS.PRECOMPUTED_PROPOSAL_TOPK_TRAIN = 2000
: 训练过程中保留的预先计算提议的最高分数的数量。_C.DATASETS.TEST = ()
: 测试时要使用的数据集名称列表,这些数据集必须在 DatasetCatalog 中注册。_C.DATASETS.PROPOSAL_FILES_TEST = ()
: 测试时用于预先计算的提议文件列表,这些文件必须与DATASETS.TEST
中列出的数据集一致。_C.DATASETS.PRECOMPUTED_PROPOSAL_TOPK_TEST = 1000
: 测试过程中保留的预先计算提议的最高分数的数量。
数据加载配置
_C.DATALOADER.NUM_WORKERS = 4
: 数据加载器使用的数据加载线程数。_C.DATALOADER.ASPECT_RATIO_GROUPING = True
: 如果为True
,则每个批次应仅包含宽高比兼容的图像。这样可以将纵向图像分组在一起,横向图像不会与纵向图像混合在同一批次中。_C.DATALOADER.SAMPLER_TRAIN = "TrainingSampler"
: 用于训练数据集的采样器的类型,可以是TrainingSampler
或RepeatFactorTrainingSampler
。_C.DATALOADER.REPEAT_THRESHOLD = 0.0
:RepeatFactorTrainingSampler
的重复阈值。_C.DATALOADER.REPEAT_SQRT = True
: 如果为True
,在计算重复因子时会使用平方根。_C.DATALOADER.FILTER_EMPTY_ANNOTATIONS = True
: 如果为True
,在处理具有实例注释的数据集时,训练数据加载器将过滤掉没有关联注释的图像。
主干配置
_C.MODEL.BACKBONE.NAME = "build_resnet_backbone"
: 指定模型主干的名称,这里使用了build_resnet_backbone
,表示构建一个 ResNet 主干。_C.MODEL.BACKBONE.FREEZE_AT = 2
: 冻结模型主干的前几个阶段,使其不进行训练。在 ResNet 中,共有 5 个阶段,第一个阶段是一个卷积层,后续阶段是一组组残差块。设置为2
表示冻结前两个阶段,即冻结卷积层和第一个组的残差块,而后面的阶段将参与训练过程。
FPN 多尺度特征提取
_C.MODEL.FPN.IN_FEATURES
: 这是用于 FPN 的输入特征图的名称列表。这些特征图通常是来自底层网络的不同层级的特征,具有连续的对数级别的步长(strides)。例如,["res2", "res3", "res4", "res5"]
表示从底层到高层的特征图名称列表。_C.MODEL.FPN.OUT_CHANNELS
: FPN 输出的特征通道数。这指定了 FPN 输出特征图的通道数,通常为256
。_C.MODEL.FPN.NORM
: FPN 中特征融合过程中使用的归一化方式。可以选择不使用归一化 (""
) 或使用 Group Normalization ("GN"
)。_C.MODEL.FPN.FUSE_TYPE
: FPN 中特征融合的方式。可以选择"sum"
或"avg"
,分别表示特征融合使用求和或求平均的方式。
提案生成器配置:目标提案或候选框
_C.MODEL.PROPOSAL_GENERATOR.NAME
: 指定了使用的提案生成器的名称。目前支持的选项有 "RPN"、"RRPN" 和 "PrecomputedProposals"。这些生成器用于在目标检测模型中生成候选提案。_C.MODEL.PROPOSAL_GENERATOR.MIN_SIZE
: 指定了生成的提案的高度和宽度需要大于的最小尺寸阈值。这个阈值通常是在训练或推理期间使用的尺度。设置为0
表示没有最小尺寸限制。
锚点生成:用于在目标检测模型中生成锚点,这些锚点是用于生成候选提案的基础
_C.MODEL.ANCHOR_GENERATOR.NAME
: 指定了使用的锚点生成器的名称,可以是注册在ANCHOR_GENERATOR
注册表中的任何名称。_C.MODEL.ANCHOR_GENERATOR.SIZES
: 指定了生成锚点的大小(面积的平方根)列表,以绝对像素为单位相对于网络输入。格式为list[list[float]]
,其中SIZES[i]
指定了用于IN_FEATURES[i]
的尺寸列表。len(SIZES)
必须等于len(IN_FEATURES)
或为 1。当len(SIZES) == 1
时,SIZES[0]
将用于所有IN_FEATURES
。_C.MODEL.ANCHOR_GENERATOR.ASPECT_RATIOS
: 指定了用于生成锚点的不同长宽比列表。对于给定的SIZES
中的每个面积,通过锚点生成器生成具有不同长宽比的锚点。格式为list[list[float]]
,其中ASPECT_RATIOS[i]
指定了用于IN_FEATURES[i]
的长宽比列表。len(ASPECT_RATIOS)
==len(IN_FEATURES)
必须成立,或者len(ASPECT_RATIOS) == 1
,并且使用ASPECT_RATIOS[0]
列表作为所有IN_FEATURES
的长宽比。_C.MODEL.ANCHOR_GENERATOR.ANGLES
: 指定了生成锚点时考虑的角度列表(以度为单位)。格式为list[list[float]]
,其中ANGLES[i]
指定了用于IN_FEATURES[i]
的角度列表。_C.MODEL.ANCHOR_GENERATOR.OFFSET
: 指定了第一个锚点中心与图像左上角之间的相对偏移量,取值范围为[0, 1)
。推荐使用0.5
,表示半个步长。这个值预计不会影响模型的准确性。
RPN (Region Proposal Network) 选项
MODEL.RPN.HEAD_NAME
: RPN头部的名称,用于RPN_HEAD_REGISTRY
。MODEL.RPN.IN_FEATURES
: RPN使用的输入特征图名称列表。MODEL.RPN.BOUNDARY_THRESH
: 移除超出图像边界的RPN锚点的阈值。MODEL.RPN.IOU_THRESHOLDS
: RPN正负样本的IoU重叠阈值。MODEL.RPN.IOU_LABELS
: 每个IoU阈值对应的标签。MODEL.RPN.BATCH_SIZE_PER_IMAGE
: 每个图像用于训练RPN的候选区域数。MODEL.RPN.POSITIVE_FRACTION
: 前景样本的比例。MODEL.RPN.BBOX_REG_LOSS_TYPE
: 边界框回归损失类型。MODEL.RPN.BBOX_REG_LOSS_WEIGHT
: 边界框回归损失权重。MODEL.RPN.BBOX_REG_WEIGHTS
: 归一化RPN锚点回归目标的权重。MODEL.RPN.SMOOTH_L1_BETA
: 平滑L1损失的转折点。MODEL.RPN.PRE_NMS_TOPK_TRAIN/TEST
: NMS前保留的topk候选区域数。MODEL.RPN.POST_NMS_TOPK_TRAIN/TEST
: NMS后保留的topk候选区域数。MODEL.RPN.NMS_THRESH
: NMS阈值。MODEL.RPN.CONV_DIMS
: RPN卷积维度。
ROI HEADS (Region of Interest Heads) 选项
MODEL.ROI_HEADS.NAME
: ROI heads的名称。MODEL.ROI_HEADS.NUM_CLASSES
: 前景类别数。MODEL.ROI_HEADS.IN_FEATURES
: ROI heads使用的输入特征图名称列表。MODEL.ROI_HEADS.IOU_THRESHOLDS
: RoI被视为背景或前景的IoU重叠阈值。MODEL.ROI_HEADS.IOU_LABELS
: 每个IoU阈值对应的标签。MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE
: 每个图像用于训练ROI heads的RoI minibatch大小。MODEL.ROI_HEADS.POSITIVE_FRACTION
: 前景RoI的比例。MODEL.ROI_HEADS.SCORE_THRESH_TEST
: 测试阶段使用的最小分数阈值。MODEL.ROI_HEADS.NMS_THRESH_TEST
: 非最大抑制 (NMS) 阈值。MODEL.ROI_HEADS.PROPOSAL_APPEND_GT
: 是否在采样RoIs之前使用ground-truth boxes扩充proposals。
ROI box head : 对感兴趣区域的分类和定位
C.MODEL.ROI_BOX_HEAD.NAME:ROI Box Head 的名称,通常会根据具体的模型选择对应的 ROI Box Head 类型,比如 FastRCNNConvFCHead。
C.MODEL.ROI_BOX_HEAD.BBOX_REG_LOSS_TYPE:边界框回归损失函数的类型,常见的选项包括 "smooth_l1"、"giou"、"diou" 和 "ciou",用于衡量预测边界框与真实边界框之间的差异。
C.MODEL.ROI_BOX_HEAD.BBOX_REG_LOSS_WEIGHT:边界框回归损失的权重,用于平衡边界框回归损失与其他损失之间的梯度大小。
C.MODEL.ROI_BOX_HEAD.BBOX_REG_WEIGHTS:用于归一化边界框回归目标的默认权重,这些权重被经验性地选择,以使得目标具有近似单位方差。
C.MODEL.ROI_BOX_HEAD.SMOOTH_L1_BETA:平滑L1损失与L2损失之间的过渡点。设置为0.0可使损失简单地成为L1损失。
C.MODEL.ROI_BOX_HEAD.POOLER_RESOLUTION 和 C.MODEL.ROI_BOX_HEAD.POOLER_SAMPLING_RATIO:感兴趣区域(RoI)的特征池化配置,决定了对RoI执行特征提取的分辨率和采样比例。
C.MODEL.ROI_BOX_HEAD.FC_DIM 和 C.MODEL.ROI_BOX_HEAD.CONV_DIM:RoI Box Head 中全连接层和卷积层的维度。
C.MODEL.ROI_BOX_HEAD.NORM:卷积层的归一化方法,可选的归一化方法包括 "GN"(组归一化)和 "SyncBN"(同步批归一化)。
C.MODEL.ROI_BOX_HEAD.CLS_AGNOSTIC_BBOX_REG:是否使用类别无关的边界框回归。
C.MODEL.ROI_BOX_HEAD.TRAIN_ON_PRED_BOXES:是否使用由RoI Box Head预测的边界框而不是提议框(proposal boxes)来训练RoI头。
Cascaded Box Head:
C.MODEL.ROI_BOX_CASCADE_HEAD.BBOX_REG_WEIGHTS:用于级联边界框(cascade bounding boxes)的回归权重,定义了级联阶段中每个阶段的边界框回归权重。在级联目标检测模型中,通常会通过级联多个阶段来逐步提升边界框预测的精度。
C.MODEL.ROI_BOX_CASCADE_HEAD.IOUS:级联目标检测模型中每个阶段的 IoU(交并比)阈值,用于决定是否将预测的边界框传递到下一个级联阶段。
Mask head
- NAME: 指定了 ROI Mask Head 的类型,这里是 "MaskRCNNConvUpsampleHead"。
- POOLER_RESOLUTION: RoI pooling 的输出分辨率。
- POOLER_SAMPLING_RATIO: RoI pooling 的采样比例。
- NUM_CONV: 在掩膜头部中使用的卷积层数量。
- CONV_DIM: 卷积层的通道数。
- NORM: 卷积层的归一化方法,可以选择 "" (无归一化), "GN" (组归一化), "SyncBN" (同步批归一化)。
- CLS_AGNOSTIC_MASK: 是否对掩膜预测使用类别无关模式。
- POOLER_TYPE: 应用于每个 RoI 的特征图的池化操作类型,这里是 "ROIAlignV2"。
ROI Keypoint Hea
- NAME: 指定了 ROI Keypoint Head 的类型,这里是 "KRCNNConvDeconvUpsampleHead"。
- POOLER_RESOLUTION: RoI pooling 的输出分辨率。
- POOLER_SAMPLING_RATIO: RoI pooling 的采样比例。
- CONV_DIMS: 在头部中使用的卷积层的通道数,这里设置为一个长度为 8 的元组,每个元素为 512。
- NUM_KEYPOINTS: COCO 数据集中的关键点数量,这里是 17 个。
- MIN_KEYPOINTS_PER_IMAGE: 训练时排除关键点太少(或没有)的图像。
- NORMALIZE_LOSS_BY_VISIBLE_KEYPOINTS: 如果为 True,则在计算关键点损失时按可见关键点的总数归一化。
- LOSS_WEIGHT: 关键点损失的多任务权重。
- POOLER_TYPE: 应用于每个 RoI 的特征图的池化操作类型,这里是 "ROIAlignV2"。
语义分割头部
SEM_SEG_HEAD.NAME
: 指定了语义分割头部的类型为 "SemSegFPNHead"。SEM_SEG_HEAD.IN_FEATURES
: 指定用于语义分割头部的输入特征图列表,这里包括了多个特征图 ["p2", "p3", "p4", "p5"]。SEM_SEG_HEAD.IGNORE_VALUE
: 语义分割标签中被忽略的值,对应的像素不计算损失,这里设定为 255。SEM_SEG_HEAD.NUM_CLASSES
: 语义分割任务中的类别数量,这里设定为 54 类。SEM_SEG_HEAD.CONVS_DIM
: 语义-FPN 头部内部 3x3 卷积层的通道数,设定为 128。SEM_SEG_HEAD.COMMON_STRIDE
: 语义-FPN 头部输出上采样到的公共步长,设定为 4。SEM_SEG_HEAD.NORM
: 卷积层的归一化方法,这里使用了 "GN"(组归一化)。SEM_SEG_HEAD.LOSS_WEIGHT
: 语义分割任务的损失权重,设定为 1.0。
全景分割输出结果合并
PANOPTIC_FPN.INSTANCE_LOSS_WEIGHT
: 所有实例检测/分割头部的损失权重,设定为 1.0。PANOPTIC_FPN.COMBINE.OVERLAP_THRESH
: 全景分割输出结果合并时的重叠阈值,设定为 0.5。PANOPTIC_FPN.COMBINE.STUFF_AREA_LIMIT
: 合并操作中用于定义杂项区域的面积限制,设定为 4096。PANOPTIC_FPN.COMBINE.INSTANCES_CONFIDENCE_THRESH
: 合并实例时的置信度阈值,设定为 0.5。
RetinaNet 参数
- NUM_CLASSES: 前景类别数量,这里设定为 80 类。
- IN_FEATURES: RetinaNet 使用的特征图列表,包括了多个特征图 ["p3", "p4", "p5", "p6", "p7"]。
- NUM_CONVS: 分类和边界框 tower 中使用的卷积层数量,不包括最后用于 logits 的卷积层。
- IOU_THRESHOLDS: 用于标记 anchor 的 IoU 重叠阈值,设定为 [0.4, 0.5]。
- IOU_LABELS: 每个 anchor 的标签类型,设定为 [0, -1, 1]。
- PRIOR_PROB: 训练开始时用于设置分类器 subnet logits 层偏置的先验概率,用于处理类别不平衡问题。
- SCORE_THRESH_TEST: 推断时分类分数的阈值,只有得分 > 0.05 的 anchor 会被考虑用于推断。
- TOPK_CANDIDATES_TEST: NMS 之前保留的 topk 候选框数量,设定为 1000。
- NMS_THRESH_TEST: NMS 阈值,设定为 0.5。
- BBOX_REG_WEIGHTS: 用于归一化 RetinaNet 边界框回归目标的权重。
- FOCAL_LOSS_GAMMA: Focal 损失函数的 gamma 参数,设定为 2.0。
- FOCAL_LOSS_ALPHA: Focal 损失函数的 alpha 参数,设定为 0.25。
- SMOOTH_L1_LOSS_BETA: Smooth L1 损失函数的 beta 参数,设定为 0.1。
- BBOX_REG_LOSS_TYPE: 边界框回归损失的类型,这里使用 "smooth_l1"。
- NORM: 卷积层的归一化方法,这里为空字符串 ""。
ResNe[X]t 参数
- DEPTH: ResNet 的深度,这里设定为 50。
- OUT_FEATURES: ResNet 输出的特征图名称列表,这里设定为 ["res4"]。
- NUM_GROUPS: ResNeXt 中使用的分组数量,这里为 1。
- NORM: 卷积层的归一化方法,这里使用 "FrozenBN"。
- WIDTH_PER_GROUP: 每个分组的基准宽度。
- STRIDE_IN_1X1: 是否将 stride 2 的卷积放置在 1x1 过滤器上,这里设定为 True。
- RES5_DILATION: 在 "res5" 阶段应用的空洞卷积率,设定为 1。
- RES2_OUT_CHANNELS: res2 阶段的输出通道数,设定为 256。
- STEM_OUT_CHANNELS: 网络的初始卷积阶段的输出通道数,设定为 64。
- DEFORM_ON_PER_STAGE: 是否在各个阶段应用可变形卷积。
- DEFORM_MODULATED: 是否使用调制可变形卷积。
- DEFORM_NUM_GROUPS: 可变形卷积中的分组数量。
学习率调度器
- LR_SCHEDULER_NAME: 学习率调度器的名称,可以选择
WarmupMultiStepLR
或WarmupCosineLR
。 - MAX_ITER: 训练的最大迭代次数。
- BASE_LR: 初始学习率。
- BASE_LR_END: 仅用于
WarmupCosineLR
,表示结束时的学习率。 - MOMENTUM: 动量参数。
- WEIGHT_DECAY: 权重衰减参数,应用于参数归一化层的权重。
- WEIGHT_DECAY_NORM: 用于归一化层参数的额外权重衰减。
- GAMMA: 每经过一定迭代数降低学习率的倍数。
- STEPS: 定义学习率下降的迭代步骤。
- NUM_DECAYS: 在
WarmupStepWithFixedGammaLR
调度中学习率衰减的次数。 - WARMUP_FACTOR: 预热期间的学习率倍数。
- WARMUP_ITERS: 预热迭代次数。
- WARMUP_METHOD: 预热学习率的方法,可以选择
linear
等。 - RESCALE_INTERVAL: 预热后是否重新调整学习率计划的间隔。
检查点和批次
- CHECKPOINT_PERIOD: 每隔一定迭代周期保存一次模型检查点。
- IMS_PER_BATCH: 每个批次的图像数量,也是每次迭代的训练图像数量。
硬件和并行
- REFERENCE_WORLD_SIZE: 训练使用的 GPU 数量,用于自动调整相关配置。
偏置和学习率
- BIAS_LR_FACTOR: 偏置学习率的缩放因子。
- WEIGHT_DECAY_BIAS: 偏置参数的额外权重衰减。
梯度裁剪
- CLIP_GRADIENTS: 是否开启梯度裁剪。
- CLIP_TYPE: 梯度裁剪的类型,可以选择
value
或norm
。 - CLIP_VALUE: 最大的梯度绝对值。
- NORM_TYPE: L-p 范数中的 p 值,用于
norm
类型的梯度裁剪。
- CLIP_TYPE: 梯度裁剪的类型,可以选择
自动混合精度训练
- AMP.ENABLED: 是否开启自动混合精度训练。
测试和评估参数
EXPECTED_RESULTS: 用于端到端测试以验证预期精度的指标列表。每个条目是一个列表,包含
[task, metric, value, tolerance]
,例如['bbox', 'AP', 38.5, 0.2]
。EVAL_PERIOD: 在训练过程中评估模型的周期(以步数为单位)。设置为 0 表示禁用评估。
KEYPOINT_OKS_SIGMAS: 用于计算关键点 OKS 的 sigmas 列表。如果为空,则使用 COCO 中的默认值。否则,应该是与
ROI_KEYPOINT_HEAD.NUM_KEYPOINTS
长度相同的浮点数列表。DETECTIONS_PER_IMAGE: 推断期间每个图像返回的最大检测数。基于 COCO 数据集的限制,默认为 100。
AUG: 控制测试阶段的数据增强设置。
- ENABLED: 是否启用数据增强。
- MIN_SIZES: 数据增强的最小尺寸列表。
- MAX_SIZE: 数据增强的最大尺寸。
- FLIP: 是否在测试期间进行水平翻转。
PRECISE_BN: 控制测试阶段是否启用精确的批量归一化计算。
- ENABLED: 是否启用精确的批量归一化。
- NUM_ITER: 进行精确批量归一化计算的迭代次数。
其他
- OUTPUT_DIR: 输出文件的保存目录。
- SEED: 随机数种子,用于提高可重现性。
- CUDNN_BENCHMARK: 是否启用 cuDNN 加速优化。
- VIS_PERIOD: 训练时进行可视化的周期。