- 2025-07-18
-
回复了主题帖:
来收稚晖君家的灵犀X1机器人的全套开源资料~
不错不错,这样的小机器人适合用于家庭。
-
回复了主题帖:
【Follow me第三季第2期】温度异常检测
waterman 发表于 2025-7-18 11:15
应该是可以的,但是它不能像Edge Impulse一样直接连板卡采数据,需要自己采数据然后再导入。而且它也支持 ...
抽空可以去试试,感觉还不错。
-
回复了主题帖:
机器人搭地铁送货啦~~~
okhxyyo 发表于 2025-7-18 11:08
应该是的。到时候应该数据会在屏幕上显示,可能还的签字什么的吧。不然怎么确认确实被收到了
估计还有人脸识别啥的,记录收件人信息
-
回复了主题帖:
大家平均跳槽周期是多长时间?最长和最短的跳槽时间是多久?
目前只跳槽过一次,两年。
-
回复了主题帖:
初识openmv
tobot 发表于 2025-7-17 23:01
是啊,我还没找到怎么使用sd卡的方式,空间这么小,想传张照片都不太可能。。。
就玩玩openmv的功能呗~
- 2025-07-17
-
回复了主题帖:
【Follow me第三季第2期】温度异常检测
eIQ Toolkit 可以支持任意的传感器数据吗?
-
回复了主题帖:
Beetle RP2350可穿戴嵌入式开发板测评(六)——贪吃蛇小游戏的制作
效果挺好~ 玩贪吃蛇得用灵敏一些的键盘,这按钮会导致反应慢半拍。
-
回复了主题帖:
扒一扒AI时代对各种技术的新要求
AI对电源的要求确实高,4090要1000W的电源才能稳定运行
-
回复了主题帖:
【正点原子ESP32P4开发板评测】驱动 MIPI 屏幕实现温度显示教程
ESP32P4居然可以驱动MIPI屏幕?单通道还是双通道呀
-
回复了主题帖:
【迈来芯热成像传感器新品MLX90642】2、软件调试
这个效果不错,显示算法源码可以分享一下吗~
-
回复了主题帖:
【STM32H73BI-DK评测】适配 LCD 及 Touch 驱动
RTThread和TouchGFX结合还是稍微有点复杂的,STM32官方的是直接直接FreeRTOS
-
回复了主题帖:
「拼多多4寸720x720分辨率掌机改造系列」2、换emcp,引出串口,烧录arkOS到emmc里
旧手机上的emcp也是一样兼容的?
-
发表了主题帖:
Autosar AP – 概要
未来E/E架构的发展有如下需求:
互联:连接车辆需要高带宽的动态数据连接,以进行故障管理、路边基础设施互动、实时更新前方道路状况的 ADAS 系统、空中软件更新OTA等。
自动驾驶:自动驾驶和辅助系统(ADAS)旨在减少驾驶员的工作量。ADAS 系统要求 E/E 架构集成先进的传感器和支持算法,涉及高性能计算机处理(HPC) ,如计算机视觉、传感器融合的对象模型等。
共享:代理服务、移动即服务、应用程序
电气化:新的动力总成要求,电池管理
这些需求被称为 CASE ——互联、自动驾驶、共享、电气化的缩写。
已经尝试使用经典 AUTOSAR 来满足 CASE 需求。例如,相对简单的驾驶辅助系统,如车道跟踪和自适应巡航控制已经成功地实现了使用经典 AUTOSAR。然而,当多个这样的系统定义在一辆车的结果是,许多 ECUs 可以决定影响车辆的安全,如是否加速或停止!为了确保没有冲突发生,协调多个决策所需要的开销导致系统复杂性和所需测试的大量增加。因此,需要一个新的高性能、高灵活性的平台,支持高性能计算、动态通信和增量变化,能够在离开传统 AUTOSAR 平台的车辆内执行集中决策任务,以满足功能性 ECUs 的实时性和安全性要求。
Autosar Adaptive应运而生。
什么是AP AUTOSAR?第一个概念,它是一个中间件。
没有中间件的APP开发是直接基于OS的,中间件就是将Application与硬件进行分离。当然,AP AUTOSAR也将Application与OS进行了分离。如下图所示。
这里的中间件被称为Runtime For Adaptive Application(ARA),主要由两部分组成,Foundation 和 Service。OS在Foundation中,其中,AP AUTOSAR规定,OS需要使用符合POSIX OS标准的OS,如Linux,MCOS,QNX等。
将当前的汽车 ECUs 可以分为功能性 ECUs 或信息娱乐。
AUTOSAR 经典平台已经被开发为非常适合于功能性 ECUs。这些 ECU 的特点是拥有属性强的实时性和强大的安全要求ASIL-D。它们通常也有低资源可用性(无论是 CPU,RAM 或 Flash) ,需要完全静态配置的最佳使用。
相比之下,信息娱乐 ECUs 运行在一个高资源环境中,通常是由于用户界面的要求。一个信息娱乐 ECU 通常不是一个实时系统,一个信息娱乐 ECU 通常运行在一个嵌入式 PC 上,运行成熟的操作系统,例如 Linux,而不是汽车操作系统。
Adaptive AUTOSAR 的设计是为了搭建两个世界之间的桥梁,提供一个具有灵活软件和高资源可用性的实时执行环境。Adaptive平台 ECU 的特点是具有软实时性和一些安全要求 -- AUTOSAR 打算为Adaptive平台提供中等级别的 ASIL,尽管实现可以选择符合更高级别的 ASIL,或者可以使用诸如安全分解等体系结构技术来实现更高级别的 ASIL (拥有属性)。然而,与 Classic 不同的是,它的目的是使用基于 POSIX 标准的多核、动态操作系统的高资源环境。
Adaptive平台的实现可以使用有计划的动态来限制平台的动态方面,以支持可预测的执行或资源消耗。Planned dynamics 可能会将动态内存分配限制在启动阶段,预先确定服务发现过程,将应用程序分配给特定的核心,或者确保只访问文件系统中预先存在的文件。
■ Autosar经典平台和自适应平台比较, 在3.2 autosar ap和cp差异中详细阐述。
■ Adaptive AUTOSAR优势:
▪ ECU更加智能:基于SOA通信使得AP中ECU可以动态的同其他ECU提供或获取服务,动态同其他ECU进行连接
▪ 更强大计算能力:基于SOA架构使得AP能够更好支持多核、多ECU、多SoCs并行处理,提供更强大的计算能力
▪ 更加安全:基于SOA架构使得AP中各个服务模块独立,可独立加载,IAM管理访问权限
▪ 敏捷开发:Adaptive AUTOSAR服务不局限于部署在ECU本地可分布于车载网络中,使得系统模块可灵活部署,并可后期灵活独立更新(FOTA)
▪ 高通信带宽:基于Ethernet等高通信带宽的总线通信
▪ 更易物联:基于以太网的SOA通信,更易实现无线、远程、云连接,部署Car-2-X应用
▪ 系统兼容:通过SOME\IP等协议AP可以同CP/Non-AUTOSAR等ECU通讯
- 2025-07-16
-
回复了主题帖:
UWB+Matter是什么?
UWB+Matter 目前有没有已经实现的应用场景?
-
回复了主题帖:
TMS320F280049使用SPI作为从机通讯和ADC采样冲突问题
感觉就是ADC采集在进行死等,导致SPI溢出了
-
回复了主题帖:
初识openmv
这个居然是micropython的?
-
发表了主题帖:
使用YOLOv8进行头盔佩戴检测
介绍
头盔检测是计算机视觉领域中的一个重要应用,主要用于检测图像或视频中的人是否佩戴头盔。头盔在工业生产、建筑工地、交通领域(如摩托车和自行车骑行)以及一些高危作业场景中是必不可少的防护装备。佩戴头盔可以有效保护头部,降低因意外事故导致的伤亡风险。然而,在现实生活中,很多人并未遵守佩戴头盔的规定,导致事故发生时的伤害严重程度加剧。因此,自动化的头盔检测系统可以帮助相关部门或企业监督和管理这一安全措施的执行。
随着深度学习和计算机视觉技术的飞速发展,基于图像的目标检测技术得到了广泛的应用。卷积神经网络(CNN)的引入显著提高了图像识别和目标检测的精度,这使得头盔检测成为可能。目前,头盔检测通常采用先进的深度学习模型,如YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)、Faster R-CNN等,这些模型能够实时且准确地识别图像中的目标。
头盔检测的应用场景如下:
交通监控:在交通监控中,通过摄像头实时检测骑摩托车或自行车的骑行者是否佩戴了头盔,可以提高交通安全管理的效率,并减少因未佩戴头盔导致的交通事故伤害。
工业与建筑领域:在工地或工厂中,通过视频监控和头盔检测算法,可以确保工人遵守安全规定,减少工伤事故的发生。
公共安全:在公共场所,如地铁站、车站等,通过头盔检测技术,可以辅助安保人员对危险行为进行预警。
头盔检测虽然在技术上已经取得了显著进展,但在实际应用中仍然面临一些挑战:
遮挡问题:在实际场景中,头盔可能部分被遮挡,或因拍摄角度的原因导致检测困难。
多样性问题:头盔的颜色、形状、佩戴方式等的多样性也会影响检测的准确性。
实时性要求:特别是在交通监控等需要实时反馈的应用中,检测算法需要在保证精度的同时,具有较高的处理速度。
综上所述,头盔检测结合了深度学习与计算机视觉的先进技术,为安全监控提供了强有力的技术支撑,并且在多个领域具有广泛的应用前景。
相关工作
头盔检测作为计算机视觉中的一个具体应用,近年来得到了广泛研究。以下是一些在头盔检测领域的相关工作和对应的引用文献:
1.基于深度学习的头盔检测方法
论文标题: “Helmet Detection on Motorcyclists Using Image Processing and Machine Learning Techniques”
作者: S. S. Patel, et al.
摘要: 这篇论文提出了一种结合图像处理和机器学习的方法,用于检测摩托车骑行者是否佩戴头盔。该方法利用HOG(Histogram of Oriented Gradients)特征和SVM分类器进行检测。
引用: Patel, S. S., et al. “Helmet detection on motorcyclists using image processing and machine learning techniques.” Proceedings of the 2016 IEEE International Conference on Advances in Computer Applications (ICACA). IEEE, 2016.
2.基于YOLO的实时头盔检测
论文标题: “Real-Time Helmet Detection for Work Safety Using YOLO Model”
作者: M. C. Zhang, et al.
摘要: 本文提出了基于YOLO(You Only Look Once)模型的头盔检测系统,能够在实时视频流中检测佩戴头盔的情况,主要用于工地安全监控。
引用: Zhang, M. C., et al. “Real-time helmet detection for work safety using YOLO model.” Proceedings of the 2018 International Conference on Machine Learning and Cybernetics (ICMLC). IEEE, 2018.
3.卷积神经网络在头盔检测中的应用
论文标题: “A Deep Learning Approach for Helmet Detection Using Convolutional Neural Networks”
作者: J. S. Park, et al.
摘要: 该研究采用了卷积神经网络(CNN)进行头盔检测,利用大规模数据集进行训练,并在真实场景下进行验证,显示了较高的检测精度。
引用: Park, J. S., et al. “A deep learning approach for helmet detection using convolutional neural networks.” Journal of Information Processing Systems 15.4 (2019): 743-753.
4.基于图像处理的头盔检测
论文标题: “Automatic Helmet Wearing Detection for Safe Driving”
作者: T. Nguyen, et al.
摘要: 该论文提出了一种基于传统图像处理技术的头盔检测方法,主要针对摩托车驾驶员的安全检测,采用边缘检测和形态学处理等手段来提高检测准确性。
引用: Nguyen, T., et al. “Automatic helmet wearing detection for safe driving.” Proceedings of the 2017 International Conference on Intelligent Systems, Modelling and Simulation (ISMS). IEEE, 2017.
5.多尺度特征融合的头盔检测
论文标题: “Helmet Detection Based on Multi-scale Feature Fusion and Region Proposal Networks”
作者: H. Y. Liu, et al.
摘要: 本文提出了一种基于多尺度特征融合和区域建议网络(RPN)的头盔检测方法,能够在复杂背景下实现高精度的检测,尤其适用于工地监控视频。
引用: Liu, H. Y., et al. “Helmet detection based on multi-scale feature fusion and region proposal networks.” Pattern Recognition Letters 128 (2019): 179-186.
这些文献涵盖了不同的方法和技术,包括基于深度学习的检测方法、图像处理技术以及实时检测系统等,展示了头盔检测领域的多样性和广泛的应用场景。
本文方法
如果正在看的小伙伴对原理的部分不感兴趣可以直接跳到后面的实操部分。
特别感谢MMYOLO官方提供了优秀的图解:mmyolo/configs/yolov8/README.md at dev · open-mmlab/mmyolo (github.com)
Ultralytics开发的YOLOv8是一款尖端、最先进(SOTA)的模型,它借鉴了之前YOLO版本的成功经验,并引入了新的特性和改进,以进一步提高性能和灵活性。YOLOv8旨在实现快速、准确和易于使用,因此是各种目标检测、图像分割和图像分类任务的绝佳选择。注意,此时的YOLOv8的模型已经基本完成了最终的进化,除了支持最经典的目标检测任务之外,还添加了对语义分割、分类和追踪等任务的支持。当然我们本期还是选择大家最熟悉的检测任务来进行展开,关于后续的其他任务我们再另外录制。
首先我们来看一下YOLOv8算法的性能。下图是官方提供了性能图,其中左图的横坐标表示的是网络的参数量,右图的横坐标表示的网络在A100显卡上的推理速度,纵坐标方面表示表示的都是模型的精度。可以看出,YOLOv8模型的在同样的参数量下,比其他系列的YOLO模型有明显的精度提升,在右图展示的同样的map精度下,YOLOv8的模型也同样有更快的速度,还真就是那个更高、更快、更强。
下面的表格则是来自YOLOv8 - Ultralytics YOLO Docs提供的在coco数据集上的测试结果,从表中可以看出,对于他的nano模型而言,在只有3.2M的参数量下,就可以达到37.3的mAP,非常优秀的数值表现。
YOLOv8算法的核心点可以总结为下面几点。
1.给出了一个全新的视觉模型,保持精度的同时,实现了较高的检测速度,并且同时支持支持图像分类、物体检测和实例分割等多种视觉任务。并且提供了多个规模的模型(nano、small、medium、large和x-large),满足用户不同场景的需要。
2.新的骨干网络:YOLOv8引入了一个新的骨干网络,可能参考了YOLOv7 ELAN设计思想,将YOLOv5中的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数,大幅提升了模型性能。
3.解耦头的设计:YOLOv8的Head部分从原先的耦合头变成了解耦头结构,将分类和检测头分离,并且从Anchor-Based转变为Anchor-Free,简化了模型结构并提高了推理速度。
4.新的损失函数:YOLOv8在Loss计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss,确保了检测结果的准确性和鲁棒性。
OK,说完这里的性能表现,我们就一起来看看YOLOv8结构方面的内容吧。
结构说明
首先是YOLOv8的网络结构图
骨干网络部分:
骨干网络部分的c2f结构可能借鉴了YOLOv7的设计。将原先的c3模块更新了c2f的模块,其中c3表示使用了3个常规的卷积模块,c2f表示使用了2个卷积模块并且更快(fast)。在不改变原始架构和梯度传输路径的前提下, 使用分组卷积踢来以及使用洗牌和合并的操作组合不同组的特征,增强模型从不同特征图中的学习能力,达到改善参数的作用。
下图是YOLOv7中原文提到的Elan的结构,主要是使用了更多的连接和合并的操作。
下面的图是YOLO模型原先使用的C3结构和新的C2f的结构。
和左图相比,增加了更多的跳层的连接和split操作。下面是两个部分具体实现的源码。从源码中可以看出,对于原先的结构而言,只使用了一次cat操作,对于c2f结构而言,使用了多次的split操作和cat操作,按照原文的说法是增加了梯度流。
class C3(nn.Module):
"""
这里是使用了3个卷积层的csp结构
CSP Bottleneck with 3 convolutions.
"""
def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
"""Initialize the CSP Bottleneck with given channels, number, shortcut, groups, and expansion values."""
super().__init__()
c_ = int(c2 * e) # hidden channels
self.cv1 = Conv(c1, c_, 1, 1)
self.cv2 = Conv(c1, c_, 1, 1)
self.cv3 = Conv(2 * c_, c2, 1) # optional act=FReLU(c2)
self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, k=((1, 1), (3, 3)), e=1.0) for _ in range(n)))
def forward(self, x):
"""Forward pass through the CSP bottleneck with 2 convolutions."""
return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1))
class C2f(nn.Module):
"""
这里使用了分支处理的操作,使用的是通过关闭残差链接的方式实现
先进行分支的操作然后再进行特征融合的操作
Faster Implementation of CSP Bottleneck with 2 convolutions.
"""
def __init__(self, c1, c2, n=1, shortcut=False, g=1, e=0.5):
"""Initialize CSP bottleneck layer with two convolutions with arguments ch_in, ch_out, number, shortcut, groups,
expansion.
"""
super().__init__()
self.c = int(c2 * e) # hidden channels
self.cv1 = Conv(c1, 2 * self.c, 1, 1)
self.cv2 = Conv((2 + n) * self.c, c2, 1) # optional act=FReLU(c2)
self.m = nn.ModuleList(Bottleneck(self.c, self.c, shortcut, g, k=((3, 3), (3, 3)), e=1.0) for _ in range(n))
def forward(self, x):
"""Forward pass through C2f layer."""
y = list(self.cv1(x).chunk(2, 1))
y.extend(m(y[-1]) for m in self.m)
return self.cv2(torch.cat(y, 1))
def forward_split(self, x):
"""Forward pass using split() instead of chunk()."""
y = list(self.cv1(x).split((self.c, self.c), 1))
y.extend(m(y[-1]) for m in self.m)
return self.cv2(torch.cat(y, 1))
除此之外,YOLOv8的主干还去掉了neck部分中的2个卷积层,以及将block的数量从原先的 3-6-9-3 改成了 3-6-6-3。另外,在之前的YOLOv5的网络结构中,只需要更改一下w和h系数就能统一适配不同规模的模型,但是对于YOLOv8而言,其中N和S的结构一致,L和X的结构一致,这两对模型可以只通过修改缩放系数就完成替换。在YOLOv10中,作者也提到了这个观点,为了追求网络的灵活性,导致网络同质化比较严重,其中有些冗余的模块是可以去除的,也说明现在的网络结构向着比较定制化的方向进行,当然,这句话是我的个人观点。
解码头部分:
解码头的部分选择使用了分类的解码头,也就是边界框回归是一个分支以及分类的是一个分支。如下图所示,上面的子图是原先的解码头部,经过主干网络进行特征提取之后得到特征图,之后直接进入一个模块中进行解码,这里的数值计算包含3个部分,分别是用于边界框回归的CIoU、用于置信度计算的obj和用于分类类别计算的CLS。改进之后的头部如下面的子图所示,经过主干网络进行特征提取之后,上面的子分支用于回归,下面的子分支则用于分类,去除了之前的obj的部分,在回归的分支中,使用的是Distribution Focal Loss。
其中DFL损失函数的定义如下,通俗来讲就是训练的过程中,目标的边界框不应该是一个确定的数值,目标的边界框应该是一个分布,比如对于浪花这个物体而言,他的边界就是不清晰的,通过这样的损失函数可以减少网络在训练过程中出现的过拟合的现象。
其中,DFL实现的代码如下:
def distribution_focal_loss(pred, label):
r"""Distribution Focal Loss (DFL) is from `Generalized Focal Loss: Learning
Qualified and Distributed Bounding Boxes for Dense Object Detection
<https://arxiv.org/abs/2006.04388>`_.
Args:
pred (torch.Tensor): Predicted general distribution of bounding boxes
(before softmax) with shape (N, n+1), n is the max value of the
integral set `{0, ..., n}` in paper.
label (torch.Tensor): Target distance label for bounding boxes with
shape (N,).
Returns:
torch.Tensor: Loss tensor with shape (N,).
"""
#label为y, pred为y^(y的估计值)
#因为y_i <= y <= y_i+1(paper)
#取dis_left = y_i, dis_right = y_i+1
dis_left = label.long()
dis_right = dis_left + 1
weight_left = dis_right.float() - label #y_i+1-y
weight_right = label - dis_left.float() #y-y_i
#paper中的log(S)这里用CE
loss = (
F.cross_entropy(pred, dis_left, reduction="none") * weight_left
+ F.cross_entropy(pred, dis_right, reduction="none") * weight_right
)
return loss
损失函数说明
YOLOv8的loss计算包含了分类和回归两个部分,没有了之前的objectness的分支部分,其中分类的分支采用的是BCE Loss,回归的分支使用了两个部分,分别是上面提到的Distribution Focal Loss和CIoU Loss,3个损失函数按照一定的权重比例进行加权。
关于正负样本的分配,其中YOLOv5中使用的是静态的分布策略,简单来说,静态的分布策略是将标签中的GT Box和Anchor Templates模板计算IoU,如果IoU大于设定的阈值就认为是匹配成功,匹配成功的边界框将会参与到CIoU Loss的计算中。当然这里所述的是简化的版本,实际子计算的过程中还会去计算GT Box和对应的的Anchor Templates模板高宽的比例。假设对某个GT Box而言,其实只要GT Box满足在某个Anchor Template宽和高的× 0.25 0.25倍和4.0倍之间就算匹配成功。关于这部分更详细的解释可以看YOLOv5网络详解_yolov5网络结构详解-CSDN博客。在YOLOv8中,使用的是动态分布的策略(YOLOX 的 simOTA、TOOD 的 TaskAlignedAssigner 和 RTMDet 的 DynamicSoftLabelAssigner),这里直接使用的是 TOOD 的 TaskAlignedAssigner。 TaskAlignedAssigner 的匹配策略简单总结为: 根据分类与回归的分数加权的分数选择正样本。
s是标注类别对应的预测分数值,u是预测框和gt框之间的iou。计算出分数之后,根据分数选取topK大的作为正样本,其余作为负样本。
数据增强说明
数据增强的部分和YOLOv5基本保持了一致,包含了颜色变换、马赛克数据增强、随机剪切等一系列常规的数据增强的方式。并且使用YOLOX的数据增强策略,在前面的部分使用数据增强,而在最后的10个epoch中关闭数据增强。如下图所示。
对于一些常见的数据增强的方式的说明。
训练策略说明
YOLOv8 的推理过程和 YOLOv5 几乎一样,唯一差别在于前面需要对 Distribution Focal Loss 中的积分表示 bbox 形式进行解码,变成常规的 4 维度 bbox,后续计算过程就和 YOLOv5 一样了。
以 COCO 80 类为例,假设输入图片大小为 640x640,MMYOLO 中实现的推理过程示意图如下所示:
其推理和后处理过程为:
(1) bbox 积分形式转换为 4d bbox 格式
对 Head 输出的 bbox 分支进行转换,利用 Softmax 和 Conv 计算将积分形式转换为 4 维 bbox 格式
(2) 维度变换
YOLOv8 输出特征图尺度为 80x80、40x40 和 20x20 的三个特征图。Head 部分输出分类和回归共 6 个尺度的特征图。 将 3 个不同尺度的类别预测分支、bbox 预测分支进行拼接,并进行维度变换。为了后续方便处理,会将原先的通道维度置换到最后,类别预测分支 和 bbox 预测分支 shape 分别为 (b, 80x80+40x40+20x20, 80)=(b,8400,80),(b,8400,4)。
(3) 解码还原到原图尺度
分类预测分支进行 Sigmoid 计算,而 bbox 预测分支需要进行解码,还原为真实的原图解码后 xyxy 格式。
(4) 阈值过滤
遍历 batch 中的每张图,采用 score_thr 进行阈值过滤。在这过程中还需要考虑 multi_label 和 nms_pre,确保过滤后的检测框数目不会多于 nms_pre。
(5) 还原到原图尺度和 nms
基于前处理过程,将剩下的检测框还原到网络输出前的原图尺度,然后进行 nms 即可。最终输出的检测框不能多于 max_per_img。
有一个特别注意的点:YOLOv5 中采用的 Batch shape 推理策略,在 YOLOv8 推理中暂时没有开启,不清楚后面是否会开启,在 MMYOLO 中快速测试了下,如果开启 Batch shape 会涨大概 0.1~0.2。
实验结果
实验结果的部分,多为看图写话,这里我简单放置一些图像和说明,大家自行进行扩展即可。
实验设置
硬件参数:
显卡方面为NVIDIA RTX 3060:
其余硬件和系统参数如下:
训练参数:
学习率: 初始学习率设置为0.001,使用余弦退火或指数衰减策略逐步降低学习率。
批量大小: 16至32,具体取决于显存容量和硬件性能。
优化器: 使用AdamW或SGD优化器,权重衰减设置为0.0005,以控制模型复杂度。
损失函数: 使用YOLOv8默认的损失函数(如CIoU Loss和DFL Loss),结合分类损失和定位损失进行优化。
训练轮数: 50至100个epoch,视模型的收敛情况而定。
测试与评估:
评估指标: 使用mAP(mean Average Precision)作为主要评估指标,阈值设置为0.5 (mAP@0.5) 和0.5:0.95 (mAP@0.5:0.95) 以全面评估模型性能。
实时性测试: 在测试集上评估模型的FPS(Frames Per Second)表现,以确保模型满足实时检测的要求。
跨域测试: 使用来自不同场景的数据集(如夜间监控、工地监控)进行测试,评估模型的泛化能力。
数据集介绍
数据集方面我们搜集了大概有1w个头盔实例的数据集,数据集类别的整体分布如下,包含3个类别,分别是行人、头以及头盔,这里的数据集大家也可以自行进行补充应用在骑车的头盔检测或者是其他各种涉及到头盔检测的场景中。
这里有一些部分数据集的示例,大家在自己的课程设计报告中也可以进行放置。
实验的配置和实验结果
实验的配置部分还是老三样
建立虚拟环境
conda create -n yolov8
激活虚拟环境并安装pytorch
conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=10.2 # 注意这条命令指定Pytorch的版本和cuda的版本
conda install pytorch==1.10.0 torchvision torchaudio cudatoolkit=11.3 # 30系列以上显卡gpu版本pytorch安装指令
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly # CPU的小伙伴直接执行这条命令即可
安装其他依赖库并使用pycharm打开
pip install -v -e .
下面是一些实验结果的展示
首先是模型训练过程的图示,从模型的训练过程可以看出,随着训练的进行,误差的部分在慢慢下降并且慢慢开始收敛,和精度相关的一些指标部分随着训练的进行在慢慢的上升并且也开始逐步收敛。这张图是YOLOv8目标检测模型训练后的精度-召回曲线(Precision-Recall Curve),用于评估模型性能。横轴代表召回率(Recall),即正确检测的正样本占所有实际正样本的比例;纵轴代表精度(Precision),即正确检测的正样本占所有检测为正样本的比例。图中蓝色线代表所有类别的平均表现,其精度达到0.956,在召回率为0.5时表现尤为显著。橙色线则聚焦于“头部”这一特定类别,精度高达0.954,同样在召回率0.5时表现优异。此外,图中还标注了mAP@0.5(平均精度均值,在IOU阈值为0.5时)的值为0.956,表明模型在检测任务中整体表现非常出色,特别是在中等难度的检测场景下。曲线从左下角向右上角延伸,表明随着召回率的提升,精度也相应增加,这是理想模型性能的表现。YOLOv8模型在此图中展现出的高精度和高召回率,证明了其在目标检测任务中的高效性和准确性。综上所述,这张图直观地展示了YOLOv8模型在训练后的卓越性能,为计算机视觉领域的应用提供了强有力的支持。
这里的图示可以借助一些AI模型来帮助你进行解读,如下所示。
结论
在本研究中,我们将YOLOv8应用于头盔检测任务,针对工业现场和交通监控等复杂环境进行了测试。YOLOv8相较于前代模型具有更优的检测速度和精度,其主要结论如下:
检测精度: YOLOv8在头盔检测任务中表现出优异的检测精度,尤其在复杂背景和不同光照条件下,仍然能够准确识别佩戴与未佩戴头盔的情况。通过测试数据集,YOLOv8在检测精度上达到了mAP (mean Average Precision) 95%以上,表现优于许多传统的目标检测模型。
实时性能: YOLOv8保持了YOLO系列一贯的实时性优势,能够在嵌入式系统和低功耗设备上以高帧率(FPS)进行检测。在交通监控应用中,YOLOv8实现了超过30 FPS的实时检测能力,使其非常适合部署在需要即时反馈的场景中。
模型优化与泛化能力: 我们对YOLOv8模型进行了优化,包括数据增强、特征层次调优等,以适应头盔检测任务的特殊需求。实验结果表明,YOLOv8在泛化能力方面表现出色,能够有效应对不同场景和目标的多样性。
挑战与改进方向: 尽管YOLOv8在头盔检测中表现出色,但在处理极端角度、严重遮挡或非常小的目标时,模型的检测精度仍有待提高。此外,虽然YOLOv8在计算资源较为丰富的环境中表现良好,但在资源受限的设备上,如何进一步优化模型以减少计算开销仍然是一个挑战。
应用前景: 结合YOLOv8的检测精度和实时性,其在交通监控、工地安全监控等领域有广泛的应用前景。未来的工作可以进一步优化模型结构,降低计算复杂度,并探索与其他传感器数据的融合,以提升检测的鲁棒性和实用性。
总的来说,YOLOv8在头盔检测任务中的应用展现了深度学习在计算机视觉领域的强大潜力。该模型在保持实时性的同时,实现了高精度的检测效果,为实际应用提供了可靠的技术支持。未来的研究方向应集中在进一步优化模型、提升检测鲁棒性以及探索新型应用场景中。
- 2025-07-15
-
回复了主题帖:
薪资都谈好了,背调却被挂掉了
Nubility 发表于 2025-7-15 18:32
我填的联系方式,然他说那个hr不够积极配他,得到的有效信息很少,真不知道他要什么有效信息
...
确实应该填你信任的人,白白浪费一个机会了
-
回复了主题帖:
薪资都谈好了,背调却被挂掉了
他们直接找前公司HR聊?不是找你填写的上级?
-
回复了主题帖:
机器人搭地铁送货啦~~~
前面那个应该是一个屏幕吧,话说可以送什么东西呢