![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
model deployment
文章平均质量分 65
深度学习模型部署
给算法爸爸上香
爱学习的图像算法工程师一枚
展开
-
yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)
不知不觉LZ已经快工作两年了,由于之前的工作内容主要和模型部署相关,想着利用闲暇时间写一些推理方面的经验总结,于是有了这个工程。其实本来也是自己写了玩的,不过已经陆续迭代半年多了,期间也通过借签优秀代码吸收了经验,索性总结一下心得~用来初始化ONNXRuntime,OpenCV,OpenVINO,TensorRT四个package。即YOLO基类派生出YOLO_ONNXRuntime等类,再由YOLO_ONNXRuntime类派生一系列具体算法实现子类。即通过task_map接口返回具体算法类的实现。原创 2024-06-13 22:26:39 · 521 阅读 · 0 评论 -
yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(cpp版)
该接口类的思路很简单,即一个名为YOLOv5的基类,定义了抽象业务接口如前处理pre_process()、模型推理process()和后处理post_process()需要在派生类中进行具体实现。不知不觉LZ已经快工作两年了,由于之前的工作内容主要和模型部署相关,想着利用闲暇时间写一些推理方面的经验总结,于是有了这个工程。其实本来也是自己写了玩的,不过已经陆续迭代半年多了,期间也通过借签优秀代码吸收了经验,索性总结一下心得~原创 2024-06-12 23:53:46 · 627 阅读 · 1 评论 -
OpenMMlab导出DETR模型并用onnxruntime推理
【代码】OpenMMlab导出DETR模型并用onnxruntime推理。原创 2024-02-16 11:26:11 · 620 阅读 · 0 评论 -
RandLA-Net导出onnx模型并使用onnxruntime推理
【代码】RandLA-Net导出onnx模型并使用onnxruntime推理。原创 2024-01-14 16:58:27 · 733 阅读 · 6 评论 -
用Flask搭建简单的web模型部署服务
【代码】用Flask搭建简单的web模型部署服务。原创 2023-12-13 21:27:08 · 1261 阅读 · 0 评论 -
onnxruntime和tensorrt多batch推理
【代码】onnxruntime和tensorrt多batch推理。原创 2023-12-10 17:07:40 · 1694 阅读 · 5 评论 -
OpenMMlab导出FCN模型并用onnxruntime推理
【代码】OpenMMlab导出FCN模型并用onnxruntime推理。原创 2023-11-29 22:03:19 · 584 阅读 · 3 评论 -
OpenMMlab导出yolox模型并用onnxruntime和tensorrt推理
这里通过trtexec转换onnx文件,LZ的版本是TensorRT-8.2.1.8。输出是包含多个检测头的输出。安装mmdeploy的话,可以通过下面脚本导出onnx模型。原创 2023-11-26 21:32:56 · 713 阅读 · 0 评论 -
OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理
输出是包含三个不同层级检测头的输出。安装mmdeploy的话,可以通过下面脚本导出onnx模型。原创 2023-11-12 21:28:07 · 777 阅读 · 0 评论 -
OpenMMlab导出mobilenet-v2模型并用onnxruntime和tensorrt推理
【代码】OpenMMlab导出mobilenet-v2的onnx模型并推理。原创 2023-11-05 21:19:22 · 388 阅读 · 2 评论 -
OpenMMlab导出swin-transformer模型并用onnxruntime和tensorrt推理
通过mmpretrain 导出swin-transformer的onnx文件非常容易,注意需设置 opset_version=12这里是一个坑,刚开始设置的opset_version=11后续转换trtengine的时候会有问题。第三个坑是如果不加上–workspace参数可能会因内存不足报错,LZ的机器有32G内存索性就设了20G的工作空间,可以根据自己的内存大小酌情设置该参数。mmdeploy导出LZ没有尝试成功,不知道是环境配置问题还是在windows系统下库的bug。python推理:(待补充)原创 2023-10-21 16:30:25 · 881 阅读 · 0 评论 -
pointnet推理部署--tensorrt框架
LZ也实现了cuda版本的前处理代码,但似乎效率比cpu前处理还低。可能是数据量不够大吧(才10^3数量级),而且目前LZ的cuda水平也只是入门阶段…其中推理引擎的构建也可以直接使用tensorrt的bin目录下的trtexec.exe。原创 2023-08-19 12:34:50 · 2117 阅读 · 1 评论 -
yolov5目标检测多线程Qt界面
可以看到,上面的程序实现了两个模型的多线程推理,但由于不同模型推理速度有差异,导致画面显示不同步。另外,把读取视频帧的实现写入主线程时,一旦视频帧读取结束则无法处理后面的帧,导致显示卡死。这里引入的第三方库moodycamel::ConcurrentQueue是一个用C++11实现的多生产者、多消费者无锁队列。和V2比较,V3的改动不大,仅增加在视频播放完成时发出信号调用清除界面显示的功能。V4 Qt自带QThread、QMutex、QWaitCondition实现。原创 2023-08-12 14:48:23 · 1063 阅读 · 0 评论 -
yolov5目标检测多线程C++部署
下面的代码搭建了简单的一个生产者-消费者模型,在capture()函数中进行入队操作,infer()函数中进行出队操作,为了模拟采图-推理流程,在函数中调用Sleep()函数延时。此时发现采图-推理流程不能同步。上面的程序还有一点小问题:视频播放完时程序无法正常退出。原创 2023-08-09 23:33:57 · 2346 阅读 · 10 评论 -
CNN从搭建到部署实战
编写训练代码如下:16-18行解析参数;26-36行定义数据集路径和数据变换,加载训练集和测试集(实际上应该是验证集);37-57行for循环中开始训练num_epochs轮次,计算训练集和测试集(验证集)上的精度,并保存权重。该代码支持cpu和gpu训练,损失函数是CrossEntropyLoss,优化器是Adam,数据集用的是手写数字mnist数据集。测试的代码非常简单,流程是加载网络和权重,然后读入数据进行变换再前向推理即可。下面的代码搭建了CNN的开山之作LeNet的网络结构。原创 2023-07-14 19:31:22 · 942 阅读 · 0 评论 -
yolov5推理(libtorch、onnxruntime、opencv、openvino、tensorrt)
onnxruntime推理opencv推理openvino推理tensorrt推理各种格式的模型权重下载链接:yolov5n模型权重更完整的工程见我的github:https://github.com/taifyang/yolov5-inference原创 2023-07-23 18:24:01 · 972 阅读 · 0 评论 -
pointnet推理部署--onnxruntime框架
注意,由于C++无法直接读取npy格式文件(可以依赖一些库),这里先使用python脚本将npy文件转换成txt文件。以分16类50部分,gpu版本为例。以分10类,gpu版本为例。以分13类,gpu版本为例。原创 2023-07-23 13:11:55 · 1315 阅读 · 21 评论 -
yolov8量化部署(基于openvino和tensorrt)
的python_trt.py复制到dll文件夹下。设置模型路径,dll路径和想要预测的图片路径,特别注意模型路径需要加b’'。C++推理:(openvino库读取xml文件在compile_model时报错,暂时不明原因,改用onnx格式推理)使用官方trtexec转化onnx模型,FP32预测删除–fp16参数即可。在刚才的C++工程中右键yolov8,点击属性,修改为动态链接库。C++推理:(工程内容较多,这里只展示main函数部分)python推理:(LZ未尝试)python量化脚本:(改编自。原创 2023-06-11 23:19:20 · 3413 阅读 · 5 评论 -
yolov5量化部署(基于openvino和tensorrt)
下面的量化代码改编自:https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/111-yolov5-quantization-migration。然后,通过YOLOv5提供的export.py将预训练的Pytorch模型转换为OpenVINO FP32 IR模型。python和c++的推理代码都有。其中在我的机器上,fp32模型的yolov5n-yolov5l版本首次推理时间较长,不清楚是什么原因。原创 2023-06-09 18:10:53 · 3242 阅读 · 8 评论 -
yolov5-v7.0分类&检测&分割C++部署
目前最新的yolov5-v7.0已经支持计算机视觉中的分类、检测和分割三大基本任务。本文使用C++语言,通过OpenCV 实现yolov5-v7.0网络分类、检测和分割的部署。更新:在github网友BandyKenny发现问题后,经LZ查阅源码,原来分类推理代码缺少CenterCrop、Normalize步骤,目前已更新。另外检测推理源码中有前处理做letterbox、后处理映射回原图的操作,不过LZ发现对最终结果影响不大就没添加了,目前也已更新。原创 2023-02-05 23:16:51 · 4451 阅读 · 15 评论 -
pointnet推理部署--libtorch框架
由于tensorflow编译C++的api比较麻烦,此次部署的pointnet代码的Python版本为Pytorch编写的。环境配置:win10系统或者libtorch1.4.0+VS2015软件下载和配置过程在此不赘述。:新增semantic segmentation部分,统一代码风格等。原创 2022-04-20 17:29:47 · 5377 阅读 · 56 评论 -
两百行C++代码实现yolov5车辆计数部署(通俗易懂版)
这周用opencv简单实现了一下基于yolov5检测器的车辆计数功能,方法是撞线计数,代码很简单一共就两百多行,视频是在b站随便下载的。(5)读取视频的后续帧,用yolov5检测每帧图像上的车辆目标,计算新目标和上一帧图像中检测框中心点的距离矩阵;(7)计算对应新旧目标检测框中心点之间的连线,判断和事先设置的虚拟撞线是否相交,若相交则计数加1;(4)读取视频第一帧,用yolov5检测第一帧图像的车辆目标,计算这些检测框的中心点,(6)通过距离约束搜索距离矩阵,确定新旧目标检测框之间的对应关系;原创 2022-12-10 14:07:47 · 4907 阅读 · 13 评论 -
两百行C++代码实现yolov5人形运动检测
简单实现了一下yolov5单个人形的运动检测功能,多个的话涉及到多目标跟踪,以后有空再弄。实现思路即目标检测+静止抑制,具体步骤如下:(1)训练yolov5模型,这里就没有自己训练了,直接使用官方的开源模型yolov5s.pt;(2)运行yolov5工程下面的export.py,将pt模型转成onnx模型;(3)编写yolov5部署的C++工程,包括前处理、推理和后处理部分;(4)设置一个固定长度的队列,用来存放每帧检测出单个人形检测框的中心点;(5)读取视频第一帧,用yolov5检测第一帧图像的原创 2022-12-18 12:33:45 · 1536 阅读 · 0 评论 -
pointnet推理部署--openvino框架
环境配置:pytorch1.8.0+openvino2022.1.0OpenVINO的api使用比libtorch略复杂,但是使用起来大同小异;感觉OpenVINO的接口更偏C风格,libtorch接口更偏C++风格。:新增semantic segmentation部分,统一代码风格等。:新增python onnx推理脚本。原创 2022-04-21 21:43:57 · 4102 阅读 · 3 评论