1mindspore.ops.SampleDistortedBoundingBoxV2 2=========================================== 3 4.. py:class:: mindspore.ops.SampleDistortedBoundingBoxV2(seed=0, seed2=0, aspect_ratio_range=(0.75, 1.33), area_range=(0.05, 1.0), max_attempts=100, use_image_if_no_bounding_boxes=False) 5 6 在图像中创建一个随机扭曲的边界框。 7 8 该函数常用于目标定位和图像识别任务。在这样的任务中,除了提供基准标签之外,还提供了边界框注释。通常使用数据增强技术对图像进行随机扭曲,同时保持其内容不变。 9 10 该函数需要输入 `image_size` 、 `bounding_boxes` 以及一系列限制条件,并基于这些输入输出一个随机扭曲的对象定位框(即边界框)。 11 12 输出以三个Tensor的形式返回,分别是: 13 `begin` 、 `size` 和 `bboxes` 。前两个Tensor可以直接输入到 :class:`mindspore.ops.Slice` 中,以裁剪图像。第三个Tensor即为生成的扭曲边界框。 14 15 参数: 16 - **seed** (int,可选) - 随机数种子。如果 `seed` 或 `seed2` 设置为非零,则随机数生成器将使用这两个给定的的种子。否则,将使用随机数作为种子。默认值: ``0`` 。 17 - **seed2** (int,可选) - 避免种子冲突的第二个种子。默认值: ``0`` 。 18 - **aspect_ratio_range** (Union[list(float), tuple(float)],可选) - 指定图像的裁剪区域必须具有宽高比范围。区域宽高比 = area_width / area_height。这个属性应为正。默认值: ``(0.75, 1.33)`` 。 19 - **area_range** (Union[list(float), tuple(float)],可选) - 图像的裁剪区域必须包含在此范围内提供的图像。此属性的值应该在范围(0.0, 1.0]内。默认值: ``(0.05, 1.0)`` 。 20 - **max_attempts** (int,可选) - 尝试生成指定约束的图像的裁剪区域的次数。 `max_attemps` 次失败后,返回整个图像。此属性的值应为正。默认值: ``100`` 。 21 - **use_image_if_no_bounding_boxes** (bool,可选) - 如果没有提供边界框,则此参数控制算子行为。如果没有边界框提供( `bounding_boxes` 的shape为 :math:`(0, N, 4)` 或者 :math:`(batch, 0, 4)` ),并且此属性设置为 ``True`` ,然后假定一个隐式边界框涵盖整个输入,但如果此属性设置为 ``False`` ,则引发报错。默认值: ``False`` 。 22 23 输入: 24 - **image_size** (Tensor) - 包含[height, width, channels]三个元素的一维Tensor,其中每个值都应大于零。 25 - **bounding_boxes** (Tensor) - shape 为 :math:`(batch, N, 4)` 的三维Tensor,用于描述于输入image相关联的N个边框。该输入的值应该在[0.0, 1.0]的范围内。数据类型支持float32。 26 - **min_object_covered** (Tensor) - 图像的裁剪区域必须至少包含此比例的任何提供的边界框。此参数的值应该在范围[0.0, 1.0]内。在为0的情况下,裁剪区域不需要重叠任何提供的边界框。数据类型支持float32。 27 28 输出: 29 - **begin** (Tensor) - 包含[offset_height, offset_width, 0]的一维Tensor,数据类型与 `image_size` 一致。 30 - **size** (Tensor) - 包含[target_height, target_width, -1]的一维Tensor,数据类型与 `image_size` 一致。当 `image_size` 数据类型为uint8的时候, `size` 的最后一个值将由原来的-1强制转变为255。 31 - **bboxes** (Tensor) - 三维Tensor,shape为 :math:`(1, 1, 4)` 。包含随机扭曲后的边框。数据类型支持float32。 32 33 异常: 34 - **TypeError** - `image_size` 不是Tensor。 35 - **TypeError** - `bounding_boxes` 不是Tensor。 36 - **TypeError** - `min_object_covered` 不是Tensor。 37 - **TypeError** - `seed` 、 `seed2` 或者 `max_attempts` 不是int类型。 38 - **TypeError** - `aspect_ratio_range` 不是float类型的list或者tuple。 39 - **TypeError** - `area_range` 不是float类型的list或者tuple。 40 - **TypeError** - `use_image_if_no_bounding_boxes` 不是bool类型。 41 - **ValueError** - `image_size` 、 `min_object_covered` 维度不为1。 42 - **ValueError** - `image_size` 含有的元素个数不是3。 43 - **ValueError** - `bounding_boxes` 维度不是3。 44 - **ValueError** - 每个 `bounding_boxes` 含有的元素个数不是4。 45 - **ValueError** - `min_object_covered` 含有的元素个数不是1。 46 - **ValueError** - `aspect_ratio_range` 为list或者tuple并且含有的元素个数不是2。 47 - **ValueError** - `aspect_ratio_range` 的值不全是正数。 48 - **ValueError** - `aspect_ratio_range` 第二个值小于等于第一个值。 49 - **ValueError** - `area_range` 为list或者tuple并且含有的元素个数不是2。 50 - **ValueError** - `area_range` 不在范围(0.0, 1.0]内。 51 - **ValueError** - `area_range` 第二个值小于等于第一个值。 52 - **ValueError** - `max_attempts` 不是正整数。 53 - **ValueError** - `use_image_if_no_bounding_boxes` 为False并且没有提供任何的边框。 54 - **RuntimeError** - `image_size` 的值包含非正数。 55 - **RuntimeError** - `bounding_boxes` 不在[0.0, 1.0]范围内。 56 - **RuntimeError** - `bounding_boxes` 不能组成一个有效边框。 57 - **RuntimeError** - `min_object_covered` 不在[0.0, 1.0]范围内。 58