首页 > 其他分享 >MARS目标检测-更进一步的一天

MARS目标检测-更进一步的一天

时间:2024-08-29 19:50:33浏览次数:4  
标签:文件夹 训练 检测 模型 yolo train MARS True 更进一步

使用baseline跑出的成绩只有0.16,后面几天试过各种改进,下面记录一下自己的改进过程:

更好的模型

baseline中使用的模型是yolo8n,首先,8代表的是yolo的第八代,n代表的是模型的大小。目前yolo已经开发出第10代了,相比于第8代,第10代更高更快更强,所以理所当然的选择yolo10来训练我们的模型。至于模型的大小,这里我选择的是yolov8s,再大的模型我的显卡就跑不了了。。。
具体的模型权重可以去ultralytics下载,ultralytics这个网站对新人还是很友好的,关于yolo的训练及测试方法官方文档都写的很清楚,完全可以自学。
在下载好模型权重后,将权重的路径粘贴到YOLO函数中就完成模型导入了,非常的方便。
model = YOLO("yolov8s.pt")

参数调优

使训了效果更上次层楼的另一个方法就是对模型的超参数进行调优。下面是具体的参数设置:
results = model.train( data="yolo-dataset/yolo.yaml", epochs=2, imgsz=640, batch=8, patience=5, dropout=0.5, label_smoothing=True, exist_ok=True, name='train', dfl=0.5, multi_scale=True, optimizer='AdamW', verbose=True, close_mosaic=1, plots=True, copy_paste=0.5, )
在这里,我只设置了

  • epoch=2,这是因为我们导入的YOLO已经是经过预训练的了,后续在比赛数据集上的训练应该称之为微调。在前面的实验中我发现,只需要再经过1-2个epoch模型的训练就足够了,再多就会产生过拟合。
  • imagsz=640,是因为原始的图片大小大致在1080左右,太大了,会严重占用GPU的内存。将图片适当减小,空余出的内存可以用于增大batchsize,较大的batchsize可以确保模型的鲁棒性。
  • batch=8是因为在后面我将multi_scale设置为了True。multi_scale=True会在训练中随即地改变输入图片的大小,使得模型能在多尺度上具有鲁棒性,增加精度。但是随机地改变图片的大小,就是说有些图片的尺寸会非常大,导致GPU内存占用特别大。所以较小的batchsize就能确保GPU有足够的空间。
  • patience=5是说,当模型的loss连续5个epoch不再下降时,就自动停止训练。
  • dropout=0.5: 在训练的时候随机停用50%的神经元,这个也是增加模型的鲁棒性的。
  • label_smoothing=True: 也是增加模型的鲁棒性的。
  • exist_os=True, name='train':模型的训练结果输出到runs文件夹下的名为train的子文件夹中。第一次运行预测代码时,系统报错在train文件夹中找不到名为best.pt的文件,后来才发现如果runs文件夹中已经有一个train文件夹后,系统会自动建一个名为train0的文件夹用来储存该次运行的结果,以避免覆盖以前运行的结果。设置这两个参数的意思是:该次运行的结果输出到train文件夹中,如果已经有一个train文件夹了,那么就覆盖掉之前的结果。
  • dfl=0.5:dfloss在总体loss中的权重。训练数据中的各个类别数量十分不平衡,百度说设置这个参数可以一定程度上避免类别不平衡。
  • optimizer:选择你的优化器。默认的优化器是SGD,太low了,还是用AdamW吧。
  • verbose:显示训练过程。

同时,在训练中还选择了两种数据增强方法:mosaic和copy_paste,这两种方法的具体内容在官网有解释,这里不过多追述。选择这两种增强方法的理由是来自经验,其他的数据增强方法感觉效果有限。

通过这一通操作,成功将分数干到了0.23,还是很低。

总的来说:还是数据太烂了,赛事方给的标注数据太烂了

标签:文件夹,训练,检测,模型,yolo,train,MARS,True,更进一步
From: https://www.cnblogs.com/ther0gucheng0hahahahahahahaha/p/18383762

相关文章

  • VL25 输入序列连续的序列检测
    这个题目的意思是输入是单bit脉冲,然后当8个周期的脉冲序列符合给定的参数值则match输出1;因此肯定需要一共8位的寄存器存储总共8个a的输入脉冲此外由于是从左向右匹配,因此每个周期输入的a要从寄存器最低位输入,从右向左移位(temp_a<={temp_a[6:0],a};),这样才是输入满足条件的011100......
  • 30-物体检测算法R-CNN SSD YOLO
    1、R-CNN2、FastR-CNN3、FasterR-CNN4、MaskR-CNN5、SSD6、YOLO......
  • 软硬件全开源智能手表,可全面高精度采集生命体征数据,进行健康检测。(HealthyPi Move)
    HealthyPiMove是一款开放式硬件设备,可让您高精度地跟踪所有生命体征。它不仅仅是另一款带有心率监测器的智能手表,它还是手腕上的完整生命体征监测和记录设备,可以测量心电图(ECG)、光电容积脉搏波(PPG)、SpO₂、血压(基于手指)、EDA/GSR、心率变异性(HRV)、呼吸频率,甚至体温......
  • 基于STM32的智能小宠喂养兼检测系统设计(214)
    文章目录一、前言1.1项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】选题背景【6......
  • 豆包MarsCode送京东e卡了!!!
    ​​​​​​豆包MarsCode——智能编码,一触即发链接入口如上:↑↑↑豆包MarsCode编程助手是豆包旗下的AI编程助手,提供以智能代码补全为代表的AI功能。本教程以在 VisualStudioCode 中为例,适用于在macOS、Windows和Linux的VisualStudioCode中安装豆包Mars......
  • 检测域账号是否禁用、密码是否永不过期
    usingSystem;usingSystem.DirectoryServices.AccountManagement;classProgram{staticvoidMain(string[]args){//从控制台输入用户名Console.Write("请输入要查询的用户名:");stringuserName=Console.ReadLine();//......
  • YOLOv10改进:CBAM注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,在目标检测中有
    YOLOv10改进:CBAM注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,在目标检测中有效涨点)如果实验环境尚未搭建成功,可以参考这篇文章->【YOLOv10详细环境搭建以及模型训练(GPU版本)】请参考链接:http://t.csdnimg.cn/YQ9qW------------------------------------------------......
  • 网络流量分析与异常检测系统是网络安全领域的重要工具
        网络流量分析与异常检测系统是网络安全领域的重要工具,用于监控网络流量并识别潜在的恶意活动或异常行为这类系统通常结合机器学习、数据挖掘和统计分析技术,以实现高准确性和实时性。在互联网迅速发展的今天,网络安全问题日益突出,网络流量分析与异常检测系统的重要性......
  • 为什么选择国产静态代码检测工具
    随着国产软件的使用及对安全要求提升,越来越多的企业在关注软件开发安全及代码安全的同时,逐渐将选择目光放在国产化工具上。相较于国外工具,国产化代码检测工具能更好地支持国内行业标准,同时提供更切合实际情况的定制化服务和及时的售后,国产化工具主要特点有:1、更好地本地化支持:使......
  • 【恶意代码系列】恶意代码技术及恶意代码检测技术原理与实现
    一、恶意代码检测技术简述二、恶意代码技术理论及实现2.1恶意代码注入技术2.2注入模块(dll)显示三、文件加密技术3.1键盘记录技术3.2屏幕截取技术四、恶意代码检测技术原理论述4.1MD5检测技术4.2特征码检测技术4.3导入表分析技术(启发式......