0.前言
最近在使用yolov8网络模型来训练自己的数据集并需要对其进行改进优化;就想着从简单的更换优化器来试试对训练效果有没有一些好的效果。找到了最近比较热并且是最新的优化器Lion。
tips:
- 论文:https://arxiv.org/abs/2302.06675
- 代码:https://github.com/google/automl/blob/master/lion/lion_pytorch.py
1.在指定位置创建文件并修改代码
- 在目录.\ultralytics-main\ultralytics\yolo\engine下创建文件lion_pytorch.py
- 在文件.\ultralytics-main\ultralytics\yolo\engine\trainer.py中导入Lion,并修改代码
from ultralytics.yolo.engine.lion_pytorch import Lion
这Lion为默认原来的超参数,只指定了第一个参数的值。
elif name == 'Lion':
optimizer = Lion(g[2])
- 具体改动截图
2.调用优化器,训练模型
(1. 第一种方式适用于使用python代码来训练时,在train函数后面调用optimizer参数使其等于Lion
(2. 第二种方式是将文件.\ultralytics-main\ultralytics\yolo\default.yaml中的optimizer参数auto更改为Lion即可。
3.判断调用情况
运行代码在开始进行迭代训练前会显示参数optimizer的属性,若为Lion这为有效调用。
4.说明
我写这篇文章是本人代码修改能力不强,前期在网上找了很久关于优化器的更换代码怎么改,只有很少一部分人提供了,但是都是专栏需要收费;机缘巧合下给b站上一位up主留言并且得到了回复,真的非常感谢他的帮助;另外,我将本次替换优化器运用到我的数据集中得到的效果不是很好,还有些减少的情况,所以我也想问问大家有没有使用之后有没有效果,有没有什么好的参数调整;或者说这个Lion优化器是不是不适用在目标检测上。
5.参考
- https://www.bilibili.com/video/BV1Yu4y1U79i/?spm_id_from=333.999.0.0
如果你觉得这篇文章对你有所启发的话,期待你的点赞、收藏和打赏,对我创作的支持!!!