在NPU上的切片操作x=x[:,::-1,:,:]不生效的分析解决

2023-11-09

1 系统环境

硬件环境(Ascend/GPU/CPU): Ascend&GPU

MindSpore版本: 1.9.0

执行模式(PyNative/ Graph): 不限

Python版本: 3.7.5

操作系统平台:Linux

2 报错信息

2.1  问题描述

NPU上的切片操作x=x[:,::-1,:,:]不生效,在GPU上生效

2.2  报错信息

GPU运行结果:

import os
import cv2
import sys
import numpy as np
import mindspore
from mindspore import context
from mindspore import nn
if __name__ == '__main__':
    # device_id = int(os.getenv('DEVICE_ID'), 0)
    # context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend",
                        device_id=device_id, save_graphs=False)
    context.set_context(mode=context.GRAPH_MODE, device_target="GPU", save_graphs=False)
    # create backbone
    x=cv2.imread('0100000000.jpg').transpose(2,0,1).astype(np.float32)
    x=mindspore.Tensor(x)[None,:,:,:]
    x=x[:,::-1,:,:]
    print(x)

Tensor(shape=[1,3,1080,1920],dtype=Float32, value= 
[[[[ 4.000000000+01, 4.100000000+81, 4.180000000+01...1.000080880+88, 1.080808880+80, 1.000000000+00],
   [ 4.100000000+01, 4.100000000+01, 4.100000000+01...1.000000000+80, 1.000008000+00, 1.000000000+00],
   [ 4.900000000+01, 4.980000000+01, 4.900000000+01...1.000000000+00, 1.000008080+00, 1.000000000+00],
   ...
   [ 5.500000000+01, 5.400000080+01, 5.480808080+01...1.000000000+01, 1.000000080+01, 1.000000000+01],
   [ 5.000000000+01, 5.000000000+01, 5.000008000+01...9.000000000+00, 9.000800000+00, 9.000000000+00],
   [ 5.000000000+01, 5.000000000+01, 4.900000000+01...8.000000000+00, 8.080808080+88, 8.000000000+00]],
  [[ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000008000+01, 1.000000ø00+01],
   [ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000000000+01, 1.000000000+01],
   [ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000000080+01, 1.000000000+01],
   ...
   [ 4.500000000+01, 4.400000000+01, 4.400000080+01...1.000000000+01, 1.000000000+01, 1.000800080+01],
   [ 4.100000000+01, 4.100008000+01, 4.100008000+01...9.080080880+80, 9.080808080+88, 9.000000000+00],
   [ 4.100000000+01, 4.100000000+01, 4.000000000+01...8.000000000+00, 8.000000000+00, 8.000000000+00]],
  [[ 4.000000000+01, 4.000000000+01, 4.000000000+01...1.400000000+01, 1.400000000+01, 1.400008000+01],
   [ 4.000000000+01, 4.080000000+01, 4.000000000+01...1.400000000+01, 1.480000000+01, 1.400000000+01],
   [ 4.000000000+01, 4.000000000+01, 4.000000000+01...1.400000000+01, 1.400000000+01, 1.400000000+01],
   ...
   [ 9.500000000+01, 9.400000000+01, 9.480808080+01...7.088000000+01, 7.080808080+01, 7.000000080+01],
   [ 9.100000000+01, 9.100000000+01, 9.100000000+01...7.000000000+00, 7.000000000+00, 7.000000000+00],
   [ 9.100000000+01, 9.100000000+01, 9.000008080+01...7.000000000+00, 7.000000000+00, 7.000000000+00]]]])复制

ASCEND 910上运行结果:

2.3  脚本代码(代码格式,可上传附件)

import os
import cv2
import sys
import numpy as np
import mindspore
from mindspore import context
from mindspore import nn
if __name__ == '__main__':
    device_id = int(os.getenv('DEVICE_ID'), 0)
    context.set_context(mode=context.PYNATIVE_MODE, device_target="Ascend",
                        device_id=device_id, save_graphs=False)
    # context.set_context(mode=context.GRAPH_MODE, device_target="GPU", save_graphs=False)
    #create backbone
    x=cv2.imread('0100000000.jpg').transpose(2,0,1).astype(np.float32)
    x=mindspore.Tensor(x)[None,:,:,:]
    x=x[:,::-1,:,:]
    print(x)

Tensor(shape=[1,3,1080,1920],dtype=Float32, value= 
[[[[ 9.100000000+01, 9.100000000+81, 9.180000000+01...7.000080880+88, 7.080808880+80, 7.000000000+00],
   [ 9.100000000+01, 9.100000000+01, 9.100000000+01...7.000000000+80, 7.000008000+00, 7.000000000+00],
   [ 8.900000000+01, 8.980000000+01, 8.900000000+01...7.000000000+00, 7.000008080+00, 7.000000000+00],
   ...
   [ 5.500000000+01, 5.400000080+01, 5.480808080+01...1.000000000+01, 1.000000080+01, 1.000000000+01],
   [ 5.000000000+01, 5.000000000+01, 5.000008000+01...9.000000000+00, 9.000800000+00, 9.000000000+00],
   [ 5.000000000+01, 5.000000000+01, 4.900000000+01...8.000000000+00, 8.080808080+88, 8.000000000+00]],
  [[ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000008000+01, 1.000000ø00+01],
   [ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000000000+01, 1.000000000+01],
   [ 4.400000000+01, 4.400000000+01, 4.400000000+01...1.000000000+01, 1.000000080+01, 1.000000000+01],
   ...
   [ 4.500000000+01, 4.400000000+01, 4.400000080+01...1.000000000+01, 1.000000000+01, 1.000800080+01],
   [ 4.100000000+01, 4.100008000+01, 4.100008000+01...9.080080880+80, 9.080808080+88, 9.000000000+00],
   [ 4.100000000+01, 4.100000000+01, 4.000000000+01...8.000000000+00, 8.000000000+00, 8.000000000+00]],
  [[ 4.000000000+01, 4.000000000+01, 4.000000000+01...1.400000000+01, 1.400000000+01, 1.400008000+01],
   [ 4.000000000+01, 4.080000000+01, 4.000000000+01...1.400000000+01, 1.480000000+01, 1.400000000+01],
   [ 4.000000000+01, 4.000000000+01, 4.000000000+01...1.400000000+01, 1.400000000+01, 1.400000000+01],
   ...
   [ 3.500000000+01, 3.400000000+01, 3.480808080+01...1.088000000+01, 1.080808080+01, 1.000000080+01],
   [ 3.100000000+01, 3.100000000+01, 3.100000000+01...9.000000000+00, 9.000000000+00, 9.000000000+00],
   [ 3.100000000+01, 3.100000000+01, 3.000008080+01...8.000000000+00, 8.000000000+00, 8.000000000+00]]]])复制

3 根因分析

在进行切片操时,是会转换成算子ScatterNdUpdate进行计算,这个算子在ascend 上没有所能支持的规格。

4 解决方案

    x=cv2.imread('0100000000.jpg').transpose(2,0,1).astype(np.float32)复制

可以将要切片的数据在这一步转换成fp16或者fp32的类型。

  • 附件下载

  • 复现及解决问题脚本.rar

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在NPU上的切片操作x=x[:,::-1,:,:]不生效的分析解决 的相关文章

  • 使用高斯混合模型进行皮肤检测

    我正在根据以下进行皮肤检测算法本文 http www cc gatech edu rehg Papers SkinDetect IJCV lowres pdf 第 21 页有两个模型 高斯皮肤混合模型和非皮肤颜色模型 第一个皮肤检测模型效果
  • Android Camera2 API - 实时显示处理后的帧

    我正在尝试创建一个实时处理相机图像并将其显示在屏幕上的应用程序 我正在使用camera2 API 我创建了一个本机库来使用 OpenCV 处理图像 到目前为止 我已经成功设置了一个 ImageReader 来接收 YUV 420 888 格
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • Aruco 标记与 openCv,获取 3d 角坐标?

    我正在使用 opencv 3 2 检测打印的 Aruco 标记 aruco estimatePoseSingleMarkers corners markerLength camMatrix distCoeffs rvecs tvecs 这将
  • Python opencv排序轮廓[重复]

    这个问题在这里已经有答案了 我正在关注这个问题 如何从左到右 从上到下对轮廓进行排序 https stackoverflow com questions 38654302 how can i sort contours from left
  • 使用 cmake 和 opencv 对符号“gzclose”的未定义引用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我尝试构建该项目 doppia https bitbucket org rodrigob doppia 但发生链接错误 我想这是一
  • 使用 OpenCV 查找重叠/复杂的圆

    我想计算红圈半径 图2 我在使用 OpenCV 的 HoughCircles 找到这些圆圈时遇到了麻烦 如图所示 2 我只能使用 HoughCircles 找到中心以黑色显示的小圆圈 original fig 2 由于我知道红色圆圈的中心
  • 在 iPad 上使用 OpenCV 避免碰撞

    我正在开展一个项目 需要使用 OpenCV 实现碰撞避免 这是在 iOS 上完成的 iOS 5 及以上版本即可 项目目标 这个想法是将 iPad 安装在汽车仪表板上并启动应用程序 应用程序应该从相机中抓取帧并进行处理 以检测汽车是否会与任何
  • 相机姿态估计(OpenCV PnP)

    我正在尝试使用网络摄像头从具有已知全球位置的四个基准点的图像中获取全局姿态估计 我检查了许多 stackexchange 问题和一些论文 但似乎无法得到正确的解决方案 我得到的位置数字是可重复的 但与相机移动绝不成线性比例 仅供参考 我正在
  • 如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

    我有旧画的图像 这些画很旧 布满灰尘 颜色褪色 如图所示here https i stack imgur com xuoEF jpg 如何赋予任何图像这种 旧 外观 我找不到任何过滤器或 openCV 函数来实现这种类型的外观 EDIT 我
  • OpenCV findContours 破坏源图像

    我编写了一个在单通道空白图像中绘制圆形 直线和矩形的代码 之后 我只需找出图像中的轮廓 就可以正确获取所有轮廓 但找到轮廓后 我的源图像变得扭曲 为什么会出现这种情况 任何人都可以帮我解决这个问题 我的代码如下所示 using namesp
  • 在 Python 3.5 64 位上通过 pip 安装 OpenCV

    我尝试安装 OpenCV 但找不到任何合适的 pip 软件包 我决定上网查找有关如何安装它的官方文档 并发现this https opencv python tutroals readthedocs io en latest py tuto
  • bitblt 在 Windows 10 版本 1703 上失败 (15063.138)

    使用 Visual Studio 2017 vc141 以下代码应该从前游戏窗口获取屏幕截图 但现在它返回黑色和空白图像 唯一的游戏问题 尝试过 OpenGL 和 Vulkan ogl 返回黑色 vulkan 返回白色 在升级到 Windo
  • brew 链接 jpeg 问题

    我正在尝试安装opencv在 Mac OSX Lion 上 brew install opencv 我收到以下错误 以及其他一些类似的错误 Error The linking step did not complete successful
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 如何在给定目标大小的情况下在 python 中调整图像大小,同时保留纵横比?

    首先 我觉得这是一个愚蠢的问题 对此感到抱歉 目前 我发现计算最佳缩放因子 目标像素数的最佳宽度和高度 同时保留纵横比 的最准确方法是迭代并选择最佳缩放因子 但是必须有更好的方法来做到这一点 一个例子 import cv2 numpy as
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 在 QtCreator 中将 OpenCV 2.3 与 Qt 结合使用

    随着 OpenCV 2 3 版本终于发布 我想在我的系统上编译并安装这个最新版本 由于我经常使用 Qt 和 QtCreator 我当然希望能够在我的 Qt 项目中使用它 我已经尝试了几种方法几个小时 但总是出现错误 第一次尝试 使用WITH
  • 我可以使用 openCV 比较两张不同图像上的两张脸吗?

    我对 openCV 很陌生 我看到它可以计算出脸部并返回一个矩形来指示脸部 我想知道 openCV 是否可以访问两张包含一张脸的图像 并且我希望 openCV 返回这两个人是否相同的可能性 Thanks OpenCV 不提供完整的人脸识别引
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont

随机推荐

  • liunux ubuntu 14.04/16 更换源为国内源--阿里云源/网易源/搜狐源

    转自 http www chenxm cc article 89 html 命令 sudo cp etc apt sources list etc apt sources list bak 备份 sudo vim etc apt sourc
  • Jenkins基础篇--linux安装Jenkins

    Jenkins简介 Jenkins是一个用Java编写的开源的持续集成工具 可用于自动化各种任务 如构建 测试和部署软件 持续集成是强调开发人员提交了新代码之后 立刻进行构建 单元 测试 根据测试结果 我们可以确定新代码和原有代码能否正确地
  • python中\t,\n,\n\t三者之间的区别

    ython中经常看到使用 t n n t 那么它们有什么区别之处呢 t 表示空4个字符 类似于文档中的缩进功能 相当于按一个Tab键 n 表示换行 相当于按一个 回车键 n t 表示换行的同时空4个字符 我们用例子来说明它们的区别 codi
  • qtdesigner设计表格_Qt GUI图形图像开发之QT表格控件QTableView详细使用方法与实例...

    QT表格控件QTableView简介 表格视图控件QTableView 需要和QStandardItemModel 配套使用 这套框架是基于MVC设计模式设计的 M Model 是QStandardItemModel数据模型 不能单独显示出
  • SQL-labs的第30关——有防火墙 布尔盲注(Get)

    1 判断闭合方式 输入语句 id 1 返回页面如下 我们发现没有报错信息 所以不适合使用报错注入 我们输入语句 id 1 and 1 2 返回页面如下 输入语句 id 1 and 1 1 返回页面如下 闭合方式是双引号 2 选择注入方式 我
  • 推荐几个网盘搜索工具,大大提高你的找资源效率

    前言 网盘已经成了我们存储文件 分享文件必不可少的工具 常用的比如百度云盘 网上绝大部分的资源都是在通过百度云传播 但是它并没有提供一个搜索接口供我们找资源 下面推荐几个我常用的网盘搜索网站 相信可以大大提升你的资源寻找效率 如风搜 htt
  • DeepWalk+word2vec的百科词条图嵌入可视化实战分析

    视频讲解 DeepWalk word2vec的百科词条图嵌入可视化实战分析 哔哩哔哩 bilibili 结果演示 完整代码数据 import networkx as nx 图数据挖掘 import gensim from gensim mo
  • 如何正确打开华为手机的 USB 调试和 完整 log 功能?

    华为手机 荣耀6 不能开启USB调试 借了一台华为荣耀手机 估计被重置过系统 电脑都连接不上 在关于里面开启开发者模式 并开启 USB 调试模式 但是刚打开 再次进来就变成不可选择的状态 并且不能调试 需要如下操作才能正常使用 USB 调试
  • 关于梯度下降的学习笔记

    什么是梯度下降 梯度下降可拆分为梯度 下降 在一阶函数中 某一点的梯度表示函数在该点处的导数 导数的正负号表示函数上升的方向 梯度下降是基于微积分中导数的概念 大部分的机器学习模型都有直接或间接地运用梯度下降的算法 1 梯度下降的目的 在机
  • OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)

    1 学习目标 学习 OpenCV 图像的翻转函数 cv flip 学习 NumPy 矩阵的反转函数 np flip 自己实现矩阵反转的函数 2 OpenCV 翻转 翻转也称镜像 是指将图像沿轴线进行轴对称变换 水平镜像是将图像沿垂直中轴线进
  • 【maven】mvn deploy 报错 Failed to deploy artifacts: Could not transfer artifact

    文章目录 1 场景1 1 1 概述 1 场景1 1 1 概述 因为在windows下 内网环境 然后升级了flink 但是包是外网拷贝进去的 拷贝到我的本地 现在本地升级好了 需要将jar包发布到内网的nexus机器中 但是执行命令报错如下
  • Vue3.0中引用子组件类型声明报错问题

    Vue3 0中引用子组件类型声明报错问题 报错原因 1 找不到组件模块或者找不到对应的类型声明 2 Typescript 只能理解 ts 文件 无法理解 vue 文件 解决方案 1 在项目根目录或 src 文件夹下创建一个后缀为 d ts
  • 第一个djiango项目(包含搭建环境)

    1 安装django框架 pip install django 2 创建项目命令 django admin startproject 项目名 django admin version 如果您看到Django版本号的输出 则表示安装成功 3
  • 数据分析(二) - Excel按一个单元格内的分隔符进行分行

    文章目录 场景 一 python 二 excel word 场景 办公室老师给了我一张Excel表 记录了每位同学的获奖情况 学号 姓名 奖项 加分 101 小明 ICPC世界冠军 国奖 优秀班干部 15 0 102 小亮 一作论文 数学建
  • vm manager failed to contact configuration server

    当用virt manager命令启动VM 管理工具是报错 vm manager failed to contact configuration server 如下办法解决了我的问题 读取dbus uuid dbus uuidgen get
  • 花费7元训练自己的GPT 2模型

    在上一篇博客中 我介绍了用Tensorflow来重现GPT 1的模型和训练的过程 这次我打算用Pytorch来重现GPT 2的模型并从头进行训练 GPT 2的模型相比GPT 1的改进并不多 主要在以下方面 1 GPT 2把layer nor
  • Gensim 中 word2vec 模型的恢复训练:载入存储模型并继续训练

    Gensim 中 word2vec 模型的恢复训练 本文为系列文章之一 前面的几篇请点击链接 NLP 利器 gensim 库基本特性介绍和安装方式 NLP 利器 Gensim 库的使用之 Word2Vec 模型案例演示 NLP 利器 Gen
  • 数据挖掘概述

    目录 1 数据挖掘概述 2 数据挖掘常用库 3 模型介绍 3 1 分类 3 2 聚类 3 3 回归 3 4 关联 3 5 模型集成 4 模型评估 ROC 曲线 5 模型应用 1 数据挖掘概述 数据挖掘 寻找数据中隐含的知识并用于产生商业价值
  • 无基础学c语言的打卡日记总论

    背景知识 笨人浙江考生 选课是政史地 目前在读大一 知道自己的专业学c并且还学数学分析和高等代数 一开始不以为意 学校用的教材是谭浩强老师的c语言程序设计 推荐的 小白友好 上课之前有很认真的自习课本 第一章好像是一个总论 里面有一些思想以
  • 在NPU上的切片操作x=x[:,::-1,:,:]不生效的分析解决

    1 系统环境 硬件环境 Ascend GPU CPU Ascend GPU MindSpore版本 1 9 0 执行模式 PyNative Graph 不限 Python版本 3 7 5 操作系统平台 Linux 2 报错信息 2 1 问题