Tensorflow框架:目标检测Yolo思想

Yolo-You Only Look Once

YOLO算法采用一个单独的CNN模型实现end-to-end的目标检测:

  1. Resize成448448,图片分割得到77网格(cell)
  2. CNN提取特征和预测:卷积部分负责提取特征。全链接部分负责预测:
  3. 过滤bbox(通过nms)
    在这里插入图片描述
    • YOLO算法整体来说就是把输入的图片划分为SS格子,这里是33个格子。
    • 当被检测的目标的中心点落入这个格子时,这个格子负责检测这个目标,如图中的人。
    • 我们把这个图片输入到网络中,最后输出的尺寸也是SSn(n是通道数),这个输出的SS与原输 入图片SS相对应(都是33)。
    • 假如我们网络一共能检测20个类别的目标,那么输出的通道数n=2
    (4+1)+20=30。这里的2指 的是每个格子有两个标定框(论文指出的),4代表标定框的坐标信息, 1代表标定框的置信度, 20是检测目标的类别数。
    • 所以网络最后输出结果的尺寸是SSn=3330。
    关于标定框:
    • 网络的输出是S x S x (5*B+C) 的一个 tensor(S-尺寸,B- 标定框个数,C-检测类别数,5-标定框的信息)。
    • 5分为4+1:
    • 4代表标定框的位置信息。框的中心点(x,y),框的高宽 h,w。
    • 1表示每个标定框的置信度以及标定框的准确度信息。
    一般情况下,YOLO 不会预测边界框中心的确切坐标。它预测:
    •与预测目标的网格单元左上角相关的偏移;
    •使用特征图单元的维度进行归一化的偏移。
    例如: 以上图为例,如果中心的预测是 (0.4, 0.7),则中心在 13 x 13 特征图上的坐标是 (6.4, 6.7)(红色单 元的左上角坐标是 (6,6))。
    但是,如果预测到的 x,y 坐标大于 1,比如 (1.2, 0.7)。那么预测的中心坐标是 (7.2, 6.7)。注意该中心在红色单元右侧的单元中。这打破了 YOLO 背后的理论,因为如果我们假设红色框负责预测目 标狗,那么狗的中心必须在红色单元中,不应该在它旁边的网格单元中。 因此,为了解决这个问题,我们对输出执行 sigmoid 函数,将输出压缩到区间 0 到 1 之间,有效 确保中心处于执行预测的网格单元中。
    每个标定框的置信度以及标定框的准确度信息:
    左边代表包含这个标定框的格子里是否有目标。有=1没有=0。 右边代表标定框的准确程度, 右边的部分是把两个标定框(一个是Ground truth一个是预测的标 定框)进行一个IOU操作,即两个标定框的交集比并集,数值越大,即标定框重合越多,越准确。
    在这里插入图片描述
    我们可以计算出各个标定框的类别置信度(class-specific confidence scores/ class scores): 表达的是该标定框中目标属于各个类别的可能性大小以及标定框匹配目标的好坏。
    每个网格预测的class信息和bounding box预测的confidence信息相乘,就得到每个bounding box 的class-specific confidence score。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    • 其进行了二十多次卷积还有四次最大池化。其中3x3卷积用于提取特征,1x1卷积用于压缩特征,最后将图像 压缩到7x7xfilter的大小,相当于将整个图像划分为7x7的网格,每个网格负责自己这一块区域的目标检测。
    • 整个网络最后利用全连接层使其结果的size为(7x7x30),其中7x7代表的是7x7的网格,30前20个代表的是预测 的种类,后10代表两个预测框及其置信度(5x2)。
    在这里插入图片描述

在这里插入图片描述
对每一个网格的每一个bbox执行同样操作: 7x7x2 = 98 bbox (每个bbox既有对应的class信息又有坐标信息)
在这里插入图片描述
在这里插入图片描述
得到每个bbox的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的 boxes进行NMS处理,就得到最终的检测结果。
在这里插入图片描述
排序后,不同位置的框内,概率不同:
在这里插入图片描述
以最大值作为bbox_max,并与比它小的非0值(bbox_cur)做比较:IOU
在这里插入图片描述
递归,以下一个非0 bbox_cur(0.2)作为bbox_max继续比较IOU:
在这里插入图片描述
最终,剩下n个框。
得到每个bbox的class-specific confidence score以后,设置阈值,滤掉得分低的boxes,对保留的boxes进行NMS处理,就得到最终的检测结果。
在这里插入图片描述
对bb3(20×1)类别的分数,找分数对应最大类别的索引.---->class bb3(20×1)中最大的分---->score
在这里插入图片描述
根据不同类划分不同的框:
在这里插入图片描述
Yolo的缺点:
•YOLO对相互靠的很近的物体(挨在一起且中点都落在同一个格子上的情况),还有很小的 群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
•测试图像中,当同一类物体出现不常见的长宽比和其他情况时泛化能力偏弱。

Yolo2

1.Yolo2使用了一个新的分类网络作为特征提取部 分。
2. 网络使用了较多的3 x 3卷积核,在每一次池化操 作后把通道数翻倍。
3. 把1 x 1的卷积核置于3 x 3的卷积核之间,用来压 缩特征。
4. 使用batch normalization稳定模型训练,加速收 敛。
5. 保留了一个shortcut用于存储之前的特征。
6. 除去网络结构的优化外,yolo2相比于yolo1加入 了先验框部分,最后输出的conv_dec的shape为 (13,13,425):
• 13x13是把整个图分为13x13的网格用于预测。
• 425可以分解为(85x5)。在85中,由于yolo2常 用的是coco数据集,其中具有80个类;剩余 的5指的是x、y、w、h和其置信度。x5意味着 预测结果包含5个框,分别对应5个先验框。
在这里插入图片描述

Yolo3

YOLOv3相比于之前的yolo1和yolo2,改进较大,主要 改进方向有:
1、使用了残差网络Residual
2、提取多特征层进行目标检测,一共提取三个特征 层,它的shape分别为(13,13,75),(26,26,75), (52,52,75)。最后一个维度为75是因为该图是基于voc 数据集的,它的类为20种。yolo3针对每一个特征层 存在3个先验框,所以最后维度为3x25。
3、其采用反卷积UpSampling2d设计,逆卷积相对于 卷积在神经网络结构的正向和反向传播中做相反的运 算,其可以更多更好的提取出特征。
在这里插入图片描述

代码实现:

在资源中
实现结果如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性回归非线性回归_了解线性回归

线性回归非线性回归Let’s say you’re looking to buy a new PC from an online store (and you’re most interested in how much RAM it has) and you see on their first page some PCs with 4GB at $100, then some with 16 GB at $1000. Your budget is $500. So, you es…

朴素贝叶斯和贝叶斯估计_贝叶斯估计收入增长的方法

朴素贝叶斯和贝叶斯估计Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works wi…

numpy统计分布显示

import numpy as np from sklearn.datasets import load_iris dataload_iris()petal_lengthnumpy.array(list(len[2]for len in data[data]))#取出花瓣长度数据 print(np.max(petal_length))#花瓣长度最大值 print(np.mean(petal_length))#花瓣长度平均值 print(np.std(petal_l…

Keras框架:人脸检测-mtcnn思想及代码

人脸检测-mtcnn 概念: MTCNN,英文全称是Multi-task convolutional neural network,中文全称是多任务卷积神经网络, 该神经网络将人脸区域检测与人脸关键点检测放在了一起。 从工程实践上,MTCNN是一种检测速度和准确率…

python中格式化字符串_Python中所有字符串格式化的指南

python中格式化字符串Strings are one of the most essential and used datatypes in programming. It allows the computer to interact and communicate with the world, such as printing instructions or reading input from the user. The ability to manipulate and form…

Javassist实现JDK动态代理

提到JDK动态代理,相信很多人并不陌生。然而,对于动态代理的实现原理,以及如何编码实现动态代理功能,可能知道的人就比较少了。接下一来,我们就一起来看看JDK动态代理的基本原理,以及如何通过Javassist进行模…

数据图表可视化_数据可视化如何选择正确的图表第1部分

数据图表可视化According to the World Economic Forum, the world produces 2.5 quintillion bytes of data every day. With so much data, it’s become increasingly difficult to manage and make sense of it all. It would be impossible for any person to wade throug…

Keras框架:实例分割Mask R-CNN算法实现及实现

实例分割 实例分割(instance segmentation)的难点在于: 需要同时检测出目标的位置并且对目标进行分割,所以这就需要融合目标检测(框出目标的位置)以及语义分割(对像素进行分类,分割…

机器学习 缺陷检测_球检测-体育中的机器学习。

机器学习 缺陷检测🚩 目标 (🚩Objective) We want to evaluate the quickest way to detect the ball in a sport event in order to develop an Sports AI without spending a million dollars on tech or developers. Quickly we find out that detec…

使用python和javascript进行数据可视化

Any data science or data analytics project can be generally described with the following steps:通常可以通过以下步骤来描述任何数据科学或数据分析项目: Acquiring a business understanding & defining the goal of a project 获得业务理解并定义项目目…

为什么饼图有问题

介绍 (Introduction) It seems as if people are split on pie charts: either you passionately hate them, or you are indifferent. In this article, I am going to explain why pie charts are problematic and, if you fall into the latter category, what you can do w…

先知模型 facebook_使用Facebook先知进行犯罪率预测

先知模型 facebookTime series prediction is one of the must-know techniques for any data scientist. Questions like predicting the weather, product sales, customer visit in the shopping center, or amount of inventory to maintain, etc - all about time series …

github gists 101使代码共享漂亮

If you’ve been going through Medium, looking at technical articles, you’ve undoubtedly seen little windows that look like the below:如果您一直在阅读Medium,并查看技术文章,那么您无疑会看到类似于以下内容的小窗口: def hello_…

基于Netty的百万级推送服务设计要点

1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类:1&#x…

鲜为人知的6个黑科技网站_6种鲜为人知的熊猫绘图工具

鲜为人知的6个黑科技网站Pandas is the go-to Python library for data analysis and manipulation. It provides numerous functions and methods that expedice the data analysis process.Pandas是用于数据分析和处理的Python库。 它提供了加速数据分析过程的众多功能和方法…

VRRP网关冗余

实验要求 1、R1创建环回口,模拟外网 2、R2,R3使用VRRP技术 3、路由器之间使用EIGRP路由协议  实验拓扑  实验配置  R1(config)#interface loopback 0R1(config-if)#ip address 1.1.1.1 255.255.255.0R1(config-if)#int e0/0R1(config-if)#ip addr…

大熊猫卸妆后_您不应错过的6大熊猫行动

大熊猫卸妆后数据科学 (Data Science) Pandas is used mainly for reading, cleaning, and extracting insights from data. We will see an advanced use of Pandas which are very important to a Data Scientist. These operations are used to analyze data and manipulate…

数据eda_关于分类和有序数据的EDA

数据eda数据科学和机器学习统计 (STATISTICS FOR DATA SCIENCE AND MACHINE LEARNING) Categorical variables are the ones where the possible values are provided as a set of options, it can be pre-defined or open. An example can be the gender of a person. In the …

jdk重启后步行_向后介绍步行以一种新颖的方式来预测未来

jdk重启后步行“永远不要做出预测,尤其是关于未来的预测。” (KK Steincke) (“Never Make Predictions, Especially About the Future.” (K. K. Steincke)) Does this picture portray a horse or a car? 这张照片描绘的是马还是汽车? How likely is …

mongodb仲裁者_真理的仲裁者

mongodb仲裁者Coming out of college with a background in mathematics, I fell upward into the rapidly growing field of data analytics. It wasn’t until years later that I realized the incredible power that comes with the position. As Uncle Ben told Peter Par…