首页 > 其他分享 >先验框的生成(Pytorch)

先验框的生成(Pytorch)

时间:2023-07-03 19:34:28浏览次数:50  
标签:box fmap ratio sqrt 生成 prior Pytorch 先验

  在学习动手学CV-Pytorch的先验框部分内容时,需要生成一个先验框,这里在学习后对先验框以及生成的代码做解释。

关于先验框

  在众多目标检测模型模型中,都有先验框的存在,在Faster RCNN中称之为锚点(Anchor),在SSD中称之为先验框(prior bounding box)。简单来讲,先验框就是预先设置好的用于检测物体的框,这些框具有非常多的种类(不同的长宽比),以此可以更好的去拟合目标框,即高交并比(IoU)。

先验框设计

这里采用最基础的在SSD与Faster RCNN设计的9种做例子。这9种为:3种尺度(大小),每种尺度下有3种长宽比的先验框,分别为2:1, 1:1, 1:2。如下图所示。

图1

图1 - 3种先验框

先验框生成

  在这里利用VGG16将原始图像压缩为7×7的大小,接下来依据这个大小的图片生成先验框。先验框的坐标表示方式为 \((C_x, C_y, w, h)\),即中心点x、y坐标,长,宽。生成先验框的代码如下。

def create_prior_boxes():
        fmap = 7 
        scales = [0.2, 0.4, 0.6]  # 框缩放倍数
        aspect_ratios = [1., 2., 0.5]  # 长宽比

        prior_box = []
        for y in range(fmap):
            for x in range(fmap):
                cx = (x + 0.5) / fmap  # 将x, y坐标归一化,以便后续截掉超出图像区域
                cy = (y + 0.5) / fmap

                for scale in scales:
                    for ratio in aspect_ratios:
                        prior_box.append([cx, cy, scale * np.sqrt(ratio), scale / np.sqrt(ratio)])

        prior_box = torch.FloatTensor(prior_box)
        prior_box.clamp_(0, 1)

        return prior_box

  对于scale * np.sqrt(ratio),假设其为先验框的长为\(W\),面积为\(S\)(这里实际为1,因为对每个像素做遍历),宽为\(h\),框缩放倍数为0.2,长宽比为2,则其计算公式为:

\[W \times h = {0.2}^2 \times S \]

\[\frac{W}{h} = 2 \]

  则可得出:

\[W = 0.2 \times \sqrt{2S} \]

  scale / np.sqrt(ratio)则为其宽,计算同理。最后使用prior_box.clamp_(0, 1)裁剪掉先验框大于图像的那一部分,如图2所示。因为先前做了归一化,所以这里直接去掉 (0, 1) 之外的值。

图2 - 3种缩放倍数的先验框图示

标签:box,fmap,ratio,sqrt,生成,prior,Pytorch,先验
From: https://www.cnblogs.com/ToryRegulus/p/17515497.html

相关文章

  • Java框架中常用的几种成熟的token生成框架对比
    Java框架中常用的几种成熟的token生成框架有:SpringSecurity:一个基于Spring的安全框架,提供了声明式的安全访问控制解决方案,支持多种认证和授权机制,如OAuth2.0、JWT等。ApacheShiro:一个轻量级的Java安全框架,提供了身份认证、授权、加密、会话管理等功能,支持多种数据源和缓存实......
  • Idea 根据表结构生成 java 实体
    Idea根据表结构生成java实体  1、配置mysql 2、在连接后的任意一张表上右键,修改脚本 修改GeneratePOJOs.groovyimportcom.intellij.database.model.DasTableimportcom.intellij.database.model.ObjectKindimportcom.intellij.database.util.Caseimport......
  • 怎么生成条形码?在线条形码生成器
    功能地址地址:https://tool.toforu.com/f/barcode.html功能说明在线条形码生成器。功能使用相关知识条形码是一种将宽度不等的多个黑条和空白按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图......
  • 最小生成树
    题目京海市城市规划部门计划修建一个大型地铁网络,将城市中的重要交通支点用地铁网络连接起来,以方便市民通行。但是节点过多,预算不够,让京海市城市规划部门十分头疼,请你用计算机帮助他们进行设计这个网络,要求是在将重要交通支点连接起来的前提下,使修建地铁网络的费用最低。Input......
  • AI_Pytorch_参数空间
    AI算法构成DatasetModelTrainInferDeploy解耦:模型训练过程中保存的模型文件是包含前向预测和反向传播的过程,在实际的工业部署则不需要反向传播,因此需要将模型进行导成部署需要的模型格式配置化:配置都会包含三个主要内容:数据配置、网络模型、训练策略Mod......
  • JAVA生成xml文件格式
    publicboolean A(参数1,……){Documentdocument=DocumentHelper.createDocument();Namespacena=Namespace.get("");Strings=null;na=new Namespace(xxxxxxxxxxxxxxxxxxxxx);//命名空间Elementroot=document.addElement(newQName(“A......
  • Python黑魔法:探秘生成器和迭代器的神奇力量
    在Python中,生成器和迭代器是实现惰性计算的两种重要工具,它们可以帮助我们更有效地处理数据,特别是在处理大数据集时,可以显著减少内存的使用。接下来,我们将详细介绍这两种工具。一、迭代器迭代器是一种特殊的对象,它可以遍历一个集合中的所有元素。任何实现了__iter__()和__next_......
  • Git生成ssh密钥及配置
    由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSHkey,在此之前,必须要生成SSHkey。第1步:创建SSHKey。在windows下查看[c盘->用户->自己的用户名->.ssh下是否有id_rsa、id_rsa.pub文件,如果没有需要手动生成。在开始菜单中打开git下的gitb......
  • BackUpLogView 系列 - 生成日志数据库脚本(MS Sql Server)
     在企业管理器中执行脚本CREATEDATABASE[BackupLogview]ONPRIMARY(NAME=N'BackupLogview',FILENAME=N'C:\DATA\BackupLogview.mdf',SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB)LOGON(NAME=N'BackupLogview_log',F......
  • 使用 ABAP 调用 Adobe Document Service 生成 PDF 文档
    我以前在SAP成都研究院BYDForm开发团队工作过5年,负责BYDBO输出成PDF的功能开发。AdobeDocumentService(ADS)是SAPNetWeaverASJava堆栈的一部分,提供了用于创建和处理PDF文件的功能。在ABAP系统中,可以通过调用ADS服务来生成和处理PDF文档。这种集成使得ABAP开发人员能......