Скопируйте GpuMat в CUDA Tensor

Я пытаюсь выполнить вывод модели в C ++.
Я успешно проследил модель в Python с torch.jit.trace,
Я могу загрузить модель в C ++, используя torch::jit::load(),
Я был в состоянии сделать вывод как на процессоре, так и на GPU, однако отправная точка всегда была torch::from_blob метод, который, кажется, создает тензор на стороне процессора.
Для эффективности я хотел бы разыграть / скопировать cv::cuda::GpuMat непосредственно в CUDA Tensor. Я копался в пыторке тесты а также документы в поисках удобного примера, но не смог найти.

Вопрос:
Как создать CUDA Tensor из cv :: cuda :: GpuMat?

0

Решение

Вот пример:

//define the deleter ...
void deleter(void* arg) {};

//your convert function

cuda::GpuMat gImage;

//build or load your image here ...

std::vector<int64_t> sizes = {1, static_cast<int64_t>(gImage.channels()),
static_cast<int64_t>(gImage.rows),
static_cast<int64_t>(gImage.cols)};

long long step = gImage.step / sizeof(float);

std::vector<int64_t> strides = {1, 1, step, static_cast<int64_t>(gImage.channels())};

auto tensor_image = torch::from_blob(gImage.data, sizes, strides, deleter,  torch::kCUDA);
std::cout << "output tensor image : " << tensor_image << std::endl;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]