点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

自从世界了解人工智能以来,有一个特别的用例已经被讨论了很多。它们是自动驾驶汽车。我们经常在科幻电影中听到、读到甚至看到这些。有人说,我们将在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扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

使用 YOLO 进行目标检测相关推荐

  1. 基于YOLO的目标检测界面化部署实现(支持yolov1-yolov5、yolop、yolox)

    基于YOLO的目标检测界面化部署实现(支持yolov1-yolov5.yolop.yolox) 代码下载地址:下载地址 安装 操作系统:Win10.Win7.Ubuntu16.04(其他操作系统没有测 ...

  2. 从零开始PyTorch项目:YOLO v3目标检测实现

    从零开始PyTorch项目:YOLO v3目标检测实现 目标检测是深度学习近期发展过程中受益最多的领域.随着技术的进步,人们已经开发出了很多用于目标检测的算法,包括 YOLO.SSD.Mask RCN ...

  3. 一文详解 YOLO 2 与 YOLO 9000 目标检测系统

    一文详解 YOLO 2 与 YOLO 9000 目标检测系统 from 雷锋网 雷锋网 AI 科技评论按:YOLO 是 Joseph Redmon 和 Ali Farhadi 等人于 2015 年提出 ...

  4. 【百度飞浆】YOLO系列目标检测算法详解

    YOLO系列目标检测算法详解 1 YOLO发展史 2 YOLO v3目标检测原理 3 PaddleDetection中YOLO v3模型介绍 4 YOLO v3配置演练 1 YOLO发展史 2 YOL ...

  5. [RCNN]-[YOLO]-[SSD]目标检测算法

    原文链接:http ://chuansong.me/n/353443351445 转载自深度学习大讲堂公众号    开始本文内容之前,我们先来看一下上边左侧的这张图,从图中你看到了什么物体?他们在什么 ...

  6. YOLO系列目标检测算法-YOLOv7

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  7. YOLO系列目标检测算法-YOLOv6

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  8. YOLO系列目标检测算法——YOLOR

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  9. YOLO系列目标检测算法——YOLOS

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

  10. YOLO系列目标检测算法——PP-YOLO

    YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Sca ...

最新文章

  1. 2021年大数据Flink(三十三):​​​​​​​Table与SQL相关概念
  2. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法
  3. element-ui中el-tree树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
  4. 第6章 数组、指针与字符串(一)基于范围的for循环
  5. Adobe illustrator 图的放置和微调 - 连载 9
  6. 工作实战: 让 SQL 飞起来
  7. GNN上用到的Tasks,Dataset and Benchmark
  8. python怎么通过占位符_如何输入占位符?
  9. 如何配置神经网络中的层数和节点数
  10. 如何避免 obj1 + obj2 = obj3 错误?
  11. 用反卷积(Deconvnet)可视化和理解卷积网络
  12. ansa打开catia文件_catia 帮助文件如何打开?
  13. JavaScript设计模式 - 适配器模式
  14. Git实用技巧36招
  15. api接口如何对接?
  16. python文件操作和绘制曲线
  17. 微信QQ等主流应用上线国产系统UOS:界面曝光
  18. 强迫症 之 Android Studio 格式化 XML
  19. vue项目中elementUI的日期时间选择器的默认修改以及能选择当天的未来时间24点
  20. c++项目,制作GIF动态图

热门文章

  1. 一文全面了解基于内容的推荐算法
  2. 如何将TensorFlow Serving的性能提高超过70%?
  3. 7年增长16倍,清华AI+ML课程学生数暴增 | AI Index 2018
  4. 苹果智能音箱HomePod确定开售时间,权威人士质疑:是否太晚?
  5. Kirito 的博客崩了,这次是因为...
  6. 用 MySQL 实现分布式锁,你听过吗?
  7. 理解Java对象:要从内存布局及底层机制说起,话说....
  8. 原来这才是 Kafka!(多图+深入)
  9. HashMap 为什么线程不安全?
  10. 从绩点 1.8 逆袭的复旦博士,华为天才少年!