| |
| #pragma once |
| #include <torch/types.h> |
|
|
| namespace detectron2 { |
|
|
| at::Tensor ROIAlignRotated_forward_cpu( |
| const at::Tensor& input, |
| const at::Tensor& rois, |
| const float spatial_scale, |
| const int pooled_height, |
| const int pooled_width, |
| const int sampling_ratio); |
|
|
| at::Tensor ROIAlignRotated_backward_cpu( |
| const at::Tensor& grad, |
| const at::Tensor& rois, |
| const float spatial_scale, |
| const int pooled_height, |
| const int pooled_width, |
| const int batch_size, |
| const int channels, |
| const int height, |
| const int width, |
| const int sampling_ratio); |
|
|
| #if defined(WITH_CUDA) || defined(WITH_HIP) |
| at::Tensor ROIAlignRotated_forward_cuda( |
| const at::Tensor& input, |
| const at::Tensor& rois, |
| const float spatial_scale, |
| const int pooled_height, |
| const int pooled_width, |
| const int sampling_ratio); |
|
|
| at::Tensor ROIAlignRotated_backward_cuda( |
| const at::Tensor& grad, |
| const at::Tensor& rois, |
| const float spatial_scale, |
| const int pooled_height, |
| const int pooled_width, |
| const int batch_size, |
| const int channels, |
| const int height, |
| const int width, |
| const int sampling_ratio); |
| #endif |
|
|
| |
| inline at::Tensor ROIAlignRotated_forward( |
| const at::Tensor& input, |
| const at::Tensor& rois, |
| const double spatial_scale, |
| const int64_t pooled_height, |
| const int64_t pooled_width, |
| const int64_t sampling_ratio) { |
| if (input.is_cuda()) { |
| #if defined(WITH_CUDA) || defined(WITH_HIP) |
| return ROIAlignRotated_forward_cuda( |
| input, |
| rois, |
| spatial_scale, |
| pooled_height, |
| pooled_width, |
| sampling_ratio); |
| #else |
| AT_ERROR("Detectron2 is not compiled with GPU support!"); |
| #endif |
| } |
| return ROIAlignRotated_forward_cpu( |
| input, rois, spatial_scale, pooled_height, pooled_width, sampling_ratio); |
| } |
|
|
| inline at::Tensor ROIAlignRotated_backward( |
| const at::Tensor& grad, |
| const at::Tensor& rois, |
| const double spatial_scale, |
| const int64_t pooled_height, |
| const int64_t pooled_width, |
| const int64_t batch_size, |
| const int64_t channels, |
| const int64_t height, |
| const int64_t width, |
| const int64_t sampling_ratio) { |
| if (grad.is_cuda()) { |
| #if defined(WITH_CUDA) || defined(WITH_HIP) |
| return ROIAlignRotated_backward_cuda( |
| grad, |
| rois, |
| spatial_scale, |
| pooled_height, |
| pooled_width, |
| batch_size, |
| channels, |
| height, |
| width, |
| sampling_ratio); |
| #else |
| AT_ERROR("Detectron2 is not compiled with GPU support!"); |
| #endif |
| } |
| return ROIAlignRotated_backward_cpu( |
| grad, |
| rois, |
| spatial_scale, |
| pooled_height, |
| pooled_width, |
| batch_size, |
| channels, |
| height, |
| width, |
| sampling_ratio); |
| } |
|
|
| } |
|
|