YOLO理解及边界框计算

一、YOLO的算法流程

 1.设定类别数,设定图片划分为多少个网格,每个网格预测出来几个边框。原文是20个类别,并将图片划分为7*7网格,每个网格预测出2个边框。

 2.将图片缩放到448*448,然后输入到CNN网络(卷积、池化、两个全连接),然后输出的就是7*7*30的tensor(20个对象分类的概率、2个bounding box的位置(2*4=8)、2个bounding box的置信度),通过处理输出box_confidence  box_xy  box_wh  box_class_probs。即在图片上可得到边界框7*7*2=98.

 3.设定阈值过滤边框。

  • 第一步 计算所有box中每个类别的得分:box_confidence * box_class_probs
  • 第二步 找到每个box所有类别中的最高分,并记录其索引(也就知道了类别)
  • 第三步 根据阈值过滤并创建掩码 : filtering_mask = (box_class_scores >= threshold)
  • 第四步 使用掩码只输出阈值过滤后的score,box, classes

 4.进行非极大值抑制(NMS).

  • 选择得分值最高的边界框添加到输出列表中,将其从边界框列表中删除
  • 计算得分值最高的边界框与其他候选框的IOU
  • 删除IOU大于设定的阈值IOU的边界框
  • 重复上诉过程,直至边界框列表为空。

 5.将最后输出列表里的边界框显示在图片,并显示分数和所属类别。

二、yolo中边界框的坐标计算

每个边界框的中心点坐标均为相对于其对应的cell左上点坐标的偏移,此时即保证每个边界框的中心点均落在其对应的cell中。其计算公式如下:

上式中:

  • (b_{x},b_{y},b_{w},b_{h})即为预测的边界框bounding box在feature map中的中心点坐标和长宽;
  • (t_{x},t_{y},t_{w},t_{h})即为网络学习的相对于先验框(prior,anchor)的offsets;
  •  (c_{x},c_{y})是各个cell的左上点坐标;p_{h},p_{w} 即为先验框(prior,anchor)相对于特征图的长和宽

参考链接

 https://www.jianshu.com/p/cad68ca85e27

https://www.jianshu.com/p/d452b5615850

https://blog.csdn.net/yzy__zju/article/details/98039103

 

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值