AI大视觉(八) | Yolov3 如何调整先验框进行解码?

摘要:
解码是将预测的调整参数应用于先验框。解码原理YOLOv3使用锚框来通过参考RPN网络来预测边界框相对于先验框的偏移。YOLOv3预测边界框的中心点相对于相应单元格左上角的相对偏移值。您可以计算边界框相对于整个图片的位置和大小(4个值介于0和1之间)。将上述4个值乘以图片的宽度和长度(像素值),得到边界框的最终位置和大小。

  本文来自公众号“AI大道理”

解码就是将预测得到的调整参数应用于先验框,从而得到预测框。

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第1张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张​解码原理

YOLOv3借鉴RPN网络使用anchor boxes来预测边界框相对先验框的offsets。

YOLOv3预测边界框中心点相对于对应cell左上角位置的相对偏移值,使用sigmoid函数处理偏移值,这样预测的偏移值在(0,1)范围内(每个cell的尺度看做1),把边界框中心点约束在当前cell中。

根据边界框预测的4个offsetstx,ty,tw,th,可以按如下公式计算出边界框实际位置和大小:

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第3张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

(cx,xy)为cell的左上角坐标,在计算时每个cell的尺度为1,所以当前cell的左上角坐标为((1,1)。

由于sigmoid函数的处理,边界框的中心位置会约束在当前cell内部,防止偏移过多。

而pw和ph是先验框的宽度与长度,它们的值也是相对于特征图大小的,在特征图中每个cell的长和宽均为1。

这里记特征图的大小为(W,H),可以将边界框相对于整张图片的位置和大小计算出来(4个值均在0和1之间)

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第5张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

将上面的4个值分别乘以图片的宽度和长度(像素点值)就可以得到边界框的最终位置和大小了,这就是YOLOv3边界框的解码原理。

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第7张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第1张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张​解码过程

(1)生成先验框

以13*13这个特征层为例,一共有13*13个网格,每个网格有3个先验框。

生成的先验框的中心是网格的左上角。

先验框的宽高可以自己设定或者通过K-means聚类得到。

(2)缩放先验框

解码是在特征层上进行的,所以需要缩放先验框至特征层大小的比例,计算出先验框在特征层上对应的框高。

(3)调整先验框

解码每次只能对一个特征层进行解码,因此需要进行3次循环解码。

yolov3网络的预测结果得到一维的参数,这些参数包含了宽高的调整参数、中心的调整参数、置信度、类别概率等。

 

先验框的中心位置的调整参数,sigmoid使得每个物体由左上角的网格点进行预测,因为0-1的话中心只能往右下角偏移。

得到这些调整参数利用解码原理中的公式作用到先验框,对先验框进行调整,获得最终的预测框。

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第11张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第13张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

(4)得到预测框

此时获得的scaled_anchors大小是相对于特征层的。

先验框的调整是在特征图上进行调整的,然后再放大到原图上得到最终的预测框。

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第15张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

 

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第1张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张​总结

Yolov3 的解码就是利用预测结果的调整参数,从而调整先验框得到预测框的过程。

调整是在特征图上进行的,因此需要先根据特征图大小缩放先验框,然后利用公式作用到先验框上,实现先验框的调整。

再将调整后的先验框放大到原图上,得到预测框。

这就是整个解码过程了。

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第19张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

  

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

AI大视觉(八) | Yolov3 如何调整先验框进行解码?第21张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张​     AI大视觉(八) | Yolov3 如何调整先验框进行解码?第23张AI大视觉(八) | Yolov3 如何调整先验框进行解码?第2张

—————————————————————

投稿吧   | 留言吧


免责声明:文章转载自《AI大视觉(八) | Yolov3 如何调整先验框进行解码?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序之底部菜单actionsheet针对监控摄像机(海康、大华等)录像 .h264 文件的流媒体播放设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Qt5之坐标系统

窗口坐标为逻辑坐标,是基于视口坐标系的。 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射:  QPainter::setWindow 修改了窗口位置和大小(左上角重新定义了一个数值和长度) QPainter::setViewport 修改了视口位置和像素个数(左上角移动到相应位置和像素个数) -------------...

VC中Spin控件的使用

微调按钮设置成set buddy inter选上 然后可以(1)通过 setbuddy+setrange函数    或(2)auto buddy自动选上,只要编辑框的tab order 比微调按钮小1就可以自动了 (另转)VC中Spin控件的使用 http://leichaofu.blog.163.com/blog/static/459481820098...

【转】Selenium模拟JQuery滑动解锁

滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路。 首先先看个例子。 https://www.helloweba.com/demo/2017/unlock/ 当我手动点击滑块时,改变的只是样式: 1、slide-to-unlock-handle 表示滑块,滑块的左边距在变大(因为它在向右移动嘛!...

百度地图滚轮缩放时产生位置偏移 问题

最近在调用百度地图的过程中,发生了在地图上滚轮缩放,结果产生了位置偏移的情况,同样在移动端,双指缩放也有同样的问题。 这个问题产生的原因主要是因为百度地图加载的位置因为定位等原因,与整个html 页面产生了不同步滚动的问题。 百度地图的缩放是基于body层的,如果body层有滚动条,并且不在最顶端,在当前位置插入了百度地图,也就是出现该问题时的状态,这个时...

KMP算法(推导方法及模板)

  介绍        克努斯-莫里斯-普拉特算法Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个词W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。         此算法可以在O(n+m)时间数量级上完成串的模式匹配...

esxi安装windows10

1. 选择安装在哪里 2. cpu,内存给8G/8192    3. 硬盘48g,控制器选择SATA控制器0,位置选0:1,因为光驱占了0:0位置 4. 网络 5. 光驱位需要将先前下载的iso文件加载进来,选择数据存储ISO文件。显卡默认。   6. 虚拟机选项 将固件由默认的EFI改为BIOS,否则开机可能会无法引导。  设置完成后即可开机进入...