如何将cnn模型放到服务器上运行

如何将cnn模型放到服务器上运行,第1张

一、模型加载

用已经训练好的模型来检测,rcnn_model_file指模型路径。

二、候选区域提取(Region proposals)

本论文采用selective search[3]方法生成候选区域,代码作者以给出,rcnn代码中的selective_search_boxes.m是根据selective search源代码中的demo.m修改的,参数im是矩阵图,不是图片路径,最后输出格式为N * 4的矩阵,N表示region proposals 的个数,每行表示一个region proposal对角线坐标。

三、特征提取(Feature extraction)

使用rcnn_features为每一个region proposals提取cnn特征,输出结果为N * 4096,每行表示一个region proposal的特征。

四、分类(classification)

调用下面函数为每一个region proposal计算各类的score,结果为N * C 矩阵,C表示物体类别个数,每行表示一个region proposal对应各个类别的score。

本文以 Faster R-CNN 为例,介绍如何使用 MMDetection v2 ,在 VOC 格式的自定义数据集上,训练和测试模型。

2021.9.1 更新: 适配 MMDetection v2.16

目录:

服务器的环境配置:

命令格式:

命令参数:

示例

训练完成后,生成的模型检查点和日志文件,存放在 ./work_dirs 目录下。

命令参数:

命令格式:

命令参数:

示例:

测试结果文件评估

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

测试结果文件评估

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

绘制学习曲线

命令格式:

命令参数:

示例:

计算训练时间

命令格式:

命令参数:

示例:

计算模型复杂度

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

命令格式:

命令参数:

示例:

浏览训练集图像

命令格式:

命令参数:

示例:

打印完整配置

命令格式:

命令参数:

示例:

有帮助的话,点个赞再走吧,谢谢~

参考:

先说结论:部署的方式取决于需求

需求一:简单的demo演示,只要看看效果的,像是学校里面的demo展示这种

caffe、tf、pytorch等框架随便选一个,切到test模式,拿python跑一跑就好,顺手写个简单的GUI展示结果

高级一点,可以用CPython包一层接口,然后用C++工程去调用

需求二:要放到服务器上去跑,但一不要求吞吐二不要求时延的那种,说白了还是有点玩玩的意思

caffe、tf、pytorch等框架随便选一个,按照官方的部署教程,老老实实用C++部署,例如pytorch模型用工具导到libtorch下跑(官方有教程,很简单)

这种还是没有脱离框架,有很多为训练方便保留的特性没有去除,性能并不是最优的;

另外,这些框架要么CPU,要么NVIDIA GPU,对硬件平台有要求,不灵活;还有,框架是真心大,占内存(tf还占显存),占磁盘

需求三:放到服务器上跑,要求吞吐和时延(重点是吞吐)

这种应用在互联网企业居多,一般是互联网产品的后端AI计算,例如人脸验证、语音服务、应用了深度学习的智能推荐等。由于一般是大规模部署,这时不仅仅要考虑吞吐和时延,还要考虑功耗和成本。所以除了软件外,硬件也会下功夫,比如使用推理专用的NVIDIA P4、寒武纪MLU100等。这些推理卡比桌面级显卡功耗低,单位能耗下计算效率更高,且硬件结构更适合高吞吐量的情况软件上,一般都不会直接上深度学习框架。对于NVIDIA的产品,一般都会使用TensorRT来加速(我记得NVIDIA好像还有TensorRT inference server什么的,名字记不清了,反正是不仅可以加速前传,还顺手帮忙调度了)。TensorRT用了CUDA、CUDNN,而且还有图优化、fp16、int8量化等。反正用NVIDIA的一套硬软件就对了

需求四:放在NVIDIA嵌入式平台上跑,注重时延

比如PX2、TX2、Xavier等,参考上面(用全家桶就对了),也就是贵一点嘛

需求五:放在其他嵌入式平台上跑,注重时延

硬件方面,要根据模型计算量和时延要求,结合成本和功耗要求,选合适的嵌入式平台。比如模型计算量大的,可能就要选择带GPU的SoC,用opencl/opengl/vulkan编程;也可以试试NPU,不过现在NPU支持的算子不多,一些自定义Op多的网络可能部署不上去对于小模型,或者帧率要求不高的,可能用CPU就够了,不过一般需要做点优化(剪枝、量化、SIMD、汇编、Winograd等)顺带一提,在手机上部署深度学习模型也可以归在此列,只不过硬件没得选,用户用什么手机你就得部署在什么手机上23333。为老旧手机部署才是最为头疼的上述部署和优化的软件工作,在一些移动端开源框架都有人做掉了,一般拿来改改就可以用了,性能都不错。

需求六:上述部署方案不满足我的需求

比如开源移动端框架速度不够——自己写一套。比如像商汤、旷世、Momenta都有自己的前传框架,性能应该都比开源框架好。只不过自己写一套比较费时费力,且如果没有经验的话,很有可能费半天劲写不好


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/658069.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-24
下一篇2023-07-24

发表评论

登录后才能评论

评论列表(0条)

    保存