使用MindStudio进行开发基于MindX SDK的AnimeGAN风格迁移模型

本文的视频教程可点击下面链接:

https://www.bilibili.com/video/BV1h84y1q7Db

1. 任务介绍

1.1 任务场景

MindX SDK应用开发

1.2 任务描述

基于Atlas 200DK平台,使用MindX SDK,实现从真实世界图片到动漫风格图片的风格转换,在Ascend 310上对输入图片进行图像风格转换并将转换结果保存,支持动态分辨率输入。

1.3 任务目标

在Ascend 310上的推理精度与原模型精度相差小于1%。

1.4 环境信息

开发环境:Windows 11 + MindStudio 5.0.RC2

昇腾设备:Atlas 200DK

昇腾芯片:Ascend 310

操作系统:Ubuntu 18.04

环境依赖软件和版本如下表:

软件名称 版本
cmake 3.10.2
mxVision 3.0.RC2
Python 3.9.12
CANN 5.1.RC2
GCC 7.5.0

Python第三方库依赖如下表:

软件名称 版本 说明
opencv-python 4.6.0.66
protobuf 3.19.0
scikit-image 0.19.3 仅在eval.py中依赖,可选

2. 模型介绍

AnimeGAN是在2019年提出的用于图像风格迁移的模型,该模型基于GAN模型,可以快速地将真实世界的图像转换成高质量的动漫风格的图像,具体可参看论文:

https://link.springer.com/chapter/10.1007/978-981-15-5577-0_18

Tensorflow版本的代码:

https://github.com/TachibanaYoshino/AnimeGAN

我们也提供了已经转换好的模型以及一些测试数据集的OBS地址:

PB模型:

https://animegan-mxsdk.obs.cn-north-4.myhuaweicloud.com/models/AnimeGAN.pb

OM模型:

https://animegan-mxsdk.obs.cn-north-4.myhuaweicloud.com/models/AnimeGAN_FD.om

数据集:

https://animegan-mxsdk.obs.cn-north-4.myhuaweicloud.com/dataset/dataset.zip

3. 开发前准备

3.1 环境准备

首先安装好CANN和MindX SDK,具体可参考如下链接:

CANN安装指导:

https://www.hiascend.com/document/detail/zh/canncommercial/51RC2/overview/index.html

MindX SDK安装指导:

https://www.hiascend.com/document/detail/zh/mind-sdk/30rc2/overview/index.html

然后开始设置环境变量,在Ascend的安装目录和MindX SDK的安装目录可以分别找到set_env.sh,它们包含了MindX SDK App所需的大部分环境变量。我们可以打开它们查看内容并且运行脚本,也可以将它们加入~/.bashrc,以便每次进入bash时不用重新手动运行。

编辑bashrc,vi ~/.bashrc,在bashrc中应用这两个脚本,然后重启bash。

vi ~/.bashrc
# 在bashrc中加入以下两行并保存
source ${SDK安装路径}/set_env.sh
source ${CANN安装路径}/set_env.sh
# 保存后重启bash
bash

3.2 安装MindStudio

MindStudio的依赖项主要有CANN,若需开发MindX SDK应用,还需MindX SDK的支持。

如果准备在Linux环境使用MindStudio进行远程开发,则需要X Server支持。可以在安装好CANN和MindX SDK的Linux机器上安装MindStudio,后续通过MobaXterm等支持X11 Forwarding的终端远程连接。或者直接通过显示器连接Linux机器开发。

此处我们在Windows环境下开发。基于MindStudio的SDK应用开发环境搭建可以参考:

https://www.hiascend.com/document/detail/zh/mindstudio/50RC2/msug/msug_000086.html

4. 建立项目

4.1 新建MindX Application项目

进入到MindStudio的安装目录,选择bin目录下的MindStudio64.exe,打开MindStudio。

然后点击New Project,选择Ascend App,选择MindX SDK Project(Python),然后点击完成,项目就新建完毕了。

如果没有选中这些项目模板,则MindStudio的工具栏会默认缺少一些工具,或者工具不可用。因此新建项目请按照上述步骤。如果需要基于已有的项目,可以在打开已有项目后选择工具栏的Ascend>Convert To Ascend Project转换成MindX SDK App。

4.2 文件结构

一般的MindX SDK App应当至少包含如下文件:

main.py ---- 程序的主入口

model.om ---- om模型

model.pipeline ---- pipeline文件

本项目的具体结构如下图:

│ README.md

│ main.py # 主程序

| eval.py # 测量NPU生成图片与GPU框架生成图片的SSIM

| animegan.pipeline # pipeline文件

├─dataset

├─results

├─models

│ AnimeGAN_FD.om # 应用推理所需的om模型

├─plugins

│ ├─AnimeGANPostProcessor # AnimeGAN后处理插件

│ │ build.sh # 编译AnimeGAN后处理插件的脚本

│ │ CMakeLists.txt

│ │ AnimeGANPostProcessor.cpp

│ │ AnimeGANPostProcessor.h

5. 模型转换

5.1 准备模型文件

MindX SDK支持的模型格式是om模型,因此使用之前须进行模型转换。首先需要将Tensorflow的ckpt模型文件转换成pb文件,再使用转化工具将模型转化为om模型。

若下载我们在OBS提供的pb模型,则可以跳跃至5.4 模型转换阅读,如果使用了我们提供的om模型,则可以跳过本章, 但要注意我们的om模型支持的分辨率档位为长宽从384到1536,以128为基数递增的各种分辨率组合。

首先在https://github.com/TachibanaYoshino/AnimeGAN下载官方的源代码和ckpt模型文件。

5.2 确定输入、输出节点

为了模型转换,需要确定输入的Placeholder的name和输出节点的name。输入节点在后续步骤中,工具可以自动获取,但如果工具获取失败,还需在此步查看。

手工查看

打开官方源代码的中关于模型的代码net/generatir.py,查看Generator模型的输出节点。下例代码中的tanh节点,就是本模型的输出。节点的默认名称与其操作算子有关,比如tanh节点名称为Tanh,为了更方便定位该节点,可以给tanh节点自定义名称output,但是注意在最终使用时要加上节点的命名空间,即generator/G_MODEL/output

然后打开test.py,查看输入的Placeholder节点。下例中名为test的placeholder就是本模型的输入,其支持动态分辨率,即图片的长和宽无需提前指定。

使用Tensorboard

除开直接查看源代码外,也可以使用tf.summary.FileWriter,在运行推理流程的同时保存日志,然后使用Tensorboard指定日志位置,查看网络图,确认输入和输出的节点。

将上面标蓝的代码插入到推理代码当中,然后运行一次推理流程,会将日志保存在./logs文件夹。在安装Tensorboard的环境中运行下面的命令,然后在Tensorboard提示的网页中打开,即可看到模型的网络图。

tensorboard --logdir=./logs

如上图,我们使用Tensorboard找到了名为generator/G_MODEL/output的输出节点。

5.3 PB固化

参照如下pb_frozen.py,编写PB固化脚本。

# pb_frozen.py
import tensorflow 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值