From 18868da6a98e993f743aa9fe480efed58393021f Mon Sep 17 00:00:00 2001 From: whs Date: Tue, 24 Sep 2019 18:07:27 +0800 Subject: [PATCH] [Paddle1.6] Fix cn doc of some api (#1286) * Fix cn doc of some api: 1. affine_grid 2. generate_proposal_labels 3. generate_proposals 4. rpn_target_assign 5. warpctc --- doc/fluid/api_cn/layers_cn/affine_grid_cn.rst | 91 ++----------------- .../layers_cn/generate_proposal_labels_cn.rst | 68 +++++++------- .../layers_cn/generate_proposals_cn.rst | 55 ++++++----- .../api_cn/layers_cn/rpn_target_assign_cn.rst | 57 ++++++------ doc/fluid/api_cn/layers_cn/warpctc_cn.rst | 21 ++--- 5 files changed, 108 insertions(+), 184 deletions(-) diff --git a/doc/fluid/api_cn/layers_cn/affine_grid_cn.rst b/doc/fluid/api_cn/layers_cn/affine_grid_cn.rst index 21c03b9ce..3f143f394 100644 --- a/doc/fluid/api_cn/layers_cn/affine_grid_cn.rst +++ b/doc/fluid/api_cn/layers_cn/affine_grid_cn.rst @@ -5,86 +5,16 @@ affine_grid .. py:function:: paddle.fluid.layers.affine_grid(theta, out_shape, name=None) -它使用仿射变换的参数生成(x,y)坐标的网格,这些参数对应于一组点,在这些点上,输入特征映射应该被采样以生成转换后的输出特征映射。 - - - -.. code-block:: text - - * 例 1: - 给定: - theta = [[[x_11, x_12, x_13] - [x_14, x_15, x_16]] - [[x_21, x_22, x_23] - [x_24, x_25, x_26]]] - out_shape = [2, 3, 5, 5] - - Step 1: - - 根据out_shape生成标准化坐标 - - 归一化坐标的值在-1和1之间 - - 归一化坐标的形状为[2,H, W],如下所示: - - C = [[[-1. -1. -1. -1. -1. ] - [-0.5 -0.5 -0.5 -0.5 -0.5] - [ 0. 0. 0. 0. 0. ] - [ 0.5 0.5 0.5 0.5 0.5] - [ 1. 1. 1. 1. 1. ]] - [[-1. -0.5 0. 0.5 1. ] - [-1. -0.5 0. 0.5 1. ] - [-1. -0.5 0. 0.5 1. ] - [-1. -0.5 0. 0.5 1. ] - [-1. -0.5 0. 0.5 1. ]]] - - C[0]是高轴坐标,C[1]是宽轴坐标。 - - Step2: - - 将C转换并重组成形为[H * W, 2]的张量,并追加到最后一个维度 - - 我们得到: - - C_ = [[-1. -1. 1. ] - [-0.5 -1. 1. ] - [ 0. -1. 1. ] - [ 0.5 -1. 1. ] - [ 1. -1. 1. ] - [-1. -0.5 1. ] - [-0.5 -0.5 1. ] - [ 0. -0.5 1. ] - [ 0.5 -0.5 1. ] - [ 1. -0.5 1. ] - [-1. 0. 1. ] - [-0.5 0. 1. ] - [ 0. 0. 1. ] - [ 0.5 0. 1. ] - [ 1. 0. 1. ] - [-1. 0.5 1. ] - [-0.5 0.5 1. ] - [ 0. 0.5 1. ] - [ 0.5 0.5 1. ] - [ 1. 0.5 1. ] - [-1. 1. 1. ] - [-0.5 1. 1. ] - [ 0. 1. 1. ] - [ 0.5 1. 1. ] - [ 1. 1. 1. ]] - Step3: - 按下列公式计算输出 -.. math:: - - Output[i] = C\_ * Theta[i]^T +该OP用于生成仿射变换前后的feature maps的坐标映射关系。在视觉应用中,根据该OP得到的映射关系,将输入feature map的像素点变换到对应的坐标,就得到了经过仿射变换的feature map。 参数: - - **theta** (Variable): 一类具有形状为[N, 2, 3]的仿射变换参数 - - **out_shape** (Variable | list | tuple):具有格式[N, C, H, W]的目标输出的shape,out_shape可以是变量、列表或元组。 - - **name** (str|None): 此层的名称(可选)。如果没有设置,将自动命名。 + - **theta** (Variable) - Shape为 ``[batch_size, 2, 3]`` 的Tensor,表示batch_size个 ``2X3`` 的变换矩阵。数据类型支持float32,float64。 + - **out_shape** (Variable | list | tuple) - 类型可以是1-D Tensor、list或tuple。用于表示在仿射变换中的输出的shape,其格式 ``[N, C, H, W]`` ,分别为输出feature map的batch size、channel数量、高和宽。数据类型支持int32。 + - **name** (None|str) – 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:api_guide_Name ,默认值为None。 -返回: Variable: 形为[N, H, W, 2]的输出。 +返回: Variable。Shape为 ``[N, H, W, 2]`` 的4-D Tensor,表示仿射变换前后的坐标的映射关系。其中,N、H、W分别为仿射变换中输出feature map的batch size、高和宽。 数据类型与 ``theta`` 一致。 -抛出异常: ValueError: 如果输入了不支持的参数类型 +返回类型:Variable **代码示例:** @@ -96,12 +26,3 @@ affine_grid data = fluid.layers.affine_grid(theta, out_shape) # or data = fluid.layers.affine_grid(theta, [5, 3, 28, 28]) - - - - - - - - - diff --git a/doc/fluid/api_cn/layers_cn/generate_proposal_labels_cn.rst b/doc/fluid/api_cn/layers_cn/generate_proposal_labels_cn.rst index c998df51f..943638a28 100644 --- a/doc/fluid/api_cn/layers_cn/generate_proposal_labels_cn.rst +++ b/doc/fluid/api_cn/layers_cn/generate_proposal_labels_cn.rst @@ -5,34 +5,48 @@ generate_proposal_labels .. py:function:: paddle.fluid.layers.generate_proposal_labels(rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, batch_size_per_im=256, fg_fraction=0.25, fg_thresh=0.25, bg_thresh_hi=0.5, bg_thresh_lo=0.0, bbox_reg_weights=[0.1, 0.1, 0.2, 0.2], class_nums=None, use_random=True, is_cls_agnostic=False, is_cascade_rcnn=False) -**该函数可以应用于 Faster-RCNN 网络,生成建议标签。** +**注意:该OP无对应的反向OP** -该函数可以根据 ``GenerateProposals`` 的输出结果,即bounding boxes(区域框),groundtruth(正确标记数据)来对foreground boxes和background boxes进行采样,并计算loss值。 +该OP根据RPN预测产出的bounding boxes和groundtruth,抽取出用来计算loss的foreground boxes and background boxes。 -RpnRois 是RPN的输出box, 并由 ``GenerateProposals`` 来进一步处理, 这些box将与groundtruth boxes合并, 并根据 ``batch_size_per_im`` 和 ``fg_fraction`` 进行采样。 +RPN的输出经过 ``generate_proposals OP`` 的处理,产出 ``RPN RoIs`` ,即该OP的输入。然后,在该OP中按以下规则对 ``RPN RoIs`` 进行分类: -如果一个实例具有大于 ``fg_thresh`` (前景重叠阀值)的正确标记重叠,那么它会被认定为一个前景样本。 -如果一个实例具有的正确标记重叠大于 ``bg_thresh_lo`` 且小于 ``bg_thresh_hi`` (详见参数说明),那么它将被认定为一个背景样本。 -在所有前景、背景框(即Rois regions of interest 直译:有意义的区域)被选择后,我们接着采用随机采样的方法来确保前景框数量不多于 batch_size_per_im * fg_fraction 。 +- 与某个groundtruth的重叠面积大于 ``fg_thresh`` ,则该box被标记为foreground box。 +- 与某个groundtruth的重叠面积大于 ``bg_thresh_lo`` 且小于 ``bg_thresh_hi`` ,则该box被标记为background box。 -对Rois中的每个box, 我们给它分配类标签和回归目标(box label)。最后 ``bboxInsideWeights`` 和 ``BboxOutsideWeights`` 用来指明是否它将影响训练loss值。 +按上述规则筛选出一批boxes后,在对这些boxes做随机采样,以保证foreground boxes的数量不高于batch_size_per_im * fg_fraction。 + +对最终得到的boxes, 我们给它们分配类别标签和回归目标(box label),并产出 ``bboxInsideWeights`` 和 ``BboxOutsideWeights`` 。 参数: - - **rpn_rois** (Variable) – 形为[N, 4]的二维LoDTensor。 N 为 ``GenerateProposals`` 的输出结果, 其中各元素为 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 格式的边界框 - - **gt_classes** (Variable) – 形为[M, 1]的二维LoDTensor。 M 为正确标记数据数目, 其中各元素为正确标记数据的类别标签 - - **is_crowd** (Variable) – 形为[M, 1]的二维LoDTensor。M 为正确标记数据数目, 其中各元素为一个标志位,表明一个正确标记数据是不是crowd - - **gt_boxes** (Variable) – 形为[M, 4]的二维LoDTensor。M 为正确标记数据数目, 其中各元素为 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 格式的边界框 - - **im_info** (Variable) – 形为[B, 3]的二维LoDTensor。B 为输入图片的数目, 各元素由 im_height, im_width, im_scale 组成. - - **batch_size_per_im** (int) – 每张图片的Rois batch数目 - - **fg_fraction** (float) – Foreground前景在 ``batch_size_per_im`` 中所占比例 - - **fg_thresh** (float) – 前景重叠阀值,用于选择foreground前景样本 - - **bg_thresh_hi** (float) – 背景重叠阀值的上界,用于筛选背景样本 - - **bg_thresh_lo** (float) – 背景重叠阀值的下界,用于筛选背景样本O - - **bbox_reg_weights** (list|tuple) – Box 回归权重 - - **class_nums** (int) – 种类数目 - - **use_random** (bool) – 是否使用随机采样来选择foreground(前景)和background(背景) boxes(框) - - **is_cls_agnostic** (bool)- 未知类别的bounding box回归,仅标识前景和背景框 - - **is_cascade_rcnn** (bool)- 是否为 cascade RCNN 模型,为True时采样策略发生变化 + - **rpn_rois** (Variable) – Shape为 ``[N, 4]`` 的2-D LoDTensor。 其中,N为RoIs的个数。每个RoI以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示,其中,:math:`x_{min}` 和 :math:`y_{min}` 为RoI的左上角坐标,:math:`x_{max}` 和 :math:`y_{max}` 为RoI的右下角坐标。数据类型支持float32和float64。 + - **gt_classes** (Variable) – Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于表示groundtruth boxes的类别ID。数据类型支持int32。 + - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 + - **gt_boxes** (Variable) – Shape为 ``[M, 4]`` 的2-D LoDTensor,M为groundtruth boxes的数量。每个box以 :math:`[x_{min}, y_{min}, x_{max}, y_{max}]` 的格式表示。 + - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和 ``feature map`` 相对于原始图像缩放的比例。 + - **batch_size_per_im** (int,可选) – 整型数字。每张图片抽取出的的RoIs的数目。数据类型支持int32。缺省值为256。 + - **fg_fraction** (float,可选) – 浮点数值。在单张图片中,foreground boxes占所有boxes的比例。数据类型支持float32。缺省值为0.25。 + - **fg_thresh** (float,可选) – 浮点数值。foreground重叠阀值,用于筛选foreground boxes。数据类型支持float32。缺省值为0.25。 + - **bg_thresh_hi** (float,可选) – 浮点数值。background重叠阀值的上界,用于筛选background boxes。数据类型支持float32。缺省值为0.5。 + - **bg_thresh_lo** (float,可选) – 浮点数值。background重叠阀值的下界,用于筛选background boxes。数据类型支持float32。缺省值为0.0。 + - **bbox_reg_weights** (list|tuple,可选) – 列表或元组。Box 回归权重。数据类型支持float32。缺省值为[0.1,0.1,0.2,0.2]。 + - **class_nums** (int,可选) – 整型数字。类别数目。数据类型支持int32。缺省值为None。 + - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 + - **is_cls_agnostic** (bool,可选)- 布尔类型。是否忽略类别,只做位置回归。缺省值为False。 + - **is_cascade_rcnn** (bool,可选)- 布尔类型。是否为 cascade RCNN 模型,为True时采样策略发生变化。缺省值为False。 + + +返回:元组,格式为 ``(rois, labels_int32, bbox_targets, bbox_inside_weights, bbox_outside_weights)`` ,其中,各个元素解释如下: + +- **rois** - Shape为 ``[P, 4]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。每个RoIs以 ``[xmin, ymin, xmax, ymax]`` 的格式表示。数据类型与 ``rpn_rois`` 一致。 +- **labels_int32** - Shape为 ``[P, 1]`` 的2-D LoDTensor,P一般是 ``batch_size_per_im * batch_size`` 。表示每个RoI的类别ID。数据类型为int32。 +- **bbox_targets** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor,表示所有RoIs的回归目标(box label)。数据类型与 ``rpn_rois`` 一致。 +- **bbox_inside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。foreground boxes回归loss的权重。数据类型与 ``rpn_rois`` 一致。 +- **bbox_outside_weights** - Shape为 ``[P, 4 * class_num]`` 的2-D LoDTensor。回归loss的权重。数据类型与 ``rpn_rois`` 一致。 + +返回类型:元组 + + **代码示例**: @@ -54,13 +68,3 @@ RpnRois 是RPN的输出box, 并由 ``GenerateProposals`` 来进一步处理, rpn_rois, gt_classes, is_crowd, gt_boxes, im_info, class_nums=10) - - - - - - - - - - diff --git a/doc/fluid/api_cn/layers_cn/generate_proposals_cn.rst b/doc/fluid/api_cn/layers_cn/generate_proposals_cn.rst index 756a982b5..909d969f5 100644 --- a/doc/fluid/api_cn/layers_cn/generate_proposals_cn.rst +++ b/doc/fluid/api_cn/layers_cn/generate_proposals_cn.rst @@ -5,34 +5,42 @@ generate_proposals .. py:function:: paddle.fluid.layers.generate_proposals(scores, bbox_deltas, im_info, anchors, variances, pre_nms_top_n=6000, post_nms_top_n=1000, nms_thresh=0.5, min_size=0.1, eta=1.0, name=None) -生成proposal的Faster-RCNN -该操作根据每个框为foreground(前景)对象的概率,并且通过anchors来计算这些框,进而提出RoI。Bbox_deltais和一个objects的分数作为是RPN的输出。最终 ``proposals`` 可用于训练检测网络。 +该OP根据每个检测框为foreground对象的概率,推选生成用于后续检测网络的RoIs。 +其中的检测框根据 ``anchors`` 和 ``bbox_deltas`` 计算得到。 -为了生成 ``proposals`` ,此操作执行以下步骤: - 1、转置和调整bbox_deltas的分数和大小为(H * W * A,1)和(H * W * A,4)。 +该OP通过以下步骤生成 ``RoIs`` : - 2、计算方框位置作为 ``proposals`` 候选框。 + 1、通过转置操作将 ``scores`` 和 ``bbox_deltas`` 的大小分别调整为 ``(H * W * A,1)`` 和 ``(H * W * A,4)`` 。 - 3、剪辑框图像。 + 2、根据 ``anchors`` 和 ``bbox_deltas`` 计算出候选框的位置。 - 4、删除小面积的预测框。 + 3、Clip boxes to image。 - 5、应用NMS以获得最终 ``proposals`` 作为输出。 + 4、删除面积较小的候选框。 + + 5、通过NMS选出满足条件的候选框作为结果。 参数: - - **scores** (Variable)- 是一个shape为[N,A,H,W]的4-D张量,表示每个框成为object的概率。N是批量大小,A是anchor数,H和W是feature map的高度和宽度。 - - **bbox_deltas** (Variable)- 是一个shape为[N,4 * A,H,W]的4-D张量,表示预测框位置和anchor位置之间的差异。 - - **im_info** (Variable)- 是一个shape为[N,3]的2-D张量,表示N个批次原始图像的信息。信息包含原始图像大小和 ``feature map`` 的大小之间高度,宽度和比例。 - - **anchors** (Variable)- 是一个shape为[H,W,A,4]的4-D Tensor。H和W是 ``feature map`` 的高度和宽度, - - **num_anchors** - 是每个位置的框的数量。每个anchor都是以非标准化格式(xmin,ymin,xmax,ymax)定义的。 - - **variances** (Variable)- anchor的方差,shape为[H,W,num_priors,4]。每个方差都是(xcenter,ycenter,w,h)这样的格式。 - - **pre_nms_top_n** (float)- 每个图在NMS之前要保留的总框数。默认为6000。 - - **post_nms_top_n** (float)- 每个图在NMS后要保留的总框数。默认为1000。 - - **nms_thresh** (float)- NMS中的阈值,默认为0.5。 - - **min_size** (float)- 删除高度或宽度小于min_size的预测框。默认为0.1。 - - **eta** (float)- 在自适应NMS中应用,如果自适应阈值> 0.5,则在每次迭代中使用adaptive_threshold = adaptive_treshold * eta。 + - **scores** (Variable) - Shape为 ``[N,A,H,W]`` 的4-D Tensor,表示每个框包含object的概率。N是批量大小,A是anchor数,H和W是feature map的高度和宽度。数据类型支持float32。 + - **bbox_deltas** (Variable)- Shape为 ``[N,4 * A,H,W]`` 的4-D Tensor,表示预测出的候选框的位置和anchor的位置之间的距离。数据类型支持float32。 + - **im_info** (Variable) - Shape为 ``[N,3]`` 的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。 + - **anchors** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor。H和W是feature map的高度和宽度。A是每个位置的框的数量。每个anchor以 ``(xmin,ymin,xmax,ymax)`` 的格式表示,其中, ``xmin`` 和 ``ymin`` 为左上角的坐标, ``xmax`` 和 ``ymax`` 为右下角的坐标。 + - **variances** (Variable) - Shape为 ``[H,W,A,4]`` 的4-D Tensor,表示 ``anchors`` 的方差。每个anchor的方差都是 ``(xcenter,ycenter,w,h)`` 的格式表示。 + - **pre_nms_top_n** (int,可选) - 整型数字。每张图在NMS操作之前要保留的总框数。数据类型仅支持int32。缺省值为6000。 + - **post_nms_top_n** (int,可选) - 整型数字。每个图在NMS后要保留的总框数。数据类型仅支持int32。缺省值为1000。 + - **nms_thresh** (float,可选) - 浮点型数字。NMS中的阈值。数据类型仅支持float32。缺省值为0.5。 + - **min_size** (float,可选) - 浮点型数字。根据宽和高过滤候选框的阈值,宽或高小于该阈值的候选框将被过滤掉。数据类型仅支持float32。缺省值为0.1。 + - **eta** (float,可选) - 浮点型数字。自适应阈值的衰减系数。仅在自适应NMS中且自适应阈值大于0.5时生效,在每次迭代中 ``adaptive_threshold = adaptive_treshold * eta`` 。缺省值为1.0。 + + +返回: 元组,格式为 ``(rpn_rois, rpn_roi_probs)`` + +- **rpn_rois** (Variable) - 表示产出的RoIs, shape为 ``[N, 4]`` 的2D LoDTensor, N为RoIs的数量。数据类型与 ``scores`` 一致。 +- **rpn_roi_probs** (Variable) - 表示RoIs的得分,shape为 ``[N, 1]`` ,N为RoIs的数量。数据类型与 ``scores`` 一致。 + +返回类型:元组 **代码示例**: @@ -51,12 +59,3 @@ generate_proposals append_batch_size=False, dtype='float32') rois, roi_probs = fluid.layers.generate_proposals(scores, bbox_deltas, im_info, anchors, variances) - - - - - - - - - diff --git a/doc/fluid/api_cn/layers_cn/rpn_target_assign_cn.rst b/doc/fluid/api_cn/layers_cn/rpn_target_assign_cn.rst index 74c2761e0..df80d16cf 100644 --- a/doc/fluid/api_cn/layers_cn/rpn_target_assign_cn.rst +++ b/doc/fluid/api_cn/layers_cn/rpn_target_assign_cn.rst @@ -5,39 +5,42 @@ rpn_target_assign .. py:function:: paddle.fluid.layers.rpn_target_assign(bbox_pred, cls_logits, anchor_box, anchor_var, gt_boxes, is_crowd, im_info, rpn_batch_size_per_im=256, rpn_straddle_thresh=0.0, rpn_fg_fraction=0.5, rpn_positive_overlap=0.7, rpn_negative_overlap=0.3, use_random=True) -在Faster-RCNN检测中为区域检测网络(RPN)分配目标层。 +该OP用于为anchors分配分类标签和回归标签,以便用这些标签对RPN进行训练。 -对于给定anchors和真实框之间的IoU重叠,该层可以为每个anchors做分类和回归,这些target labels用于训练RPN。classification targets是二进制的类标签(是或不是对象)。根据Faster-RCNN的论文,positive labels有两种anchors: +该OP将anchors分为两种类别,正和负。根据Faster-RCNN的paper,正类别anchor包括以下两种anchor: -(i) anchor/anchors与真实框具有最高IoU重叠; +- 在与一个ground-truth boxes相交的所有anchor中,IoU最高的anchor +- 和任意一个ground-truth box的IoU超出了阈值 ``rpn_positive_overlap`` -(ii) 具有IoU重叠的anchors高于带有任何真实框(ground-truth box)的rpn_positive_overlap0(0.7)。 +负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor. -请注意,单个真实框(ground-truth box)可以为多个anchors分配正标签。对于所有真实框(ground-truth box),非正向anchor是指其IoU比率低于rpn_negative_overlap(0.3)。既不是正也不是负的anchors对训练目标没有价值。回归目标是与positive anchors相关联而编码的图片真实框。 +正负anchors之外的anchors不会被选出来参与训练。 + +回归标签是ground-truth boxes和正类别anchor的偏移值。 参数: - - **bbox_pred** (Variable)- 是一个shape为[N,M,4]的3-D Tensor,表示M个边界框的预测位置。N是批量大小,每个边界框有四个坐标值,即[xmin,ymin,xmax,ymax]。 - - **cls_logits** (Variable)- 是一个shape为[N,M,1]的3-D Tensor,表示预测的置信度。N是批量大小,1是frontground和background的sigmoid,M是边界框的数量。 - - **anchor_box** (Variable)- 是一个shape为[M,4]的2-D Tensor,它拥有M个框,每个框可表示为[xmin,ymin,xmax,ymax],[xmin,ymin]是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 [xmax,ymax]是anchor框的右下部坐标。 - - **anchor_var** (Variable)- 是一个shape为[M,4]的2-D Tensor,它拥有anchor的expand方差。 - - **gt_boxes** (Variable)- 真实边界框是一个shape为[Ng,4]的2D LoDTensor,Ng是小批量输入的真实框(bbox)总数。 - - **is_crowd** (Variable)- 1-D LoDTensor,表示(groud-truth)是密集的。 - - **im_info** (Variable)- 是一个形为[N,3]的2-D LoDTensor。N是batch大小,第二维上的3维分别代表高度,宽度和比例(scale) - - **rpn_batch_size_per_im** (int)- 每个图像中RPN示例总数。 - - **rpn_straddle_thresh** (float)- 通过straddle_thresh像素删除出现在图像外部的RPN anchor。 - - **rpn_fg_fraction** (float)- 为foreground(即class> 0)RoI小批量而标记的目标分数,第0类是background。 - - **rpn_positive_overlap** (float)- 对于一个正例的(anchor, gt box)对,是允许anchors和所有真实框之间最小重叠的。 - - **rpn_negative_overlap** (float)- 对于一个反例的(anchor, gt box)对,是允许anchors和所有真实框之间最大重叠的。 - -返回: - -返回元组 (predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight) : - - **predicted_scores** 和 **predicted_location** 是RPN的预测结果。 **target_label** 和 **target_bbox** 分别是真实准确数据(ground-truth)。 - - **predicted_location** 是一个形为[F,4]的2D Tensor, **target_bbox** 的形与 **predicted_location** 相同,F是foreground anchors的数量。 - - **predicted_scores** 是一个shape为[F + B,1]的2D Tensor, **target_label** 的形与 **predict_scores** 的形相同,B是background anchors的数量,F和B取决于此算子的输入。 - - **Bbox_inside_weight** 标志着predicted_loction是否为fake_fg(假前景),其形为[F,4]。 - -返回类型: 元组(tuple) + - **bbox_pred** (Variable) - Shape为 ``[batch_size,M,4]`` 的3-D Tensor,表示M个边界框的预测位置。每个边界框有四个坐标值,即 ``[xmin,ymin,xmax,ymax]`` 。数据类型支持float32和float64。 + - **cls_logits** (Variable)- Shape为 ``[batch_size,M,1]`` 的3-D Tensor,表示预测的置信度。1是frontground和background的sigmoid,M是边界框的数量。数据类型支持float32和float64。 + - **anchor_box** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有M个框,每个框可表示为 ``[xmin,ymin,xmax,ymax]`` , ``[xmin,ymin]`` 是anchor框的左上部坐标,如果输入是图像特征图,则它们接近坐标系的原点。 ``[xmax,ymax]`` 是anchor框的右下部坐标。数据类型支持float32和float64。 + - **anchor_var** (Variable) - Shape为 ``[M,4]`` 的2-D Tensor,它拥有anchor的expand方差。数据类型支持float32和float64。 + - **gt_boxes** (Variable) - Shape为 ``[Ng,4]`` 的2-D LoDTensor, ``Ng`` 是一个batch内输入groundtruth boxes的总数。数据类型支持float32和float64。 + - **is_crowd** (Variable) –Shape为 ``[M, 1]`` 的2-D LoDTensor,M为groundtruth boxes的数量。用于标记boxes是否是crowd。数据类型支持int32。 + - **im_info** (Variable) - Shape为[N,3]的2-D张量,表示原始图像的大小信息。信息包含原始图像宽、高和feature map相对于原始图像缩放的比例。数据类型支持int32。 + - **rpn_batch_size_per_im** (int,可选) - 整型数字。每个图像中RPN示例总数。数据类型支持int32。缺省值为256。 + - **rpn_straddle_thresh** (float,可选) - 浮点数字。超出图像外部 ``straddle_thresh`` 个像素的RPN anchors会被删除。数据类型支持float32。缺省值为0.0。 + - **rpn_fg_fraction** (float,可选) - 浮点数字。标记为foreground boxes的数量占batch内总体boxes的比例。 数据类型支持float32。缺省值为0.5。 + - **rpn_positive_overlap** (float,可选) - 浮点数字。和任意一个groundtruth box的 ``IoU`` 超出了阈值 ``rpn_positive_overlap`` 的box被判定为正类别。 数据类型支持float32。缺省值为0.7。 + - **rpn_negative_overlap** (float,可选) - 浮点数字。负类别anchor是和任何ground-truth boxes的IoU都低于阈值 ``rpn_negative_overlap`` 的anchor。 数据类型支持float32。缺省值为0.3。 + - **use_random** (bool,可选) – 布尔类型。是否使用随机采样来选择foreground boxes和background boxes。缺省值为True。 + +返回: 元组。格式为 ``(predicted_scores, predicted_location, target_label, target_bbox, bbox_inside_weight)`` + - **predicted_scores** (Varible) - RPN预测的类别结果。Shape为 ``[F + B,1]`` 的2D Tensor。 ``F`` 为foreground anchor的数量,B为background anchor的数量。数据类型与 ``bbox_pred`` 一致。 + - **predicted_location** (Variable) - RPN预测的位置结果。Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 + - **target_label** (Variable) - Shape为 ``[F + B,1]`` 的2D Tensor。数据类型为int32。 + - **target_bbox** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 + - **Bbox_inside_weight** (Variable) - Shape为 ``[F, 4]`` 的2D Tensor。数据类型与 ``bbox_pred`` 一致。 + +返回类型:元组 **代码示例** diff --git a/doc/fluid/api_cn/layers_cn/warpctc_cn.rst b/doc/fluid/api_cn/layers_cn/warpctc_cn.rst index d80521ca6..55d721d76 100644 --- a/doc/fluid/api_cn/layers_cn/warpctc_cn.rst +++ b/doc/fluid/api_cn/layers_cn/warpctc_cn.rst @@ -5,18 +5,19 @@ warpctc .. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, use_cudnn=False) -该操作符集成了 `开源Warp-CTC库 `_ ,计算基于神经网络的时序类分类(CTC)损失。原生softmax激活函数集成到Wrap-CTC库中,操作符也可称作含CTC的softmax,将输入张量每一行的值正则化。 +该OP用于计算 `CTC loss `_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc `_ 的实现。 参数: - - **input** (Variable) - 变长序列的非尺度化概率,是一个含LoD信息的二维张量。shape为[Lp,num_classes+1],Lp是所有输出序列长度之和,num_classes是实际类别数。(不包括空白标签) - - **label** (Variable) - 变长序列中正确标记的数据,是一个含LoD信息的二维张量。shape为[Lg,1],Lg是所有标签长度之和 - - **blank** (int,默认0) - 基于神经网络的时序类分类(CTC)损失的空白标签索引,在半开区间间隔内[0,num_classes+1] - - **norm_by_times** (bool,默认false) - 是否利用时间步长(即序列长度)的数量对梯度进行正则化。如果warpctc层后面跟着mean_op则无需对梯度正则化。 - - **use_cudnn** (bool, 默认false) - 是否使用cudnn + - **input** (Variable) - 可以是3-D Tensor或2-D LoDTensor。当输入类型是3-D Tensor时,则表示输入是经过padding的定长序列,其shape必须是 ``[seq_length, batch_size, num_classes + 1]`` 。当输入类型是2-D LoDTensor时,则表示输入为变长序列,其shape必须为 ``[Lp,num_classes+1]`` , ``Lp`` 是所有输入序列长度之和。以上shape中的 ``num_classes`` 是实际类别数,不包括空白标签。该输入不需要经过softmax操作,因为该OP的内部对 ``input`` 做了softmax操作。数据类型仅支持float32。 + - **label** (Variable) - 可以是2-D Tensor或2-D LoDTensor,shape为 ``[Lg,1]`` ,其中 ``Lg`` 为是所有labels序列的长度和。 ``label`` 中的数值为字符ID。当label是2-D Tensor时,则表示当前label为经过padding的定长序列。当label是2-D LoDTensor时,则表示当前label为变长序列。数据类型支持int32。 + - **input_length** (Variable) - 必须是1-D Tensor。仅在输入为定长序列时使用,表示输入数据中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 + - **label_length** (Variable) - 必须是1-D Tensor。仅在label为定长序列时使用,表示label中每个序列的长度,shape为 ``[batch_size]`` 。数据类型支持int64。默认为None。 + - **blank** (int,可选) - 空格标记的ID,其取值范围为 ``[0,num_classes+1)`` 。数据类型支持int32。缺省值为0。 + - **norm_by_times** (bool,可选) - 是否根据序列长度对梯度进行正则化。数据类型支持bool。缺省值为False。 -返回:基于神经网络的时序类分类(CTC)损失,是一个shape为[batch_size,1]的二维张量 +返回:Shape为[batch_size,1]的2-D Tensor,表示每一个序列的CTC loss。数据类型与 ``input`` 一致。 -返回类型:变量(Variable) +返回类型:Variable **代码示例**: @@ -28,7 +29,3 @@ warpctc predict = fluid.layers.data(name='predict', shape=[11, 1], dtype='float32') cost = fluid.layers.warpctc(input=predict, label=label) - - - - -- GitLab