다음을 통해 공유


DML_RESAMPLE3_OPERATOR_DESC 구조체(directml.h)

대상 텐서 크기를 계산하기 위해 배율 인수를 사용하여 적절한 경우 앤티앨리징을 사용하여 원본에서 대상 텐서로 요소를 다시 샘플링합니다. 선형 또는 가장 가까운 인접 보간 모드를 사용할 수 있습니다. 연산자는 2D뿐만 아니라 여러 차원의 보간을 지원합니다. 따라서 동일한 공간 크기를 유지할 수 있지만 채널 간 또는 일괄 처리 간에 보간할 수 있습니다. 입력 좌표와 출력 좌표 간의 관계는 다음과 같습니다.

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

중요하다

이 API는 DirectML 독립 실행형 재배포 가능 패키지의 일부로 사용할 수 있습니다( Microsoft.AI.DirectML 버전 1.15.1 이상 참조). 또한 DirectML 버전 기록 참조하세요.

통사론

struct DML_RESAMPLE3_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    DML_INTERPOLATION_MODE InterpolationMode;
    DML_AXIS_DIRECTION RoundingDirection;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const FLOAT* Scales;
    _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
    _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
    BOOL Antialiased;
};

회원

InputTensor

형식: const DML_TENSOR_DESC*

입력 데이터를 포함하는 텐서입니다.

OutputTensor

형식: const DML_TENSOR_DESC*

출력 데이터를 쓸 텐서입니다.

InterpolationMode

형식: DML_INTERPOLATION_MODE

이 필드는 출력 픽셀을 선택하는 데 사용되는 보간 종류를 결정합니다.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. 각 출력 요소에 대한 해당 픽셀 오프셋에 가장 가까운 입력 요소를 선택하는 가장 가까운 인접 알고리즘을 사용합니다.

  • DML_INTERPOLATION_MODE_LINEAR. 차원당 가장 가까운 두 입력 요소의 가중 평균을 계산하여 출력 요소를 계산하는 선형 보간 알고리즘을 사용합니다. 다시 샘플링은 최대 4개의 차원(쿼드리라인)으로 지원되며, 가중 평균은 각 출력 요소에 대한 총 16개의 입력 요소에 대해 계산됩니다.

RoundingDirection

형식: DML_AXIS_DIRECTION

분수 좌표를 입력 픽셀에 다시 매핑할 때 각 축을 따라 반올림할 방향입니다. 양방향 보간은 어쨌든 소수 좌표를 보간하므로 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR 영향을 줍니다.

  • DML_AXIS_DIRECTION_INCREASING. 축 값(ceil)을 늘리기 위해 소수 좌표를 반올림합니다.

  • DML_AXIS_DIRECTION_DECREASING. 축 값(바닥)을 줄이는 방향으로 소수 좌표를 반올림합니다.

DimensionCount

형식: UINT

Scales, InputPixelOffsetsOutputPixelOffsets 배열의 요소 수입니다. 이 값은 InputTensor 및 OutputTensor차원 수와 일치해야 합니다.

Scales

형식: _Field_size_(DimensionCount) const FLOAT*

입력을 다시 샘플링할 때 적용할 크기 조정입니다. 여기서 크기 조정 > 1은 이미지를 확장하고 < 1은 해당 차원의 이미지를 스케일 다운합니다. 배율을 정확히 OutputSize / InputSize필요는 없습니다. 크기 조정 후 입력이 출력 바인딩보다 크면 출력 크기로 자른다. 반면, 크기 조정 후 입력이 출력 바인딩보다 작으면 출력 가장자리가 고정됩니다.

InputPixelOffsets

형식: _Field_size_(DimensionCount) const FLOAT*

다시 샘플링하기 전에 입력 픽셀에 적용할 오프셋입니다. 이 값이 0이면 픽셀의 왼쪽 위 모서리가 중심 대신 사용되므로 일반적으로 예상 결과를 제공하지 않습니다. 픽셀의 중심을 사용하여 이미지를 다시 샘플링하고 DML_RESAMPLE_OPERATOR_DESC것과 동일한 동작을 얻으려면 이 값은 0.5여야 합니다.

OutputPixelOffsets

형식: _Field_size_(DimensionCount) const FLOAT*

다시 샘플링한 후 출력 픽셀에 적용할 오프셋입니다. 이 값이 0이면 픽셀의 왼쪽 위 모서리가 중심 대신 사용되므로 일반적으로 예상 결과를 제공하지 않습니다. 픽셀의 중심을 사용하여 이미지를 다시 샘플링하고 DML_RESAMPLE_OPERATOR_DESC 동일한 동작을 얻으려면 이 값이 -0.5여야 합니다.

Antialiased

형식: BOOL

앤티앨리어싱은 리샘플링 필터를 max(1, 1 / scale)인수로 확장하여 수행됩니다. 즉, 다운샘플링할 때 더 많은 입력 픽셀이 출력 픽셀에 기여합니다.

이 플래그는 TRUE다음 조건을 가정할 때 발생합니다.

  • InterpolationMode가 DML_INTERPOLATION_MODE_LINEAR
  • 1/배율 > 2

그런 다음 이 연산자는 다운 스케일링할 때 앤티 앨리어싱 필터를 사용합니다.

발언

Antialiased인 경우 false이 연산자는 DML_RESAMPLE2_OPERATOR_DESC 동일합니다.

가용도

이 연산자는 DML_FEATURE_LEVEL_6_4 도입되었습니다.

Tensor 제약 조건

InputTensorOutputTensor 에는 동일한 DataTypeDimensionCount가 있어야 합니다.

Tensor 지원

텐서 종류 지원되는 차원 수 지원되는 데이터 형식
입력 텐서 입력 1~4 FLOAT32, FLOAT16, INT8, UINT8
출력텐서 출력 1~4 FLOAT32, FLOAT16, INT8, UINT8

요구 사항

   
머리글 directml.h