赞
踩
登录Make Sense网站(https://www.makesense.ai/)
YOLOv1是YOLO系列的第一个版本,于2015年提出。使用单个卷积神经网络(CNN)模型进行目标检测。将输入图像分为网格,并在每个网格单元中预测目标的边界框和类别。使用全连接层来预测边界框坐标和目标类别概率。相对较低的准确率,但在速度上具有优势。
YOLOv2在YOLOv1的基础上进行了改进,于2016年提出。引入Darknet-19网络架构,使用更深的卷积层提取特征。使用锚框(anchor boxes)来预测不同尺度的边界框。引入多尺度训练和预测,在不同层级上进行目标检测。使用Batch Normalization和卷积层的细微改进,提高了准确率。
YOLOv3是YOLO系列的第三个版本,于2018年提出。使用更强大的Darknet-53作为基础网络,提取更丰富的特征。通过多个尺度的特征图来检测不同大小的目标。引入了FPN(Feature Pyramid Network)来更好地处理不同尺度的特征。使用更细粒度的锚框设置来提高边界框的精度。添加了辅助分类器来预测小目标。准确率相对于YOLOv2有所提升,但速度稍慢。
YOLOv4是YOLO系列的第四个版本,于2020年提出。引入了一系列的技术改进和创新,包括CSPDarknet53、SAM(Spatial Attention Module)、PANet(Path Aggregation Network)等。使用更大的网络和更多的特征层来提高检测性能。优化了锚框的设置和预测方式。引入了YOLOv4-tiny版本,以提供更快的推理速度。在准确率和速度上都有明显的提升。
YOLOv5[20,21]是YOLO系列的第五个版本,于2020年提出。采用了不同的网络结构,使用轻量级的模型设计。引入了自动化模型构建技术,通过AutoML实现网络结构,它具有以下特点:
高精度:YOLOv5在保持实时性能的同时,能够实现高精度的目标检测,尤其在小目标检测方面表现突出。
高效性:YOLOv5采用了一系列优化策略,使得算法在运行速度和内存占用等方面得到了大幅优化,能够在不同的硬件设备上快速运行。
易用性:YOLOv5提供了用户友好的接口,使得用户可以轻松地使用预训练模型进行目标检测任务,也可以通过自己的数据集进行训练和优化。
使用YOLOv5来完成动物骨骼分析的依据在于,骨骼分析是一种目标检测任务,而YOLOv5正是一种高效准确的目标检测算法。在进行动物骨骼分析时,可以通过标注关键点来检测骨骼,然后利用YOLOv5进行目标检测,从而得到动物骨骼的位置和生长信息。这种方法不仅能够提高骨骼分析的准确性和效率,还能够应用到动物行为分析、医学影像分析等领域。
YOLO 系列算法经过几个版本的改进,在目标物体检测相关领域占据了主导地位。
可以看出yolov5足以胜任自动学习、自动检测动物骨骼的任务。
(1)数据准备:收集并准备用于训练的图像和标签数据集。确保数据集包含目标物体的图像,并为每个目标物体提供相应的边界框标注。获取PNG格式图像后,使用在线标注网站(Make Sense)对鸡喙图像进行数据集的标注(详见1.1.1)
(2)标签格式转换:将标签数据转换为YOLOv5所需的格式。YOLOv5使用的标签格式是以文本文件形式存储的,每个文件对应一个图像,并且每一行包含一个目标物体的类别和边界框信息。每一行有五个部分,第一部分表示标签的数量,第二部分表示矩形框X轴中心坐标,第三部分表示Y轴中心坐标,第四部分表示标注框X轴方向边长占据的百分比,第五部分表示标注框Y轴方向边长占据的百分比(详见2.3.1)
(3)划分训练集和验证集:将准备好的数据集划分为训练集train和验证集val。大部分数据用于训练,小部分数据用于验证模型的性能。设置200张训练集数据,100张验证集数据。
训练集用于计算机进行照片训练,当训练完成一轮后会根据自己得到的模型去验证集进行验证,如果结果有差距,会进一步回到训练集继续进行训练,训练完成后会再次进行训练集的训练。不断重复上述过程,提高模型准确度。
配置训练参数:配置YOLOv5模型的参数,模型格式为yolov5s,输入图像大小640px × 640px,检测类别数量为1个, 批处理大小batch-size为2,训练轮数epochs为700轮,线程大小workers为8。
Weight:表示权重,表示训练开始的地方,如果从0开始训练,则weight后面填 空。
Data:表示将要告诉计算机训练数据所在的位置,这里我们将标记的照片存放在 'data/ChickenMouse.yaml'文件目录下面。
Epochs:表示训练的轮数,训练轮数越多,生成的模型更为准确。
Batch-Size:表示一次性批量处理数据的数量,数值越大,训练时间越短,因此 该步骤会对计算机的硬件配置有较高的要求。
进行训练:使用准备好的训练集和配置好的参数,对YOLOv5模型进行训练。训练过程通常涉及到迭代优化算法(如随机梯度下降)以及损失函数(如YOLOv5自定义的损失函数)的使用。
下图表示开始训练,首先显示我们配置好的信息
我们要训练299轮,训练完毕后模型结果存放在runs/train/exp/weights中。
模型评估:在训练过程中,定期使用验证集评估模型的性能。可以计算指标如精确率、召回率、平均精确率均值(mAP)等来衡量模型的准确性和召回率。
准确度是指所有被正确分类的物体数占总检测出的物体数的比例。即,检测出的物体中,正确分类的物体数占总数的比例。准确度越高,说明模型的分类能力越强。
召回率是指正确检测出的物体数占所有实际存在的物体数的比例。即,实际存在的物体中,被正确检测出的物体数占总数的比例。召回率越高,说明模型的检测能力越强。
随着训练轮数的增长,我们看到精确率与召回率不断地提高。
(7)模型调优:根据模型评估结果,对模型进行调优。可以尝试调整超参数、修改网络结构或采用其他技巧来改进模型性能。
(8)测试模型:在训练完成后,使用测试集对最终的模型性能进行评估。测试集是一个独立于训练和验证集的数据集,用于模拟模型在实际应用中的表现。
模型部署:将训练好的YOLOv5模型部署到目标环境中,并应用于实际的目标检测任务中。可以使用模型的推理功能对新的图像或视频进行目标检测。
随机选择一组06918进行测验。
运行失败,观察原因,发现是模型不存在。
看源码查找问题
我们在detect.py代码里面编写的模型是'runs/train/exp15/weights/last.pt'
而
中不存在'runs/train/exp15/weights/last.pt',我们将模型改为'runs/train/exp13/weights/best.pt'
再次执行代码
这次运行成功,文件存储到了runs\detect\exp3位置处
点击runs\detect\exp3查看结果
第三张图,有75%的几率确定这是鸡喙,并且有11.86%的黄色达到标准。
可见,该方法能够较为准确的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。