【MindStudio训练营第一期】【昇腾AI训练营新手班学习笔记】大作业

news2024/12/27 9:54:41

介绍

大作业:使用MindStudio成功复现昇腾社区中的MindX SDK应用案例

选题:黑白图像上色 https://www.hiascend.com/zh/developer/mindx-sdk/case-studies/d0c56d6f-a6f9-4b77-8587-db8272f22f3b

在这里插入图片描述

步骤

运行

  1. 使用MindStudio打开下载到的工程文件

  2. 创建data、model、out文件夹

  3. 准备测试图片

    这里从网上随机下载了一张照片,并用ps去色处理了一下,路径 data/test.png

    在这里插入图片描述

  4. 使用Tools->Deployment->Upload to将工程文件上传到服务器

  5. cd到项目根目录

    在这里插入图片描述

  6. 下载model文件并解压缩

    cd model
    wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/colorization_picture-python/dog.png --no-check-certificate
    unzip model.zip
    

    带上–no-check-certificate参数否则会报错

  7. 转换模型,得到coloriztion.om文件

    cd ../scripts
    bash atc_run.sh
    
  8. 运行

    cd ../src
    python3 main.py ../data/test.png
    
  9. 使用Tools->Deployment->Download from工具下载回本地

    运行结果:(out_test.png)

    在这里插入图片描述

    原图:

    在这里插入图片描述

  10. 增加二次元浓度再试一次

    在这里插入图片描述

    太为难这个模型了!

工程代码阅读

  1. 初始化StreamManagerApi并加载pipeline文件

        streamManagerApi = StreamManagerApi()
        ret = streamManagerApi.InitManager()
    
        pipeline = b"../pipeline/colorization.pipeline" 
        ret = streamManagerApi.CreateMultipleStreamsFromFile(pipeline)
    
  2. 传入数据

        st
        reamName = b'colorization'
        inPluginId = 0
        key0 = b"appsrc0"
        protobufVec = InProtobufVector()
        protobuf = MxProtobufIn()
        protobuf.key = key0
        protobuf.type = b'MxTools.MxpiTensorPackageList'
        protobuf.protobuf = tensorPackageList.SerializeToString()
        protobufVec.push_back(protobuf)
    
        uniqueId = streamManagerApi.SendProtobuf(streamName, inPluginId, protobufVec)
    

    将图像L通道的数据写入tensorVec中,用SendProtobuf发送给appsrc0元件

  3. 取出结果数据

        key1 =  b"mxpi_tensorinfer0"
        keyVec = StringVector()
        keyVec.push_back(key1) 
        inferRes = streamManagerApi.GetProtobuf(streamName, inPluginId, keyVec)
    
  4. 合成上色后的结果图

        tensorList = MxpiDataType.MxpiTensorPackageList()
        tensorList.ParseFromString(inferRes[0].messageBuf)
        
        res = np.frombuffer(tensorList.tensorPackageVec[0].tensorVec[0].dataStr, dtype=np.float32)
        
        postprocess(res, inputPic, origShape, origL)
    

流程编排

  1. 从代码阅读中可以看出,图像的前处理和模型后处理都在Python代码中完成了,整个pipeline流程仅包含一次推理,加上输入输出

    在这里插入图片描述

  2. 输入appsrc:设置block size为合适大小,案例中设置了409600

    在这里插入图片描述

  3. 模型推理:设置模型文件路径…/model/colorization.om;同时还手动指定了dataSource为appsrc0

    在这里插入图片描述

  4. 输出appsink, block size大小与输入元件一致

    在这里插入图片描述

改一行

尝试给视频上色,仅需代码部分改一行,流程编排部分不需要改动

    seq_list = []
    temp_list = []
    vc = cv.VideoCapture('../data/test.mp4')
    c = 0
    rval = vc.isOpened()
    while rval:
        c = c + 1
        rval, frame = vc.read()
        if rval:
            cv.imwrite('../data/'+str(c) + '.png', frame)
            seq_list.append('../data/'+str(c) + '.png')
            temp_list.append('../out/out_'+str(c) + '.png')
        else:
            break
    vc.release()

    for pic in seq_list:
        run(pic, streamManagerApi) #此处是原先代码中流的输入输出部分
        os.remove(pic)

    videoWriter = cv.VideoWriter('../out_video/out_test.mp4', cv.VideoWriter_fourcc(*'mp4v'), 30, (1280, 720))
    for pic in temp_list:![请添加图片描述](https://img-blog.csdnimg.cn/b604ee76101e489397a74904ff8ec0d1.gif)

        img = cv.imread(pic)
        img = cv.resize(img, (1280, 720))
        videoWriter.write(img)
        os.remove(pic)
    videoWriter.release()

结果:
在这里插入图片描述
在这里插入图片描述

太为难这个模型了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jsp+ssm计算机毕业设计大学新生军训管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

笔试强训(四十八)

目录一、选择题二、编程题2.1 左右最值最大差2.1.1 题目2.1.2 题解一、选择题 (1)常见的http错误描述原因错误的是(D) A.404-Not found B.302-临时重定向 C.500-内部服务错误 D.403-IP address rejected 403 Forbidden&#xff1…

Unity Animancer插件(三)运动

一、根运动 Animancer的根运动系统与原生的工作原理完全相同,但我们可以通过继承Transition类型或实现ITransition接口,来将额外的数据与动画绑定,从而更方便地控制根运动。 在下面这个示例中,我们通过自定义的Transition类实现…

jsp+ssm计算机毕业设计订单管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

Linux操作系统~信号处理的底层原理

目录 1.信号在内核中的表示 信号处理的方法 2.信号的递达,未决,阻塞 3.信号集操作函数 (1).sigset_t(信号集类型) (2).信号集函数 (3).sigprocmask函数…

基于asp.net194校园火车票预订系统-计算机毕业设计

项目介绍 asp.net版火车票查询系统主要有用户注册,在线查询,在线订票,后台管理等功能。用户只有先注册才能登录火车票查询系统的首界面,然后可以进行在线查询、车票订购的功能。可对车次信息的查询和客户对已定车票信息的查询&am…

【云原生进阶之容器】第一章Docker核心技术1.6节——UnionFS

1 UnionFS综述 1.1 什么是 UnionFS 联合文件系统(Union File System),2004年由纽约州立大学开发,它可以把多个目录内容联合挂载到同一个目录下,而目录的物理位置是分开的。UnionFS可以把只读和可读写文件系统合并在一起,具有写时复制功能,允许只读文件系统的修改可以保…

二叉排序树详解及实现

二叉排序树详解及实现1.什么是二叉排序树2.二叉排序树的数据结构2.1二叉排序树的节点类型2.2二叉排序树中插入某个元素2.3 二叉排序树中按值查找元素2.4 找排序二叉树中的最小值2.5返回排序二叉树中ptr中序遍历的后续节点2.6 寻找排序二叉树中的最大值2.7 寻找二叉树中中序遍历…

《痞子衡嵌入式半月刊》 第 68 期

痞子衡嵌入式半月刊: 第 68 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :…

【分布式事务之spring实践】分布式事务选型实战

Spring中使用事务 Spring是一个伟大的框架,从一开始只是一个容器框架,到现在已经发展成为了一个包含企业开发中的方方面面的很多框架的总称。它不但从复杂度上,发展出了用于各个方面的子框架。它还从易用性出发,推出了像Spring-B…

多旅行商问题:世界杯优化算法(World Cup Optimization,WCO)求解多仓库多旅行商问题(提供Matlab代码)

一、世界杯优化算法 世界杯优化算法(World Cup Optimization,WCO)由Navid Razmjooy等人于2016年提出,该算法模拟了国际足联世界杯比赛,思路新颖,收敛速度快,全局寻优能力强。 算法原理参考:智…

[附源码]Node.js计算机毕业设计河南美丽乡村旅游信息网Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

[附源码]Nodejs计算机毕业设计基于远程协作的汽车故障诊断系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

DevOps实战系列【第十四章-完结篇】:Jenkins Pipeline最佳实践案例

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 我们将之前的案例,使用流水线构建一下 搭建一个Jenkinsfile模型 pipeline {agent anystages {stage(拉取gitlab项目代码) {steps {echo "拉取git代码"}}stage(构建代码) {…

FRP进阶篇之解决方案

目录 一、前言 二、多客户端使用 1、场景 2、解决方案 3、使用 3.1、服务端配置 3.2、客户端配置 3.3、结果验证 三、dashboard 仪表盘使用 1、场景 2、解决方案 3、使用 4、验证 5、使用Java调用API接口获取设备列表 5.1、样例代码 5.2、结果验证 一、前言 通…

27. SAP OData 框架里的缓存(Cache)设计专题讲座

本教程前一篇文章,25. 答疑 - SAP OData 框架处理 Metadata 元数据请求的实现细节,前后端组件部署在同一台物理服务器,我们介绍了 SAP OData 框架处理 metadata 请求的流程,如下图所示: 其中左边的分支,当读取本地服务器的 metadata 时,OData 框架会从 Share Memory 即共…

npm-开发自己的包并发布

目录 1.开发自己的包 1.1. 需要实现的功能 1.2. 初始化包的基本结构 1.3. 初始化 package.json 1.4. 在 index.js 中定义格式化时间的方法 1.5. 在 定义转义 和还原HTML 的方法 1.6. 编写包的说明文档 1.7包的入口文件 2.发布自己的包 2.1注册npm账号 2.2登录npm账…

Jmeter(二十):jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入,而且每次登录时图片验证码都是随机的;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段,然后再登录接口中使用; 通过jmeter对图片验证码…

Qt下载安装及配置教程

进入qt中文网站:https://www.qt.io/zh-cn/ 下载开源版 往下滑,下载Qt在线安装程序 它已经检测出我的是windows系统,直接点击download就好。如果是其它的系统,需要找到对应自己系统的安装包。 然后跟网速有关,等…

计算机毕业设计springboot+vue大学生个人财务管理系统

项目介绍 本大学生个人财务管理系统设计目标是实现收入和支出的信息化管理,提高管理效率,使得支出收入管理工作规范化、科学化、高效化。 本文研究的大学生个人财务管理系统基于springboot架构,采用JSP技术、JAVA编程语言和MYSQL数据库设计开发。通过本系统,实现了管理员和用户…