自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 YOLOv5目标检测学习(7):验证部分val.py简要分析;训练、验证、推理三文件的关系

save txt"""Arguments:Returns:"""# 计算指标的关键函数之一# iou:[0.5:0.95],10个不同的iou阈值下,计算标签与预测的匹配结果,存于矩阵,标记是否预测正确def run(data,......):"""# 函数run()的处理流程如下:1. 加载模型;2. 加载数据;3. 网络预测,NMS处理;4. 计算AP,mAP;5. 绘制指标图;6. 保存结果;"""# 运行相关参数定义# 入口函数。

2024-03-20 12:50:16 1214

原创 YOLOv5目标检测学习(6):源码解析之:训练部分train.py

epoch:训练的轮数gpu_mem:显存占用box、obj、cls:盒子损失(box loss)、目标损失(object loss)和分类损失(class loss)labels:平均每轮训练中出现的标注框的个数img_size:画面尺寸后面是显示的进度条,每一轮训练所需的时间,处理速度。训练结束:记录训练完成的信息,包括完成的周期数和训练所花费的时间。如果当前模型是最佳模型,则再次在验证集上验证评估,计算结果并保存相关信息。

2024-03-19 22:33:04 851

原创 anaconda终端中一些常用的指令

一、创建虚拟环境二、激活/使用/进入某个虚拟环境三、退出当前环境四、复制某个虚拟环境五、删除某个环境。

2024-03-13 21:49:16 415

原创 YOLOv5目标检测学习(5):源码解析之:推理部分dectet.py

为了完成一个深度学习目标检测的全过程,会按照以下顺序进行:①配置部分(yolov5s.yaml):用于确定yolov5的网络结构和参数②工具部分(yolo.py、common.py):提供一些函数,用于辅助后续部分③训练部分(train.py):首先,使用训练部分的代码(train.py)来训练模型。④验证部分(val.py):使用验证部分的代码(val.py)来评估模型在验证数据集上的性能。

2024-03-13 16:41:14 1209

原创 YOLOv5目标检测学习(4):YOLOV5源码的文件结构解析

先看一下总的来说,.github文件夹中的内容主要用于规范化GitHub 仓库的管理流程,提高团队协作效率,以及利用GitHub Actions 实现自动化构建和部署。这些配置文件和设置有助于提升项目的质量和可维护性。所以这个文件夹一般来说不重要,可以不看。我认为yolov5的源码基本以两个部分的文件为核心,一个是.yaml文件,另一个是.py文件yaml文件一个是关于数据集的配置,一个是关于神经网络结构的配置。.py文件一个是关于一些工具类的配置,一个是关于推理、训练、验证方面的配置。

2024-03-12 21:32:43 995

原创 YOLOv5目标检测学习(3):anaconda、虚拟环境、cuda、pytorch、pycharm之间的关系,以及配置时出现的问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2024-03-10 13:38:11 1309 3

原创 YOLOv5目标检测学习(2):运行一个yolo应用所需要配置的深度学习环境

我想完整的记录一下一个新手接触深度学习和yolo算法完成目标检测任务的全过程,包括基本软件环境的下载安装、训练集的准备和处理、训练的过程、参数的调整、性能的分析,以及模型的部署这几个方面。

2024-03-07 22:16:08 913

原创 YOLOv5目标检测学习(1):yolo系列算法的基础概念

关于深度学习目标检测,有许多概念性的东西需要先了解一下。这里主要以基于深度学习的目标检测算法的部署实现来学习。

2024-03-04 22:03:50 1051

原创 C++的进阶泛型编程学习(2):类模板的机制

上一节学到函数模板,意思就是把函数的返回类型和传递参数类型用一个抽象的模板名来代替,从而起到支持泛化数据输入的功能,提高了函数的多用性。那么类,可以使用模板机制来提高泛用性吗?当然可以。

2024-02-15 21:32:05 1063

原创 C++的进阶泛型编程学习(1):函数模板的基本概念和机制

回顾一下C++的面向对象特性有哪些?我用这两个表来简要的总结了一下,接下来要接触的,是C++中更加复杂,更加进阶的内容普通函数的定义是针对特定类型的,如上述的max函数是针对整数类型的定义。函数模板的定义使用template来声明一个通用的模板函数,可以适用于多种类型。

2024-02-14 23:37:49 995

原创 自动驾驶预测-决策-规划-控制学习(5):图像分割与语义分割入门

对于图像的分析,传统的检测任务,比如这幅图的人,用标注框来表示。而图像分割,则是针对每一个像素都可以被认定为不同的语义信息,比如这里红色区域的像素点属于人,蓝色属于天空,浅绿色属于草地,深绿色属于树木。①给出了基于CNN的图像分类和演化概况。②详细探讨了一些基于CNN的流行的最先进的分割模型。③比较这些模型的训练细节,以便清楚地了解超参数调优。④比较这些最先进的模型在不同数据集上的性能指标。

2024-01-17 17:43:28 1234

原创 自动驾驶预测-决策-规划-控制学习(4):预测分析文献阅读

题目:《基于 Transformer 的车辆轨迹预测及变道意图识别方法研究》-吉林大学都业铭本文改进了 Transformer 模型, 在 Argoverse 数据集、NGSIM 数据集上分别设 计了新的模型结构, 可以分别完成预测车辆行驶轨迹和车辆换道意图识别任务。

2024-01-06 18:03:56 1284

原创 自动驾驶感知-预测-决策-规划-控制学习(3):感知方向文献阅读笔记

论文题目:《面向自动驾驶场景的多传感器环境感知系统研究》-中国矿业大学,朱良钦主要目的是快速熟悉自动驾驶方向的一些专业名词与基本概念。主要研究内容如下:(1)针对车道线检测任务,提出图像与点云融合的检测方法,在二维图像分割器的基础上, 将检测结果映射到点云中,获取更丰富的深度信息。在图像分割模型上,采用轻量化卷积网络提取特征, 提升特征提取的效率, 并添加跨通道联合注意力模块和改进的空洞空间卷积池化模块, 加强局部细节特征的提取。

2024-01-06 15:09:32 1220

原创 自动驾驶预测-决策-规划-控制学习(1):自动驾驶框架、硬件、软件概述

以下为《汽车驾驶自动化分级》具体标准:0 级驾驶自动化(应急辅助)驾驶自动化系统不能持续执行动态驾驶任务中的车辆横向或纵向运动控制,但具备持续执行动 态驾驶任务中的部分目标和事件探测与响应的能力。需要指出的是,0级驾驶自动化不是无驾驶自动化,0级驾驶自动化可感知环境,并提供报警、辅助或短暂介入以辅助驾驶员(如车道偏离预警、前碰撞预警、自动紧急制动等应急辅助功能)。此外,不具备目标和事件探测与响应的能力的功能(如:定速巡航、电子稳定性控制等)不在驾驶自动化考虑的范围内。

2024-01-04 23:21:42 1326

原创 C++职工管理系统实现

退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号显示职工信息:显示公司内部所有职工的信息删除离职职工:按照编号删除指定的职工修改职工信息:按照编号修改职工个人信息查找职工信息:按照职工的编号或者职工的姓名进行查找相关的人员信息按照编号排序:按照职工编号,进行排序,排序规则由用户指定清空所有文档:清空文件中记录的所有职工信息(清空前需要再次确认,防止误删)private:// 文件流对象// 其他成员变量和函数声明。

2024-01-02 17:38:18 888

原创 C++的面向对象学习(9):文件操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2024-01-01 16:00:58 1170

原创 C++的面向对象学习(8):面向对象编程的三大特性之:多态

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-12-30 22:54:16 915

原创 C++的面向对象学习(7):面向对象编程的三大特性之:继承

前面几节学的基本是两块内容:第一块是C++的一些特性,比如重载、引用、函数参数值传递与地址传递。第二块是面向对象编程的三大特性的其一:封装。封装中涉及了格式、成员变量和成员函数、访问权限、实例化对象、构造函数与析构函数、成员变量与成员函数的存储位置、this指针、友元声明、operator声明的运算符重载等知识。现在就要接触到面向对象编程的三大特性的其二:继承。继承是C++中的一个重要特性,被广泛应用于面向对象编程中。在实际开发中,继承被广泛用于代码复用和扩展性设计。

2023-12-30 15:54:54 992

原创 C++的面向对象学习(6):运算符的重载

运算符重载是C++中一种强大的特性,它允许我们为自定义的类类型定义运算符的行为。通过运算符重载,我们可以使用自定义的类对象像使用内置类型一样进行运算。算术运算符重载:+、-、*、/等运算符可以被重载,使得两个对象可以进行相应的运算。关系运算符重载:==、!=、<、>、<=、>=等运算符可以被重载,用于比较两个对象的关系。赋值运算符重载:=运算符可以被重载,用于将一个对象的值赋给另一个对象。下标运算符重载:[]运算符可以被重载,用于实现类似数组的下标访问操作。

2023-12-25 17:02:21 852

原创 C++的面向对象学习(5):对象的重要特性:对象的成员变量和成员函数深入研究

使用公有成员函数:在类中定义公有成员函数,通过这些函数来访问和修改私有成员变量。这种方法可以提供对私有成员变量的控制和封装。使用友元函数:在类中声明友元函数,使其能够访问类的私有成员变量。友元函数可以是全局函数,也可以是其他类的成员函数。友元函数可以直接访问类的私有成员变量,但会破坏封装性。使用友元类:在类中声明友元类,使其能够访问类的私有成员变量。友元类的所有成员函数都可以访问类的私有成员变量。友元类可以提供更多的灵活性和控制,但同样会破坏封装性。

2023-12-22 16:07:38 406

原创 C++的面向对象学习(4):对象的重要特性:构造函数与析构函数

人话:.h文件存放类的成员的声明,.c文件存放的是类的成员函数的定义,用::来说明函数属于这个类通常情况下,头文件(.h 或 .hpp)用于存放类的成员的声明,包括类的数据成员和成员函数的声明。而源文件(.cpp 或 .c)用于存放类的成员函数的定义。在类的成员函数的定义中,使用作用域解析运算符 :: 来指定函数属于哪个类。这样可以将函数的实现与类的声明分离开来,提高代码的可读性和可维护性。例子:(1)Rectangle.h文件private:public:#endif。

2023-12-20 14:40:36 1352

原创 C++的面向对象学习(3):面向对象编程的三大特性之:封装

在面向对象编程中,类(Class)和对象(Object)是两个重要的概念。类是一种用户自定义的数据类型,用于封装数据和函数成员。它是一种模板或蓝图,描述了对象的属性和行为。类定义了对象的结构和行为,并提供了一种创建对象的方式。对象是类的实例,通过实例化类来创建的。它是类的具体化,具有类定义的属性和行为。对象是程序中的实体,可以通过对象来访问和操作类的成员。举个例子,假设我们有一个类叫做"Car",它描述了汽车的属性和行为。

2023-12-18 15:00:15 868

原创 C++的面向对象学习(2):函数的参数默认值、占位参数、函数重载

定义了一个名为 add 的函数,它接受三个整数参数 a、b 和 c,并返回它们的和。在函数定义中,参数 b 和 c 都有默认值,分别为 0 和 1。这意味着在调用 add 函数时,如果不提供 b 和 c 的值,它们将使用默认值。// 使用默认值,相当于 add(5, 0, 1)// 使用提供的值,相当于 add(5, 10, 1)// 使用提供的值,相当于 add(5, 10, 15)在上述示例中,我们分别调用了 add 函数三次,每次传递不同数量的参数。

2023-12-16 17:59:20 166

原创 C++核心编程思路(1):①程序的内存模型②引用的作用

在嵌入式学习和C语言开发中,已经无数次接触四大内存分区的概念了。代码区(Text Segment):也称为只读区,用于存储程序的机器指令。在程序执行之前,代码区的内容就已经确定,并且在程序运行期间是不可修改的。数据区(Data Segment):用于存储全局变量和静态变量。数据区分为两个部分:初始化数据区和未初始化数据区。初始化数据区存储已经初始化的全局变量和静态变量,而未初始化数据区存储未初始化的全局变量和静态变量。堆区(Heap):用于动态分配内存。

2023-12-16 16:35:25 1099

原创 C++入门通讯录综合管理系统代码(自写,开源)

1.代码量约300行,仅实现了基于命令行的简易通讯录管理功能,其中还有许多地方可以拓展改进,以提高代码的可读性和健壮性。2.综合运用了C++入门的if-else、switch-case、string、for、结构体嵌套、结构体数组、键值判断等思想。3.技巧上,包括值传递与指针地址传递、函数调用、结构体数组成员变量属性的修改、索引记录等手段。

2023-12-15 15:19:38 623

原创 C语言全部关键字解析

enum是C语言中的关键字,用于定义枚举类型。枚举类型是一种用户自定义的数据类型,用于定义一组具有相关性的常量值。枚举类型可以帮助提高代码的可读性和可维护性,使程序员能够更清晰地表示一组相关的常量。enum 枚举类型名 {枚举常量1,枚举常量2,...其中,枚举类型名是用户自定义的标识符,用于表示枚举类型。枚举常量是一组有序的常量值,用逗号分隔。枚举常量可以通过枚举类型名和常量名来引用。在程序中,可以使用枚举类型名和枚举常量名来表示枚举常量的值。

2023-11-11 16:52:58 333

原创 数据结构与算法C语言版学习笔记(6)-树、二叉树、赫夫曼树

前面说,数据的逻辑结构包括线性结构和非线性结构,线性结构学了线性表(顺序表与链表)、栈与队列、串等,而现在要接触的树是非线性结构,它是一对多的关系,更加复杂。(1)结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。比如D有三个子树,度为3;C有两个子树,度为2。(2)树的度是树内各结点的度的最大值。如图6-2-4所示,因为这棵树结点的度的最大值是结点D的度,为3,所以树的度也为3。

2023-11-10 16:38:17 228

原创 记录一个Arduino调用MPU6050的姿态解算算法代码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-11-09 20:12:19 474 4

原创 数据结构与算法C语言版学习笔记(5)-串,匹配算法、KMP算法

关于串,首先想到的就是字符串。为什么会有字符串这个东西产生呢?比如外国人说英语,都是字母,但是我们中国人说的话不是字母,只能是汉字,所以汉字这种特殊的、无法被计算机直接阅读的字符,在组成一个短语或者句子时,就形成了字符串。字符串的产生是为了能够表示和处理文本信息。在计算机科学中,文本是一种非常常见的数据类型,例如输入的命令、输出的结果、存储的文件内容等等。为了能够对文本进行操作和处理,就需要一种能够表示和存储文本的数据类型,于是字符串应运而生。

2023-11-09 19:29:16 537

原创 数据结构与算法C语言版学习笔记(4)-栈与队列再回顾

在使用嵌入式单片机开发时,经常会用到栈和队列的知识。比如:栈:函数调用:嵌入式系统中的函数调用通常使用栈来保存函数的上下文信息。每当一个函数被调用,函数的参数、局部变量以及返回地址等信息都会被保存在栈中,待函数执行完毕后再从栈中恢复上下文。当一个中断被触发时,嵌入式系统会将当前的执行状态保存在栈中,然后跳转到中断服务程序进行处理。处理完毕后,再从栈中恢复之前的执行状态。数据结构:栈常用于实现其他数据结构,如深度优先搜索算法(DFS)中使用的递归调用,以及表达式求值中的操作符栈等。

2023-11-08 22:10:41 349

原创 数据结构与算法C语言版学习笔记(3)-线性表的链式结构:链表

优点:随机访问:由于元素在数组中是连续存储的,可以通过下标直接访问任意位置的元素,具有快速的随机访问速度。空间效率高:顺序存储结构只需要额外的一个数组来存储元素,不需要额外的指针等辅助空间,因此空间利用率高。索引操作简单:通过下标索引即可访问和修改元素,操作简单明了。缺点:插入和删除操作耗时:在顺序存储结构中,插入和删除操作需要将插入或删除位置后面的元素依次后移或前移,需要移动大量元素,因此耗时较长。

2023-11-08 15:34:43 364

原创 数据结构与算法C语言版学习笔记(2)-线性表、顺序存储结构的线性表

线性表是一种常见的数据结构,它是由一组有序的元素(节点)组成的数据序列。线性表中的元素之间存在一对一的关系,每个元素除了第一个元素外,都有唯一的前驱元素;每个元素除了最后一个元素外,都有唯一的后继元素。举一个例子:特点就是表里面的每个元素都具有相同的特征,要么都是字母,要么都是同一类的数据,而他们的关系就是一个接着一个连在一起。如果是几个稀疏多项式的加减,不可能让那些系数为0的2、3、4、5、6、7次项都存入线性表,不能去建立一个20000个元素的线性表,造成存储空间浪费,那么应该怎么做呢?

2023-11-06 20:30:43 383

原创 数据结构与算法C语言版学习笔记(1)-绪论

算法是一组解决问题的明确步骤和指令。它是一种有序的操作序列,用于解决特定问题或完成特定任务。算法可以用来执行各种计算、数据处理和自动化任务。它可以是数学公式、计算机程序、流程图等形式。算法的目标是通过一系列有限的步骤来解决问题,并且在有限的时间内产生正确的结果。算法可以用来解决各种问题,比如排序、搜索、加密、图像处理等。

2023-11-02 21:33:49 183

原创 一个电子信息工程学生的历程和内心感想

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2023-09-23 19:02:17 3679 6

原创 电子信息工程专业课复习知识点总结:(五)通信原理

信源:把待传输的消息转换成电信号(基带信号),完成非电到电信号的转化发送设备:将基带信号变换为适合信道传输的信号。信道:信号传输通道,同时会引入噪声接收设备:从带有噪声的信道中恢复出无失真的原有信号信宿:把电信号恢复为需要传输的信号答:按照噪声对信号的作用方式,主要分为加性噪声和乘性噪声。加性噪声是叠加在信号上,大多数噪声属于加性噪声。乘性噪声主要来自信道对信号的影响,当信道特性不理想时,需要通过对信道特性的补偿(又称为均衡)去改善。白噪声:功率谱密度为常数的噪声。

2023-09-23 16:18:53 2587

原创 电子信息工程专业课复习知识点总结:(四)信号与系统、数字信号处理

答:《信号与系统》这门课顾名思义,研究的主体是信号与系统,具体是指确定信号(波形已知)和LTI线性时不变系统。信号作用于系统,会获得一个响应。书上使用了:输入输出法和状态变量法这两种研究方法来分析系统响应。对数字序列进行处理,将信号变换成符合要求的形式。主要包括数字频谱分析和数字滤波处理两大部分。①连续非周期信号:频域也是连续、非周期的②连续周期信号:频域是非周期、离散的③离散非周期信号:频域是周期、连续的④离散周期信号:频域是周期、离散的时域与频域的连续性与周期性,是相对且相反的。

2023-09-13 19:55:37 4869

原创 电子信息工程专业课复习知识点总结:(三)数电

锁存器(Latch)是一种组合逻辑电路,用于存储和保持输入信号的状态。它可以在无需时钟信号的情况下,根据输入信号的电平状态来改变输出信号,并将输出信号保持在新的状态直到有新的输入信号到来。锁存器通常由触发器(Flip-Flop)构成,触发器是锁存器的基本组成单元。触发器有两个稳定状态,分别是“置位”(Set)和“复位”(Reset),并且可以根据输入信号的变化在这两个状态之间切换。锁存器通过将多个触发器连接在一起,实现更复杂的存储和保持功能。锁存器的工作方式类似于一个存储单元,可以存储一定数量的比特数据。

2023-09-11 22:36:06 1131

原创 电子信息工程专业课复习知识点总结:(二)模电

把各类非电信号转换为电信号的器件叫传感器。电路可以等效为:理想电压源与电阻串联的形式(戴维南)或者理想电流源与电阻并联的形式(诺顿)。它的基本原理是通过将一部分输出信号反馈到输入端,来实现对系统的控制和调节。反馈系统的目的是使系统的输出与期望的参考信号尽可能接近,从而实现稳定性、精度和鲁棒性等性能要求。

2023-09-10 20:02:16 1739 2

原创 电子信息工程专业课复习知识点总结:(一)电路分析基础

回路电流法的步骤如下:标记电路中的回路:选择一个回路作为参考回路,然后对电路中的其他回路进行编号。假设回路电流:为每个回路假设一个电流变量,这些变量代表了电路中各个回路的电流。书写回路电流方程:对每个回路应用基尔霍夫电压定律和欧姆定律,写出回路电流方程。方程的形式为回路电压之和等于电压源和电阻元件引起的电压降之和。组成方程组:将所有的回路电流方程组成一个方程组,其中包含了未知的回路电流变量和已知的电压源。求解方程组:通过求解方程组,可以得到电路中各个回路电流的值。

2023-09-10 09:57:10 1596

原创 实时操作系统Freertos开坑学习笔记:(八):信号量、事件标志组、任务通知机制

这一节的信息还是非常庞大的,同时也是非常重要的。就是说信号量就是停车位,信号量计数值大于0,说明有车位,=1有一个车位,=3有三个车位,等于0说明没有车位了。如果有一个车位被占了,那计数值就减一,空出来一个车位就加一。信号量可以比喻成一把钥匙,用于控制多个人对同一个资源的访问。每个人在想要使用这个资源之前,都必须先去拿这把钥匙。如果钥匙可用,那么这个人就可以使用资源;如果钥匙不可用,那么这个人就必须等待,直到有其他人归还钥匙。举一个实际的例子来说明信号量的概念。假设有一个公共厕所,只有一个坑位可供使用。

2023-09-05 21:53:54 981 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除