MPSCNNCrossChannelNormalizationGradient(3)

NAME
MPSCNNCrossChannelNormalizationGradient

SYNOPSIS

#import <MPSCNNNormalization.h>

Inherits MPSCNNGradientKernel.

  Instance Methods
(nonnull instancetype) - initWithDevice:kernelSize:
(nullable instancetype) - initWithCoder:device:

  Properties
float alpha
float beta
float delta
NSUInteger kernelSize

  Additional Inherited Members

Detailed Description

This depends on Metal.framework Specifies the normalization gradient filter across feature channels. This normalization filter applies the filter to a local region across nearby feature channels, but with no spatial extent (i.e., they have shape kernelSize x 1 x 1). The normalized output is given by: Y(i,j,k) = X(i,j,k) / L(i,j,k)^beta, where the normalizing factor is: L(i,j,k) = delta + alpha/N * (sum_{q in Q(k)} X(i,j,q)^2, where N is the kernel size. The window Q(k) itself is defined as: Q(k) = [max(0, k-floor(N/2)), min(D-1, k+floor((N-1)/2)], where

k is the feature channel index (running from 0 to D-1) and D is the number of feature channels, and alpha, beta and delta are paremeters. It is the end-users responsibility to ensure that the combination of the parameters delta and alpha does not result in a situation where the denominator becomes zero - in such situations the resulting pixel-value is undefined.

OutputGradient: dZ/dX(i,j,k) = dZ/dY(i,j,k) * (L(i,j,k)^-beta) - 2 * alpha * beta * X(i,j,k) * ( sum_{r in R(k)} dZ/dY(i,j,r) * X(i,j,r) * (L(i,j,r) ^ (-beta-1)) ) N is the kernel size. The window L(i) and K(j) itself is defined as: R(k) = [max(0, k-floor((N-1)/2)), min(D-1, k+floor(N/2)]

For correct gradient computation all parameters must be the same as the original normalization filter.

Method Documentation

  - (nullable instancetype) initWithCoder: (NSCoder *__nonnull) aDecoder(nonnull id< MTLDevice >) device
NSSecureCoding compatability While the standard NSSecureCoding/NSCoding method -initWithCoder: should work, since the file can't know which device your data is allocated on, we have to guess and may guess incorrectly. To avoid that problem, use initWithCoder:device instead.

Parameters:
    aDecoder The NSCoder subclass with your serialized MPSKernel
    device The MTLDevice on which to make the MPSKernel

Returns:
    A new MPSKernel object, or nil if failure.

Reimplemented from MPSCNNGradientKernel.

  - (nonnull instancetype) initWithDevice: (nonnull id< MTLDevice >) device(NSUInteger) kernelSize
Initialize a cross channel normalization gradient filter

Parameters:
    device The device the filter will run on
    kernelSize The kernel filter size in each dimension.

Returns:
    A valid MPSCNNCrossChannelNormalization object or nil, if failure.

Property Documentation

  - alpha [read], [write], [nonatomic], [assign]
The value of alpha. Default is 1.0. Must be non-negative.

  - beta [read], [write], [nonatomic], [assign]
The value of beta. Default is 5.0

  - delta [read], [write], [nonatomic], [assign]
The value of delta. Default is 1.0

  - kernelSize [read], [nonatomic], [assign]
The size of the square filter window. Default is 5

Author

Generated automatically by Doxygen for MetalPerformanceShaders.framework from the source code.