使用 YOLO 进行目标检测

重磅干货,第一时间送达

自从世界了解人工智能以来,有一个特别的用例已经被讨论了很多。它们是自动驾驶汽车。我们经常在科幻电影中听到、读到甚至看到这些。有人说,我们将在2010年拥有自动驾驶汽车,有人说到2020年,但我们在2021年就实现了,我们刚刚能够解决自动驾驶汽车给世界带来的变化的一角。自动驾驶汽车的一个基本特性,对象检测。

什么是目标检测?

物体检测——顾名思义就是通过深度学习算法检测图像或视频中的物体。目标检测的目的是识别和定位场景中所有已知的目标。有了这种识别和定位,目标检测可以用来计数场景中的目标,确定和跟踪它们的精确位置,同时精确地标记它们。

目标检测通常与图像识别相混淆,所以在我们继续之前,澄清它们之间的区别是重要的。

图像识别为图像分配一个标签。狗的图片会被贴上“狗”的标签。两只狗的照片仍然会被贴上“狗”的标签。另一方面,对象检测在每只狗周围画一个盒子,并给这个盒子贴上“狗”的标签。模型预测每个对象在哪里以及应该应用什么标签。通过这种方式,目标检测比识别提供了更多关于图像的信息。

物体检测与图像识别和图像分割等其他类似的计算机视觉技术密不可分,因为它有助于我们理解和分析图像或视频中的场景。

鉴于这些关键的区别和物体检测的独特能力,我们可以看到为什么它可以在日常使用优势的多种方式中应用,一些常见的例子是自动驾驶汽车,人脸检测,交通调节,视频监控,人群计数,异常检测等。

数据集

在这个项目中,我们使用了VOC2012数据集。VOC代表2012年视觉物体分类挑战赛。这个数据集包含了来自PASCAL视觉对象分类挑战的数据,对应于分类和检测比赛。所提供的训练数据由一组图像组成;每个图像都有一个注释文件,为图像中20个类中的每个对象提供一个边界框和对象类标签。有17125幅图像可供训练。数据的大小大约为2GB。

算法

我们使用YOLO(你只看一次)算法进行对象检测。YOLO是一个聪明的卷积神经网络(CNN),用于实时进行目标检测。该算法将单个神经网络应用于完整的图像,然后将图像划分为多个区域,并预测每个区域的边界框和概率。这些边界框是由预测的概率加权的。要理解YOLO,我们首先要分别理解这两个模型。

YOLO算法- YOLO算法是一种基于回归的算法,它不是选择图像中有趣的部分,而是预测整个图像中的类和包围框运行一次算法。要理解YOLO算法,我们首先需要了解实际预测的是什么。最终,我们的目标是预测一类对象和指定对象位置的边界框。每个包围框可以用四个描述符来描述:

●矩形x中央(bx, by)

●宽度(bw)

●高度(bh)

●对象的类

YOLO不会在输入图像中搜索可能包含对象的感兴趣区域,而是将图像分割成单元格,通常是19×19网格。每个细胞负责预测K个包围框。具有最大概率的类被选择并分配给特定的网格单元。类似的过程发生在图像中的所有网格单元格上。

在预测类概率后,下一步进行非最大抑制,这有助于算法消除不必要的锚点。

一旦完成,算法就会找到具有下一个最高类别概率的包围框,并进行相同的过程,直到我们剩下所有不同的包围框为止。

在此之后,我们几乎完成了所有的工作,算法最终输出所需的向量,显示各个类的包围框的细节。

微小Yolo算法——为了让Yolo运行得更快,Redmon等人(Yolo的创建者)定义了Yolo架构的一个变体,称为微小Yolo。

YOLOv3(和v3)根据一组预定的盒(具有特定的高宽比)预测偏移量——这些预定的包围框就是锚盒。我们设置了一个条件如果这些包围框的长度是6而不是YOLO算法我们就会实现Tiny YOLO模型

实现

1.它从文件的注释开始,这基本上意味着在文本文件中有图像的所有路径并使用它读取数据。

2.我们从网上下载Yolov3权重。然后我们将Darknet YOLO模型转换为Keras模型。然后实现目标检测。

3.从头开始实现它是一个具有挑战性的模型,特别是对于初学者,因为它需要开发许多定制的模型元素来进行训练和预测。例如,即使直接使用预先训练好的模型,也需要复杂的代码来提取和解释模型输出的预测边界框。

4.我们训练这个模型并添加模型检查点、降低学习率、提前停止和张量板。然后我们训练我们的模型与冻结层首先得到一个稳定的损失和Adam Optimizer编译,并节省权重。

5.冻结一层也是一种通过逐步冻结隐藏层来加速神经网络训练的技术。在神经网络的背景下冻结一层是关于控制权值更新的方式。当一个层被冻结时,这意味着权重不能被进一步修改。

6.完成以上动作后,继续训练模型。这基本上是对模型进行微调。为了应用这个更改,我们使用Adam Optimizer重新编译模型。然后再装一次,然后节省重量。模型训练在这里完成。

7.要将这个模型应用于视频/图像,我们将输入和输出视频路径的路径作为参数,然后加载模型并传递配置的路径和权重。然后,我们使用Cv2视频捕获指向输出视频文件,并确定视频中的帧数。从输入帧构造一个blob,然后执行YOLO对象检测器的前向传递,最后给出边界框

8.执行这一切我们最后遍历输出层和每个检测在每个输出后我们添加边框,定义其动态形状,根据对象的大小,过滤掉弱概率,应用non-maxima抑制抑制弱,重叠边界框,并确保至少一个检测存在。最后绘制一个边界框矩形并在框架上进行标记,并将输出框架写入磁盘。

最后,是我们的测试,可以看出进行了有效检测。

输入视频截图

输出视频截图

结论

我们在这个项目中探索的下一步是将其作为一个web应用程序部署。我们目前面临的主要限制是没有足够的RAM和空间来在云上托管它。但是,也许使用更轻的模型,我们会尝试,同时也有这个实时应用。

下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐

  • 【目标检测算法解读】yolo系列算法一

    前言 大家好,这是目标检测算法解读系列的第一篇文章,在这个系列中小糖豆会对经典的目标检测算法进行解读,在每个算法原理讲解完后,会有相应的源代码解析.小糖豆认为学习一个算法,既要弄清楚它的原理,又要真正 ...

  • 恺明大神 Mask R

    转   自 | AI开发者 原标题 |  Mask R-CNN with OpenCV 作 者 | Adrian Rosebrock 翻 译 | 天字一号(郑州大学).李美丽(华南师范大学).had_ ...

  • 深入了解目标检测深度学习算法的技术细节

    设置星标可优先看到本公众号的文章 转自:智能卫星研究院 本文将讨论目标检测的基本方法(穷尽搜索.R-CNN.Fast R-CNN和Faster R-CNN),并尝试理解每个模型的技术细节.为了让经验水 ...

  • 目标检测算法优化技巧:Bag of Freebies for Training Object Detection

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  • 综述:目标检测二十年(2001-2021)

    作者丨派派星 来源丨CVHub 编辑丨极市平台 极市导读 目标检测领域发展至今已有二十余载,本文将对目标检测领域近20年的发展做一次系统性的介绍,并为目标检测构建一个完整的知识体系架构. 引言 目标检 ...

  • 目标检测学习笔记

    这篇是看完吴恩达老师的 deeplearning.ai 课程里目标检测课程的学习笔记,文章的图片主要来自课程. 目录如下: 目标定位 基于滑动窗口的目标检测算法 滑动窗口的卷积实现 Bounding ...

  • ECCV 2018 | CornerNet:目标检测算法新思路

    极市平台是专业的视觉算法开发和分发平台,加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖 ...

  • (4条消息) 10分钟学会使用YOLO及Opencv实现目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  • 手把手用YOLO做目标检测

    来自:新机器视觉 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 作为目前机器学习领域最火热的研究方向之一,计算机视觉相关的技术一直备受关注.其中,目标检测是计算机视觉领域常见的问题之 ...

  • 死磕YOLO系列,不会 AI没关系,用OpenCV 调用YOLO 做目标检测

    如果你要完成下图的目标检测功能,你会怎么做? 对于视觉工程师而言,这当然是个小问题.可术业有专攻,不一定每个程序员都懂 AI 算法,那肯定就有一种方法把算法当成一个黑盒子,处理好输入输出就好了. 所以 ...

  • 目标检测实战:4种YOLO目标检测的C++和Python两种版本实现

    作者丨nihate 审稿丨邓富城 编辑丨极市平台 极市导读 本文作者使用C++编写一套基于OpenCV的YOLO目标检测,包含了经典的YOLOv3,YOLOv4,Yolo-Fastest和YOLObi ...

  • 10分钟学会使用YOLO及Opencv实现目标检测

    来源:新机器视觉 来自:小白学视觉 著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理 计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的 ...

  • 【点云论文速读】基于YOLO和K-Means的图像与点云三维目标检测方法

    标题:3D Object Detection Method Based on YOLO and K-Means for Image and Point Clouds 作者:Xuanyu Yin  an ...

  • 吊打一切现有版本的YOLO!旷视重磅开源YOLOX:新一代目标检测性能速度担当!

    作者丨happy 编辑丨极市平台 极市导读 YOLO系列终于又回到了Anchor-free的怀抱,不用费劲心思去设计anchor了!旷视开源新的高性能检测器YOLOX,本文将近两年来目标检测领域的各个 ...

  • C 学习笔记十六:使用OpenCv(c )调用yolo模型实现目标检测

    一.前言 因为之前都是直接使用python编程来实现目标检测,而且是直接使用模型.于是就想了解一下使用c++语言如何进行目标检测,也能帮助自己更好的熟悉c++的语法.简单起见,使用opencv的dnn ...

  • yolo目标检测修改检测框大小、粗细、位置及颜色等参数

    一.检测框粗细 在yolo训练完检测图片时,可能出现一些我们不想要的情况,比如原检测框太大,将我们的目标遮挡住了.如图所示: 这是可以将300改为800,值越大,框越细 二.检测框位置及大小 left ...