
maskrcnn benchmark
leijieZhang
越努力越幸运!
展开
-
maskrcnn-benchmark 代码详解之 image_list.py
前言image_list.py主要是用于保存图像列表的数据类型以及将其他保存图像列表的数据类型转换成maskrcnn benchmark所规定的ImageList类型。ImageList的属性包含一个保存图像列表的张量还有一个保存图像大小的列表,其代码为:class ImageList(object): """ Structure that holds a list of...原创 2019-06-05 10:47:29 · 2437 阅读 · 1 评论 -
maskrcnn_benchmark 代码详解之 inference.py
前言: 在MaskRCNN、FasterRCNN的最后阶段需要对边框进行一次最后的预测,得到最终的预测边框。在maskrcnn_benchmark中,这一操作由inference.py来完成。其代码详解为:# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.import torchimp...原创 2019-06-14 14:10:18 · 2320 阅读 · 0 评论 -
maskrcnn-benchmar 代码详解之 fpn.py
前言FPN网络主要应用于多层特征提取,使用多尺度的特征层来进行目标检测,可以利用不同的特征层对于不同大小特征的敏感度不同,将他们充分利用起来,以更有利于目标检测,在maskrcnn benchmark中代码详解如下:# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.import torchim...原创 2019-06-03 11:53:35 · 2017 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 detector
前言detector 在maskrcnn benchmark中是网络模型的入口类,它把各个网络结构组合为统一的模型。用户训练中用到的网络模型由detectors.py实例化:# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.from .generalized_rcnn import Genera...原创 2019-06-03 15:18:13 · 2755 阅读 · 3 评论 -
maskrcnn_benchmark 代码详解之 modeling/roi_heads/box_heads/loss.py
前言: 本文详解的是在maskrcnn_benchmark代码中,RoI层中的边框预测模块的损失函数计算代码。在本文详解的loss.py覆盖了预测边框筛选函数,通过该函数可以排除出原预测边框中不符合标准的边框,重新选择背景边框和目标边框,并使用这个边框构成的新预测边框来计算loss值。其代码详解为:# Copyright (c) Facebook, Inc. and its aff...原创 2019-06-14 17:55:54 · 2162 阅读 · 1 评论 -
maskrcnn_benchmark 代码详解之 anchor_generator.py
前言: 在RPN中需要生成拥有不同步长(stride)不同大小(size)以及不同长环比(ratio)的anchor, 在maskrcnn_benchmark中,这一工作由anchor_generator.py完成。anchor_generator.py生成所需的不同特征图上的anchor,需要注意的是,如果在backbone中采用了FPN的话,需要保证,stride个数,size个数以及F...原创 2019-06-10 00:26:36 · 3955 阅读 · 4 评论 -
maskrcnn_benchmark 代码详解之 box_head.py
前言: 在FasterRCNN或者MaskRCNN中,在通过RPN筛选出大小不同的一系列预测边框后,需要在Box_Head层对选出的预测边框进行进一步筛选,去除掉边框IoU介于两种阈值之间的预测边框,然后再使用ROI Pooling将处理后的预测边框池化为大小一致的边框。 然后对这些边框进行进一步的特征提取,之后再在提取后的特征上进行进一步的边框预测,得到每一个预测边框的类别得分以及它...原创 2019-06-15 09:50:34 · 2026 阅读 · 1 评论 -
maskrcnn_benchmark 代码详解(更新中...)
前言: maskrcnn_benchmark是faceboock公司编写的一套用于目标检索的框架,该框架集成了目前用到的大部分使用深度卷积网络来进行目标检测的模型,其中包括Fast RCNN, Faster RCNN, SSD, YOLO, Mast RCNN, Retina NET等,代码详解的目录为:maskrcnn_benchmark config defaults.py...原创 2019-06-11 14:58:06 · 6901 阅读 · 8 评论 -
maskrcnn_benchmark 代码详解之 bounding_box.py
前言: 在目标检测网络模型当中,最常用到的便是Bounding Box,在maskrcnn_benchmark当中,bounding_box.py 实现了这一功能,其代码为:# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.import torch# transposeFLIP_LEFT...原创 2019-06-11 16:48:45 · 2274 阅读 · 1 评论 -
maskrcnn_benchmark 代码详解之 boxlist_ops.py
前言: 与Bounding Box有关的操作有很多,例如对边框列表进行非极大线性抑制、去除过小的边框、计算边框之间的Iou以及对两个边框列表进行合并等操作。在maskrcnn_benchmark中,这些操作都得以实现,其具体代码以及解释如下:# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.i...原创 2019-06-11 16:58:44 · 1811 阅读 · 0 评论 -
maskrcnn_benchmark 代码详解之 inference.py
前言: 在maskrcnn_benchmark中,实现从FPN各个层里提取好的边框的功能由inference.py实现。在inference.py中定义了RPNPostProcessor类,该类利用一些提前定义好的参数来在多个FPN层(P2-P5)或者指定的输出特征层(比如C5)选取边框。常用的参数有:pre_nms_top_n为每一个特征层上选取的边框数;post_nms_top_n为...原创 2019-06-11 17:23:23 · 2650 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 backbone.py
前言在backbone.py文件中,定义了各种不同的backbone结构,并使用Registry装饰器类来实现构造这些backbone结构函数的调用。指的一提的是,backbone.py将不同的模块搭建出拥有不同功能的backbone结构,为边框预测等操作提供各自合适的特征提取网络;其中Resnet的第2个stage非常重要,因为第一个阶段就是对原始图像的一次粗糙的特征提取,从第二阶段开始...原创 2019-06-03 11:05:16 · 3951 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 Registry.py
前言registry的主要作用是作为模型字典来保存生成的不同网络结构模型,其有两处定义分别为utils里面定义的Registry.py和在modeling里面定义的Registry.py。前者是定义数据类型,后者是这个字典类型的一个集合,为保存不同的网络结构提供了不同的模型字典。具体代码详解如下:# Copyright (c) Facebook, Inc. and its affilia...原创 2019-06-03 10:14:42 · 1639 阅读 · 2 评论 -
maskrcnn_benchmark 代码详解之 roi_box_predictors.py
前言: 在对RPN预测到的边框进行进一步特征提取后,需要对边框进行预测,得到边框的类别和位置大小信息。这一操作在maskrcnn_benchmark中由roi_box_predictors.py完成,该文件实现了两种预测类:直接进行预测以及先池化再预测。其代码详解如下:# Copyright (c) Facebook, Inc. and its affiliates. All ...原创 2019-06-13 21:47:05 · 1407 阅读 · 1 评论 -
maskrcnn-benchmark 代码详解之 box_coder.py
前言 box_coder.py主要用于候选边框(proposal)的编码和解码,即求解RCNN论文中回归目标中的以及预测边框。其主要针对的是RCNN和faster RCNN中的Bounding-box regression部分的操作。1b-box 回归(RCNN) 假设现有获得的候选框(proposal)为, 而基准框(ground-truth)为, 我们需要找一种映射方式使...原创 2019-06-05 14:55:22 · 2525 阅读 · 1 评论 -
maskrcnn-benchmark 代码详解之 balanced_positive_negative_sampler.py
前言 在二阶段目标检测的卷积神经网络模型中,在经过RPN筛选出相应的候选边框(Proposal)中应既包含内容为背景的边框又包含内容为目标的边框。这就需要一次对这两种边框数目的调整,以使得模型训练效果更好,这两种边框的选择比例一般为1:1,但是随着检测任务的不同而不同。在maskrcnn benchmark中实现这一操作的代码为balanced_positive_negative_sampl...原创 2019-06-05 15:45:03 · 1649 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 make_layers.py
前言: maskrcnn benchmark中各种层都是经过处理的,比如GN层需要判断通道数和组数合不合规范、group normalization是所有通道都参于还是一部分通道参与规范化、卷基层与初始化等操作组和成统一的组件以及卷基层的类型是否是空洞卷积等等。 等到别的地方调用make_layers.py中的这些网络模型组件的时候,这里定义的卷基层、全连接层都是以一个整体出现的,包含...原创 2019-06-05 18:09:47 · 1806 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 modeling/utils.py
def cat(tensors, dim=0): """ Efficient version of torch.cat that avoids a copy if there is only a single element in a list """ """ 重写了cat函数,使得当传入的张量只有一个元素的时候避免做拼接操作,只有可拼接的情况下,即有多个...原创 2019-06-05 18:19:04 · 688 阅读 · 0 评论 -
maskrcnn_benchmark 代码详解之 modeling/rpn/utils.py
前言: 在backbone如果采用了FPN, 则RPN层需要将FPN的不同层得到的特征图进行融合。maskrcnn_benchmark将该多层融合的工具函数写入了modeling/rpn/utils.py中,通过该工具类,可以将不同层的特征融合起来,进行统一处理。其代码详解为:# Copyright (c) Facebook, Inc. and its affiliates. All ...原创 2019-06-12 15:59:57 · 864 阅读 · 0 评论 -
maskrcnn_benchmark 代码详解之 modeling/rpn/loss.py
前言: 在maskrcnn_benchmark的RPN层,选取预测边框(proposal)的过程和计算边框目标得分(objectiveness)以及边框回归(box regression)的损失值的过程不是同步的,过程也有偏差。选取边框(proposal)是从多个特征层分别选取若干个目标得分高的边框,然后再从这些边框里选出若干预测边框(proposal)或者单个特征层(非FPN)提取目标得分...原创 2019-06-13 10:00:42 · 1899 阅读 · 0 评论 -
maskrcnn-benchmark 代码详解之 resnet.py
1Resnet 结构 Resnet 一般分为5个卷积(conv)层,每一层为一个stage。其中每一个stage中由不同数量的相同的block(区块)构成,这些区块的个数就是block_count, 第一个stage跟其他几个stage结构完全不同,也可以看做是由单独的区块构成的,因此由区块不停堆叠构成的第二层到第5层(即stage2-stage5或conv2-conv5),分别定义为ind...原创 2019-06-01 20:52:49 · 3852 阅读 · 3 评论 -
maskrcnn_benchmark 代码详解之 rpn.py
前言: RPN的主要功能是生成候选边框,并根据loss来进行优化。生成候选边框(proposals)主要是根据生成的锚点(anchors)加上与基准边框(ground truth box)之间的偏差。因此RPN的主要功能是选择靠谱的锚点(anchors),这就需要一个特征图来描述每个锚点的贡献值,1为百分百为含有目标的锚点,0为背景,这就是cls_logits特征图,其通道数为特征图上每个点...原创 2019-06-13 14:13:49 · 2069 阅读 · 1 评论 -
maskrcnn_benchmark 代码详解之 poolers.py
前言: 在目标检测的深度网络中最后一个步骤就是RoI层,其中RoI Pooling会实现将RPN提取的各种形状的边框进行池化,从而形成统一尺度的特征层,这一工程中将涉及到ROIAlign操作。Pool中的Scale是一个数组,代表原始图片变换到FPN的各个特征层需要的变换比例,比如到Stage2是1/4, 以此类推。其代码详解为:# Copyright (c) Facebook, In...原创 2019-06-13 18:41:16 · 1659 阅读 · 0 评论 -
maskrcnn_benchmark 代码详解之 roi_box_feature_extractors.py
前言: 在经过RPN层之后,网络会生成多个预测边框(proposal), 这时候需要对这些边框进行RoI池化,使之成为尺度一致的特征。接下来就需要对这些特征进行进一步的特征提取,这就需要用到roi_box_feature_extractors.py。roi_box_feature_extractors.py定义了三种不同的特种提取方式:ResNet卷基层方式、MIL全连接方式以及使用多个卷基...原创 2019-06-13 21:19:47 · 2216 阅读 · 0 评论 -
maskrcnn_benchmark 代码详解之 matcher.py
前言: 在目标检测的过程中,RPN生成的所有锚点(anchor)需要找到与之对应的在原图上标明的基准边框(gt)。在maskrcnn_benchmark中,这一匹配的过程由matcher.py来完成。该类定义了锚点与基准边框匹配的规则,将锚点与基准边框的IoU小于某个阈值的锚点设置为背景,大于另一个阈值的锚点设置为含目标的锚点,介于两个阈值之间的标记为第三种锚点。这种分类有助于RPN的后续操...原创 2019-06-12 14:03:57 · 1215 阅读 · 0 评论