yolov8修改yaml文件,yolov8模型重复加载,无法确定模型的大小等等问题

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


主要讲述yolov8代码的内容,以及修改代码。

前言

最近在使用YOLOv8过程中遭遇到了许多bug,现在留下一些记录。方便自己回来查看问题,同时也可以为大家提供帮助。


提示:以下是本篇文章正文内容

一、YOLOv8训练脚本?

代码如下:

下面展示一些 内联代码片

from ultralytics import YOLO

# Load a model
model = YOLO(model= r'D:\code _vs\yolov8\ultralytics-main\ultralytics\cfg\models\v8\ghost_conv_v8n.yaml')  # build a new model from YAML




# Train the model
model.train(data=r'D:\code _vs\yolov8\ultralytics-main\ultralytics\cfg\datasets\ameng_strength.yaml',
                      epochs=300, imgsz=640,workers=0,device = 'cuda:0',batch = 3,cache = True,pretrained = False,profile = True)

常见的训练方式也是这样,我这里修改了YOLO的配置文件。也正是像大家在改进代码常做的那样,在这种情况下,会出现几个bug。第一个是已经加载过训练的模型,为什么会又在加载一遍。第二个是如何进行迁移学习。第三个是在修改了YOLOv8的默认配置文件的时候,yolov8无法显示模型的Gflops大小。第四个是如何让模型可以选择大小比如 n,s,l,x

二、问题

1.模型多次加载问题

代码如下(示例):
在这里插入图片描述
可以看到yolov8在进行调用Model类的时候就已经在初始化的地方对配置文件进行了调用。创造了模型这里的self._new()函数就是对该模型已经完成了建立。顺带提一嘴,yolov8在新建模型的时候是靠yaml文件类型,调用new函数。在重构之前模型时候调用.pt文件。用的是load函数。

在这里插入图片描述

这里的newload就是对模型构建的入口函数。
在这里插入图片描述

train函数中又再次调用了这个加载模型的函数,所以我们选择注释他,并且将model传给trainner.model。这样就可以正常运行了。不会出现重复调用的问题。并且也正是因为这个原因导致csdn上的一些博主给的冻结代码是错误的,因为他们只冻结了yolo构建的模型,但是在train的时候又再一次调用new函数,从新构建了一个新的模型。让冻结不起效果,是虚假的冻结。

2.迁移学习

在11月份发布的yolov8中已经具备了对模型层数的冻结功能,可以发现YOLOv8在调用生成模型的时候会重复冻结一些层,比如 d2l中的conv层。在这里我已经删除了 always_freeze_names = [] 这里会永远冻结带有这些这些名称网络层。
在这里插入图片描述
同时,我们也经常再冻结一些网络层的时候发现会爆出warning字样,就是elif 这个函数把冻结层置为参数非冻结。
另外大家可以在default.yaml文件里面的freeze层里面去冻结层数。
在这里插入图片描述
那么我这里是冻结前十层。

3.GFlops问题

这大部分是因为你没有安装一个软件包,

在这里插入图片描述
安装了thop就可以解决这个问题。

4、让模型可以选择大小比如 n,s,l,x

我们再替换网络之后发现总是会选择模型最小的作为我们当前模型,这是因为代码会对你传入的模型的文件名做检测。对最后一字母进行检测,如果没有检测到就会默认是最小的。这里大家可以见截图,修改一下就ok了。

在这里插入图片描述
这里的guess_model_scale就是再对模型进行大小的估计,会切分出最后一个字符,大家可以根据自己想要的格式进行正则表达式修改,我这里是寻找数字后第一个的字符作为大小,大家可以模仿我的,也能省去很多麻烦。
在这里插入图片描述
或者如果你经常使用一个固定模型,可以scale = tuple(scales.keys())[3],数字代表顺序。

总结

解决了4个比较常见的yolov8模型问题,希望留存给后来者带来方便。
最后给大家看一下,我修改了yolov8中的conv模块为ghostconv。模型确实轻量不少,但是精度也是一言难尽。
在这里插入图片描述
确实模型很轻量。只有7.8GFLOPS.模型训练起来很快,200张图片只需要8s左右就一个epcoch。
在这里插入图片描述
这是冻结层,提示出来的信息。大家可以注释掉,如果觉得乱的话。
在这里插入图片描述
最后,我也存在一个问题,就算为什么我跑模型时候会一直下载pt,我猜想可能是因为混合精度的问题。所以一直下载,也确实挺烦人的。pycharm的路径也会经常标红,确实让人看得很不舒服。

  • 26
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值