未验证 提交 18868da6 编写于 作者: W whs 提交者: GitHub

[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
上级 362df867
......@@ -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])
......@@ -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)
......@@ -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)
......@@ -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`` 一致
返回类型:元组
**代码示例**
......
......@@ -5,18 +5,19 @@ warpctc
.. py:function:: paddle.fluid.layers.warpctc(input, label, blank=0, norm_by_times=False, use_cudnn=False)
操作符集成了 `开源Warp-CTC库 <https://github.com/baidu-research/warp-ctc>`_ ,计算基于神经网络的时序类分类(CTC)损失。原生softmax激活函数集成到Wrap-CTC库中,操作符也可称作含CTC的softmax,将输入张量每一行的值正则化
OP用于计算 `CTC loss <https://www.cs.toronto.edu/~graves/icml_2006.pdf>`_ 。该OP的底层调用了第三方 `baidu-research::warp-ctc <https://github.com/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)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册