mindspore.nn.ImageGradients

class mindspore.nn.ImageGradients[源代码]

计算每个颜色通道的图像渐变,返回为两个Tensor,分别表示高和宽方向上的变化率。

假设图像shape为 \(h*w\) ,则沿高和宽的梯度分别为 \(dy\)\(dx\)

\[ \begin{align}\begin{aligned}dy[i] = \begin{cases} image[i+1, :]-image[i, :], &if\ 0<=i<h-1 \cr 0, &if\ i==h-1\end{cases}\\dx[i] = \begin{cases} image[:, i+1]-image[:, i], &if\ 0<=i<w-1 \cr 0, &if\ i==w-1\end{cases}\end{aligned}\end{align} \]

输入:

  • images (Tensor) - 输入图像数据,格式为’NCHW’。

输出:

  • dy (Tensor) - 垂直方向的图像梯度,数据类型和shape与输入相同。

  • dx (Tensor) - 水平方向的图像梯度,数据类型和shape与输入相同。

异常:

  • ValueError - images 的shape长度不等于4。

支持平台:

Ascend GPU CPU

样例:

>>> net = nn.ImageGradients()
>>> image = Tensor(np.array([[[[1, 2], [3, 4]]]]), dtype=mindspore.int32)
>>> output = net(image)
>>> print(output)
(Tensor(shape=[1, 1, 2, 2], dtype=Int32, value=
[[[[2, 2],
   [0, 0]]]]), Tensor(shape=[1, 1, 2, 2], dtype=Int32, value=
[[[[1, 0],
   [1, 0]]]]))