本篇讲解学习目标检测。
目标检测(0bject Detection)是指在静志图像或视频中,找到某些特定目标的位置,一般以包国框(BowndmnBox)的形式给出结果,同时输出每个检出目标的具体类别。目标控测是视觉感知的第一步,也是计算机视觉的一个重要研究和应用方向。
目标检测的任务是找出图像中所有感兴趣的目标,确定它们的类别和位置,是计算机视觉领域的核心问题之一。在机器视觉中,目标检测有四大类任务。
●分类(Classifcation):给定一幅图像或一段视频,判断其中包含什么类别的目标,
●定位(Location):定位出目标的位置:
●检测(Detection):定位出目标的位置并且知道目标是什么。
●分割(Segmentation):分为实例分割和场景分割,解决每个像素属于哪个目标或场景的问题。
目标检测发展到今天,已有很多检测方法。目前产业界、学术界主要研究基于深度学习的目标检测方法。
YOLO-v1使用CNN模型,以端到端的方式解决目标检测的所有问题,核心思想是将整幅图像作为网络输入,直接在输出层回归包围框的位置和包围框所在目标的类别。YOLO-v1的主要过程如下:首先将输入图像固定为统一大小(448x448),然后将统一大小的图像划分为SxS个网格,如果某个目标的中心落在这个网格中,该网格就负责预测这个目标。YOLO 的结构很简单:主体结构是卷积和池化,最后加上两层全连接。单看网络结构时,YOLO与普通的CNN 分类网络乎没有本质区别,最大的差异是最后的输出层使用线性函数作为激活函数,因为还要预测框的位置(数值型),而不仅仅是目标的概率。因此,粗略地说,YOLO 的整个结构就是输入图像经过神经网络的变换得到一个输出的张量。
相对于 YOLO-v1,YOLO-v2 主要在预测精度、速度、识别目标数量三个方面做了改进。YOLO-v2识别的目标变得更多,即扩展到能够检测 9000 种不同的目标,因此又称 YOLO9000。
YOLO-v3 继承了 YOLO-v1 和 YOLO9000 的思想,实现了速度和检测精度的平衡有效地提高了小目标的检测能力。
YOLO-v4在YOLO-v3 的基础上,提出了高效检测目标的新算法 ,该算法的特点是集成了更多的新技术,主要包括Mosaic法和自对杭训练(SelfAdversarialTraining,SAT)法,提出了改进的空间注意力模块(SpatialAtention Module,SAM)、路径聚合网络(Path AggregationNetworK,PAN)和交叉小批量归一化(Cross mini-Batch Normalization,CmBN)。YOLO-v4 分为四部分--输入端、主干网络、Neck 部分和预测部分。输入端包括 Mosaic、cmBNSAT;主干网络包括 CSPDarknet53 网络、Mish 激活函数、DropBlock;Neck 部分包括 SPP 模块FPN+PAN 结构;预测部分主要为改进的损失函数 CIoU Loss 和改进的包围框筛选 DIoU_nms。
YOLO-v5的性能与 YOLO-v4 的不相上下,但速度远超 YOLO-v4,模型尺寸(27MB)也比 YOLO-v4的 245MB小了很多,在模型部署上有很强的优势。一系列改进方法让 YOLO 在目标检测速度上处于领先地位。如下是YOLO发展小结:
关于训练自己的YOLO-V4模型,资源可参考https://gitee.com/pi-lab/yolov4_pytorch。 YOLO迭代更新版本非常快,截止目前已发展到YOLOv8.2,YOLO官网可以查阅到最新资源,对更深入全面更新学习YOLO很有帮助。
引用: Jacktang 发表于 2024-7-29 08:25 机器学习中算法还是核心的核心
是的