ConvertToTensor得到的tensor和Image尺寸不一致
收藏回复举报
ConvertToTensor得到的tensor和Image尺寸不一致
发表于2025-09-23 14:23:47
0 查看

环境:CANN8.2.RC1, mxvision6.0

程序如下:

APP_ERROR ret;
    // imageProcess init
    MxBase::ImageProcessor imageProcessor(deviceId); 

    // model init
    MxBase::Model yoloV3(modelPath, deviceId);

    // *****2读取图片
    MxBase::Image decodedImage;
    ret = imageProcessor.Decode(imgPath, decodedImage, ImageFormat::YUV_SP_420);
    if (ret != APP_ERR_OK) {
        LogError << "Decode failed, ret=" << ret;
        return;
    }

    // *****3缩放图片
    MxBase::Image resizeImage;
    // set size param
    Size resizeConfig(640, 512);

    ret = imageProcessor.Resize(decodedImage, resizeConfig, resizeImage, Interpolation::HUAWEI_HIGH_ORDER_FILTER);
    if (ret != APP_ERR_OK) {
        LogError << "Resize failed, ret=" << ret;
        return;
    }

    // save resize image
    std::string path = "./resized_yolov3_416.jpg";
    ret = imageProcessor.Encode(resizeImage, path);
    if (ret != APP_ERR_OK) {
        LogError << "Encode failed, ret=" << ret;
        return;
    }

    // *****4模型推理
    Tensor tensorImg = resizeImage.ConvertToTensor();
    ret = tensorImg.ToDevice(deviceId);
    if (ret != APP_ERR_OK) {
        LogError << "ToDevice failed, ret=" << ret;
        return;
    }

Resize后图像尺寸为[640,512],但tensor尺寸为[768,640],通道数也不正确

p resizeImage.GetOriginalSize()
$4 = {width = 640, height = 512}
(gdb) p resizeImage.GetSize()        
$5 = {width = 640, height = 512}
(gdb) p (tensorImg.GetShape()[0]                  
A syntax error in expression, near `'.
(gdb) p tensorImg.GetShape()[0] 
$6 = (__gnu_cxx::__alloc_traits<std::allocator<unsigned int>, unsigned int>::value_type &) @0xaaaaadc83fc0: 1
(gdb) p tensorImg.GetShape()[1]
$7 = (__gnu_cxx::__alloc_traits<std::allocator<unsigned int>, unsigned int>::value_type &) @0xaaaaadc8ff44: 768
(gdb) p tensorImg.GetShape()[2]
$8 = (__gnu_cxx::__alloc_traits<std::allocator<unsigned int>, unsigned int>::value_type &) @0xaaaaadfbdc48: 640
(gdb) p tensorImg.GetShape()[3]
$9 = (__gnu_cxx::__alloc_traits<std::allocator<unsigned int>, unsigned int>::value_type &) @0xaaaaadc8fdec: 1

我要发帖子