画质增强概述-3.2-AI增强实践之推理与部署

low-level 的视觉模型要在生产环境的服务端部署使用,还是有一些工作要做的。当然,本文不涉及在移动端的部署,我理解移动端模型部署很核心的工作是模型压缩(量化、枝剪和蒸馏),这块我涉及不算很深入,只搞过一点量化和枝剪,就不展开描述了。

3.2.1 推理框架

主要试了三个推理框架:阿里的MNN、facebook的libtorch和nvidia的TensorRT

a. MNN

MNN相对而言成熟度稍差些,优势是开源,有问题可以自己看代码,甚至做一点点修改,我在windows上跟MingW32结合编译MNN的库开始就遇到问题,后面做了一点修改,就能跑了,这个当时还给MNN提了个issue ,总的来说,我理解MNN可能更适合移动端推理,我的场景可能不是特别符合

b. libtorch

libtorch 和 pytorch 系出同门,是其的 c/c++ 版本,也是开源的,这些特性决定了相对而言libtorch对 pytorch模型支持度相对友好,虽然跑通过程中也有一些坑(主要是跟ffmpeg融合编译的时候比较折腾),但回头看基本也都还好,但相比较 tensorRT,实测下来libtorch 性能会差不少,所以最终我选择的还是 tensorRT作为最终版本的推理引擎

c. tensorRT

TRT实测下来性能最好,应该跟我默认开了量化有关,它的缺点之一是它不开源,真遇到问题,比较容易抓瞎没办法,网上搜索出来的资料良莠不齐,比较难搞,不过跑通的话还是比较香的。

3.2.2 推理过程

pytorch训练产生的是 pth文件,通过python脚本可将其转为 onnx文件,然后使用 trt 库函数再转成 *.trt 文件,最后推理用的就是这个 *.trt 文件了

这里值得指出的是,不同显卡、不同硬件,通用的是 onnx文件,而非 *.trt,也就是说,*.trt 是硬件相关的(应该本质就是显卡),它可以理解为显卡定制优化后的模型文件供TRT使用,这应该也是其可以比 libtorch 性能更好的原因吧。

3.2.3 显卡

实际跑过的显卡还是比较多的,实测下来,性价比最高的感觉是 3070/3090 系列,比V100 性能稍差一点,但价格差距就更大了,我理解这跟超分、降噪这类 low-level  模型特性有关

你可能感兴趣的:(图像处理,视频云,画质增强,人工智能,画质增强,视频云,图像处理,计算机视觉)