首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >windows上使用TNN对模型进行性能分析

windows上使用TNN对模型进行性能分析

原创
作者头像
languageX
发布2021-11-01 15:22:13
发布2021-11-01 15:22:13
2.1K0
举报
文章被收录于专栏:计算机视觉CV计算机视觉CV

本文主要介绍如何使用TNN来对模型性能进行分析,并打印网络结构的每一个op耗时。主要步骤TNN的官方文档已经有介绍,但是官方使用平台都是基于Linux系统进行一些编译操作。

本文主要介绍在windows系统下使用WSL来搭建TNN对Android库编译环境搭建步骤以及在执行性能分析脚本中遇到的问题。

上一篇文章中我介绍了windows上使用WSL2以及安装docker的步骤。现在我们相当于在window上已经拥有了一个Linux系统,并且安装有docker。

启动WSL后,在Ubuntu系统下进行如下操作:

一 源码下载

代码语言:javascript
复制
git clone https://github.com/Tencent/TNN.git

二 TNN源码对Android库编译

首先将NDK环境配置好。然后按照官方步骤进行编译。

我在编译过程中遇到的问题:

1. cmake的安装

代码语言:javascript
复制
wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.sh

sudo sh cmake-3.12.0-Linux-x86_64.sh --prefix=/usr/local --exclude-subdir

我安装的3.12版本。这里cmake版本和NDK有关联,如果安装r23那cmake最好使用19或以上。

2. 执行脚本遇到 bin/bash^M: bad interpreter 问题,这个主要是windows和linux的格式问题,set ff:unix就可以了。

三 模型转换

不管是tensorflow还是pytorch等框架训练的模型,都需要转换到TNN的模型格式。上文我们介绍了WSL和安装docker的步骤,如果想直接使用镜像。

在TNN官网也提供了TNN模型转换的镜像:

如果使用源码编译,我遇到的问题:

  1. 版本问题,这里不指定版本,会因为各个库之间的兼容性问题出现异常

我安装的版本:

代码语言:javascript
复制
pip3 install onnx==1.6.0 onnxruntime numpy onnx-simplifier==0.2.4 protobuf==3.4.0 requests

以tensorflow模型为例:

首先我们将ckpt在本地转为pb模型,然后执行

代码语言:javascript
复制
 python3 converter.py onnx2tnn model_pb.onnx -optimize -v=v3.0 -o ./ -align

就可以生成如下文件

四 adb连接

在进行性能测试执行脚本时,需要连接到设备。所以需要进行安装adb。在adb连接真机过程中遇到了无法连接设备的问题。网上很多方案指出windows和Linux上安装adb版本一致,以及端口被占用等解决方案都无效。我这边遇到的问题是windows上可以连接,但是Linux环境下无法连接。

最终解决方案:

强制将adb环境设置为使用windows的adb

vim ~/.bashrc

添加

代码语言:javascript
复制
# Android Debug Bridge
export PATH=$PATH:/mnt/d/tool/android-develpe-SDK/platform-tools/
alias adb='/mnt/d/tool/android-develpe-SDK/platform-tools/adb.exe'

source ~/.bashrc

其中d/tool/android-develpe-SDK/platform-tools/是我本地安装adb的路径

还需要强制链接

代码语言:javascript
复制
sudo ln -s /mnt/d/tool/android-develpe-SDK/platform-tools/ /usr/lib/android-sdk/

再次执行adb devices就可以看见设备了。

五 性能分析

安装好环境,转换好TNN模型,并且连接上设备后,就可以执行脚本对模型进行性能分析了。参考步骤

  1. 将转换好的模型cp到~/code/TNN/benchmark/benchmark-model目录
  2. 修改~/code/TNN/benchmark/benchmark_android中的benchmark_models.sh文件

将需要测试到模型添加到benchmark_model_list中。执行如下脚本

代码语言:javascript
复制
./benchmark_models.sh  -f

结果会保存到benchmark_models_result.txt文件中。

就可以得到啊如下图所示每个op到耗时啦~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 源码下载
  • 二 TNN源码对Android库编译
  • 三 模型转换
  • 四 adb连接
  • 五 性能分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档