| | |
| | #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); |
| | } |
| |
|
| | } |
| |
|