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