YOLO_V3

img


个人网站

V5
V4
V3
V2
V1

一 、前言

YOLO(You Only Look Once)是一种快速、高效、准确的目标检测算法,由Joseph Redmon等人于2016年提出。相比于其他目标检测算法,YOLO使用单个神经网络实现目标检测,使其更快、更高效。

YOLO算法的基本原理是将输入图像分成一个个网格,然后每个网格都会预测该网格内存在的物体的边框位置和类别概率。与传统的目标检测算法相比,YOLO在处理整个图像时只需要执行一次前向传递操作,因此速度非常快。此外,YOLO的网络结构比较简单,具有很强的通用性和可扩展性,可以应用于多种不同的目标检测任务。

在实际应用中,YOLO已经被广泛应用于各种计算机视觉应用,例如自动驾驶、监控和机器人。它以其高准确性和实时处理能力而闻名,是许多目标检测任务的首选算法之一。

二、YOlO_V3

1.概述

  • 终于到V3了,最大的改进就是网络结构,使其更适合小目标检测
  • 特征做的更细致,融入多持续特征图信息来预测不同规格物体
  • 先验框更丰富了,3种scale,每种3个规格,一共9种
  • softmax改进,预测多标签任务

2.改进的程度

不要问为什么划到第四象限,在座各位都是**

img

3.多scale

为了能检测到不同大小的物体,设计了3个scale,V2说过聚类,聚类九种框,分大中小分别三种,

像感受野大的赋予大的三种框,依次给,13x13,26x26,52x52

img

怎么来的multi scale feature map呢?图像金字塔

img

用Resnet得到不同尺度大小特征图,最小13x13保存,复制一份进行上采样得到的特征图和原来卷积得到的特征图相加,保存26x26,然后继续上采样和原来特征图相加,得到52x52.

4.网络架构

img

再给出一个图

img

YOLOv3使用的方法有别于SSD,虽然都利用了多个特征图的信息,但SSD的特征是从浅到深地分别预测,没有深浅的融合,而YOLOv3的基础网络更像是SSD与FPN的结合。YOLOv3默认使用了COCO数据集,一共80个物体类别,因此一个Anchor需要80维的类别预测值,4个位置预测及一个置信度预测。每个cell有三个Anchor,因此一共需要3×(80+5)=255,也就是每一个特征图的预测通道数。

img

5.先验框设计

  • YOLO-V2中选了5个,这回更多了,一共有9种
  • 13*13特征图上:(116x90),(156x198),(373x326)
  • 26*26特征图上:(30x61),(62x45),(59x119)
  • 52*52特征图上:(10x13),(16x30),(33x23)

img

从网络结构中可以看出,YOLOv3输出了3个不同大小的特征图,从上到下分别对应深层、中层与浅层的特征。深层的特征尺寸小,感受野大,有利于检测大尺度物体,而浅层的特征图则与之相反,更便于检测小尺度物体,这一点类似于FPN结构。
YOLOv3依然沿用了预选框Anchor,由于特征图数量不再是一个,因此匹配方法也要相应地进行改变。具体做法是:依然使用聚类算法得到9中不同大小宽高的先验框,然后按照下图所示的方法进行先验框的分配,这样,每一个特征图上的一个点只需要3个先验框,而不是YOLOv2中的5个。

6.softmax层替代

  • 物体检测任务中可能一个物体有多个标签
  • 使用logistic激活函数来完成,这样就能预测每一个类别是/不是

通过设定一个阈值使得一个物体有多个标签,属于猫,和小猫的概率都大于0.8,既属于猫也是小猫

7.代码

可以debug过一下代码,重点看数据的加载,和把数据加载入模型,跑出来基本不可能,数据集是cocotrain2014,可以使用预训练权重文件进行测试,你可以找一些物体图片进行测试,放在data/sample
detect.py 运行
img

结果,不会有人不是IKUN吧
img

代码:链接: https://pan.baidu.com/s/1m5oYftmDES7YN_QsLqb-5A 提取码: pmcj

猜你喜欢

转载自blog.csdn.net/weixin_62403633/article/details/130588264
今日推荐