sahi+yolov8实现图像切片推理 本文记录项目中涉及到了无人机正射图像的推理(通常8000像素*8000像素以上),由于模型推理尺寸是640*640的,如果直接整图送入模型推理,推理效果极差,可以考虑采用多个切片进行分别进行推理,最后合并推理结果的方式。SAHI(Slicing Aided Hyper Inference,切片辅助超推理)是一种专为优化小目标检测设计的通用框架,其核心思想是通过图像切片和分层推理提升检测效果,尤其适用于处理大尺寸图像中的小目标。
NanoTrack原理与转tensorrt推理 NanoTrack 是一种轻量级且高效的目标跟踪算法,基于Siamese网络架构,旨在在资源受限的设备(如无人机、嵌入式系统等)上实现实时且精确的目标跟踪。随着计算机视觉领域的快速发展,传统的目标跟踪算法(如KCF等)逐渐暴露出在复杂场景中的局限性,特别是在处理目标的尺度变化、遮挡和背景复杂时,性能难以保证。本文档将详细介绍 NanoTrack 的模型结构以帮助读者更好地理解并应用该算法,同时对比pt、onnx、tensorrt进行推理的耗时情况。
Jetson安装Python3.8 tensorrt库 Jetson安装Python3.8 tensorrt库,需要确保正确Python与TensorRT版本,你的编译环境与目标平台(ARM架构)一致,避免使用不兼容的x86_64编译配置。后续使用python调用tensorrt与cuda进行推理速度还是很快的,能够达到50帧,这在板端也是很炸裂的存在!!!如果阅读本文对你有用,欢迎一键三连呀!!!2024年8月9日12:23:36。
通过cmakelist生成与调用C++动态链接库 此前有写过用编译工具链直接通过命令行的方式生成与调用C++动态链接库的方法,本文记录下通过cmake来实现so的生成。通过cmake进行so编译还是比较简单的,主要是用生成so替换原来生成的可执行文件,然后对main.cpp进行配置,能够正确调用生成的so。这样我们就实现了通过cmakelist生成与调用C++动态链接库。如果阅读本文对你有用,欢迎一键三连呀!!!2024年5月14日16:25:40。
海思3559 yolov5模型转wk详细笔记 目前项目需要在海思3559上开发,但查了相关文档,感觉还是比较复杂的。相比于3403、3519的使用atc工具直接从onnx->om,3559需要从onnx->caffer->wk则显得复杂许多,特此记录一下。海思3559是早些年的芯片,因此在模型转换的方式上相比于3403、3519的使用atc工具直接从onnx->om,3559需要从onnx->caffer->wk则显得稍显复杂。本文记录了yolov5模型由pt->onnx->caffe->wk的过程,希望对读者有所帮助。
剑指Offer 队列&栈题目集合 时间复杂度:在最坏情况下,pop 操作的时间复杂度是 O(n),但在平均情况下,当栈2中有元素时,pop 操作的时间复杂度是 O(1)。这是因为在平均情况下,元素不会每次都从栈1移动到栈2。总体而言,这个实现的 push 操作是 O(1),而 pop 操作的最坏情况下是 O(n),平均情况下是 O(1)。如果为空,则将栈 1 中的所有元素移到栈 2。使用两个栈来实现队列的功能。栈 1 用于存储入队的元素,而栈 2 用于存储出队的元素。空间复杂度: O(n),辅助栈的空间,最差的情况下两个栈共存储N个元素。
剑指Offer 链表题目集合 采用双指针迭代,在遍历链表时,将当前节点的next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。我的第一想法是可以遍历链表,将每个节点的值存入数组中,然后将数组进行反转。空间复杂度:O(n)。额外使用一个数组存储链表中的每个节点。时间复杂度:O(n)。时间复杂度:O(n),正向遍历一遍链表。空间复杂度:O(1),常数空间复杂度。
目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss 之前在项目中存在目标检测框内嵌的情况(目标检测框存在内嵌情况分析与解决),正好趁这个机会记录下目标检测中常用的几种IOU_loss函数。IOU_Loss作为传统的衡量标准,为我们提供了一个基础,而GIOU_Loss、DIOU_Loss和CIOU_Loss则在其基础上引入了更多的信息,如目标框的形状和相对位置等,从而使得模型更加准确地学习目标的位置和形状。!!2023年12月4日20:03:02。
昇腾Atlas 200I DK A2实现安全帽识别 本篇文章可以算是昇腾系列的一个入门样例,跑通了应该就能知道大概的操作流程,接下来应该又是一段难忘的开发心路历程,希望自己挺住!!!!!2023年11月24日14:55:12。
目标检测框存在内嵌情况分析与解决 目标检测模型输出的检测框存在内嵌情况。,在推理性能足够的情况下,可以考虑使用。的信息,不用考虑影响因子,因此直接用。设置过大,没能滤除重叠检测框,原来。:在IOU和GIOU的基础上,考虑。标注框的信息,在训练时用于回归。有读者会有疑问,这里为什么不用。的基础上,添加的影响因子,包含。根据经验,第一感觉是后处理。:在DIOU的基础上,考虑。:在IOU的基础上,解决。目前分析最可能的原因是。但在测试过程中,并没有。此项目中用的是基本的。
光流法动目标检测 动目标检测是计算机视觉领域的一个热门研究方向。传统的方法主要基于背景建模,但这些方法对于光照变化、遮挡和噪声敏感。因此,研究人员一直在寻找更加鲁棒和有效的技术来解决这一问题。光流法是一种基于运动信息的动目标检测方法,它通过分析相邻帧之间的像素位移来捕捉物体的运动。这种方法可以在不需要显式背景建模的情况下实现动目标检测。。光流是指描述相邻图像帧中像素位移的矢量场。在光流法中,假设相邻帧之间的像素强度保持不变,即一个像素点在两帧之间的运动可以由一个矢量表示。这个矢量可以表示物体的速度和方向。
Cmake入门介绍 在软件开发过程中,构建和管理项目是至关重要的任务之一。CMake是一个流行的构建工具,它可以帮助开发者跨不同平台和编译器构建和管理C/C++项目。本文将介绍CMake的基本概念以及如何使用它来简化项目的构建过程。CMake是一个开源的构建工具,用于自动化构建过程。它不直接构建项目,而是生成适用于不同编译器和操作系统的构建脚本,如Makefile、Visual Studio项目文件等。这使得开发者能够轻松地在不同平台上构建他们的项目。
C++手写NMS 目标检测模型推理后,一般都需要进行NMS操作进行多余框去重,板端部署一般不用opencv自带的NMS,所以记录下手写NMS的代码。NMS通常用于目标检测中,以去除重叠的检测结果,只保留最具代表性的结果,以提高检测的准确性。!!2023年9月27日15:58:10。
模型推理后处理C++代码优化案例 这些条件判断可能会增加运行时间。确保这些条件判断是必要的,如果可能的话,尽量减少不必要的条件判断。这将涉及内存的重新分配和数据复制。为了避免这种开销,可以直接在循环中访问。本文是自己项目中遇到的实际问题,由于刚刚上手C++相关的项目,特此记录!可以将这些计算移动到条件判断的外部,以避免重复计算。模型推理后得到的数据后处理操作之前时间开销很大。2023年9月9日15:33:36。经过推理的后处理运行时间的优化。: 在循环中有一些条件判断,例如。C++任重而道远呀,加油呀!数组,而无需使用额外的向量。
生成与调用C++动态链接库(so文件) 动态链接库是代码重用和模块化的重要工具,它使得将功能封装为独立的库更加容易,同时还可以动态加载和升级这些库,提高了程序的灵活性和可维护性。当我们希望将C++源码编译成动态链接库,并在其他应用程序中调用这个动态链接库,是这篇文章的应用场景。这篇文档将介绍如何创建、编译、链接和调用C++动态链接库。PS:本文以下内容根据我实际工作项目编写,不采用demo的形式。本文介绍了如何制作C++动态链接库(so文件)以及如何从另一个C++程序中加载和调用该库。
opencv动态目标检测 很久没更新文章了,这次因为工作场景需要检测动态目标,特此记录一下。这段代码演示了背景减除方法在移动目标检测中的应用,通过检测前景目标并在特定区域内绘制边界框,可以用于一些简单的运动分析和目标跟踪应用。
Open3D实时点云显示 一般情况我们通过open3d中的进行点云可视化,但这个函数会锁定一个进程直到可视化的窗口被关闭,才会继续渲染下一帧点云图像,无法做到点云持续的动态显示。本文介绍了一个自定义渲染循环的教程。这里整体思想是按名称读取文件然后送入队列中,使用多线程进行点云显示,当文件读完之后,重新开始读取。读者可以根据自己的数据情况修改,已完成实时点云显示。如果阅读本文对你有用,欢迎一键三连呀!!!2022年11月18日15:38:30。