TNN Model Converter教程

这篇教程详细介绍了如何利用Docker安装和使用convert2tnn工具,包括拉取或构建docker镜像,重命名镜像,以及如何使用convert2tnn进行模型转换的操作步骤。

1.安装docekr 

首先安装依赖
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
信任 Docker 的 GPG 公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
对于 amd64 架构的计算机,添加软件仓库
 
sudo add-apt-repository \
 "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
最后安装
sudo apt-get update
sudo apt-get install docker-ce
把当前用户加到docker用户组中
添加docker用户组
 
sudo groupadd docker
 
把自己加到docker用户组中
#myusername   是你自己的用户名
sudo gpasswd -a myusername docker
 
重启docker后台服务
 
sudo service docker restart
切换当前用户到新group
 
newgrp - docker
确定docker可以非sudo运行
 
docker ps

2.拉取构建好的 docker 镜像

docker pull turandotkay/tnn-convert

通过docker images 来查看是否构建成功

REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
turandotkay/tnn-con
### TNN YOLOv5m 实现与使用 #### 关于TNN框架 Tencent Neural Network (TNN) 是由腾讯开源的一个高性能神经网络推理框架,专为移动设备优化设计。该框架支持多种硬件加速方式,包括CPU、GPU以及NPU等,在移动端部署深度学习模型方面表现出色[^1]。 #### YOLOv5m简介 YOLO系列目标检测算法因其高效性和准确性而广受好评,YOLOv5作为第五代版本进一步提升了性能并简化了训练流程.YOLOv5m则是YOLOv5家族中的一个特定变体,它在精度和速度之间取得了良好的平衡,适用于资源有限但又需要较高识别能力的应用场景[^2]. #### 使用TNN部署YOLOv5m的具体步骤如下: ##### 准备工作 为了能够顺利地将YOLOv5m集成到基于TNN的应用程序当中,首先需要完成以下几个准备工作: - 安装必要的依赖库,如OpenCV用于图像处理; - 下载预训练好的YOLOv5m权重文件(.pt); - 将PyTorch格式的权重转换成ONNX格式(.onnx),以便后续导入至TNN中. ```bash pip install opencv-python torch onnx wget https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5m.pt python -m torch.onnx.export yolov5m --output=yolov5m.onnx ``` ##### 转换模型 接着利用官方提供的工具`tnn-converter`,可以很方便地把上述得到的`.onnx`文件转化为适合TNN加载使用的`.tnnproto`及对应的二进制参数文件(`.dat`)。 ```bash cd path/to/TNN/tools/converter/ ./converter.py --model_file ../yolov5m.onnx --output_dir ./output ``` ##### 编写预测代码 最后一步就是编写应用程序来调用已经准备完毕的目标检测器了。这里给出一段简单的Python示例代码展示如何通过TNN接口执行前向传播操作获得最终的结果。 ```cpp #include <iostream> #include "tnn/net.h" using namespace std; int main() { // 初始化环境变量 auto net = tnn::Net(); // 加载配置文件与权值数据 string protoFile = "./output/yolov5m.tnnproto"; string modelFile = "./output/yolov5m.dat"; bool status = net.Build(protoFile.c_str(), modelFile.c_str()); if (!status){ cerr << "Failed to load network." << endl; return -1; } // 设置输入张量维度大小(此处假设batch_size=1) vector<int> input_dims{1, 3, 640, 640}; float* inputData = new float[input_dims[0]*input_dims[1]*input_dims[2]*input_dims[3]]; // 执行推断过程... auto outputBlobs = net.Forward(inputData); delete[] inputData; } ``` 请注意以上C++代码片段仅为示意目的所作,并未包含完整的业务逻辑实现细节;实际开发过程中还需要考虑更多因素比如错误处理机制、多线程管理等等。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值