Yolo V3理解bbox和label的关系

假如一个bbox坐标为:[35 220 62 293 3]

第一步:将bbox转换为中心坐标和宽高形式(3种缩放比例进行缩放)

那么onehot:[0 0 0 1 0 0 0 0 0 0 ........],当然还可以平滑

计算bbox的中心坐标和宽高(35+62)/2 = 48.5   (220+293)/2=256.5  宽高为62-35 = 27  293-220=73

所以bbox的宽高中心坐标为(48.5 256.5 27 73)

然后根据缩放比例(8 16 32)进行缩放

缩放后的3组坐标为[[6.0625 32.0625 3.375 9.125][3.03 16.03 1.68 4.56][1.51 8.01 0.84 2.28]]

第二步:anchors中心和宽高获取

anchors的中心坐标和宽高总共3组每个缩放比例为8 :[[6.5 32.5 1.25 1.625][6.5 32.5 2 3.75][6.5 32.5 4.125 2.875]]

                 缩放比例为16:[[3.5 16.5 1.875 3.8125][3.5 16.5 3.875 2.8125][3.5 16.5 3.6875 7.4375]]

                 缩放比例为32:[[1.5 8.5 3.625 2.8125][1.5 8.5 4.875 6.1875][1.5 8.5 11.65625 10.1875]]

其中中心坐标为bbox的取整坐标加0.5,宽高坐标为kmeans聚类出来的

然后bbox的3组坐标分别和anchors的3组坐标计算iou

3组不同比例缩放的bbox对应3组anchors找到iou>0.3的并将网格的左上角坐标标记下来。

label格式为[np.zeros((train_output_sizes[i], train_output_sizes[i], anchor_per_scale,5 + num_classes)) for i in range(3)]

那么label i= [1,2,3]代表3种尺度:

label[i][yind, xind, iou_mask, :] = 0label[i][yind, xind, iou_mask, 0:4] = bbox_xywhlabel[i][yind, xind, iou_mask, 4:5] = 1.0label[i][yind, xind, iou_mask, 5:] = smooth_onehot

原文地址:https://www.cnblogs.com/lzq116/p/12176022.html

时间: 2024-07-30 21:31:52

Yolo V3理解bbox和label的关系的相关文章

Yolo V3整体思路流程详解!

结合开源项目tensorflow-yolov3(https://link.zhihu.com/?target=https%3A//github.com/YunYang1994/tensorflow-yolov3),理解YOLO v3实现细节整体套路 简单写写 1.数据预处理 voc_annotation.py生成训练测试txt文件,存储了图片路径,bbox和类别 dataset.py 的功能如下: (1)通过读取voc_annotation.py生成的train.txt文件,对图片进行增强处理(

HTML与CSS入门——第三章 理解HTML和XHTML的关系

知识点: 1.以HTML创建一个简单网页的方法 2.包含每个网页必须有的所有HTML标签的方法 3.用段落和换行组织页面的方法 4.用标题组织内容的方法 5.HTML.XML.XHTML和HTML5之间的差别 3.1 从一个简单的网页开始: 作者建议:从简单的文本编辑器开始学习,之后再转向可视化工具. 扩展名支持:.htm以及.html 如.jsp,.asp,.php之类的文件类型使用超出了HTML范围的服务器端技术,需要专门的服务端支持.比如Apache服务器 3.2 每个XHMTL网页必须有

How to implement a YOLO (v3) object detector from scratch in PyTorch: Part 3翻译与总结

对Ayoosh Kathuria的YOLOv3实现进行翻译和总结,原文链接如下: https://blog.paperspace.com/how-to-implement-a-yolo-v3-object-detector-from-scratch-in-pytorch-part-3/ *首先翻译遵循不删不改的原则有一说一,对容易起到歧义的中文采取保留英文的方式.其中对原文没有删减但是略有扩充,其中某些阐释是我一句话的总结,如有错误请大家在留言区指出扶正. 这是从头开始实现YOLO v3检测器教

深入理解vertical-align和line-height的关系

vertical-align的百分比值不是相对于字体大小或者其他什么属性计算的,而是相对于line-height计算的.举个简单的例子,如下CSS代码: { line-height: 30px; vertical-align: -10%; } 实际上,等同于: { line-height: 30px; vertical-align: -3px; /* = 30px * -10% */ } CSS属性何其多,偏偏跟line-height有一腿,这不是有基情那是什么? ① 基本现象 要八卦verti

YOLO配置文件理解

[net] batch=64 每batch个样本更新一次参数. subdivisions=8 如果内存不够大,将batch分割为subdivisions个子batch,每个子batch的大小为batch/subdivisions. 在darknet代码中,会将batch/subdivisions命名为batch. height=416 input图像的高 width=416 Input图像的宽 channels=3 Input图像的通道数 momentum=0.9 动量 decay=0.0005

理解Thread,Looper,MessageQueue,Handler关系

概括来说,Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制.我们在使用Handler的时候与Message打交道最多,Message是Hanlder机制向开发人员暴露出来的相关类,可以通过Message类完成大部分操作Handler的功能.但作为程序员,我不能只知道怎么用Handler,还要知道其内部如何实现的.Handler的内部实现主要涉及到如下几个类: Thread.MessageQueue和Looper.这几类之间的关系可以用如下的图来简单说明: Threa

WmS详解(二)之如何理解Window和窗口的关系?基于Android7.0源码

上篇博客(WmS详解(一)之token到底是什么?基于Android7.0源码)中我们简要介绍了token的作用,这里涉及到的概念非常多,其中出现频率最高的要数Window和窗口这一对搭档了,那么我们今天就来看看到底我们该如何理解Android系统中的Window和窗口. 窗口这个概念,从不同的角度来看它的含义不一样,如果我们从WmS(WindowManagerService)的角度来看窗口,那么这个窗口并不是一个Window类,而是一个View.用户发来的消息被WmS接收之后并不能直接发给各个

我所理解的OOP——UML六种关系

最近由于经常给公司的小伙伴儿们讲一些OOP的基本东西,每次草纸都被我弄的很尴尬,画来画去自己都乱了,有时候也会尝试使用UML表示类之间的关系,但UML从毕业后就再也没接触过了,经常会被小伙伴儿们指出继承应该是实线,组合菱形是实心的...,好尴尬,终于痛定思痛系统学习一下. UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其进行了扩展.在程序中是通过

Yolo v3

纸上谈兵篇 Reference : convolutional-networks Series: YOLO object detector in PyTorch 手撸篇 Reference: Pytorch版 github上面基于PyTorch实现得较好的Yolov3有如下repo: ayooshkathuria/pytorch-yolo-v3:1124 star,不支持训练: eriklindernoren/PyTorch-YOLOv3:807 star,"Data augmentation