【发布时间】:2019-08-27 02:58:31
【问题描述】:
我已经使用 unet 架构训练了一个深度学习模型,以便在 python 和 pytorch 中分割核。我想加载这个预训练模型并用 C++ 进行预测。为此,我获得了跟踪文件(带有 pt 扩展名)。然后,我运行了这段代码:
#include <iostream>
#include <torch/script.h> // One-stop header.
#include <iostream>
#include <memory>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main(int argc, const char* argv[]) {
Mat image;
image = imread("C:/Users/Sercan/PycharmProjects/samplepyTorch/test_2.png", CV_LOAD_IMAGE_COLOR);
std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("C:/Users/Sercan/PycharmProjects/samplepyTorch/epistroma_unet_best_model_trace.pt");
module->to(torch::kCUDA);
std::vector<int64_t> sizes = { 1, 3, image.rows, image.cols };
torch::TensorOptions options(torch::ScalarType::Byte);
torch::Tensor tensor_image = torch::from_blob(image.data, torch::IntList(sizes), options);
tensor_image = tensor_image.toType(torch::kFloat);
auto result = module->forward({ tensor_image.to(at::kCUDA) }).toTensor();
result = result.squeeze().cpu();
result = at::sigmoid(result);
cv::Mat img_out(image.rows, image.cols, CV_32F, result.data<float>());
cv::imwrite("img_out.png", img_out);
}
图像输出(第一张图:测试图,第二张图:Python预测结果,第三张图:C++预测结果):
如您所见,C++ 预测输出与 python 预测输出不同。您能提供解决此问题的解决方案吗?
【问题讨论】:
标签: c++ machine-learning deep-learning computer-vision pytorch