From 2b32aab64fd9b0e515aac1cb88669ff91266a288 Mon Sep 17 00:00:00 2001 From: xu Date: Mon, 2 Dec 2024 20:01:12 +0800 Subject: [PATCH 1/2] CartoonGANPicture case --- contrib/CartoonGANPicture/CMakeLists.txt | 2 +- .../CartoonGANPicture/CartoonGANPicture.cpp | 6 - contrib/CartoonGANPicture/README.md | 131 +++++++----------- 3 files changed, 54 insertions(+), 85 deletions(-) diff --git a/contrib/CartoonGANPicture/CMakeLists.txt b/contrib/CartoonGANPicture/CMakeLists.txt index ffda65d35..a0be41382 100644 --- a/contrib/CartoonGANPicture/CMakeLists.txt +++ b/contrib/CartoonGANPicture/CMakeLists.txt @@ -3,7 +3,7 @@ project(CartoonGAN_picture) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}") -add_compile_options(-std=c++11 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) +add_compile_options(-std=c++14 -fPIE -fstack-protector-all -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -s -pie -Wall) add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0 -Dgoogle=mindxsdk_private) set(MX_SDK_HOME "$ENV{MX_SDK_HOME}") diff --git a/contrib/CartoonGANPicture/CartoonGANPicture/CartoonGANPicture.cpp b/contrib/CartoonGANPicture/CartoonGANPicture/CartoonGANPicture.cpp index caa058a4a..ba86acf28 100644 --- a/contrib/CartoonGANPicture/CartoonGANPicture/CartoonGANPicture.cpp +++ b/contrib/CartoonGANPicture/CartoonGANPicture/CartoonGANPicture.cpp @@ -41,11 +41,6 @@ APP_ERROR CartoonGANPicture::Init(const InitParam &initParam) return ret; } dvppWrapper_ = std::make_shared(); - ret = dvppWrapper_->Init(); - if (ret != APP_ERR_OK) { - LogError << "DvppWrapper init failed, ret=" << ret << "."; - return ret; - } model_ = std::make_shared(); ret = model_->Init(initParam.modelPath, modelDesc_); if (ret != APP_ERR_OK) { @@ -58,7 +53,6 @@ APP_ERROR CartoonGANPicture::Init(const InitParam &initParam) APP_ERROR CartoonGANPicture::DeInit() { - dvppWrapper_->DeInit(); model_->DeInit(); MxBase::DeviceManager::GetInstance()->DestroyDevices(); return APP_ERR_OK; diff --git a/contrib/CartoonGANPicture/README.md b/contrib/CartoonGANPicture/README.md index 2ac43bd63..0a3d91fc9 100644 --- a/contrib/CartoonGANPicture/README.md +++ b/contrib/CartoonGANPicture/README.md @@ -1,30 +1,16 @@ -# 卡通图像生成 +# 图像卡通风格迁移 ## 1 介绍 -本开发项目基于mxBase,在昇腾平台上,开发端到端的卡通图像生成参考设计,实现图像卡通化功能。 -项目的主要处理流程为:Init > ReadImage > Resize > Inference > PostProcess > WriteResult > DeInit -适用场景:本项目支持通用场景下的jpg图片卡通化。为了保证卡通化效果,建议使用图像线条简单,细节较少的图片进行推理。 +### 1.1 简介 -### 1.1 支持的产品 +本开发项目基于mxBase,在昇腾平台上,开发端到端的图像卡通风格迁移参考设计,实现图像卡通化功能。 -本项目以昇腾Atlas310卡为主要的硬件平台。 +图像卡通风格迁移项目实现:输入图片,通过调用mxBase提供的接口,使用DVPP进行图像解码,解码后获取图像数据,然后经过图像缩放,满足模型的输入要求;将缩放后的图像数据输入cartoonization模型进行推理,模型输出经过后处理后,得到生成的卡通化的图像,将其可视化,得到最后的卡通图像。 -### 1.2 支持的版本 +技术实现流程图如下: -支持的SDK版本为2.0.4。 - -在Atlas产品环境下,可通过运行一下命令查询版本号: - -``` -npu-smi info -``` - - - -### 1.3 软件方案介绍 - -卡通图像生成项目实现:输入图片,通过调用mxBase提供的接口,使用DVPP进行图像解码,解码后获取图像数据,然后经过图像缩放,满足模型的输入要求;将缩放后的图像数据输入cartoonization模型进行推理,模型输出经过后处理后,得到生成的卡通化的图像,将其可视化,得到最后的卡通图像。 +![image-20210929114019494](image.png) 表1.1系统方案中各模块功能: @@ -39,11 +25,21 @@ npu-smi info | 7 | 保存结果 | 将处理后得到的卡通化图像可视化保存至文件夹中 | | 8 | 设备去初始化 | 推理卡设备去初始化。 | +### 1.2 支持的产品 + +本项目支持昇腾Atlas 300I pro、 Atlas 300V pro + +### 1.3 支持的版本 +本样例配套的MxVision版本、CANN版本、Driver/Firmware版本如下所示: + +| MxVision版本 | CANN版本 | Driver/Firmware版本 | +| --------- | ------------------ | -------------- | +| 6.0.RC3 | 8.0.RC3 | 24.1.RC3 | ### 1.4 代码目录结构与说明 -本工程名称为CartoonGAN_picture,工程目录如下图所示: +工程目录如下图所示: > data文件及目录下的images、model文件夹需要用户在项目运行前手动创建 @@ -51,98 +47,77 @@ npu-smi info |-----CartoonGANPicture | |---CartoonGANPicture.cpp | |---CartoonGANPicture.h -|-----data -| |---images //推理图片存放路径 -| |---model //模型存放路径 -| |---output //推理结果存放路径,由程序运行生成 -|-----build.sh //编译脚本 +|-----data // 需用户自己创建 +| |---images // 推理图片存放路径,需用户自己创建 +| |---model // 模型存放路径,需用户自己创建 +| |---output // 推理结果存放路径,由程序运行生成 +|-----build.sh // 编译脚本 |-----CMakeLists.txt +|-----image.png // 技术实现流程图 |-----main.cpp +|-----README.md ``` +### 1.5 相关约束 +- 适用场景:本项目支持通用场景下的jpg图片卡通化。为了保证卡通化效果,建议使用图像线条简单,细节较少的图片进行推理。 +- Dvpp图片解码接口只支持图片格式为jpg、jpeg,并且对图片分辨率在[32,8192]范围内的图片的解码,图片格式不支持或分辨率不符合约束的图片无法成功进行推理 -### 1.5 技术实现流程图 - -![image-20210929114019494](image.png) - - - -## 2 环境依赖 - -推荐系统为ubantu 18.04或centos 7.6,环境依赖软件和版本如下表: - -| 软件名称 | 版本 | -| -------------- | ------ | -| cmake | 3.10.2 | -| mxVision | 2.0.4 | -| ascend-toolkit | 5.0.4 | - -## 3 模型转换 - -### 3.1 模型下载 - -[模型及配置文件下载链接](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/CartoonGANPicture/model.zip) - -将下载好的模型和配置文件放入data/model目录下 - -### 3.2 环境变量配置 - -设置如下环境变量: +## 2 设置环境变量 ``` # 设置环境变量(请确认install_path路径是否正确) -export install_path=/usr/local/Ascend/ascend-toolkit/latest #默认安装路径 +export install_path=/usr/local/Ascend/ascend-toolkit/latest # 默认安装路径 export PATH=/usr/local/python3.9.2/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH export PYTHONPATH=${install_path}/atc/python/site-packages:${install_path}/atc/python/site-packages/auto_tune.egg/auto_tune:${install_path}/atc/python/site-packages/schedule_search.egg -export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH # LD_LIBRARY_PATH为lib库路径 export ASCEND_OPP_PATH=${install_path}/opp -``` - -### 3.3 模型转换 - -进入data/model目录,运行如下模型转换命令实现模型转换: -``` -atc --output_type=FP32 --input_shape="train_real_A:1,256,256,3" --input_format=NHWC --output="cartoonization" --soc_version=Ascend310 --insert_op_conf=insert_op.cfg --framework=3 --model="cartoonization.pb" --precision_mode=allow_fp32_to_fp16 +export MX_SDK_HOME=${MX_SDK安装路径} # MX_SDK_HOME为SDK安装路径 +export LD_LIBRARY_PATH=${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:/usr/local/Ascend/ascend-toolkit/:${LD_LIBRARY_PATH} ``` +## 3 模型转换 +**步骤1:** 模型下载 -## 4 编译与运行 +[模型及配置文件下载链接](https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/mindxsdk-referenceapps%20/contrib/CartoonGANPicture/model.zip) -在编译运行项目前,需要设置环境变量: +将下载好的模型和配置文件解压后放入`data/model`目录下 -- 环境变量介绍: - - MX_SDK_HOME为SDK安装路径 - - LD_LIBRARY_PATH为lib库路径 +**步骤2:** 模型转换 + +进入`data/model`目录,运行如下模型转换命令实现模型转换: ``` -export MX_SDK_HOME=${MX_SDK安装路径} -export LD_LIBRARY_PATH=${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:/usr/local/Ascend/ascend-toolkit/:${LD_LIBRARY_PATH} +atc --output_type=FP32 --input_shape="train_real_A:1,256,256,3" --input_format=NHWC --output="cartoonization" --soc_version=Ascend310P3 --insert_op_conf=insert_op.cfg --framework=3 --model="cartoonization.pb" --precision_mode=allow_fp32_to_fp16 ``` -**步骤1** 修改CMakeLists.txt文件 - +若终端输出: ``` -set(MX_SDK_HOME ${MX_SDK安装路径}) -# 将${MX_SDK安装路径}修改为SDK实际安装路径 +ATC start working now, please wait for a moment. + +ATC run success, welcome to the next use. ``` -**步骤2** cd至项目主目录,执行如下命令编译程序: +表示命令执行成功。 + +## 4 编译与运行 + +**步骤1:** 进入项目主目录,执行如下命令编译程序: ``` bash build.sh ``` -**步骤3** 将需要执行推理的图片放置在data/images中,在项目主目录下执行如下命令完成推理: +**步骤2:** 将需要执行推理的图片放置在`data/images/`文件夹下,在项目主目录下执行如下命令完成推理: ``` ./CartoonGAN_picture ./data/images ``` -推理完成后的图片存放在生成的data/output目录下 +**步骤3:** 查看结果。推理完成后的图片存放在生成的`data/output`目录下 ## 5 常见问题 @@ -150,8 +125,8 @@ bash build.sh **问题描述:** -Dvpp图片解码接口只支持对图片格式为jpg、jpeg;图片片分辨率在[32,8192]范围内的图片的解码,图片格式不支持或分辨率不符合约束的图片无法成功进行推理 +Dvpp图片解码接口只支持图片格式为jpg、jpeg,并且对图片分辨率在[32,8192]范围内的图片的解码,图片格式不支持或分辨率不符合约束的图片无法成功进行推理 **解决方案:** -使用规格内的图片进行推理 \ No newline at end of file +使用规格约束内的图片进行推理 \ No newline at end of file -- Gitee From ed797e1cbd669f430d644224c0a4fbacb4247363 Mon Sep 17 00:00:00 2001 From: xu Date: Tue, 3 Dec 2024 15:59:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A3=80=E8=A7=86=E6=84=8F=E8=A7=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contrib/CartoonGANPicture/README.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/contrib/CartoonGANPicture/README.md b/contrib/CartoonGANPicture/README.md index 0a3d91fc9..6b4a0d17a 100644 --- a/contrib/CartoonGANPicture/README.md +++ b/contrib/CartoonGANPicture/README.md @@ -65,17 +65,9 @@ ## 2 设置环境变量 -``` -# 设置环境变量(请确认install_path路径是否正确) - -export install_path=/usr/local/Ascend/ascend-toolkit/latest # 默认安装路径 -export PATH=/usr/local/python3.9.2/bin:${install_path}/atc/ccec_compiler/bin:${install_path}/atc/bin:$PATH -export PYTHONPATH=${install_path}/atc/python/site-packages:${install_path}/atc/python/site-packages/auto_tune.egg/auto_tune:${install_path}/atc/python/site-packages/schedule_search.egg -export LD_LIBRARY_PATH=${install_path}/atc/lib64:$LD_LIBRARY_PATH # LD_LIBRARY_PATH为lib库路径 -export ASCEND_OPP_PATH=${install_path}/opp - -export MX_SDK_HOME=${MX_SDK安装路径} # MX_SDK_HOME为SDK安装路径 -export LD_LIBRARY_PATH=${MX_SDK_HOME}/lib:${MX_SDK_HOME}/opensource/lib:/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64:/usr/local/Ascend/ascend-toolkit/:${LD_LIBRARY_PATH} +```bash +. /usr/local/Ascend/ascend-toolkit/set_env.sh # toolkit默认安装路径,根据实际安装路径修改 +. ${SDK_INSTALL_PATH}/mxVision/set_env.sh # sdk安装路径,根据实际安装路径修改 ``` ## 3 模型转换 -- Gitee