대상 텐서 크기를 계산하기 위해 배율 인수를 사용하여 적절한 경우 앤티앨리징을 사용하여 원본에서 대상 텐서로 요소를 다시 샘플링합니다. 선형 또는 가장 가까운 인접 보간 모드를 사용할 수 있습니다. 연산자는 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_NEAREST_NEIGHBOR. 각 출력 요소에 대한 해당 픽셀 오프셋에 가장 가까운 입력 요소를 선택하는 가장 가까운 인접 알고리즘을 사용합니다.
DML_INTERPOLATION_MODE_LINEAR. 차원당 가장 가까운 두 입력 요소의 가중 평균을 계산하여 출력 요소를 계산하는 선형 보간 알고리즘을 사용합니다. 다시 샘플링은 최대 4개의 차원(쿼드리라인)으로 지원되며, 가중 평균은 각 출력 요소에 대한 총 16개의 입력 요소에 대해 계산됩니다.
RoundingDirection
분수 좌표를 입력 픽셀에 다시 매핑할 때 각 축을 따라 반올림할 방향입니다. 양방향 보간은 어쨌든 소수 좌표를 보간하므로 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR 영향을 줍니다.
DML_AXIS_DIRECTION_INCREASING. 축 값(ceil)을 늘리기 위해 소수 좌표를 반올림합니다.
DML_AXIS_DIRECTION_DECREASING. 축 값(바닥)을 줄이는 방향으로 소수 좌표를 반올림합니다.
DimensionCount
형식: UINT
Scales, InputPixelOffsets 및 OutputPixelOffsets 배열의 요소 수입니다. 이 값은 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 제약 조건
InputTensor 및 OutputTensor 에는 동일한 DataType 및 DimensionCount가 있어야 합니다.
Tensor 지원
| 텐서 | 종류 | 지원되는 차원 수 | 지원되는 데이터 형식 |
|---|---|---|---|
| 입력 텐서 | 입력 | 1~4 | FLOAT32, FLOAT16, INT8, UINT8 |
| 출력텐서 | 출력 | 1~4 | FLOAT32, FLOAT16, INT8, UINT8 |
요구 사항
| 머리글 | directml.h |