Skip to content

Commit

Permalink
[TOPI] Remove cpp upsampling and resize op (#4769)
Browse files Browse the repository at this point in the history
* remove cpp upsampling

* remove cpp resize
  • Loading branch information
masahi authored and vinx13 committed Jan 24, 2020
1 parent 1ae44cf commit 69d2f9b
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 515 deletions.
42 changes: 41 additions & 1 deletion topi/include/topi/detail/tensor_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
#define TOPI_DETAIL_TENSOR_UTILS_H_


#include <tvm/te/operation.h>

namespace topi {
namespace detail {
using namespace tvm;
Expand All @@ -50,7 +52,45 @@ inline bool is_empty_shape(const Array<PrimExpr>& x) {
return is_empty;
}

/*!
* \brief Sample a point in a tensor using bilinear interpolation.
*
* \param input The input tensor.
* \param indices The index of the target point, which can be fractional
* \param max_y The maximum of y dimension
* \param max_x The maximum of x dimension
*
* \return The interpolated value in the given index.
*/
inline PrimExpr bilinear_sample_nchw(const Tensor& input, const Array<PrimExpr>& indices,
const PrimExpr max_y, const PrimExpr max_x) {
auto in_y = indices[2];
auto yf = tvm::floor(in_y);
auto yc = tvm::cast(DataType::Int(32), tvm::ceil(in_y));

auto y0 = tvm::cast(DataType::Int(32), tvm::floor(in_y));
auto y1 = tvm::if_then_else((yc > max_y), max_y, yc);
auto y_lerp = in_y - yf;

auto in_x = indices[3];
auto xf = tvm::floor(in_x);
auto xc = tvm::cast(DataType::Int(32), tvm::ceil(in_x));

auto x0 = tvm::cast(DataType::Int(32), tvm::floor(in_x));
auto x1 = tvm::if_then_else((xc > max_x), max_x, xc);
auto x_lerp = in_x - xf;

auto A = input(indices[0], indices[1], y0, x0);
auto B = input(indices[0], indices[1], y0, x1);
auto C = input(indices[0], indices[1], y1, x0);
auto D = input(indices[0], indices[1], y1, x1);

return A * ( 1 - x_lerp) * ( 1 - y_lerp) +
B * x_lerp * (1 - y_lerp) +
C * (1 - x_lerp) * y_lerp +
D * x_lerp * y_lerp;
}

} // namespace detail
} // namespace topi
#endif // TOPI_DETAIL_TENSOR_UTILS_H_

Loading

0 comments on commit 69d2f9b

Please sign in to comment.