• 2.YOLOv1


    YOLOv1

    经典的one-stage算法
    You Only Look Once,名字就说明了一切,把检测问题转化为回归问题,一个CNN就搞定了,可以对视频进行实时检测,应用领域非常广泛
    image.png

    YOLOv1特点

    • 运行速度快,定义物体检测为一个回归任务,不需要额外的计算
    • YOLO利用图面的全局信息进行预测,在进行训练和预测时,可以看到类别编码信息的上下文
    • YOLO学习的是物体检测的泛化性特征,当有预想不到的输入或者应用到新的领域时很少会系统奔溃
    • 预测最终被编码为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGnJc9Lx-1677980464293)(null#card=math&code=S\times S \times (B * 5 + C)]
      &id=KZn8S),其中S为网格尺寸的大小,B为候选框的个数,C为检测物体分类的个数。在YOLOV1论文中,在PASCAL VOC数据集上预测YOLO框架,使用S=7, B=2, 由于PASCAL VOC有20个类别,C=20,最终得到预测张量![](null#card=math&code=7\times 7 \times 30
      &id=BXA27)

    YOLOv1问题

    • YOLO在精度上落后于顶尖的物体检测算法
    • 由于感受野比较大,YOLOv1在小物体检测上较差

    核心思想:预测图像中有哪些问题,下图中有一条狗和一辆自行车。要预测一条狗和一辆自行车,交给谁来预测呢?现在有一张输入图片分成网格,观察网格,在这个网格中狗落在了图像当中的一个位置,每个格子都负责预测在你这个格子上是什么物体,狗落在图像的区域中,现在只关心狗的中心点落在哪里(图中红色中心点负责预测狗)。s*s的格子,每个格子负责预测所代表的物体是什么。在当前格子中有两个黄色的框,黄色的框不是最终的结果,现在红色的格子要去预测,但是它也不知道狗长什么样子,那么就需要一些经验的东西(比如一些物体可能是比较长的,一个长方形的,一些是正方形的)。一开始现在这个位置中来两种经验值h1,w1;h2,w2,h1是长方形的,h2是正方形的,对于这个狗来说,长方形的框比较好,那么现在长方形的框比较靠谱些,但是和我实际预测的值还是不一样,把候选框(提供的经验值)做一些修正,把框做一个微调,而微调是一个回归任务,预测h和w怎么变,看h和w什么时候最合适,并且要起始位置x和y的值(bounding boxes),最终的框由经验框做怎样的偏移。V1版本产生两种候选框(指定b值),每个格子两种候选框,和真实值到底匹配如何。真实值和两个候选框算IOU的值,和我真实值的IOU,谁的IOU大,最后微调谁。在微调过程中,会计算出很多候选框,因为每个位置都会进行预测,每个预测都会得到一个结果值即置信度(confidence),这个置信度标识当前这个点所预测的结果是物体还是不是物体。对图像的格子当中每个位置做计算,计算出来各种指标,4个偏移量和一个置信度的值,对于置信度小的过滤掉。最终置信度小的过滤掉,把重复的框处理下,最后得到下图中输出的结果。
    候选框做微调,不是所有的候选框做微调,对置信的高的做微调。实际做结果的为IOU比较大的,把x,y,w,h映射到原始图像中就可以算出来了。
    image.png

    网络架构

    输入大小4484483,是一个固定值,把图像resize到一个固定值,只训练4484483,v1输入图像大小被限制,后续版本可以最改变。一个卷积神经网络大小不能去边,图像大小对于卷积层没太大影响,全连接层必须固定好前面特征图的大小,输入图像大小不能变化,必须是一个4484483的。对输入数据进行特征提取,得到一个771024特征图。
    image.png
    第一个全连接层4096,第二个全连接层14701,reshape成7730。77表示一个77的格子,77的格子每个格子里面有30个值。每个格子产生来两种框,每中框里面包含x,y,w,h(归一化完后的值),c,相对于图片的值。剩下的20个是20分类,数据中一共20个类别,即类别的种类总数。
    每个数字的含义:
    10 =(X,Y,H,W,C)B(2个)
    当前数据集中有20个类别
    7
    7表示最终网格大小
    (SS)(B*5+C)
    image.png

    损失函数计算

    w,h做根号变换,损失计算时需要注重物体比较小的,数值较小比较敏感,数值较大时相对来说没有那么敏感
    image.png

    NMS(非极大值抑制)

    检测很多个框,出现重叠情况,比如同样一个人可以检测出很多人脸,在IOU满足一定值的时候,先按置信度进行排序,非极大值抑制汲取一个置信度极大值。

    YOLOv1问题

    1. 当前的点即每个Cell只去预测一个类别,重合在一起的东西很难去检测
    2. 狗有多个标签,不能很好去检测
    3. 小物体检测效果不好,长度比可选但单一,候选区只有两个
  • 相关阅读:
    SPASS-指数平滑法
    Keil工程忽略文件.gitignore、自动删除脚本:keilkilll.bat、自动生成目录文件列表脚本
    2024-06-12 问AI: 在大语言模型中,什么是Jailbreak漏洞?
    国内数字藏品的乱象与未来
    说一说 程序员的代码编辑器比较 vscode source insight vim那些年用过的IDE
    LayUI(会议oi项目增删改查)
    ZXMPS385 中兴全新原装产品 规格及开局指导
    开发一款回合制游戏,需要注意什么?
    云原生-FRP内网穿透(详解)使用云服务器将内网集群服务暴露至公网(二)
    【linux】shell:简单的shell脚本练习
  • 原文地址:https://blog.csdn.net/heromps/article/details/129342682