DensePose(四):config.py

DensePose是在Detectron平台上做的密集姿态估计,此处Detectron的confg.py 文件相比较于原来MR-CNN以及KR-CNN时用的config.py做了一些添加与改进。如果之前对于Detectron比较熟悉,可以直接看 18.DensePose R-CNN options

下面是一些关于config.py写在前面的注释:

"""
Detectron配置系统.

这对于Detectron文件指定默认的配置选项。你不应该变化值在这个文件中。

相反,你应该写一个配置文件(yaml),使用merge_cfg_from_file(yaml_file)
加载和覆盖默认的选项。

大多数工具在工具目录中——cfg选项指定一个覆盖

覆盖的文件和一个可选列表(键,值)对:
- See tools/{train,test}_net.py 的代码示例来使用merge_cfg_from_file
- See configs/*/*.yaml 的示例来编写config文件
Detectron支持很多不同的模型类型,每一种都有很多不同的选择。结果是一组巨大的
配置选项。"""
#import一系列的相关包,此处不赘述
#注意关于__future__的import要写到文件最前面


from detectron.utils.collections import AttrDict
from detectron.utils.io import cache_url
logger = logging.getLogger(__name__)

__C = AttrDict()
# Consumers can get config by:(用户可以获得config通过)
#   from detectron.core.config import cfg
cfg = __C
#避免使用 '.ON' 作为参数配置中的 key.
#因为 yaml 会将其转化为 True. 可使用 'ENABLED' 取代 '.ON'.

1. 训练默认参数

# ---------------------------------------------------------------------------- #
# 训练默认参数
# ---------------------------------------------------------------------------- #
__C.TRAIN = AttrDict()

# 从 .pkl 文件初始化网络权重参数;.pkl 可以是预训练模型.
__C.TRAIN.WEIGHTS = b''

# 训练数据集 Datasets
# 训练数据集列表设定:detectron.datasets.dataset_catalog.datasets()
# 如果设定了多个 datasets,则会在其并集上进行模型训练.
__C.TRAIN.DATASETS = ()

# 训练所采用的缩放尺度 Scales
# 每一个 scale 是图像短边的像素值
# 如果给定了多个 scales 值,则对于每个训练图片随机选取一个 scale,如尺度抖动数据增强scale jitter data augmentation
__C.TRAIN.SCALES = (600, )

# 缩放后输入图片最长边的最大像素值
__C.TRAIN.MAX_SIZE = 1000

# 训练 mini-batch 每张 GPU 的图片数
# 每个 mini-batch 的总图片数 = 每张 GPU 的图片数 * GPUs 数
# Total images per minibatch = TRAIN.IMS_PER_BATCH * NUM_GPUS
__C.TRAIN.IMS_PER_BATCH = 2

# 每张图片的 RoI mini-batch,即每张图片的 RoIs 数.
# 每张训练 mini-batch 中总的 RoIs 数 = 每张图片 mini-batch RoIs 数 * mini-batch 图片数 * GPUs 数
# 典型配置: 512 * 2 * 8 = 8192
# RoI minibatch size *per image* (number of regions of interest [ROIs])
# Total number of RoIs per training minibatch =
#   TRAIN.BATCH_SIZE_PER_IM * TRAIN.IMS_PER_BATCH * NUM_GPUS
__C.TRAIN.BATCH_SIZE_PER_IM = 64

# mini-batch 中被标记为 foreground RoIs(i.e. class > 0) 的目标分数Target fraction 
__C.TRAIN.FG_FRACTION = 0.25

# RoI 的重叠区域大于 FG_THRESH 则被标记为 foreground
__C.TRAIN.FG_THRESH = 0.5

# RoI 的重叠区域在 [LO, HI] 区间内则被标记为 background (i.e. class = 0)
__C.TRAIN.BG_THRESH_HI = 0.5
__C.TRAIN.BG_THRESH_LO = 0.0

# 训练是否水平翻转图片
__C.TRAIN.USE_FLIPPED = True

# 如果 RoI 和 groundtruth box 的重叠区域大于阈值BBOX_THRESH,则(RoI gt_box)对作为边界框 bounding-box 回归训练样本.
__C.TRAIN.BBOX_THRESH = 0.5

# 模型保存周期,即多少次迭代进行一次模型断点保存.
# 需要除以 GPUs 数 NUM_GPUS,e.g., 20000/8 => 2500 iters
__C.TRAIN.SNAPSHOT_ITERS = 20000

# 训练采用指定的 proposals 
# 训练过程中,所有的 proposals 是在 proposal 文件中指定的.
# proposals 文件与 TRAIN.DATASETS 数据集相对应.
__C.TRAIN.PROPOSAL_FILES = ()

# 确保图片 mini-batches 具有相同的长宽比,(i.e. both tall and thin or both short and wide)
# 对于节省内存很重要,可以稍微加快训练.
__C.TRAIN.ASPECT_GROUPING = True

2. RPN 训练参数

# ---------------------------------------------------------------------------- #
# RPN 训练默认参数
# ---------------------------------------------------------------------------- #

# 如果 anchor 和 groundtruth box 的最小重叠区域大于阈值 RPN_POSITIVE_OVERLAP, 
# 则 (anchor, gt_box) 对作为 positive 训练样本
# (IOU >= thresh ==> positive RPN example)
__C.TRAIN.RPN_POSITIVE_OVERLAP = 0.7

# 如果 anchor 和 groundtruth box 的最大重叠区域小于阈值 RPN_NEGATIVE_OVERLAP, 
# 则 (anchor, gt_box) 对作为 negative 训练样本
# (IOU < thresh ==> negative RPN example)
__C.TRAIN.RPN_NEGATIVE_OVERLAP = 0.3

# 每个 RPN mini-batch 中被标记为 foreground (positive) 样本的目标分数Target fraction
__C.TRAIN.RPN_FG_FRACTION = 0.5

# 每张图片的 RPN 样本总数
__C.TRAIN.RPN_BATCH_SIZE_PER_IM = 256

# RPN proposals 所采用的 NMS 阈值 (end-to-end training with RPN 时使用)
__C.TRAIN.RPN_NMS_THRESH = 0.7

# NMS 处理前,top 分数的 RPN proposals 数
# When FPN is used, this is *per FPN level* (not total)
__C.TRAIN.RPN_PRE_NMS_TOP_N = 12000

# NMS 处理后,保留的 top 分数的 RPN proposals 数
# 所产生的 RPN proposals 总数(FPN 和 non-FPN 一样)
__C.TRAIN.RPN_POST_NMS_TOP_N = 2000

# 设定阈值像素值 RPN_STRADDLE_THRESH,丢弃超出图片边界的 PRN anchors
# 设定 RPN_STRADDLE_THRESH = -1 或 RPN_STRADDLE_THRESH = Large_Value(e.g. 100000),则不进行 anchors 裁剪.
__C.TRAIN.RPN_STRADDLE_THRESH = 0

# proposal 的 height 和 width 需要同时大于阈值RPN_MIN_SIZE
# (相对于原始图片尺度,不是训练或测试时的尺度)
__C.TRAIN.RPN_MIN_SIZE = 0

# 根据阈值CROWD_FILTER_THRESH 过滤在 crowd 区域的 proposals.
# "Inside" 的度量:proposal-with-crowd 交叉区域面积除以 proposal面积.
# "Inside" is measured as: proposal-with-crowd intersection area divided by proposal area.
__C.TRAIN.CROWD_FILTER_THRESH = 0.7

# 忽略面积小于阈值GT_MIN_AREA 的 groundtruth 物体
__C.TRAIN.GT_MIN_AREA = -1

# 如果FREEZE_CONV_BODY设定为 True,则冻结骨干backbone网络结构参数
__C.TRAIN.FREEZE_CONV_BODY = False

# 设定AUTO_RESUME=True 时,从输出路径中的最近模型断点snapshot 恢复训练
__C.TRAIN.AUTO_RESUME = True

3. 数据加载默认参数

# ---------------------------------------------------------------------------- #
# 数据加载选项 (see detectron/roi_data/loader.py for more info)
# ---------------------------------------------------------------------------- #
__C.DATA_LOADER = AttrDict()

# 数据加载所用的 Python 线程数threads (warning: using too many
# 注:如果使用过多的线程,会出现 GIL 锁,导致训练变慢,实验发现 4 线程最佳.)
__C.DATA_LOADER.NUM_THREADS = 4

# 共享minibatch队列的大小
__C.DATA_LOADER.MINIBATCH_QUEUE_SIZE = 64

# 每块GPU blobs队列的容量
__C.DATA_LOADER.BLOBS_QUEUE_CAPACITY = 8

4. 推断/测试参数

# ---------------------------------------------------------------------------- #
# Inference ('test') options
# ---------------------------------------------------------------------------- #
__C.TEST = AttrDict()

# 从.pkl文件中初始化网络的权重
__C.TEST.WEIGHTS = b''

# 测试数据集
# 可用数据集列表设置:detectron.datasets.dataset_catalog.datasets()
# 如果有多个训练集,则依次在每个数据集上进行
__C.TEST.DATASETS = ()

# 测试时所使用的尺度
__C.TEST.SCALE = 600

# 尺度缩放后输入图片的长边最大像素值
__C.TEST.MAX_SIZE = 1000

# NMS 的重叠阈值(suppress boxes with IoU >= this threshold)
__C.TEST.NMS = 0.3

# 如果 BBOX_REG 设定为 True,则采用类似于 Faster R-CNN bounding-box 回归的形式.
__C.TEST.BBOX_REG = True

# 利用给定 proposals 文件进行测试(must correspond with TEST.DATASETS)
__C.TEST.PROPOSAL_FILES = ()

# 限定推断时每张图片的 proposals 数
__C.TEST.PROPOSAL_LIMIT = 2000

# NMS threshold used on RPN proposals
__C.TEST.RPN_NMS_THRESH = 0.7

# NMS 处理前,top 分数的 RPN proposals 数
# 当FPN被用到时, this is *per FPN level* (not total)
__C.TEST.RPN_PRE_NMS_TOP_N = 12000

# NMS 处理后,保留的 top 分数的 RPN proposals 数
# 所产生的 RPN proposals 总数(FPN 和 non-FPN 一样)
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值