文章目录[隐藏]
![]()
相关内容:
YOLOv3论文翻译
从头实现YOLOv3:第1部分
从头实现YOLOv3:第2部分
从头实现YOLOv3:第3部分
从头实现YOLOv3:第4部分
从头实现YOLOv3:第5部分
核心思想
输入图像经过全卷积神经网络得到 3 种尺度(跨尺度预测)的输出特征图,在输出特征图上划分 cell(单元格),对于 ground truth box 中心所在的 cell,该 cell 就负责预测 ground truth box 框中的目标。该 cell 先计算事先指定的 3 种 anchor 与 ground truth box 的 IOU,选出 IOU 最高的 anchor,然后用选出的 anchor 生成我们需要的检测框,最后根据该检测框对不同类别的置信度,来检测类别。
代码中实际上把每个
anchor生成的检测框都计算出来了,然后在所有检测框中进行挑选。
网络结构
yolo 使用全卷积神经网络,包括 convolutional、shortcut、route、upsample 和 yolo,没有用 polling。
convolutional
stride 指定步长。
stride 为 1 的卷积层不改变输入特征图的大小。
stride 为 2 的卷积层进行下采样,将输入特征图缩小为 52 x 52、26 x 26 和 13 x 13,用于划分 cell。
shortcut
from 指定之前的网络层编号。
将之前一层和 from 指定的网络层的特征图相加,然后输出。
route
layers 指定之前的网络层编号。
layers 只有一个值时,将 layers 指定的网络层的特征图输出。
layers 有两个值时,将指定的两个网络层的特征图沿深度连接,然后输出。
upsample
将 13 x 13 放大成 26 x 26,26 x 26 放大成 52 x 52。
yolo
有 3 个 yolo,每个 yolo 对应于 3 种不同尺度的特征图——13 x 13、26 x 26 和 52 x 52。
每个 yolo 有 3 种 anchor,通过 anchor 和输入特征图,计算出检测框,计算方式见下文。
检测框属性
以下公式描述了如何转换网络输出特征图以获得预测边界框。

bx、by、bw、bh是预测边界框的 x、y 中心坐标、宽度和高度。 tx, ty, tw, th 是网络输出的特征图中的特征。 cx 和 cy 是网格的左上角坐标。 pw 和 ph 是anchor尺寸。
中心坐标
先用 sigmoid 归一化特征图输出的中心的坐标,再加上中心所在 cell 左上角的偏移坐标。
边界框尺寸
先用 exp 处理特征图输出的边界框的尺寸,然后乘以 yolo 中指定的 anchor 的尺寸。
Objectness Score
Objectness Score表示目标在边界框内的概率。对于红色和相邻单元格,它应该接近 1,而对于角落的网格,它几乎是 0。
objectness score 也通过 sigmoid 传递,因为它被解释为概率(在 0 到 1 之间)。
class score
表示检测到的目标属于特定类别(狗、猫、香蕉、汽车等)的概率,用 sigmoid 处理 class score。
检测框处理
利用类别置信度的阈值处理
根据边界框的 objectness score 过滤边界框,objectness score 低于阈值的边界框会被忽略。
NMS
避免多个边界框检测到同一个目标。
预测
输出的预测结果中,每张图像有 8 个属性,即该图像的索引、4 个角坐标、objectness score、置信度最大的类和该类的索引。
图像索引对应哪张图像,4 个角坐标对应检测框位置,类别索引对应检测框在该图像中检测出的类别。
创新点和改进
one-stage,同时进行边界框回归和目标分类,加快训练速度YOLO将图像划分为S x S网格,而不是用RPN网络提取regional proposal,加快了检测速度YOLO9000引入anchor,提高了检测的召回率YOLOv3使用特征金字塔网络结构,实现多尺度检测,提升对不同大小图像的检测准确度- 因为一个框内的目标可能属于多个类别,分类预测不使用
softmax,而是使用多个独立的logistic分类器,损失函数采二元交叉熵损失 - 更好的基础分类网络(类
ResNet)和分类器
版权声明:本文为CSDN博主「ManiacLook」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ManiacLook/article/details/121632505
![]()

暂无评论