前言
此程序是使用YOLOv8训练自己的图像并测试。Yolo系列模型可以说是比较特殊的模型,因为不像其他公开网络ResNet、GoogLeNet等等,可以自己构建和更改层。Yolo只能整体调用这个网络,这个可能是让初学者比较头疼的问题,就是看不到网络的每个层,也看不到构建网络的代码。
但其实这样一来反而方便了,就是只需要指定好图像的目录就可以了,甚至都不用去统一图像的尺寸。
参考了网上的各种大佬写的调用方法,以及YOLO模型官网的介绍,整理了一下比较简洁、适合初学者使用的代码。
YOLO官网写的其实很详细,强烈建议大家可以参考:https://docs.ultralytics.com/tasks/classify/
本程序是用JupyterLab写的,方便逐块运行。当然放到pycharm或者vscode里都没问题。使用YOLOv8进行猫狗图像二分类,使用了猫狗各500张,提前划分好训练集、验证集、测试集放到不同文件夹。
方便替换图像数据,只需要将图像放入文件夹中即可。如果是多分类,只需将对应好放入不通文件夹即可,程序不用做改动。
如有其他问题还是去参考官网。
整理好的程序已放在闲鱼,整理不易,价格低廉15。
【闲鱼链接】:https://m.tb.cn/h.T0BQky2?tk=4IKN3rZPzdX MF7997
如果连接失效,可在闲鱼搜索:耐心的等待5283,然后点“用户”即可找到个人主页下的程序。
程序工作如下:
1、图像数据
Catdogs是所有图像。分为test和train,test和train里都是cats、dogs两个文件夹。因为训练时,会自动指定文件夹名作为图像的标签。
2、加载YOLOv8模型
如果当前目录没有此模型,运行时会自动从官网下载这个模型;如果当前目录有此模型,则会直接加载。
自动下载可能需要真互联网。如果提示下载失败,可以手动点这个链接(真互联网),就能自动下载到一个“yolov8n-cls.pt”。直接放到当前目录这就可以。最终程序压缩包里也有这个文件,不自己下载直接用也行。
3、加载图像数据。
这里注意一定得是图像的绝对路径,不能写相对路径。方便起见,用os.path获取了绝对路径。
4、训练模型。
训练时指定好图像路径、轮数、图像尺寸、设备(GPU或CPU)即可,都有详细注释。会显示训练信息。
第一次运行可能会自动下载yolo11n.pt,应该是工具包自带的,等待下载完即可,不用理会。
然后会开始训练。
最终会提示结果保存到了 runs/classify/train的路径里。
这时候当前目录会出来"runs"文件夹。
打开里面是一堆文件,主要关注以下几个即可。
① weights文件夹。best.pt和last.pt分别是训练完,得到的最好的模型和最后一轮的模型。进行单个图片识别测试的时候,可以用best.pt模型。
② results.csv。这是训练的acc和Loss数据,后续画图可以用到。
③ result.png。这是train和acc loss曲线,这个当然也可以用results.csv自己画。
④ confusion_matrix.png。这个是测试集混淆矩阵。
⑤ args.yaml。这个是训练的一些参数。
5、读取results.csv的数据,绘制训练集acc和loss。
当然自动保存下来的图片也有这个曲线了,这里是为了方便保存原图。
6、测试单个图片
显示两个类别、概率、识别结果。
【闲鱼链接】:https://m.tb.cn/h.T0BQky2?tk=4IKN3rZPzdX MF7997
如果连接失效,可在闲鱼搜索:耐心的等待5283,然后点“用户”即可找到个人主页下的程序。
注:程序完全由本人所写,旨在帮助大家了解如何用yolov8训练自己的图像。原始程序如运行不通可远程帮忙调试。整理不易,唯一渠道为闲鱼售卖。最近盗版本人程序太多,私聊后还拒不承认。。。。本程序已于2024.11.11申请淘天知识产权并进行备案,如有盗版将追究。时间关系解答简单问题,谢谢理解。