提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、YOLO网络结构
YOLO 网络借鉴了 GoogLeNet 分类网络结构,不同的是 YOLO 使用 1x1 卷积层和 3x3 卷积层替代 inception module。如下图所示,整个检测网络包括 24 个卷积层和 2 个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。
YOLOv1 网络结构
检测流程
- 先将图片缩放到固定尺寸
- YOLO 将输入图像划分为 S*S (论文中是 7×7)的栅格,每个栅格负责检测中心落在该栅格中的物体。
- 每一个栅格预测 B (论文中是 2 个)个 bounding boxes(对每个边界框会预测 5 个值,分别是边界框的中心 x,y(相对于所属网格的边界),边界框的宽高 w, h(相对于原始输入图像的宽高的比例)),以及这些 bounding boxes 的 confidence scores。(边界框与 ground truth box 的 IOU 值)
- 同时每个网格还需要预测 c (论文中的 c=20)个类条件概率 (是一个 c 维向量,表示某个物体 object 在这个网格中,且该 object 分别属于各个类别的概率,这里的 c 类物体不包含背景)
- 每个网格需要预测 2x5+20=30 个值,这些值被映射到一个 30 维的向量
- YOLO 最后采用非极大值抑制(NMS)算法从输出结果中提取最有可能的对象和其对应的边界框。(下面非极大抑制的流程)
- 1. 设置一个 Score 的阈值,一个 IOU 的阈值(overlap);
- 2. 对于每类对象,遍历属于该类的所有候选框,①过滤掉 Score 低于 Score 阈值的候选框; ②找到剩下的候选框中最大 Score 对应的候选框,添加到输出列表; ③进一步计算剩下的候选框与②中输出列表中每个候选框的 IOU,若该 IOU 大于设置的 IOU 阈值,将该候选框过滤掉(大于一定阈值,代表重叠度比较高),否则加入输出列表中; ④最后输出列表中的候选框即为图片中该类对象预测的所有边界框
- 3. 返回步骤 2 继续处理下一类对象。
更多详细解释可参考YOLO目标检测从V1到V3结构详解 - 腾讯云开发者社区-腾讯云
二、包围框与置信度
1. 包围框
2. 置信度
IoU(Intersection-over-Union)指标 IoU 简称交并比,顾名思义数学中交集与并集的比例。假设有两个集合 A 与 B, IoU 即等于 A 与 B 的交集除以 A 与 B 的并集,表达式如下:
在目标检测中,IoU 为预测框 (Prediction) 和真实框 (Ground truth) 的交并比。如下图所示,在关于小猫的目标检测中,紫线边框为预测框 (Prediction),红线边框为真实框 (Ground truth)。
三、YOLO损失函数
如上图所示,损失函数分为坐标预测(蓝色框)、含有物体的边界框的 confidence 预测(红色框)、不含有物体的边界框的 confidence 预测(黄色框)、分类预测(紫色框)四个部分。
由于不同大小的边界框对预测偏差的敏感度不同,小的边界框对预测偏差的敏感度更大。为了均衡不同尺寸边界框对预测偏差的敏感度的差异。作者巧妙的对边界框的 w,h 取均值再求 L2 loss. YOLO 中更重视坐标预测,赋予坐标损失更大的权重,记为 coord,在 pascal voc 训练中 coodd=5 ,classification error 部分的权重取 1。
某边界框的置信度定义为:某边界框的 confidence = 该边界框存在某类对象的概率 pr (object)* 该边界框与该对象的 ground truth 的 IOU 值 ,若该边界框存在某个对象 pr (object)=1 ,否则 pr (object)=0 。由于一幅图中大部分网格中是没有物体的,这些网格中的边界框的 confidence 置为 0,相比于有物体的网格,这些不包含物体的网格更多,对梯度更新的贡献更大,会导致网络不稳定。为了平衡上述问题,YOLO 损失函数中对没有物体的边界框的 confidence error 赋予较小的权重,记为 noobj,对有物体的边界框的 confidence error 赋予较大的权重。在 pascal VOC 训练中 noobj=0.5 ,有物体的边界框的 confidence error 的权重设为 1.
四、YOLO训练与NMS
NMS(非极大值抑制) 核心思想是:选择得分最高的作为输出,与该输出重叠的去掉,不断重复这一过程直到所有备选处理完。
YOLO训练代码可以参考
https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
https://blog.csdn.net/Kefenggewu_/article/details/122186786
YOLO v1模型效果
YOLO v3模型效果
五、语义分割与FCN
1. 语义分割问题
2. 深度学习图像分割算法发展
3. 语义分割基本思想
滑动窗口➢ 滑动次数太多,计算太慢,重复计算太多
FCN网络结构➢
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
4. FCN具体实现
FCN中第6、7、8层都是通过1 × 1卷积得到的,第6层的输出是4096 × 7 × 7,第7层的输出是4096 × 7 × 7 ,第8层的输出是1000 × 7 × 7,即1000个大小是7 × 7的特征图(称为heatmap)。
输出的特征图(称为heatmap),颜色越贴近红色表示对应数值越大。
更多详细解释可参考https://www.cnblogs.com/gujiangtaoFuture/articles/12177870.html
5. FCN训练结果
6. FCN评价指标与标注工具
常见标注工具---Labelme, EISeg
总结
以上就是今天要讲的内容,本文介绍了YOLOv1 网络结构,包围框与置信度,YOLO损失函数,YOLO训练与NMS算法,并了解了语义分割问题,深度学习图像分割算法发展,语义分割基本思想,FCN具体实现,FCN训练结果,FCN评价指标与标注工具。