腾讯优图开源项目TNN总结与实践

一、Github的license

1、开源软件的License,一般是授权用户使用、拷贝、修改和再发布的合法权利及应当遵守的约定,同时包含作者的免责声明和使用自担责声明。
2、使用合适的开源许可证可以给开发者/使用者避免一些不必要的麻烦事情。
3、我还是不明白我再这里写TNN的总结,会不会侵权,知道的谢谢留言。
开源软件为什么要有授权
为什么开源项目要选择License

二、如何进行模型转换

1、目前TNN仅支持CNN,支持主流的模型文件格式,包括ONNX、PyTorch、Tensorflow以及Caffe等。
2、模型转换有三种:
(1)方法一分两步:比如Caffe先通过脚本caffe2onnx,转成ONNX模型,再通过脚本onnx2tnn,转换成TNN模型。脚本位置分别在
TNN/tools/caffe2onnx/caffe2onnx.py和TNN/tools/convert2tnn/caffe_converter/caffe2tnn.py
注意的是:执行caffe2onnx.py只需补充待转换模型位置等参数即可;执行caffe2tnn.py需要先编译,具体环境搭建以及编译步骤见TNN/doc/cn/usr/onnx2tnn.md;同时wIndows系统不建议尝试。
(2)方法二一步走:手动安装依赖工具和编译工具,使用conver2tnn转换工具,其实和方法一差不多。
(3)方法三也是一步走:通过docker image的方式使用convert2tnn转换工具,重点说一下这种方式

基于Docker的模型转换方式

TNN/doc/cn/user/convert.md之Convert2tnn Docker(推荐)这里步骤和参数说的很清楚
具体终端命令如下:

docker pull turandotkay/tnn-convert
docker images
docker tag turandotkay/tnn-convert:latest tnn-convert:latest
docker rmi turandotkay/tnn-convert:latest
docker images

#convert TF
docker run --volume=$(pwd):/workspace -it tnn-convert:latest  python3 ./converter.py tf2tnn \
    -tp /workspace/test.pb \
    -in "input0[1,32,32,3];input1[1,32,32,3]" \
    -on output0 \
    -v v2.0 \
    -optimize \
    -align \
    -input_file /workspace/in.txt \
    -ref_file /workspace/ref.txt
    
# convert onnx
docker run --volume=$(pwd):/workspace -it tnn-convert:latest python3 ./converter.py onnx2tnn \
    /workspace/mobilenetv3-small-c7eb32fe.onnx \
    -optimize \
    -v v3.0 \
    -align  \
    -input_file /workspace/in.txt \
    -ref_file /workspace/ref.txt

# convert caffe
docker run --volume=$(pwd):/workspace -it tnn-convert:latest python3 ./converter.py caffe2tnn \
    /workspace/squeezenet.prototxt \
    /workspace/squeezenet.caffemodel \
    -optimize \
    -v v1.0 \
    -align  \
    -input_file /workspace/in.txt \
    -ref_file /workspace/ref.txt

对docker不熟悉的小伙伴可以查一下docker的常用命令,这里备注一下相关的:

#列出本地镜像
docker images
#列出本地所有镜像(含中间映像层,默认情况下,过滤掉中间映像层)
docker images -a 
#列出本地镜像中REPOSITORY为ubuntu的镜像列表
docker images ubuntu

#列出所有在运行的容器信息
docker ps
#列出最近创建的5个容器信息
docker ps -n 5
#列出所有创建的容器
#docker ps -a

#使用镜像nginx:latest以交互模式启动一个容器,并在容器内执行/bin/bash命令
docker run -it nginx:latest /bin/bash
#-i:以交互模型运行容器。-t:为容器重新分配一个伪输入终端。两个通常同时使用
#--name="nginx-lb":为容器指定一个名称
# -p:指定端口映射,格式为:主机端口:容器端口
#-v/--volume:绑定一个卷,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径
#使用镜像nginx:lates,以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data
#被挂载之后的容器地址将会存在挂载的挂载内容
docker run -p 80:80 -v /data:/data -d nginx:latest
#删除指定ID的容器
docker rm 6655086fbaff 67b710cbe462

下面是我执行的命令

docker run --name="model2tnn3" --volume=/data02/lhh/models/:/workspace -p 50009:22 -it tnn-convert:latest  

python3 ./converter.py tf2tnn \
    -tp /workspace/tfmodel/mobilenet_v1_1.0_224_frozen.pb \
    -in "input0[1,224,224,3];input1[1,224,224,3]" \
    -on output0 \
    -v v2.0 \
    -optimize \
    -align \
    -input_file /workspace/in.txt \
    -ref_file /workspace/ref.txt

 python3 ./converter.py caffe2tnn \
    /workspace/caffemodel/slim-320.prot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值