Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确地将cv::Mat转换为值完全匹配的torch::Tensor? 我试图在C++中对JIT跟踪模型进行推理,而目前我在Python中得到的输出与C++中的输出不同。 最初我认为这是JIT模型本身造成的,但现在我不这么认为,因为我发现C++代码中输入张量有一些小的偏差。我相信我按照文档的指示做了所有事情,这样就可以在torch::from_blob中显示问题。我不确定 因此,为了确保是哪种情况,这里有Python和C++中的片段加上测试它的样本输入。_C++_Opencv_Torch_Libtorch - Fatal编程技术网

如何正确地将cv::Mat转换为值完全匹配的torch::Tensor? 我试图在C++中对JIT跟踪模型进行推理,而目前我在Python中得到的输出与C++中的输出不同。 最初我认为这是JIT模型本身造成的,但现在我不这么认为,因为我发现C++代码中输入张量有一些小的偏差。我相信我按照文档的指示做了所有事情,这样就可以在torch::from_blob中显示问题。我不确定 因此,为了确保是哪种情况,这里有Python和C++中的片段加上测试它的样本输入。

如何正确地将cv::Mat转换为值完全匹配的torch::Tensor? 我试图在C++中对JIT跟踪模型进行推理,而目前我在Python中得到的输出与C++中的输出不同。 最初我认为这是JIT模型本身造成的,但现在我不这么认为,因为我发现C++代码中输入张量有一些小的偏差。我相信我按照文档的指示做了所有事情,这样就可以在torch::from_blob中显示问题。我不确定 因此,为了确保是哪种情况,这里有Python和C++中的片段加上测试它的样本输入。,c++,opencv,torch,libtorch,C++,Opencv,Torch,Libtorch,以下是示例图像: 对于Pytorch,运行以下代码片段: 导入cv2 进口火炬 从PIL导入图像 输入数学 将numpy作为np导入 img=Image.open('D:/code/imgs/profile6.jpg')) 宽度、高度=img.size 比例=0.6 sw,sh=math.ceil(宽度*比例),math.ceil(高度*比例) img=img.resize((sw,sh),Image.BILINEAR) img=np.asarray(img,'float32') #预处理 i

以下是示例图像:

对于Pytorch,运行以下代码片段:

导入cv2
进口火炬
从PIL导入图像
输入数学
将numpy作为np导入
img=Image.open('D:/code/imgs/profile6.jpg'))
宽度、高度=img.size
比例=0.6
sw,sh=math.ceil(宽度*比例),math.ceil(高度*比例)
img=img.resize((sw,sh),Image.BILINEAR)
img=np.asarray(img,'float32')
#预处理
img=img.转置((2,0,1))
img=np.展开尺寸(img,0)
img=(img-127.5)*0.0078125
img=火炬,来自(img)
对于C++:

#包括
#包括
#包括
使用名称空间torch::索引;
#包括
#包括
#包括
void test15()
{
std::string pnet_path=“D:/code//MTCNN/pnet.jit”;
cv::Mat img=cv::imread(“D:/code/imgs/profile6.jpg”);
int width=img.cols;
int height=img.rows;
浮标度=0.6f;
int sw=int(标准::ceil(宽度*比例));
int sh=int(标准::ceil(高度*刻度));
//cv::Mat img;
cv::resize(img,img,cv::Size(sw,sh),0,0,1);
auto-tensor_image=torch::from_blob(img.data,{img.rows,img.cols,img.channels()},at::kByte);
张量图像=张量图像.permute({2,0,1});
张量图像(0);
张量图像=张量图像.toType(c10::kFloat).sub(127.5).mul(0.0078125);
tensor_image.to(c10::DeviceType::CPU);
}
###输入比较:
这是Python和C++中的张量值。
Pytorch输入(`img[:,:,:10,:10]`):
```蟒蛇
张量([[
[[0.3555,  0.3555,  0.3477,  0.3555,  0.3711,  0.3945,  0.3945,  0.3867,  0.3789,  0.3789],
[ 0.3477,  0.3555,  0.3555,  0.3555,  0.3555,  0.3555,  0.3555,  0.3477,  0.3398,  0.3398],
[ 0.3320,  0.3242,  0.3320,  0.3242,  0.3320,  0.3398,  0.3398,  0.3242,  0.3164,  0.3242],
[ 0.2852,  0.2930,  0.2852,  0.2852,  0.2930,  0.2930,  0.2930,  0.2852,  0.2773,  0.2773],
[ 0.2539,  0.2617,  0.2539,  0.2617,  0.2539,  0.2148,  0.2148,  0.2148,  0.2070,  0.2070],
[ 0.1914,  0.1914,  0.1836,  0.1836,  0.1758,  0.1523,  0.1367,  0.1211,  0.0977,  0.0898],
[ 0.1367,  0.1211,  0.0977,  0.0820,  0.0742,  0.0586,  0.0273,  -0.0195, -0.0742, -0.0820],
[-0.0039, -0.0273, -0.0508, -0.0664, -0.0898, -0.1211, -0.1367, -0.1523, -0.1758, -0.1758],
[-0.2070, -0.2070, -0.2148, -0.2227, -0.2148, -0.1992, -0.1992, -0.1836, -0.1680, -0.1680],
[-0.2539, -0.2461, -0.2383, -0.2305, -0.2227, -0.1914, -0.1836, -0.1758, -0.1680, -0.1602]],
[[0.8398,  0.8398,  0.8320,  0.8242,  0.8320,  0.8477,  0.8398, 0.8320,  0.8164,  0.8164],
[ 0.8320,  0.8242,  0.8164,  0.8164,  0.8086,  0.8008,  0.7930, 0.7852,  0.7695,  0.7695],
[ 0.7852,  0.7852,  0.7773,  0.7695,  0.7695,  0.7617,  0.7539, 0.7383,  0.7305,  0.7148],
[ 0.7227,  0.7070,  0.7070,  0.6992,  0.6914,  0.6836,  0.6836, 0.6680,  0.6523,  0.6367],
[ 0.6289,  0.6211,  0.6211,  0.6211,  0.6055,  0.5586,  0.5508, 0.5352,  0.5273,  0.5039],
[ 0.4805,  0.4727,  0.4648,  0.4648,  0.4570,  0.4180,  0.3945, 0.3633,  0.3477,  0.3164],
[ 0.3555,  0.3398,  0.3086,  0.2930,  0.2695,  0.2461,  0.2070, 0.1523,  0.1055,  0.0820],
[ 0.1367,  0.1133,  0.0820,  0.0508,  0.0273, -0.0117, -0.0352, -0.0508, -0.0820, -0.0898],
[-0.1211, -0.1289, -0.1445, -0.1602, -0.1602, -0.1523, -0.1523, -0.1367, -0.1367, -0.1289],
[-0.2070, -0.1992, -0.1992, -0.1992, -0.1992, -0.1680, -0.1680, -0.1602, -0.1523, -0.1445]],
[[0.9492,  0.9414,  0.9336,  0.9180,  0.9180,  0.9336,  0.9258, 0.9023,  0.8867,  0.9023],
[ 0.9258,  0.9258,  0.9102,  0.9023,  0.8945,  0.8789,  0.8633, 0.8477,  0.8320,  0.8398],
[ 0.8711,  0.8633,  0.8555,  0.8477,  0.8320,  0.8242,  0.8086, 0.7930,  0.7852,  0.7773],
[ 0.7852,  0.7773,  0.7617,  0.7539,  0.7461,  0.7305,  0.7148, 0.6992,  0.6914,  0.6836],
[ 0.6758,  0.6680,  0.6602,  0.6602,  0.6367,  0.5820,  0.5742, 0.5508,  0.5430,  0.5273],
[ 0.5117,  0.5117,  0.4961,  0.4883,  0.4727,  0.4336,  0.4102, 0.3711,  0.3477,  0.3242],
[ 0.3867,  0.3711,  0.3398,  0.3164,  0.2930,  0.2539,  0.2148, 0.1523,  0.1055,  0.0820],
[ 0.1680,  0.1445,  0.1055,  0.0742,  0.0352, -0.0039, -0.0273, -0.0586, -0.0820, -0.0898],
[-0.0898, -0.0977, -0.1211, -0.1367, -0.1445, -0.1445, -0.1445, -0.1445, -0.1445, -0.1445],
[-0.1758, -0.1680, -0.1680, -0.1680, -0.1680, -0.1523, -0.1523, -0.1602, -0.1602, -0.1523]]]])
C++/Libtorch张量值(
img.index({Slice(),Slice(),Slice(None,10),Slice(None,10)});
):

img:(1,1,.)=
0.3555  0.3555  0.3555  0.3555  0.3555  0.4023  0.3945  0.3867  0.3789  0.3789
0.3633  0.3633  0.3555  0.3555  0.3555  0.3555  0.3477  0.3555  0.3398  0.3398
0.3398  0.3320  0.3320  0.3242  0.3398  0.3320  0.3398  0.3242  0.3242  0.3242
0.2930  0.2930  0.2852  0.2773  0.2852  0.2930  0.2852  0.2852  0.2773  0.2852
0.2695  0.2695  0.2617  0.2773  0.2695  0.2227  0.2227  0.2227  0.2148  0.2148
0.1914  0.1914  0.1914  0.1914  0.1914  0.1602  0.1445  0.1289  0.1055  0.0977
0.1289  0.1133  0.0820  0.0742  0.0586  0.0586  0.0195 -0.0273 -0.0820 -0.0898
0.0039 -0.0195 -0.0508 -0.0664 -0.0820 -0.1289 -0.1445 -0.1602 -0.1836 -0.1836
-0.2070 -0.2148 -0.2227 -0.2383 -0.2305 -0.2070 -0.2070 -0.1914 -0.1836 -0.1758
-0.2539 -0.2461 -0.2461 -0.2383 -0.2305 -0.1914 -0.1914 -0.1758 -0.1680 -0.1602
(1,2,.,
img.shape: (3, 101, 180)
img: [
 [[173. 173. 172. 173. 175.]
  [172. 173. 173. 173. 173.]
  [170. 169. 170. 169. 170.]
  [164. 165. 164. 164. 165.]
  [160. 161. 160. 161. 160.]]

 [[235. 235. 234. 233. 234.]
  [234. 233. 232. 232. 231.]
  [228. 228. 227. 226. 226.]
  [220. 218. 218. 217. 216.]
  [208. 207. 207. 207. 205.]]

 [[249. 248. 247. 245. 245.]
  [246. 246. 244. 243. 242.]
  [239. 238. 237. 236. 234.]
  [228. 227. 225. 224. 223.]
  [214. 213. 212. 212. 209.]]]