• 好望云服务特性介绍--设备分组搜索
    设备分组搜索【特性描述】支持设备分组名称查找【适用平台】      IVM Portal √好望云企业APP √好望云个人APP √    北向接口API √ ​【IVM-视频演示】  video【IVM-操作步骤】1. 在设备管理模块中,可以找到设备分组的搜索框
  • 好望云服务特性介绍--人员组织关系调整
    人员组织关系调整【特性描述】支持对用户在不同层级部门间进行调整切换【适用平台】      IVM Portal √好望云企业APP √好望云个人APP ×    北向接口API ×【IVM-视频演示】video【IVM-操作步骤】1. 在人员管理模块,点击右侧的[切换部门]按钮2. 在弹出的对话框中,选择新的部门,最后点击[切换]即可
  • 好望云服务特性介绍--企业成员管理
    企业成员管理【特性描述】支持邀请用户进入企业,邀请后默认是待加入用户接受企业邀请后,进入企业,为激活状态【适用平台】      IVM Portal √好望云企业APP √好望云个人APP ×    北向接口API ×【IVM-视频演示】video【IVM-操作步骤】1. 在人员管理模块中,点击[添加用户]2. 在弹出对话框中,输入自定义用户名和新用户手机号3. 根据实际需求,选择[普通用户]、[部门管理员]或者[企业管理员]注意:最多可设置10个企业管理员4. 等待新用户登录同意邀请加入企业,即可从"未激活"状态转变成"已加入"状态
  • 好望云服务特性介绍--好望/国标设备接入
    好望/国标设备接入【特性描述】仅好望设备支持APP扫码添加支持批量添加设备支持GB/T 28181-2016设备接入;支持接入满足国标协议的IPC、NVR等设备支持好望协议的C系列、D系列SDC、NVR800、IVS1800等系列设备;支持第三方厂家集成好望SDK后接入【适用平台】      IVM Portal √好望云企业APP √好望云个人APP √    北向接口API √【IVM-视频演示】video【IVM-操作步骤】详情参考第一步:SDC 通过网线连接 NVR ;第二步:登录 NVR,根据 SDC mac 地址查询 SDC IP 地址 ,例如192.168.1.128;第三步:PC 连接到与 SDC 相同的网段第四步:打开 PC 浏览器,输入 SDC IP 地址,登录 SDC第五步:依次点击 [设置] -> [网络] -> [平台对接参数] -> [云服务对接],              进入 华为好望 界面,修改域名为 DAS 服务器地址,              此处的 DAS 服务所在环境需要和后续的 IVM 和 app 访问环境相同。第六步:打开 好望 App 企业版,此时 App 连接的环境应该与 SDC 连接的 DAS 的环境相同,              进入想添加的企业及设备组,点击添加设备,扫描第五步操作中界面出现的二维码,              即可将该 SDC 添加到该设备组中;第七步:登录 IVM Protal,IVM 访问的环境应与 SDC 连接的 DAS 的环境相同,             找到刚添加的 SDC 设备,开通收录服务,即可在 App 上查看实况浏览。
  • 好望云服务特性介绍--分配设备
    分配设备【特性描述】支持对已加入企业的非管理员用户批量分配设备支持对已分配的设备列表进行修改【适用平台】      IVM Portal √好望云企业APP √好望云个人APP √    北向接口API ×【IVM视频演示】  video【IVM-操作步骤】1. 选择“设备管理”--勾选“设备”,选择"更多"--“分配用户”2. 打开“分配用户”对话框,选择需要分配的企业用户,点击“确定”即可3. 在弹出的对话框中选择非管理员用户,点击[确定]注意:如果该设备切换了设备组,分配的用户将被自动移除;如果被分配的用户切换了部门,那么之前分配的设备也将自动移除;均需重新分配
  • 好望云服务特性介绍--部门搜索
    部门搜索--特性介绍【特性描述】因企业设置部门繁多而难以通过点击进行查找的情形;批量查找具有相同功能或名字的部门;【适用平台】      IVM Portal √好望云企业APP √好望云个人APP ×      北向接口API×【IVM-视频演示】 video【IVM操作步骤】步骤1-- 搜索框定位登录好望云账号 -> 点击[人员管理]-> 搜索框中输入关键字步骤2-- 输入查询关键字支持精确和模糊匹配查找
  • 好望云服务特性介绍--包周期/按需套餐
    包周期/按需套餐【特性描述】支持包周期套餐包,支持连续包月、包季度、包年等默认支持按需套餐包计费;超过套餐包使用限额的部分,默认按照“按需套餐”来计算。如用户超过购买的带宽时,超过部分转成按需套餐计费;注意:仅企业创建者账号才可购买套餐服务应用到对应企业中。【适用平台】      IVM Portal √好望云企业APP ×好望云个人APP ×    北向接口API √【IVM-操作视频】video【IVM-操作步骤】1. 登录好望云服务首页 (cid:link_0);2. 点击 [立即购买],即可进入套餐页面。选择需要的服务套餐,点击【订单确认】-【立即购买】3.购买完成后,点击【资源】-【我的资源】-【订单管理】-【我的订单】即可看到购买的套餐套餐支持退订服务
  • [问题求助] 安装AscendPyTorch时gcc版本可以是7.3.0以上吗
    AscendPyTorch的Readme中提到系统依赖库安装时,gcc版本使用7.3.0,请问如果在Centos8系统上安装,需要降低GCC版本吗
  • [问题求助] 请问TE20有个接口是获取主流视频源的,这是获取视频流的接口吗
    请问TE20有个接口是获取主流视频源的,这是获取视频流的接口吗经过测试返回的数据是空,技术客服说是TE20不支持获取视频流。那这个接口的意义是什么
  • [其他] 【开源资料】DSP+ZYNQ多核例程使用手册-XQTyer
    【开源资料】XQTyer评估板例程使用手册.pdf链接:https://share.weiyun.com/8csewUvh 密码:8r9by7CSDN搜索【DSP+ZYNQ多核例程使用手册-XQTyer】XQ6657Z35/45-EVM 高速数据处理评估板(XQTyer 评估板)由广州星嵌电子科技有限公司自主研发,包含一片TI DSP TMS320C6657和一片Xilinx ZYNQ-7000 SoC 处理器XC7Z035-2FFG676I。适用于无人机蜂群、软件无线电系统,基带信号处理,无线仿真平台,高速图像采集、处理等领域。
  • [问题求助] SDC SDK C/C++ 进行开发,调用IVS_PU_RotatePTZLocation 多次后发生指定位置的地方PTZ坐标发生变化
    当触发一定条件时,摄像头瞄准指定位置,一分钟后恢复原始位置,随后继续监测是否达到条件。如此执行一至两天后(有时更短),指定位置的PTZ坐标发生了变化,即预先设定好的PTZ坐标不是我所需要的位置。这种情况有遇到过嘛……可能是哪些原因造成的。我已经排除了摄像头本身被转动的可能。
  • 好望云服务特性介绍--人员管理
    【特性介绍】企业支持管理员、部门管理员、普通用户三种角色支持管理员对角色进行调整【适用平台】      IVM Portal √好望云企业APP √好望云个人APP ×      北向接口API√【IVM-操作视频】video【IVM-操作步骤】1、企业管理员切换至普通用户,当企业管理员所属部门为企业根目录,将无法设置为部门管理员。单击“编辑”打开“编辑用户”对话框,该用户所属部门为企业根目录,所以只能在企业管理员与普通用户来回切换2、企业管理员切换为部门管理员。选择企业下的部门,选择需要切换角色的用户打开“编辑用户”对话框,三个角色均可来回切换
  • [技术干货] 好望云服务特性介绍--导出设备列表
    【适用平台】IVM Portal √好望云企业APP ×好望云个人APP ×北向接口API ×【IVM-操作视频】video【IVM-操作步骤】进入IVM portal页面,选择设备,进入设备管理列表,单击下列导出图标即可,会自动下载到本地以下为导出示例
  • 使用MindStudio进行基于双目视觉的目标定位
       对应的视频教程,可参考:【使用MindStudio进行基于双目视觉的目标定位】一、基于双目视觉的目标定位介绍基于计算机视觉的目标定位有单目视觉和双目视觉两种定位方式。单目视觉使用一台相机获取场景图像。由于图像透视投影过程丢失深度信息,因此单目视觉深度恢复得到物体的相对位置。双目视觉感知原理基于哺乳动物视觉机制,获取物体在左右两个相机的图像,并从获取图像恢复物体的三维几何信息。双目视觉从场景获取一组图像,利用这组图像标定相机参数,恢复物体三维几何信息。双目视觉的通用流程是特征点提取、特征点匹配、相机标定、三维重建等处理过程,恢复场景物体的三维几何信息,实现从二维图像重建三维场景。本案例输入的是用自制双目相机同时获取场景物体的图像,案例介绍利用MindX SDK对两幅图像进行相机标定、图像畸变矫正、视差求解、用MindX SDK模型检测目标、计算相物体的三维坐标。项目所用硬件平台:Ascend 310服务器,Atlas 200DK板卡,支持的SDK版本为mxVision 3.0.RC3。双目视觉目标定位流程,如图1-1所示。图1-1 双目视觉目标定位流程双目视觉目标定位流程主要步骤如下:(1)输入一组图像数据标定相机参数,标定的参数包括内参和外参。(2)利用标定的相机参数,用OpenCV函数stereoRectify和remap进行图像校正处理。(3)调用OpenCV函数StereoSGBM_create计算两张图像的视差。(4)通过调用MindX SDK 提供的图像处理插件ImageProcessor的成员函数decode解码并获取校正后图像。(5)对图像进行尺寸变换,调用MindX SDK提供的图像处理插件ImageProcessor的图像尺寸大小改变函数resize改变图像尺寸。(6)调用MindX SDK的Model的infer函数,调用YoloV3模型对尺寸变换后的图像进行推理,定位出目标物体。(7)模型后处理,调用MindX SDK函数post.Yolov3PostProces得到模型推理结果。(8)使用 BTensor函数对后处理结果进行处理,得到标注检测到物体包围盒的左上角和右下角坐标。(9)取右下角坐标,用项目方法把物体检测结果转化为三维坐标。二、MindStudio介绍与安装2.1 MindStudio简介      MindStudio是华为自研昇腾AI处理器开发的AI全栈开发工具平台,该IDE(Integrated Development Environment,集成开发环境)上功能很多,可以进行包括网络模型训练、移植、应用开发、推理运行及自定义算子开发等多类型任务。MindStudio具有工程项目管理、编译、调试、运行等常用功能,还具有性能分析、算子比对等功能,可有效提高开发人员的工作效率。此外,MindStudio具有远程操控功能,可执行远端任务。       MindStudio提供AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程的开发任务。通过模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够在一个IDE中高效便捷地完成AI应用开发。MindStudio采用插件扩展机制,开发者可以通过开发插件来扩展已有功能。2.2 MindStudio安装MindStudio下载地址为MindStudio下载-昇腾社区。点击MindStudio_{version}_win.exe后的“软件包下载”,将其下载到本地指定的目录。双击该软件包,即可开始安装MindStudio。MindStudio安装具体步骤包括 。进入MindStudio Setup安装界面,如图2-1所示,单击“Next”。图2-1 MindStudio 安装开始界面2. 非首次安装MindStudio时,可选择是否卸载已安装MindStudio版本。若不卸载已有版本,直接点击“Next”,进入步骤4;若要卸载则勾选相应版本,点击“Next”,进入步骤3,若同时勾选静默卸载,则会保留之前安装的MindStudio版本的一些配置。图2-2 卸载之前安装的MindStudio版本选取3. 选择需要卸载的项,单击“Uninstall”进行卸载。图2-3 卸载MindStudio4. 输入或选择MindStudio的安装路径,单击“Next”进入下一步骤。图2-4 输入或选取确定MindStudio安装路径5. 根据需要勾选安装选项,选项给出是/否在桌面产生MindStudio快捷启动、是/否把MindStudio可执行文件目录加入到系统路径变量PATH、是/否在右键弹出Context菜单出现“Open Folder as Project”选项、MindStudio缺省关联的文件扩展名,图2-5给出.java、.groovy、.kt及.kts扩展名文件。点击“Next”进入下一步骤。图2-5 选取设定安装配置选项       6. 选择或创建MindStudio安装路径下的启动菜单文件夹,默认即可,单击“Install”。图2-6 Start Menu Folder7. 开始安装MindStudio,完成后单击“Next”。8. 安装完成后,单击“Finish”。9. 双击桌面的MindStudio图标启动MindStudio,或者进入MindStudio安装目录的bin文件夹,双击MindStudio应用程序启动MindStudio。进入设置界面,如图2-7所示。图2-7 首次启动环境设置       默认选择“Do not import settings”,即不导入设置。选择该选项会创建新的配置文件。10. 如果没有报错信息则进入欢迎界面,表示MindStudio安装成功,如图2-8所示。图2-8 MindStudio启动初始界面2.3安装项目运行依赖环境2.3.1安装Python1. 进入Python官网,点击Downloads选项,选择下载Python版本。MindStudio目前支持的Python版本为3.7~3.9。2. 将下载Python压缩包解压、运行,进入图2-9所示的安装选项选取界面。3. 此页面中的选项全部勾选即可,然后点击“Next”。图2-9 安装选项设定4. 在Advanced Options 窗口中,点击“Customize install location”更改安装路径;选取“Create shortcuts for installed applications”在桌面创建Python启动快捷图标;选取“Add Python to environment variables”把Python安装目录加入到系统环境变量。点击“Install”进入安装。图2-10 设定Python安装选项5. 安装完成后,打开Command命令提示符窗口,输入“python”,显示如图2-11所示Python版本信息,表明Python成功安装。图2-11 检查python是否成功安装6. 在MindStudio中配置Python解释器(1) 在菜单栏中选择 File → Project Structure,在 Project Structure窗口中,点击 Platform Settings → SDKs,点击上方的“+”添加 Python SDK,如图2-12。图2-12 添加 Python SDK目录       在弹出窗口中选取“Existing environment”,选择python.exe的安装目录,点击“OK”完成在MindStudio配置Python解释器。若选取“New environment”,则会将“Base interpreter”的python 环境复制到工程目录下,该选项设置表示项目所有类库依赖都脱离系统安装python而运行。图2-13 设置Python解释器目录(2) 在Project Structure窗口中点击 Project Settings → Project,选择添加的 Python SDK,如图2-14所示。图2-14 选择Python SDK(3) 在Project Structure窗口中点击 Project Settings → Modules,右键工程名称,选择“Add”菜单项的“Python”,为 Python Interpreter 添加 Python SDK。点击“Apply”后再点击“OK”,如图2-15所示。图2-15 设定 Python解释器       Python SDK已配置完成。注意:上面各项配置好后,先点击“Apply”后再点击“OK”。2.3.2安装MinGW       MinGW下载地址:cid:link_7       选择下图中红框内的版本进行下载。图2-16 MinGW版本选择       下载后直接将其解压至自定义目录。把MinGW的bin文件路径添加到环境变量中,则安装完成。打开Command命令提示符窗口,输入“g++ --version”,显示如图2-17所示信息,则表示安装成功。图2-17 检查MinGW是否成功安装2.3.3安装CMake       CMake下载地址:https://cmake.org/download/       下载图2-18红框所示版本。图2-18 CMake版本选择       下载完成后,双击安装包进入安装。安装时选择“Add CMake to the system PATH for all users”把CMake路径加入到环境变量。安装完成后打开CMD命令提示符窗口,输入“cmake –version”,若显示如图2-19所示窗口,表明CMake安装成功。图2-19 检查CMake是否成功安装2.3.4安装CANN工具包       从菜单栏中点击File → Settings,并在弹出的窗口中选择Appearance & Behavior → System Settings → CANN进入CANN管理界面,如图2-20所示。图2-20 CANN管理界面       上图所示为CANN工具包安装完成界面。CANN工具包未安装时,蓝框中内容为空,点击图中的Change CANN,进入图2-21所示界面。图2-21 CANN安装       单击“Remote Connection”后的“+”号, 配置MindStudio连接远程开发环境Ascend-cann-toolkit开发套件包;单击“Remote CANN location”后的文件夹图标,在弹出界面中选择Ascend-cann-toolkit开发套件包的安装路径(需要选择到版本号一级)。选择完成后点击Finish开始安装。2.3.5安装MindX SDKMindX SDK提供昇腾AI处理器加速的各类AI软件开发套件(SDK),提供极简易用的API,加速AI应用开发。MindX SDK安装过程如下:1. 从菜单栏中点击File → Settings,并在弹出的窗口中选择Appearance & Behavior → System Settings → MindX SDK进入MindX SDK管理界面,如图2-22所示。图2-22 MindX SDK管理界面2. 界面中“MindX SDK Location”为软件包的默认安装路径,默认安装路径为 “C:\Users\用户名\Ascend\mindx_sdk”。单击Install SDK进入Installation settings界面,如图2-23所示。图2-23 MindX SDK安装3. 上图中前两个参数“Remote Connection”与“Remote CANN location”,跟图2-21中的选择保持一致;第三个参数“Remote SDK location”为远端环境SDK的路径,需配置到版本号一级;第四个参数“Local SDK location”为SDK的本地安装路径,图2-24所示为默认安装路径。选择完成后点击OK开始安装。4. 安装完成后的结果如下,点击OK即可。图2-24 成功安装MindX SDK三、基于双目视觉的目标定位开发3.1创建项目3.1.1创建初始项目1. 首先通过SecoClient连接VPN,以确保MindStudio能够连接远程服务器。启动MindStudio进入图2-8所示窗口,点击New Project,弹出图3-1所示新建项目窗口。2. 命名项目,图文案例把项目命名为BinocularStereoDepthRecovery,选择CANN版本及新建项目位置,点击Next。图3-1 新建昇腾项目3. 在打开的窗口左侧选择Ascend App(如图3-1所示),然后选择MindX SDK Projet(Python)(如图3-2所示),点击Finish。图3-2 选择MindX SDK Projet(Python)类型4. 项目创建完成后的初始界面如图3-3所示。图3-3 新建昇腾项目初始界面3.1.2项目文件介绍为新建昇腾项目创建“基于双目视觉的目标定位”所需文件。创建完毕后,BinocularStereoDepthRecovery项目目录树在MindStudio的显示如图3-4所示。图3-4 所需文件创建完毕的昇腾项目其中,image目录存放测试图片,每两个为一组,是我们用自制双目相机同时获取场景物体的图像。model目录存放模型文件,模型下载地址为:YOLOv3-昇腾社区。本案例所下载模型可直接使用,无需模型转换过程。若需要模型转换,可点击图3-5中任意一个红框位置,进入图3-6所示界面进行设置,具体过程可参考:模型转换-用户指南。图3-5 进入模型转换图3-6 模型转换设置界面camera_configs.py文件主要代码介绍如图3-7所示。执行该函数会从camera.xml文件中有序地导入相机参数,并计算校正变化。该函数在yolo_deep.py文件中被调用。图3-7 相机配置文件代码介绍camera.xml文件中含有相机预标定的数据,包括相机内参、外参和畸变参数,如图3-8与图3-9所示。图3-8 camera.xml文件中的相机参数信息图3-9 camera.xml文件中的相机参数信息yolo_deep.py文件计算物体坐标,主要代码介绍如图3-10与图3-11所示。图3-10 物体坐标计算文件代码介绍图3-11 物体坐标计算文件代码介绍yolov3_infer.py为模型推理文件,主要代码介绍如图3-12与图3-13所示。图3-12 模型推理文件代码介绍图3-13 模型推理文件代码介绍3.1.3接口调用介绍本模型采用API接口实现流程编排,对API的调用可参见第一章中“双目视觉目标定位流程的主要步骤”,代码中调用API的地方如下图所示。图3-14 yolo_deep.py文件中对API的调用图3-15 模型推理文件中对API的调用图3-16 模型推理文件中对API的调用如果需要进行pipeline编排,可在MindStudio顶部菜单栏中选择Ascend下的MindX SDK Pipeline,如图3-17所示,进入pipeline绘制界面,详细的pipeline绘制过程可参考可视化流程编排-用户指南。图3-17 打开pipeline绘制界面3.1.4连接远程终端       1. 选择MindStudio Tools菜单的Start SSH session菜单项,如图3-18所示。图3-18 打开Tools菜单选择“Start SSH session…”       在弹出的对话框中选择要连接的远程终端服务器,如图3-19所示。图3-19 选择远程终端连接的服务器       远程终端开启后,点击MindStudio底部状态栏目的Remote Terminal图标,如图3-20所示。图3-20 打开远程终端2. 激活远程终端mxVision的环境变量在远程终端窗口输入指令“vim ~/.bashrc”,在打开的文件末尾添加图3-21红框中内容(该内容从mxVision目录下的set_env.sh文件中复制得到),添加完成后在末行输入“wq!”保存并退出。最后,输入指令“source ~/.bashrc”使环境变量生效。图3-21 设置远程终端mxVision环境变量3. Deployment配置从顶部菜单栏中选择Tools → Deployment → Configuration,如图3-22所示。图3-22 打开Deployment Configuration新弹出的界面如图3-23所示。图3-23 Deployment Configuration界面点击上图中红框位置处的加号,在弹出的对话框中输入new server name。点击OK后Deployment Configuration界面如图3-24。在Connection模块下,Type项选择SFTP,SSH configuration项选择要连接的远程服务器。图3-24 Deployment界面的Connection模块在Mappings模块下,Local path已给出,保持不变;点击Deployment path后的文件夹图标,会弹出一个指定的目录,选择该默认路径即可。图3-25 Deployment界面的Mappings模块返回Connection模块,点击Test Connection,出现图3-26所示界面则代表连接成功,点击OK。然后依次点击Deployment Configuration界面的Apply与OK,完成配置。图3-26 成功连接服务器4. 如图3-27所示,把鼠标放在项目名上,单击鼠标右键,在弹出的菜单项中选择Deployment下的Upload to,在新弹出的对话框中选择所连接的服务器。执行该操作会把MindStudio本地客户端的项目文件会同步到服务器端。图3-27 同步项目文件到服务器端执行完毕后,会看到MindStudio界面下方的File Transfer窗口中显示如下。图3-28 同步成功提示信息进入服务器端,可以看到新生成了一个MindStudio-WorkSpace目录,如下图所示。图3-29 MindX服务器生成工作目录       进入MindStudio-WorkSpace目录,含有BinocularStereoDepthRecovery项目所在目录,如图3-30中红框所示。图3-30 服务器端创建的项目目录       进入到BinocularStereoDepthRecovery项目目录,可以看到从MindStudio本地客户端同步至服务器端的项目文件,目录信息如图3-31所示。图3-31 服务器端项目目录情况3.2运行项目       选择顶部菜单栏Run下的Edit Configurations菜单项,如图3-32所示。图3-32 打开Edit Configurations弹出的窗口如图3-33所示。在窗口左侧,我们选择Ascend App下的项目名;在窗口右侧,Deployment项是前面已经设置过的,Executable项选择此次要执行函数yolo_deep.py的路径。选择完成后点击OK。图3-33 Run Configurations界面设定完要运行的函数后,点击MindStudio界面的程序运行按钮,即下图中红框内的蓝色三角号,便可执行yolo_deep.py程序。图3-34 程序运行按钮 基于双目视觉的目标定位运行结果如图3-35所示。对于输入的两张(用双目相机拍摄的)图像,输出检测到的物体像素坐标,并且输出物体的世界坐标以及物体与相机的距离。图3-35 深度推理结果图3-36为输入图像中的其中一幅,图3-35中输出的距离便是红色汽车模型与相机之间的距离。此外,我们生成了相对应的深度图,如图3-37所示。深度图中越亮的部分表示与相机的距离越近,越暗的部分与相机的距离越远。图3-36 输入图像图3-37 输入图像对应的深度图四、FAQ1. No Python interpreter configured for the module答:未配置Python解释器,可参考2.3.1节中的步骤6配置Python解释器。2. Get MindX SDK version failed!答:选择远程服务器中SDK路径时,没有选择到版本号一级,选择父路径时会提示SDK版本获取失败。可参考2.3.5节完成MindX SDK的安装。3. CANN 连接错误(连接服务器 SSH 成功,但是连接 CANN 失败)答:有可能是没有选择到版本号一级,选择父路径时会报错,也有可能是因为当前用户非 root 用户,还有可能是服务器端内存不足。查看同步 CANN 运行日志可判断缘由,可在服务器端的log目录下查看日志文件。       开发者在使用 MindStudio 或进行算子开发过程中遇到任何问题,都可以在昇腾社区进行互动,提出问题,获得更多的帮助。 昇腾官网:cid:link_8 昇腾博客:cid:link_5 昇腾论坛:cid:link_6   
  • [MindX SDK] 视频伪装物体检测参考设计案例
    视频伪装物体检测1 介绍基于 MindX SDK 实现 SLT-Net 模型的推理,在 MoCA-Mask 数据集上 Sm 达到大于 0.6。输入连续几帧伪装物体的视频序列,输出伪装物体掩膜 Mask 图。1.1 支持的产品支持昇腾310芯片1.2 支持的版本支持的SDK版本:SDK3.0 RC2版本号查询方法,在Atlas产品环境下,运行命令:npu-smi info1.3 软件方案介绍本方案中,先通过 torch2onnx.py 脚本将 PyTorch 版本的伪装视频物体检测模型 SLT-Net 转换为 onnx 模型;然后通过 inference.py 脚本调用晟腾om模型,将输入视频帧进行图像处理,最终生成视频伪装物体的掩膜 Mask 图。1.4 代码目录结构与说明本sample工程名称为 VCOD_SLTNet,工程目录如下图所示:──VCOD_SLTNet ├── flowchart.jpeg ├── inference.py # 推理文件 ├── torch2onnx.py # 模型转换脚本 └── README.md本项目的代码地址为:cid:link_21.5 技术实现流程图图1 视频伪装物体检测流程图1.6 特性及适用场景对于伪装视频数据的分割任务均适用,输入视频需要转换为图片序列输入到模型中,具体可以参考 MoCA 数据格式与目录结构(如下所示),详见 SLT-Net 与 MoCA 数据集主页。--data └── TestDataset_per_sq # 测试数据集 ├── flower_crab_spider_1 # 不同场景 ├── GT # Ground Truth ├── 00000.png ├── ..... └── Imgs # 输入图片序列 ├── 00000.jpg ├── ..... ......2 环境依赖环境依赖软件和版本如下表:软件名称版本MindX SDKmxVision-3.0.RC2Python3.9.2CANN5.1RC2PyTorch1.12.1numpy1.21.5imageio2.22.3Pillow9.3.0cv24.5.5timm0.4.12tqdm4.64.13. 数据准备3.1 准备相关文件1、SLT-Net代码包准备点击访问 SLT-Net 并下载 SLT-Net-master.zip 代码压缩包,上传服务器并解压得到“SLT-Net-master”目录及文件;2、SLT-Net模型文件准备方法一:通过访问 SLT-Net 模型官方链接 下载模型压缩包 (注意,需要访问 Google Drive ),解压后将 Net_epoch_MoCA_short_term_pseudo.pth 模型拷贝至 SLT-Net-master 目录下;方法二:下载 models.zip 备份模型压缩包 并解压获得 sltnet.pth、sltnet.onnx、sltnet.om 三个模型文件,将 sltnet.pth 模型拷贝至 SLT-Net-master 目录下3、数据集准备通过访问MoCA官方链接下载 MoCA_Video 数据集,或者通过数据集备份链接来下载 MoCA_Video.zip 数据集压缩包并解压;3.2 模型转换1、SLT-Net代码预处理进入 SLT-Net-master/lib 目录下,对 __init__.py、short_term_model.py、pvtv2_afterTEM.py三个文件做以下修改:1)__init__.py文件注释如下:from .short_term_model import VideoModel as VideoModel_pvtv2 # from .long_term_model import VideoModel as VideoModel_long_term注:因为长期模型依赖 CUDA,并且需要在 CUDA 平台进行编译,而本项目基于 MindX SDK 实现,因此使用短期模型。并且,短期模型的评价指标满足预期。2)修改 short_term_model.py 文件中,如下代码行:修改def forward(self, x): image1, image2, image3 = x[:, :3], x[:, 3:6], x[:, 6:] # 替换之前的 image1, image2, image3 = x[0],x[1],x[2] fmap1=self.backbone.feat_net(image1) fmap2=self.backbone.feat_net(image2) fmap3=self.backbone.feat_net(image3)修改 def __init__(self, args): super(ImageModel, self).__init__() self.args = args # self.backbone = Network(pvtv2_pretrained=self.args.pvtv2_pretrained, imgsize=self.args.trainsize) self.backbone = Network(pvtv2_pretrained=self.args.pvtv2_pretrained, imgsize=352) # 指定图片大小 .... # self.backbone = Network(pvtv2_pretrained=False, imgsize=self.args.trainsize) self.backbone = Network(pvtv2_pretrained=False, imgsize=352) # 指定图片大小 if self.args.pretrained_cod10k is not None: self.load_backbone(self.args.pretrained_cod10k )删除if self.args.pretrained_cod10k is not None: self.load_backbone(self.args.pretrained_cod10k )3)pvtv2_afterTEM.py 文件注释如下:from timm.models import create_model #from mmseg.models import build_segmentor #from mmcv import ConfigDict import pdb修改“SLT-Net-master/mypath.py”文件如下:elif dataset == 'MoCA': return './dataset/MoCA-Mask/' # 将此处路径修改指定为“MoCA_Video”目录的相对路径可参考已经完成修改的 SLT_Net_MindXsdk_torch,也可直接使用该项目进行下面的 onnx 模型转换操作,替代以上步骤。2、模型转换步骤一、pth模型转onnx模型将 VCOD_SLTNet 代码包中的 torch2onnx.py 脚本拷贝至 SLT-Net-master 目录下,并在 SLT-Net-master 目录下执行以下命令将 pth 模型转换成 onnx 模型:python torch2onnx.py --pth_path ${pth模型文件路径} --onnx_path ./sltnet.onnx参数说明:pth_path:pth模型文件名称及所在路径onnx_path:生成输出的onnx模型文件注意,timm 的版本为 0.4.12,其他版本可能有兼容性问题。步骤二、简化onnx文件(可选操作)python -m onnxsim --input-shape="1,9,352,352" --dynamic-input-shape sltnet.onnx sltnet_sim.onnx步骤三、onnx模型转om模型atc --framework=5 --model=sltnet.onnx --output=sltnet --input_shape="image:1,9,352,352" --soc_version=Ascend310 --log=error注意:若想使用转换好的onnx模型或om模型,可通过下载 models.zip备份模型压缩包 解压获得转换好的 onnx 模型或 om 模型。pth模型转onnx模型,onnx模型转om模型,均可能花费约1小时左右,视不同运行环境而定。如无报错,请耐心等待。4. 运行推理使用如下命令,运行 inference.py 脚本:python inference.py --datapath ${MoCA_Video数据集路径} --save_root ./results/ --om_path ./sltnet.om --testsize 352 --device_id 0参数说明:datapath:下载数据以后,目录中 TestDataset_per_sq 的上一级目录,save_root:结果保存路径om_path:om 模型路径testsize:图片 resize 的大小,当前固定为 352device_id:设备编号注意,该脚本无需放入修改的 SLT-Net 目录,在任意位置均可执行,只需设置好上述参数即可。运行输出如下: 0%| | 0/713 [00:00<?, ?it/s]> ./results/arctic_fox/Pred/00000.png 0%|▏ | 1/713 [00:00<10:31, 1.13it/s]> ./results/arctic_fox/Pred/00005.png 0%|▎ | 2/713 [00:01<09:01, 1.31it/s]> ./results/arctic_fox/Pred/00010.png 0%|▍ | 3/713 [00:02<08:30, 1.39it/s]> ./results/arctic_fox/Pred/00015.png 1%|▌ | 4/713 [00:02<08:13, 1.44it/s]> ./results/arctic_fox/Pred/00020.png将展示剩余运行时间以及生成图片的路径。5. 精度评估点击访问 SLT_Net_MindXsdk_torch 并下载 SLT_Net_MindXsdk_torch-master.zip 代码压缩包,上传服务器并解压获得 SLT_Net_MindXsdk_torch-master 目录及相关文件;进入 SLT_Net_MindXsdk_torch-master 目录,修改 eval_python/run_eval.py 脚本中的 gt_dir 为本地的 MoCA_Video/TestDataset_per_sq/ 目录的绝对路径,pred_dir 为预测结果目录的绝对路径,并执行以下命令进行精度评估:python eval_python/run_eval.py完成评估后的结果如下:{'Smeasure': 0.6539, 'wFmeasure': 0.3245, 'MAE': 0.0161, 'adpEm': 0.6329, 'meanEm': 0.7229, 'maxEm': 0.7554, 'adpFm': 0.3025, 'meanFm': 0.3577, 'maxFm': 0.3738}评测结果高于交付所要求的 Smeasure 0.6 的指标。注:评估还可参考基于 基于 MATLAB 的 SLT-Net 的评测代码或参考基于 Python 的 PySODEvalToolkit 的评测代码。