对YOLO bounding box的理解
一、yolov1 bounding box
bounding box是怎么产生的?回归产生的,回归?哎呀,妈呀,回归是什么我都忘记了,好吧,我来举个初中的线性回归例子简单回顾一下
有两组数据A和B
A = [1,2,3,4,5]
B = [2,4,6,8,10]
利用回归的思想预测当A为6的时候B对应的值是多少
很明显回归参数就是2,回归程为y = 2x,所以A为6的时候B对应的值应该是12,这就是最简单的回归思路了。
然后yolo1中提到的就是直接利用整幅图像经过网络结构产生7*7的grid cell,每个grid cell预测x,y,w,h,confidence等几个值,其中confidence就是IOU的值啦。关键这个bounding box怎么回归产生的,对我这种小白来说还是纠结了好几天才算理解到一丢丢,所以赶紧小笔记记一下,欢迎各位大佬斧正(请原谅我想多了,就我这个级别的blog还有大佬看[笑哭])
好,我们去看一下Annotation里面的XML文件,截取一部分看一下
看到标注文件里面的Bounding box的格式了没,都是由[xmin,xmax,ymin,ymax]组成,中心坐标呢?
回顾yolov1论文还说要把坐标和长宽归一化,你中心坐标都没有如何回归?最后在scipts找到了vol_label.py文件才知道中心坐标是根据标签中的xmin,xmax,ymin,ymax计算出来的,哈哈哈,详见下面代码注释。
def convert(size, box):dw = 1./size[0] # 归一化的时候就是使用宽度除以整个image_size的宽度 dh = 1./size[1] # 归一化的时候就是使用高度除以整个image_size的高度x = (box[0] + box[1])/2.0 # 使用(xmin+xmax)/2得到x的中心点y = (box[2] + box[3])/2.0 # 使用(ymin+ymax)/2得到y的中心点w = box[1] - box[0] # 然后宽度就是使用xmax-xmin计算得到h = box[3] - box[2] # 然后高度就是使用ymax-ymin计算得到x = x*dw # 归一化中心坐标xw = w*dw # 归一化bbox宽度y = y*dh # 归一化中心坐标yh = h*dh # 归一化bbox高度return (x,y,w,h)def convert_annotation(year, image_id):in_file = open('VOCdevkit/VOC%s/Annotations/%s.xml'%(year, image_id))out_file = open('VOCdevkit/VOC%s/labels/%s.txt'%(year, image_id), 'w')tree=ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):difficult = obj.find('difficult').textcls = obj.find('name').textif cls not in classes or int(difficult) == 1:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')# 获取标注中bbox的数据并以元组方式返回b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))# 向convert传入size = (w,h),和b,注释中分别是(xmin,xmax,ymin,ymax) bb = convert((w,h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
有了中心坐标x,y和bbox的w,h这样就可以愉快地训练出回归参数了
待更... ..
对YOLO bounding box的理解相关推荐
- 理解与总结:YOLOv1中候选框(Bounding Box或者Predict Box)——纯文字真的很干
各位CV伙伴估计已经看了很多网上许多关于YOLO1的博客,在这里我推荐路过的朋友可以参考以下链接,有一定基础再来看我的这个博客.因为我参考了前人的知识再做的总结,有些小的基础的概念没有详细解释. 参考 ...
- 【目标检测】概念理解:region proposal、bounding box、anchor box、ground truth、IoU、NMS、RoI Pooling
最近刚接触图像识别,理解一些概念十分困难,尤其是动不动就冒出个看不懂的英语,让人抓狂.查了不少资料后做一个总结并加上一些自己的理解,理解若有误,烦请大家指出,相互学习. 本文主要对region pro ...
- Bounding box regression RCNN我的理解
0. bounding-box regression bouding-box regression 在R-CNN论文附录C中有详细的介绍,在后续的论文Fast-RCNN.Faster-RCNN.Mas ...
- 关于目标检测中bounding box编码和解码时weight参数的理解
关于目标检测中的Bounding box回归原理网上已经有很多解释的文章了,但是为了更好的阐述我的问题,一开始我还是先简单的过一下边框回归的基本原理,然后解释我在看源码时遇到的一点疑惑,最后分享一下在 ...
- Deep3Dbox(3D Bounding Box Estimation Using Deep Learning and Geometry)理解
文章目录 本文创新点 作者Ideal来源 作者方法 核心思想 目标 MultiBin loss 约束 训练 数据增强 网络结构及loss 角度loss 维度loss 实验 推理 性能 参考资料 文中所 ...
- bounding box的简单理解
1. 小吐槽 OverFeat是我看的第一篇深度学习目标检测paper,因为它是第一次用深度学习来做定位.目标检测问题.可是,很难懂...那个bounding box写得也太简单了吧.虽然,很努力地想 ...
- 3.5 Bounding Box 预测-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
←上一篇 ↓↑ 下一篇→ 3.4 卷积的滑动窗口实现 回到目录 3.6 交并比 Bounding Box 预测 (Bounding Box Predictions) 在上一个视频中,你们学到了滑动窗口 ...
- Bounding box regression详解
Bounding box regression详解 转载 http://blog.csdn.net/u011534057/article/details/51235964 Reference link ...
- 感知算法论文(八):Generalized Intersection over Union:A Metric and A Loss for Bounding Box Regression(2019)
文章目录 摘要 引言 2. 相关工作 3. Generalized Intersection over Union 3.1 GIoU as Loss for Bounding Box Regressi ...
- 基于Bounding Box的激光点云聚类
Camera系列文章 传感器融合是将多个传感器采集的数据进行融合处理,以更好感知周围环境:这里首先介绍Camera的相关内容,包括摄像头及图像知识基本介绍,OpenCV图像识别(特征提取,目标分类等) ...
最新文章
- UVA 331 Mapping the Swaps
- Python中静态方法的实现
- ng-content的一个实际例子
- SpringBoot自定义Starter(自动配置类)
- alternatives命令用法
- 【还是回来了】博客搬家--https://cangbean.github.io
- Mr.J--jQuery效果总结
- 《Android进阶之光》--事件总线
- wamp php不可用_解析wamp的php.ini设置不生效
- arttemplate模板引擎里面多层循环
- 教大家查看、使用Untiy内部库和方法
- 利用Exchange 2003实现移动办公新体验
- 什么是shell和shell编程
- i310100和i59400f哪个好 i3 10100和i5 9400f差距大吗
- 彻底解决pycharm中用matplotlib表格绘制时图表中汉字设置
- Captura录屏没有声音解决方法
- 这10个超厉害的工具堪称神器,却很少人知道!
- 2013-07《信息资源管理 02378》真卷解析,逐题解析+背诵技巧
- 蒙特卡洛树搜索(The monte carlo search tree)
- 联发科与晨星合并诞生新寨主