本专栏会手把手带你从源码了解YOLOv10(后续会陆续介绍YOLOv8、RTDETR等模型),尽可能地完整介绍整个算法,这个专栏会持续创作与更新,大家如果想要本文PDF和思维导图,后台私信我即可(创作不易,不喜勿喷),大家如果发现任何错误和需要修改的地方都可以私信我,我会统一修改。
新建train.py,如下就是一个简易的训练代码,训练配置文件为coco128.yaml,批次为16,图像尺寸为640
第四行模型初始化过后,Debug第六行模型训练的主函数到ultralytics/engine/model.py,这部分代码是检查环境、初始化训练器等
然后调用model类的_smart_load函数(ultralytics/engine/model.py):加载对应模型的训练器trainer等
之后对应YOLOv10模型的相应类(ultralytics/models/yolov10/model.py)
YOLOv10DetectionTrainer继承自DetectionTrainer (ultralytics/models/yolo/train.py),而DetectionTrainer又继承自BaseTrainer (ultralytics/engine/trainer.py), 初始化相应参数;trainer.py第90行的__init__函数,加载配置、数据集等信息,第138行检查数据集的配置yaml文件信息;继续初始化学习率、优化器等信息,第144行的self.trainset和self.testset为数据集训练集和测试集的路径
在初始化好模型训练器trainer后(第二幅图ultralytics/engine/model.py类的第638行后),继续加载模型
根据之前task对应的Model加载对应的YOLOv10DetectionModel;YOLOv10DetectionModel继承自DetectionModel(ultralytics/nn/task.py第644行),在继续调用ultralytics/nn/task.py的第285行__init__函数,初始化模型信息
这部分关于模型构建的整体流程如下图所示,需要原图和思维导图的朋友关注我私信获取。