yolov3 中box坐标的处理

2023-05-16

yolov2吸收faster rcnn的anchor box机制时遇到训练不稳定的问题,分析认为是bbox坐标回归时没有限制,导致anchor box可能会去预测一个距离很远的object,效率不高,因此yolov2对bbox的坐标进行一系列的处理,令anchor box只会对邻近的object负责。阅读论文和代码时难以理解这个机制,以下是个人的一些分析,不保证正确,欢迎讨论指正。

在这里插入图片描述

公式中 ( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h) (tx,ty,tw,th)是预测目标,上述公式定义了如何从 ( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h) (tx,ty,tw,th)到真实坐标 ( b x , b y , b w , b h ) (b_x,b_y,b_w,b_h) (bx,by,bw,bh)进行转换。需要注意的是 ( t x , t y , t w , t h ) (t_x,t_y,t_w,t_h) (tx,ty,tw,th) ( t x , t y ) (t_x,t_y) (tx,ty)对应的是anchor box的中心点坐标(偏移),而不是通常的左上角。

box get_yolo_box(float *x, float *biases, int n, int index, int i, int j, int lw, int lh, int w, int h, int stride)
{
    box b;
    b.x = (i + x[index + 0*stride]) / lw;
    b.y = (j + x[index + 1*stride]) / lh;
    b.w = exp(x[index + 2*stride]) * biases[2*n]   / w;
    b.h = exp(x[index + 3*stride]) * biases[2*n+1] / h;
    return b;
}

float delta_yolo_box(box truth, float *x, float *biases, int n, int index, int i, int j, int lw, int lh, int w, int h, float *delta, float scale, int stride)
{
    box pred = get_yolo_box(x, biases, n, index, i, j, lw, lh, w, h, stride);
    float iou = box_iou(pred, truth);

    float tx = (truth.x*lw - i);  //输入特征图尺寸
    float ty = (truth.y*lh - j);
    float tw = log(truth.w*w / biases[2*n]); //网络输入图尺寸
    float th = log(truth.h*h / biases[2*n + 1]);

    //scale = 2 - groundtruth.w * groundtruth.h 
    delta[index + 0*stride] = scale * (tx - x[index + 0*stride]); 
    delta[index + 1*stride] = scale * (ty - x[index + 1*stride]);
    delta[index + 2*stride] = scale * (tw - x[index + 2*stride]);
    delta[index + 3*stride] = scale * (th - x[index + 3*stride]);
    return iou;
}

上述两个函数来自yolov3的yolo层代码,其中函数参数float* x来自前一个卷积层的输出,shape = (C,H,W)
其中(H,W)表示特征图的宽高,通道C依次是 ( t x , t y , t w , t h , o b j e c t n e s s , s c o r e   o f   c l a s s i ) (t_x,t_y,t_w,t_h,objectness,score \ of \ class_i) (tx,ty,tw,th,objectness,score of classi) ( t x , t y , t w , t h , o b j e c t n e s s ) (t_x,t_y,t_w,t_h,objectness) (tx,ty,tw,th,objectness)利用sigmoid函数变换到了 [ 0 , 1 ] [0,1] [0,1]之间。

先来看函数get_yolo_box()的参数,biases中存储的是预定以的anchor box的宽和高(输入图尺度),(lw,lh)是yolo层输入的特征图尺度,(w,h)是整个网络输入图尺度,get_yolo_box()函数利用了论文截图中的公式,而且把结果分别利用特征图宽高和输入图宽高做了归一化。既然这个机制是用来限制回归,避免预测很远的目标,那么这个预测范围是多大呢?(b.x,by)最小是(i,j),最大是(i+1,x+1),即中心点在特征图上最多一定一个像素(假设输入图下采样n得到特征图,特征图中一个像素对应输入图的n个像素)(b.w,b.h)最大是(2.7 * anchor.w,2.7*anchor.h),最小就是(anchor.w,anchor.h),这是在输入图尺寸下的值。

delta_yolo_box()负责计算 ( t x , t y , t w , t h , o b j e c t n e s s ) (t_x,t_y,t_w,t_h,objectness) (tx,ty,tw,th,objectness)的误差,其参数和get_yolo_box()类似,truth是groundtruth box,也是用输入图宽高归一化后的(中心点,宽高)。但其中的scale很奇怪,根据代码
sclae = 2 - truth.w * truth.h, 其含义还没理解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

yolov3 中box坐标的处理 的相关文章

  • UML建模与软件开发设计(六)——类图设计与类之间的关系

    3 2 5 关联关系的分类 然而 xff0c 通过关联关系来描述类与类时还是比较抽象 xff0c 有些关系的细节难以通过关联关系表达出来 xff0c 比如类A与类B的角色定位 数量关系 xff0c 关联方向等都描述得不够清晰准确 xff08
  • 四轴PID讲解

    插播一条DJI招聘信息 常年有效 xff1a 包括控制算法 软件功能开发 SDK 嵌入式软件开发 GNSS接收机设计 测试开发 xff08 包括CI持续集成 xff09 请各位对空中机器人 xff0c 地面机器人 xff0c 教育机器人有兴
  • 守护进程

    本博客为本人学习UNIX高级环境编程总结 13 守护进程 13 1 简介 守护进程 xff08 daemon xff09 是生存期长的一种进程 它们常常在系统引导装入时启动 xff0c 仅在系统关闭时才终止 因为它们没有控制终端 xff0c
  • chmod +x,赋予“可执行”权限

    1 chmod 43 x的意思就是给执行权限 xff08 1 xff09 LINUX下不同的文件类型有不同的颜色 xff0c 绿色文件 xff1a 可执行文件 xff0c 可执行的程序 红色文件 xff1a 压缩文件或者包文件 蓝色文件 x
  • Flask-SQLAlchemy和alembic结合(步骤)

    在之前的数据库操作中 xff0c 我们新增一个字段是不是每次都得删除数据库表 xff0c 然后再重新将新创建的数据库表映射到数据库中 这样操作是不是很蛋疼 xff1f 是吧 xff1f 于是sqlalchemy作者拜尔为了解决这一问题 xf
  • pixhawk模块添加和修改以及经验分享

    我看了apm的代码半年 xff0c px4的代码也看了一段时间 xff0c 把我在这个过程遇到的问题和大家分享一下 xff0c 我觉得有些人也会遇到同样的问题 xff0c 给这部分人一点提示 谢谢大家 首先还是先从apm讲起 xff0c 它
  • 第一篇——记录自己的学习过程吧

    初次写博客 xff0c 希望记录一下自己的学习之路 xff0c 也希望以这种方式来监督提醒自己在这条喜欢的路上走下去 xff0c 希望再回首 xff0c 我能看的一个不一样的自己 本人大三程序员 xff0c 可以说是非常渣的那种 我选择软件
  • 什么是ELK?

    出处 xff1a https www cnblogs com aresxin p 8035137 html 我们在进行日志分析时 xff0c 目前的处理方式是在日志文件中grep xff08 一种强大的文本索引工具 xff09 awk xf
  • linux shell脚本将命令执行结果赋值给变量

    使用 例子 xff1a a 61 echo hello world 将命令echo 34 hello world 34 的输出赋给变量a
  • 网段、子网掩码计算方法

    计算 10 21 224 0 22 表示的网段 10 21 224 0 22 是表示网段的方法 xff0c 前面是ip或者子网 xff0c 后面的数字是掩码中高位算起1的位数 xff0c 22就是掩码的高位有22个1 xff0c 即 xff
  • ES6 module.exports和export详解

    module exports和export详解 前言一 commonJs 使用步骤1 导出属性2 导出类 二 ES6规范对外暴露的方式分别暴露统一暴露暴露的时候指定别名 默认暴露 引入方式1 解构赋值引入2 直接引入3 通配符导入 前言 概
  • STM32最小系统详解

    STM32最小系统详解 1 电源电路2 晶振电路3 复位电路4 下载电路 xff08 串口下载 xff09 本文章将以普中的STM32F103系列的开发板为载体 xff0c 任何一款STM32开发板都是在其最小系统基础上添加多个功能模块组成
  • 【CAM】Learning Deep Features for Discriminative Localization

    论文链接 github Abstract 1 Introduction CNN能保留位置信息 xff0c 但经过用于分类的全连接神经网络时会丢失位置信息 最近的NIN和GoogLeNet使用全卷积网络 避免使用全连接层 xff0c 来减少参
  • yolov3详解

    目录 1 anchor的计算机制 2 anchor对应机制 3 网络结构 4 训练过程 5 测试过程 1 anchor的计算机制 锚框anchor是真值框和预测框之间的桥梁 xff1a 预测框在锚框基础上 xff0c 预测出框的大小 xff
  • javaScript-06 表单验证 详细易懂,加案例分析

    目录 一 JS表单验证基本介绍 1 1 JS表单验证概述 1 2表单验证的作用 1 3JS表单验证需求分析 二 JavaScript 事件列表 三 表单验证方式 3 1 string常见方法 3 2 案例 例 xff1a submit事件
  • 云服务器如何选型?可以从这几个方面来考虑

    一 主机配置选择 云服务器的配置因公司业务而异 xff0c 一般来说对于访问量较小的个人网站 xff0c 1核1G更合适 xff0c 2核4G的配置可以满足大多数的用户需求 xff0c 比如企业运营 一般性数据处理 并行计算处理等 xff0
  • 智能家居项目实训笔记(华清远见)(一)

    智能家居项目笔记 准备工作C 43 43 c 43 43 编译器g 43 43 命令符操作命名空间头文件写法指针和引用引用数组引用指针引用C 43 43 修改一块内存 准备工作 基础语法 xff1a C 43 43 跨平台开发 xff1a
  • Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)

    原文链接 xff1a https www cnblogs com annie22wang p 9366610 html 本博客翻译搬运自https www learnopencv com object tracking using open
  • 使用securecrt从远程服务器A ssh连接到服务器B

    在工作中我们经常遇到这样一个问题 xff0c 服务器A和服务器B在一个内网中 xff0c 服务器A有外网ip xff0c 但服务器B没有外网ip或者我们只知道服务器B的内网ip 这时候我们要怎么登上服务器B呢 xff1f 假设服务器A和B都
  • Ubuntu图形界面突然崩溃

    teamviewer远程操作 xff0c 在多工作区切换时Ubuntu图形界面崩溃 重启图形画面后tty7黑屏 sudo service lightdm restart 查看日志 var log lightdm x 0 log 查看日志 v

随机推荐

  • Ubuntu安装显卡驱动

    首先选择显卡对应的驱动版本 sudo bash NV sh no opengl files no x check no nouveau check 参考链接 xff1a https www cnblogs com matthewli p 6
  • Ubuntu 下mysql数据库存放位置迁移

    1 确认mysql 数据存放位置 mysql u root p 输入密码后进入命令好操作 show variables like 39 dir 39 可以看到我们的数据库存放在 datadir 61 var lib mysql 然后关闭my
  • 映射公网的几种方式

    转载自 xff1a http blog csdn net sadshen article details 48240519 这篇文章花了好几天 xff0c 系统地梳理出了映射公网的几种方式 虽然是针对微信开发的外网服务器来寻找解决方案 xf
  • docker:一个container映射多个端口到Host

    如果一个参数的选项格式是 比如 H 61 host p 61 portdirection 这都意味着这个flag可以多次出现 xff0c 所以此处可以多次指定端口映射规则 例 xff1a docker run d p 80 80 p 22
  • 深度学习电脑配置

    来源 xff1a 雷锋网 本文作者 xff1a 三川 原文链接 xff1a https www leiphone com news 201705 uo3MgYrFxgdyTRGR html 与 传统 AI 算法相比 xff0c 深度学习 x
  • Spring Data JPA delete语句

    执行delete和update语句 xff0c 需要添加 64 Modifying注解 xff0c 使用时在Repository或者更上层需要 64 Transactional注解 例如 xff1a 64 Query value 61 34
  • 计算机视觉四大基本任务(分类、定位、检测、分割)

    原文链接 xff1a https zhuanlan zhihu com p 31727402 引言 深度学习目前已成为发展最快 最令人兴奋的机器学习领域之一 xff0c 许多卓有建树的论文已经发表 xff0c 而且已有很多高质量的开源深度学
  • ubuntu 查看内存命令

    原文链接 xff1a https blog csdn net jzp12 article details 7560450 Linux中使用free可以查看系统内存使用状态 默认单位为KB为单位 xff0c 在此我以MB为单位说明 lostm
  • python读写h5文件

    原文链接 xff1a https blog csdn net leibaojiangjun1 article details 53635353 h5接受的数据是矩阵跟mat方法一致 xff0c 但是具有更强的压缩性能 使用hdf5依赖于py
  • ubuntu配置novnc通过web访问服务器

    希望通过vnc去连接主机去看控制服务器系统 xff0c 集成到web中使用 novnc是一种选择 环境如下 xff0c 两个主机host1 host2 xff0c web装载81 224中 xff0c 环境使用的Ubuntu 16 04 具
  • 跨平台构建 Docker 镜像新姿势,x86、arm 一把梭

    点击 34 阅读原文 34 可以获得更好的阅读体验 在工作和生活中 xff0c 我们可能经常需要将某个程序跑在不同的 CPU 架构上 xff0c 比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上 特别是 Docker 席卷全球之后
  • python 批量将列表元素转换为数字

    原文链接 xff1a https www jb51 net article 86561 htm 本文实例讲述了Python中列表元素转为数字的方法 分享给大家供大家参考 xff0c 具体如下 xff1a 有一个数字字符的列表 xff1a 1
  • numpy数组精确保存为图片的方法

    发现用cv2 write scipy misc imsave scipy misc toimage save 保存都有细微的偏差 xff0c 最终用PIL Image fromarrya save 才能精确地将值保存下来 参考链接 xff1
  • STM32遇到的结构体数组成员未被赋值问题

    这里写自定义目录标题 现象解决方法参考文章 现象 这几天用STM32F411做BP神经网络 xff0c 在电脑上训练好之后移植到STM32里得到的预测值全部都是0 5 xff0c 用keil仿真发现隐含层的输出数据全部都是2 3648316
  • 硬软件系统的实时性

    1 实时性的考察对象 xff1a 单片机 实时操作系统和分时操作系统 1 1 单片机裸机OS 一 古老的51单片机 二 当下最流行意法半导体的STM32 Cortex M3系列 Cortex M4 Cortex M0和Cortex M7系列
  • Linux基础命令 - 文件及目录操作, 打印输出, 查找命令, 用户及权限管理, vi的使用等

    Linux基础指令 文章目录 Linux基础指令综合知识 vi 纯文本编辑器 https qq wdev cn c vi html 语法格式 xff1a vi 参数 文件命令模式插入模式底行模式 重定向符号通配符管道符 文件及目录操作命令
  • CSS中常见的高度塌陷问题及解决办法

    在使用css实现样式时 xff0c 难免碰到一个棘手的问题 高度塌陷 xff0c 如果把问题分析通透 xff0c 那就容易解决了 塌陷 很容易让人联想到高楼倒塌 xff0c 高度 也应证了这是出现在两个垂直相交的元素 xff08 盒子 xf
  • Dockerfile的用法

    Dockerfile指令 基本结构指令FROMMAINTAINERRUNCMDEXPOSEENVADDCOPYENTRYPOINTVOLUMEUSERWORKDIRONBUILD 创建镜像 基本结构 Dockerfile 是一个文本格式的配
  • Centos上 关闭Linux防火墙(iptables) 及 SELinux

    革命尚未成功 xff0c 同志仍须努力 关闭Linux防火墙 iptables 及 SELinux 一 关闭防火墙 1 重启后永久性生效 xff1a 开启 xff1a chkconfig iptables on 关闭 xff1a chkco
  • yolov3 中box坐标的处理

    yolov2吸收faster rcnn的anchor box机制时遇到训练不稳定的问题 xff0c 分析认为是bbox坐标回归时没有限制 xff0c 导致anchor box可能会去预测一个距离很远的object xff0c 效率不高 xf