- 博客(447)
- 资源 (3)
- 收藏
- 关注
原创 RANSAC空间圆拟合实现
但是笔者建议使用向量的方式,更为简单方便,三点在同一个平面上,以P1为基点,寻找两条向量P12、P13;在得到平面的法向量之后,带入其中一个点到方程(4)中即可得到平面约束方程。由初中的几何知识我们可以知道,确定一个三角形至少需要三个不共线的点,因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)。一个空间圆的产生可以看作过该圆心的一个球体,被一个经过该点的平面所截而得到。
2024-07-01 22:46:15
381
原创 yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)
不知不觉LZ已经快工作两年了,由于之前的工作内容主要和模型部署相关,想着利用闲暇时间写一些推理方面的经验总结,于是有了这个工程。其实本来也是自己写了玩的,不过已经陆续迭代半年多了,期间也通过借签优秀代码吸收了经验,索性总结一下心得~用来初始化ONNXRuntime,OpenCV,OpenVINO,TensorRT四个package。即YOLO基类派生出YOLO_ONNXRuntime等类,再由YOLO_ONNXRuntime类派生一系列具体算法实现子类。即通过task_map接口返回具体算法类的实现。
2024-06-13 22:26:39
521
原创 yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(cpp版)
该接口类的思路很简单,即一个名为YOLOv5的基类,定义了抽象业务接口如前处理pre_process()、模型推理process()和后处理post_process()需要在派生类中进行具体实现。不知不觉LZ已经快工作两年了,由于之前的工作内容主要和模型部署相关,想着利用闲暇时间写一些推理方面的经验总结,于是有了这个工程。其实本来也是自己写了玩的,不过已经陆续迭代半年多了,期间也通过借签优秀代码吸收了经验,索性总结一下心得~
2024-06-12 23:53:46
627
1
原创 RandLA-Net导出onnx模型并使用onnxruntime推理
【代码】RandLA-Net导出onnx模型并使用onnxruntime推理。
2024-01-14 16:58:27
732
6
原创 OpenMMlab导出PointPillars模型并用onnxruntime推理
通过mmdeploy的tool/deploy.py脚本容易转换得到PointPillars的end2end.onnx模型。
2024-01-07 19:15:00
769
5
原创 OpenMMlab导出CenterNet模型并用onnxruntime和tensorrt推理
方法一:通过trtexec转换onnx文件,LZ的版本是TensorRT-8.2.1.8。则三个输出分别为boxes、scores、class_ids。方法二:通过mmdeploy导出engine文件。
2024-01-07 14:28:20
578
原创 OpenMMlab导出yolox模型并用onnxruntime和tensorrt推理
这里通过trtexec转换onnx文件,LZ的版本是TensorRT-8.2.1.8。输出是包含多个检测头的输出。安装mmdeploy的话,可以通过下面脚本导出onnx模型。
2023-11-26 21:32:56
713
原创 OpenMMlab导出yolov3模型并用onnxruntime和tensorrt推理
输出是包含三个不同层级检测头的输出。安装mmdeploy的话,可以通过下面脚本导出onnx模型。
2023-11-12 21:28:07
776
原创 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
原创 分类网络-类别不均衡问题之FocalLoss
数据集为mnist手写数字识别,其中训练集中数字0~9的数量分别为:0(5923张),1(6472张),2(5985张),3(6131张),4(5842张),5(5421张),6(5918张),7(6265张),8(5851张),9(5949张), 测试集中数字0~9的数量分别为:0(980张),1(1135张),2(1032张),3(1010张),4(982张),5(892张),6(958张),7(1028张),8(974张),9(1009张)。有训练和测代码如下:(完整代码来自。
2023-10-20 22:19:05
361
原创 求解平面上物体的有向3d包围盒
算法流程:(1)点云下采样(体素滤波);(2)ransac算法分割拟合地面平面;(3)裁剪工作区域(指定空间中四个点,裁剪点云只保留在(2)中平面上的投影在四边形内部的点);(4)再用ransac算法去除多余平面;(5)Euclidean聚类算法分割出目标物体的点云簇;(6)通过包围盒算法计算包围盒。由于物体是放在地面上,因此可以利用地面平面的法向量约束物体包围盒的朝向。具体做法如下:可视化结果:具体做法如下:可视化结果:
2023-09-30 14:39:36
294
原创 pointnet推理部署--tensorrt框架
LZ也实现了cuda版本的前处理代码,但似乎效率比cpu前处理还低。可能是数据量不够大吧(才10^3数量级),而且目前LZ的cuda水平也只是入门阶段…其中推理引擎的构建也可以直接使用tensorrt的bin目录下的trtexec.exe。
2023-08-19 12:34:50
2116
1
原创 yolov5目标检测多线程Qt界面
可以看到,上面的程序实现了两个模型的多线程推理,但由于不同模型推理速度有差异,导致画面显示不同步。另外,把读取视频帧的实现写入主线程时,一旦视频帧读取结束则无法处理后面的帧,导致显示卡死。这里引入的第三方库moodycamel::ConcurrentQueue是一个用C++11实现的多生产者、多消费者无锁队列。和V2比较,V3的改动不大,仅增加在视频播放完成时发出信号调用清除界面显示的功能。V4 Qt自带QThread、QMutex、QWaitCondition实现。
2023-08-12 14:48:23
1061
原创 yolov5目标检测多线程C++部署
下面的代码搭建了简单的一个生产者-消费者模型,在capture()函数中进行入队操作,infer()函数中进行出队操作,为了模拟采图-推理流程,在函数中调用Sleep()函数延时。此时发现采图-推理流程不能同步。上面的程序还有一点小问题:视频播放完时程序无法正常退出。
2023-08-09 23:33:57
2339
10
原创 《GPU并行计算与CUDA编程》笔记
第二步:把所有局部直方图每个分组bin使用Reduction(归约)并行累加起来行程一个总的直方图。方法二:原子相加(分组bins越少,并行化程度越低,方法二适合用于分组bins很多的时候)第一步:并行计算局部直方图;方法一:直接做累加(错误)
2023-08-05 17:53:18
452
原创 《CUDA 编程入门》笔记
注意:下面的程序若去掉volatile关键字,则函数reduction_2和reduction_3的计算结果有误。1.块大小, 256:数组长度降低256倍 ——大规模数组依旧很长,例如256万降低到1万。volatile关键字能防止编译器优化循环展开,造成结果错误。2.对部分和继续使用上一步的算法。3.使用一个块,将最后结果规约。完整的三阶段规约算法。
2023-08-01 23:02:08
237
原创 yolov5推理(libtorch、onnxruntime、opencv、openvino、tensorrt)
onnxruntime推理opencv推理openvino推理tensorrt推理各种格式的模型权重下载链接:yolov5n模型权重更完整的工程见我的github:https://github.com/taifyang/yolov5-inference
2023-07-23 18:24:01
971
原创 pointnet推理部署--onnxruntime框架
注意,由于C++无法直接读取npy格式文件(可以依赖一些库),这里先使用python脚本将npy文件转换成txt文件。以分16类50部分,gpu版本为例。以分10类,gpu版本为例。以分13类,gpu版本为例。
2023-07-23 13:11:55
1312
21
原创 CNN从搭建到部署实战
编写训练代码如下:16-18行解析参数;26-36行定义数据集路径和数据变换,加载训练集和测试集(实际上应该是验证集);37-57行for循环中开始训练num_epochs轮次,计算训练集和测试集(验证集)上的精度,并保存权重。该代码支持cpu和gpu训练,损失函数是CrossEntropyLoss,优化器是Adam,数据集用的是手写数字mnist数据集。测试的代码非常简单,流程是加载网络和权重,然后读入数据进行变换再前向推理即可。下面的代码搭建了CNN的开山之作LeNet的网络结构。
2023-07-14 19:31:22
942
原创 五十行python代码实现yolov8车辆计数
经过试验,LZ发现使用yolov8n(检出47辆)、yolov8s(检出51辆)等小模型时会发生车辆漏检,而yolov8m及更大的模型能检测出所有通过的52辆车。
2023-07-12 21:30:52
1126
1
原创 Python和C++使用的一些比较
说明在函数中修改list或者array的值会影响函数外原list或者原array的值,而修改int的值不会影响函数外原int的值。若把 a = [1, 2]换成a = (1, 2)则报错:‘tuple’ object does not support item assignment;换成a = {1, 2}则报错:‘set’ object is not subscriptable。说明在函数中修改vector的值不会影响函数外原vector的值。和Python的类似。报错:“a”: 未声明的标识符。
2023-07-08 10:19:49
277
原创 CMake静态库动态库的构建和链接之工程实用篇
在这里不再赘述。Windows平台下可用cmake-gui生成vs的.sln工程,Linux平台下可以运行cmake命令。
2023-07-05 00:11:44
9066
原创 通过Apritag码估计平面方程
上面的程序是通过在平面上放置若干个(3个以上)Apriltag码,计算这些码中心坐标,再使用最小二乘法拟合在相机坐标系下的平面方程z = X[0]*x + X[1]*y + X[2],该平面的法向量为(X[0], X[1], -1)。如果只有Apriltag码个数少于3则无法通过最小二乘法求解,平面的法向量可以通过单个码的M[:3, 2]确定,又平面经过M[:3,3:] 点,也可以求出方程。
2023-07-02 13:15:12
195
原创 两百行代码实现简易点云标注工具
夏天来了非常热,LZ周末不想出去玩,于是乎继之前的图片标注工具利用两个晚上写了一个简单的点云标注工具。本工具实现了打开点云、关闭点云,新建点云3d boundingbox(初始化为点云的AABB包围盒)并调整包围盒的位置、大小,以及保存标注、删除标注的功能。不过代码量很小,就别指望有什么高级功能了hh~ LZ感觉用是能用,就是调整包围盒太位置和大小的时候麻烦了,可能是没有实现鼠标拖动相应的功能吧。实现ui界面:其实就是拖拽各种控件啦~ LZ特别喜欢弄这个,感觉挺有成就感的。
2023-07-01 09:53:13
612
2
两百行C++代码实现yolov5车辆计数部署
2024-06-10
pyqt界面 计算树木las点云的树高、胸径、地径和冠幅面积
2024-06-01
点云裁剪界面qt+pcl+vtk
2024-05-27
自动驾驶环境感知网课视频
2023-11-11
ICP算法的几种不同实现
2023-11-05
yolov5+SORT多目标跟踪
2023-08-24
机械臀位姿估计与抓取网课视频
2023-08-17
三维点云网课视频(七套)
2023-08-17
yolov5目标检测多线程Qt界面
2023-08-12
yolov5目标检测多线程C++部署
2023-08-12
《从零搭建一套结构光3D重建系统》网课视频
2023-08-06
《机械臂抓取从入门到实战》课程视频及配套资料
2023-08-06
Qt+PCL+VTK开发的点云标注工具
2023-07-05
《图像分割实战》课程视频教程
2023-06-30
yolov8量化部署(基于openvino和tensorrt)
2023-06-11
texture mapping纹理贴图
2023-05-06
Qt开发的labelimg-yolo
2023-03-27
yolov5-v7.0网络分类、检测和分割OpenCV C++部署demo
2023-03-24
pointnet-qt
2022-12-04
VS2019+CUDA11.1 Release x64编译的OpenCV4.5.5(带CUDA和contrib模块)
2022-11-26
ICP算法加速优化-多线程和GPU
2022-11-25
opencv+qt人脸检测demo
2022-11-20
《Linux/UNIX网络编程》-甘刚.rar
2021-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人