Pytorch 锚框
Pytorch 锚框
0. 环境介绍
环境使用 Kaggle 里免费建立的 Notebook
教程使用李沐老师的 动手学深度学习 网站和 视频讲解
小技巧:当遇到函数看不懂的时候可以按 Shift+Tab
查看函数详解。
1. 锚框
1.1 概述
目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。 不同的模型使用的区域采样方法可能不同。其中的一种方法:以每个像素为中心,生成多个缩放比和宽高比(aspect ratio)不同的边界框。 这些边界框被称为锚框(anchor box)。
一类目标检测算法是基于锚框的:
- 提出多个被称为锚框的区域(边缘框)
- 预测每个锚框里是否含有关注的物体
- 如果有,预测从这个锚框到真实边缘框的偏移
1.2 IoU-交并比
我们可以衡量锚框和真实边界框之间的相似性。对于两个边界框,我们通常将它们的杰卡德指数(Jaccard)称为交并比(intersection over union,IoU)
IoU 用来计算两个框之间的相似度:
- 000 表示无重叠,111 表示重合
杰卡德指数(Jaccard):
J(A,B)=∣A∩B∣∣A∪B∣J(A, B)=\frac{|A \cap B|}{|A \cup B|}J(A,B)=∣A∪B∣∣A∩B∣
1.3 赋予锚框标号
- 每个锚框是一个训练样本
- 将每个锚框,要么标注成背景,要么关联上一个真实边缘框
- 我们可能会生成大量的锚框
- 这个会导致大量的负类样本
那下面这张图举例,横着的 444 个索引是真实边缘框的索引,竖着的 999 个索引是生成的锚框索引。
每一个锚框逐个与真实边缘框求 IoU,得到了一个 9×49 \times 49×4 矩阵。
(左图)首先找出最大值,假设最大值为 x23x_{23}x23,那么就把锚框 222 作为边框 333 的预测,然后剔除 x23x_{23}x23 所在的行和列。
(中图)找出除了 x23x_{23}x23 所在行所在列,剩下元素的最大值,假设为 x71x_{71}x71,那么就把锚框 777 作为边框 111 的预测,然后剔除 x71x_{71}x71 所在的行和列。
以此类推。。。
1.4 使用非极大值抑制(NMS)输出
当有许多锚框时,可能会输出许多相似的具有明显重叠的预测边界框,都围绕着同一目标。 为了简化输出,我们可以使用非极大值抑制(non-maximum suppression,NMS)合并属于同一目标的类似的预测边界框。
NMS 可以合并相似的预测(预测阶段时使用):
- 选中是非背景类的最大预测值
- 去掉所有其它和它 IoU 值大于 θ\thetaθ 的预测
- 重复上述过程直到所有预测要么被选中,要么被去掉
2. 代码
李沐老师的代码太强了,好难懂,我得多消化消化。
Pytorch 锚框相关推荐
- 动手学深度学习之锚框
锚框 锚框就是一个框,边缘框就是一个物体的真实的位置的一个框,锚框是对这个边缘框位置的一个猜测.算法先给我们画出一个框,然后看这个框里面有没有物体.如果有的话,算法就基于这个物体进行预测,它到我们真实 ...
- 李沐动手学深度学习v2-目标检测中的锚框和代码实现
一.目标检测中的锚框 前提: 本节锚框代码实现,使用了很多Pytorch内置函数,如果有对应函数看不懂的地方,可以查看前面博客对相应函数的具体解释,如下链接所示: Pytorch中torch.mesh ...
- 《动手学深度学习》13.4锚框
13.4.1生成多个锚框 参考: 13.4.1生成多个锚框. 代码实现 导入功能包 import torch import matplotlib.pyplot as plt # 精简打印精度,保留两位 ...
- 摆脱锚框:Anchor-Free
目录 重新思考 Anchor Anchor 的弊端 Anchor-Free 基于角点的检测: CornerNet 沙漏结构 Hourglass 角点池化 Corner Pooling 预测输出 检测中 ...
- 结合具体代码理解yolov5-7.0锚框(anchor)生成机制
最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码.现在把我的学习收获做一下记录 ...
- 基于锚框与无需锚框的通用物体检测算法
物体检测通常是指在图像中检测出物体出现的位置及对应的类别,是计算机视觉的根本问题,也是最基础的问题.它广泛应用于日常生活中,如浏览器的拍照识图.自动驾驶行人车辆检测.道路目标检测(人行道检测)及图像分 ...
- 详解通用物体检测算法:基于锚框与无需锚框
物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...
- 直播预告 | AAAI 2022论文解读:基于锚框排序的目标检测知识蒸馏
「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...
- 动手学CV-目标检测入门教程3:锚框(anchor)
3.3 锚框 or 先验框 本文来自开源组织 DataWhale
最新文章
- Angular新建组件以及组件之间的调用
- 【NLP】使用Google的T5提取文本特征
- 北斗信号服务器解算,GPS/北斗定位解算算法的研究
- html转pdf后 框会消失,html或其它文件转pdf弹出打开保存框
- CSS如何让DIV的宽度随内容的变化
- Oracle分析函数一——函数列表
- KuYun企业授权管理系统源码开源版
- mysql-练习的数据准备
- property java_java-必须为元素类型“ property”声明属性“...
- Chrome打不开baidu的解决方法
- yy神曲url解析php_单文件PHP版视频解析源码(中间件)
- Glide控制显示图片上方2个圆角(或4个都是圆角)
- 【读书笔记】法治的细节——做我们觉得对的事情,然后接受它的事与愿违
- 如何在Fedora 上dnf安装Node.js
- 外行学计算机,《新手无忧学电脑:外行入门学电脑(2008至尊经典版)》低价购书_计算机与互联网_孔网...
- 国外主流网站分析工具介绍
- 会员储值卡系统 java_java毕业设计_springboot框架的储值卡会员管理系统
- WebGIS开发遇到的坑
- 【毕业设计】基于单片机的智能饮水机系统 - stm32 物联网 嵌入式
- 关于暑期实习的一些碎碎念