主要对yolo v2最后一层卷积conv23输出的特征如何转换为bbox和置信概率结果输出进行分析?

步骤1---数据变换

Conv23输出的blob数据是[batch_num,(5+cls_num)*anchor_num,cell_w,cell_h],其中batch_num是batch size,infer的时候一般为1,cls_num是目标分类数量,对于一般通用的coco数据集为80类,cell为输入图像的格子数量,yolov2里设为13*13,每个cell上设5个anchor。那么典型的conv23输出的数据为[1,425,13,13]维。

在步骤1中需要做维度变换,转换为[85,425]维进行处理,425=85*5为yolov2一共detection的数量,85为每次detection的检测信息。

转换步骤如下:

  1. 将425个channel矩阵从上到小排列,编号为0~424;
  2. 对于每个channel,将13*13展平为1*169,按照从左到右,从上到小的顺序展平;
  3. 变换后的矩阵为85行,13*13*5列,将13*13*5列分为5个区域,每个区域将输入的channel展平后的向量按从上到下顺序依次排列,举例说明:

区域1:channel 0~channel 84

区域2:channel 85~channel 169

区域3:channel 170~channel 254

区域4:channel 255~channel 339

区域5:channel 340~channel 424

转换后的数据格式如下:

横排为detection,顺序为每个anchor按cell的排列从左到右,从上到下依次遍历,共13*13个,每个cell预设了5个anchor,所以是13*13*5=425次。

纵排一共85维,均为浮点数,说明如下:

Δx:anchor box中x坐标的相对偏移量;

Δy:anchor box中y坐标的相对偏移量;

Δw:anchor box中宽度w的相对偏移量;

Δh:anchor box中高度h的相对偏移量;

det_confs:anchor box中检测到物体的概率;

cls_confs:anchor box中检测到物体后,各类的预测概率。

步骤2---计算x、y偏移量

首先设定13*13个cell的定点坐标,取每个cell的左上角坐标为grid_x,grid_y,示意图如下:

然后,按步骤1中得到的Δx和Δy,结合预设的cell坐标,计算得到推理后anchor box的坐标xs和ys

计算公式如下:

坐标位置,cell还有anchorbox对应关系如下:

步骤3--计算w和h

参照步骤3,根据步骤1得到的Δw和Δh,结合预设的anchor长宽比,得到推理后anchor box的宽ws和高hs

计算公式如下:

其中anchor_w和anchor_h为5个预设anchor的宽和高,规格如下:

Anchor1:w=0.57273 h=0.677385

Anchor2:w=1.87446 h=2.06253

Anchor3:w=3.33843 h=5.47434

Anchor4:w=7.88282 h=3.52778

Anchor5:w=9.77052 h=9.16828

参数规格和conf阈值设置详见yolo.cfg

步骤4--计算框内出现物体的概率和物体分类概率

det_confs为anchor box中检测到物体的概率;cls_confs为anchor box中检测到物体后,各类的预测概率。找到cls_confs中概率最大的值和索引位置class_index,class_index对应该物体的类别。

那么最终的物体检测概率为:

sigmoid(det_confs)*softmax(cls_confs)

步骤5--根据分类概率阈值进行信息过滤

设置一个conf阈值,大于阈值的进行输出,以每个detection为单位,输出格式为:

[xs  ys  ws  hs  det_confs  cls_confs  class_index],前6个元素为float类型,最后一个为int

步骤6--非极大值抑制进行二次过滤

为了在多特征金字塔做detection,避免漏检提高检测率,实际上做了很多低效率的detection,要通过非极大值抑制掉,也叫nms,nms是detection的通用处理方法,不局限于SSD、yolo、faster_rcnn、SPPnet,适用于多种目标检测算法框架。

基本实现流程如下:

Step 1:选取一个特定的label;

Step 2:对于该label下的所有detection,按conf从大到小排序;

Step 3:选其中conf最大的做基准,其他的detection和基准框计算面积重合度(IOU),这个IOU和nms阈值做比较,高于阈值的detection是没有意义的,从该label的detection列表中移除;

Step 4:从该label的detection列表中找到conf第2大的做基准,重复step3,直到列表中所有detection没有能移除的为止;

Step 5:选取下一个label,重复step2~4;

Step 6:遍历结束所有label对应的detection,最终完成nms,排列得到最后的nms_out detection列表。

其中IOU是根据各个detection的4个坐标值计算得到的,为面积的交并比:

根据上图计算A、B和A B重叠的面积如下:

那么IoU值计算公式如下:

YOLO 检测算法分析相关推荐

  1. 小车yolo机械臂(一)ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体

    ros下gazebo搭建小车(可键盘控制)安装摄像头仿真 加载yolo检测识别标记物体 目录总览 一,项目代码下载 二,ros下实现darknet_ros(YOLO V3)检测 2.1 编译整个项目 ...

  2. Gazebo搭建虚拟环境完成ROS机器人定位导航仿真及YOLO检测识别标记物体

    文章目录 前言 一.前期准备 (一)创建工作空间 (二)功能包racecar 二.Gazebo搭建自己的虚拟环境 (一)相关设置 (二)运行小车模型 (三)手动搭建环境 (四)运行创建环境 三.进行g ...

  3. Mask_YOLO_Caffe:基于Mask-RCNN和YOLO检测的工程实现(附源代码)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者Leon Wu授权转载,不得擅自二次转载.原文链接:https://zhuanlan.z ...

  4. Yolo家族算法分析

    1 历史简介 2 YOLO算法思想 YOLO算法的基本思想: (1)将图片划分为S×SS \times SS×S个网格: (2)计算每个边界框和置信度: (3)计算每个网格属于某个类别的概率: (4) ...

  5. 海康威视摄像头用yolo检测行人的一些问题

    今天拿到了海康威视的摄像头,拿来做目标检测,因为是网线接口,所以必须要用交换机,然后查它的IP地址,然后才可以连接,不能把网线直接连接到主机上,下面是简单的读取摄像头的代码. import cv2 i ...

  6. 使用Python和YOLO检测车牌

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 计算机视觉无处不在-从面部识别,制造,农业到自动驾驶汽车.今天,我 ...

  7. 动态活体检测 | 算法分析

    动态活体检测需要用户高度配合,仅需单目RGB摄像头配合特定动作即可完成,安全性比纯图片识别要高一些,主要包含4个动作: (1)眨眼动作 通过人脸关键点检测确定上眼皮和下眼皮的位置坐标 由于没有中心点, ...

  8. YOLO、SSD、FPN、Mask-RCNN检测模型对比

    YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...

  9. python实现yolo目标检测_从零开始PyTorch项目:YOLO v3目标检测实现

    在过去几个月中,我一直在实验室中研究提升目标检测的方法.在这之中我获得的最大启发就是意识到:学习目标检测的最佳方法就是自己动手实现这些算法,而这正是本教程引导你去做的. 在本教程中,我们将使用 PyT ...

最新文章

  1. Python traceback 模块, 打印异常信息
  2. windows中的常用Dos命令
  3. 在Qt中使用C++代码创建界面
  4. python处理word表格格式_python---word表格样式设置
  5. Windows环境与Linux环境条件宏
  6. C++中的error C2662,const的this指针问题
  7. 使用listen()和accept()函数
  8. 无线电射频能量的收集
  9. 动手实践感受下企业微信的网页授权登录、扫码授权登录
  10. Ubuntu下安装GParted并分区,进行虚拟机内存扩展
  11. 读 PHP - Pimple 源码笔记(下)
  12. 程序员去哪接私活?分享10个兼职平台,人已赚麻
  13. HTML5 模板 地址
  14. Android各版本分布
  15. android 功能模块之通讯模块四
  16. java母子年龄计算,小明12岁了,妈妈的年龄比小明大20岁,请问几年后妈妈的年龄是小明的两倍。
  17. 34 《避开错误决策的四个陷阱》 -豆瓣评分8.0
  18. stata 求输出相关系数矩阵命令_Stata|①Get a foot in the door
  19. EAUML日拱一卒-微信小程序实战:位置闹铃 (15)-实现监控点状态迁移功能
  20. html页面forEach用法,jQuery教程之使用模板动态添加html元素,相当于jstl里的foreach...

热门文章

  1. 决策树之ID3、C4.5、C5.0等五大算法及python实现
  2. Python函数参数类型*、**的区别
  3. Proxy-Go v7.0 发布,你应该拥有的强大代理工具!
  4. Codeforces Round #533 (Div. 2) 部分题解A~D
  5. 数据库备份与快照备份
  6. TensorFlow 训练单特征和多特征的线性回归
  7. InfoWorld 公布开源软件( 2019 年)
  8. 【机器学习】基于GBDT的数据回归及python实现
  9. ViT (Vision Transformer) ---- SimpleRNN + Attention
  10. 项目部署到服务器后字符编码,将UTF-8编码的数据发布到服务器会丢失某些字符...