在Linux下部署Yolo-Fastest + TNN

Yolo-Fastest + TNN

本文记录使用TNN推理Yolo-Fastest完整过程。

Yolo-Fastest的Git地址:https://github.com/dog-qiuqiu/Yolo-Fastest

TNN的Git地址:https://github.com/Tencent/TNN

TNN编译

TNN提供了在Linux下一键编译的脚本build_linux.sh,编译完成后,build目录下会生成测试可执行文件test/TNNTest,可在Linux下直接运行。

添加Mem Dump

TNN提供了可以Dump中间层每一层输出的工具Mem Dump,在源码添加相关接口并增加相关配置:https://github.com/Tencent/TNN/pull/353

官方提供的Dump工具写在条件编译指令里:

在这里插入图片描述
因此需要在编译脚本中打开Dump开关,在CmakeList中查到相关内容:

if(TNN_QUANTIZATION_ENABLE OR TNN_MODEL_CHECK_ENABLE)
    set(TNN_SYMBOL_HIDE OFF)
    add_definitions(-DFORWARD_CALLBACK_ENABLE)
endif()

在build_linux.sh中修改或添加对应的编译开关。

在测试Dump工具时发现无法Dump卷积的输出,可能跟TNN的模型优化有关:

    /*
     * The NetOptimizeManager holds a list of network optimization processes.
     * The optimization process may change the network structure accoundingly.
     * eg. fuse conv+bn, conv+relu.
     */
    {
        // use mutex to protect net_resource and net_structure in multi-thread
        std::unique_lock<std::mutex> lck(optimize_mtx_);
        ret = optimizer::NetOptimizerManager::Optimize(net_structure, net_resource, net_config.device_type);
        if (ret != TNN_OK) {
            return ret;
        }
    }

TNN模型转换

官方提供的TNN模型的转换工具和转换方法:

在这里插入图片描述
本文直接拉取的构建好的docker镜像进行转换,也可自行编译。

Yolo-Fastest模型转换

由于种种原因,需要将Yolo-Fastest转换为caffe模型,官方也提供了转换工具Darknet2Caffe。由于源码编译的Caffe不支持upsample算子,需要在caffe源码中添加upsample算子,重新编译CPU版本的Caffe。然后使用转换工具即可。

使用TNN推理Yolo-Fastest

一开始使用TNN的时候,以为-ip参数添加输入文件可以直接读图片,之后发现-ip添加的是文件流的路径,将输入图片以RGB格式读取,然后将其转换为TNN默认的排布格式NCHW。

Yolo-Fastest对图片做的预处理为归一化,将预处理后的图片数据以文件流格式送入TNN即可。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值