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 锚框相关推荐

  1. 动手学深度学习之锚框

    锚框 锚框就是一个框,边缘框就是一个物体的真实的位置的一个框,锚框是对这个边缘框位置的一个猜测.算法先给我们画出一个框,然后看这个框里面有没有物体.如果有的话,算法就基于这个物体进行预测,它到我们真实 ...

  2. 李沐动手学深度学习v2-目标检测中的锚框和代码实现

    一.目标检测中的锚框 前提: 本节锚框代码实现,使用了很多Pytorch内置函数,如果有对应函数看不懂的地方,可以查看前面博客对相应函数的具体解释,如下链接所示: Pytorch中torch.mesh ...

  3. 《动手学深度学习》13.4锚框

    13.4.1生成多个锚框 参考: 13.4.1生成多个锚框. 代码实现 导入功能包 import torch import matplotlib.pyplot as plt # 精简打印精度,保留两位 ...

  4. 摆脱锚框:Anchor-Free

    目录 重新思考 Anchor Anchor 的弊端 Anchor-Free 基于角点的检测: CornerNet 沙漏结构 Hourglass 角点池化 Corner Pooling 预测输出 检测中 ...

  5. 结合具体代码理解yolov5-7.0锚框(anchor)生成机制

    最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码.现在把我的学习收获做一下记录 ...

  6. 基于锚框与无需锚框的通用物体检测算法

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,是计算机视觉的根本问题,也是最基础的问题.它广泛应用于日常生活中,如浏览器的拍照识图.自动驾驶行人车辆检测.道路目标检测(人行道检测)及图像分 ...

  7. 详解通用物体检测算法:基于锚框与无需锚框

    物体检测通常是指在图像中检测出物体出现的位置及对应的类别,它是计算机视觉中的根本问题之一,同时也是最基础的问题,如图像分割.物体追踪.关键点检测等都依赖物体检测. 从应用来看,物体检测已广泛应用于大家 ...

  8. 直播预告 | AAAI 2022论文解读:基于锚框排序的目标检测知识蒸馏

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  9. 动手学CV-目标检测入门教程3:锚框(anchor)

    3.3 锚框 or 先验框 本文来自开源组织 DataWhale

最新文章

  1. Angular新建组件以及组件之间的调用
  2. 【NLP】使用Google的T5提取文本特征
  3. 北斗信号服务器解算,GPS/北斗定位解算算法的研究
  4. html转pdf后 框会消失,html或其它文件转pdf弹出打开保存框
  5. CSS如何让DIV的宽度随内容的变化
  6. Oracle分析函数一——函数列表
  7. KuYun企业授权管理系统源码开源版
  8. mysql-练习的数据准备
  9. property java_java-必须为元素类型“ property”声明属性“...
  10. Chrome打不开baidu的解决方法
  11. yy神曲url解析php_单文件PHP版视频解析源码(中间件)
  12. Glide控制显示图片上方2个圆角(或4个都是圆角)
  13. 【读书笔记】法治的细节——做我们觉得对的事情,然后接受它的事与愿违
  14. 如何在Fedora 上dnf安装Node.js
  15. 外行学计算机,《新手无忧学电脑:外行入门学电脑(2008至尊经典版)》低价购书_计算机与互联网_孔网...
  16. 国外主流网站分析工具介绍
  17. 会员储值卡系统 java_java毕业设计_springboot框架的储值卡会员管理系统
  18. WebGIS开发遇到的坑
  19. 【毕业设计】基于单片机的智能饮水机系统 - stm32 物联网 嵌入式
  20. 关于暑期实习的一些碎碎念

热门文章

  1. Python基础入门知识(2)
  2. Codeforces - King Kog‘s Reception
  3. Vue2:使用Vant UI实现网易云评论页上拉和下拉刷新
  4. 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
  5. 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
  6. 腾讯云主机安装mysql
  7. 99% 的程序员想不到的一个技巧,绝对让领导眼前一亮,好感倍增!
  8. 用计算机判断函数单调性吗,判断函数单调性的常用方法
  9. CMD 禁用 笔记本自带的键盘
  10. Spring到底是什么