《AutoFocus: Efficient Multi-Scale Inference》论文笔记

《AutoFocus: Efficient Multi-Scale Inference》论文笔记

1. Motivation

这是一篇讨论如何 “from coarse to fine” 进行目标检测的论文。进行多尺度目标检测一般都会用到金字塔网络,有的是利用特征金字塔如FPN(Feature Pyramid Network)在大尺度特征图(深层)上检测大目标,在小尺度特征图(浅层)上检测小目标;也有的用图像金字塔如本文。但是对不含目标的区域进行检测会消耗不必要的计算资源,所以通常会采用逐步精细化的检测策略。在本文中,是通过在coarse scale上定位可疑目标,返回区域切片,再在fine scale的切片上进行小目标检测,最后合并各尺度检测结果实现的。

2. Method

AutoFocus的架构

在这里插入图片描述

                              AutoFocus =  FocusPixels + FocusChips + Focus Stacking

1. 生成FocusPixels:

  • 定义:在特征图(如Resnet的Conv5)的某个像素点上,如果该像素点在对应原图的区域上有小物体存在(即感受野上有小物体),这个像素点就被定义成FocusPixels。
  • 训练:网络训练时标记FocusPixels为正样本(标签为1),其他像素被定义成无效样本(标签为-1)或者负样本(标签为0),网络学习在这些标签为1的位置产生高的激活值。
  • 标签定义
    • 正样本(l = 1):有小物体覆盖的像素。
    • 无效样本(l = -1):有中等大小物体或极小物体覆盖的像素。
    • 负样本(l = 0):不符合上述条件的像素。
  • 打标签的过程

下面用论文中给出的图讨论打标签的过程
在这里插入图片描述
首先,,上图非推理过程,这里的多尺度不是推理时的:原始尺度上找到可能包含小物体的区域——> 将该区域的图像放大作为scale2进行检测——>再放大到scale3进行检测。
事实上,这个图反映的是训练过程中的标签标注过程,对于上图三个尺度来说,都在做同一件事:找到图像中的小目标。

  • 对于scale1来说,红色框的两个小物体尺寸属于小目标,被标注为正类,而黄色框的因为属于中间大小的物体,从而被标注为无效样本。
  • 对于scale2来说,红色框表示小物体,被标注为正类,黄色框属于中间尺寸被标注为无效样本,在scale1中被标注为无效样本的大象因为在scale2中尺寸符合了大目标的定义,所以被定义成负样本。
  • 对于scale3,原来在scale2中的小目标在scale3中因为尺寸变大,被定义成无效样本。

如果还不理解,可以参考论文中的标注数学表达式,如下所示:

l={1,if IoU(GT,l)>0 and a<GT Area<b−1,if IoU(GT,l)>0 and GT Area<a or b<GT Area<c0,otherwisel = \begin{cases} 1, & \text{if } \text{IoU}(\text{GT}, l) > 0 \text{ and } a < \sqrt{\text{GT Area}} < b \\-1, & \text{if } \text{IoU}(\text{GT}, l) > 0 \text{ and } \sqrt{\text{GT Area}} < a \text{ or } b < \sqrt{\text{GT Area}} < c \\0, & \text{otherwise}\end{cases}l=1,1,0,if IoU(GT,l)>0 and a<GT Area<bif IoU(GT,l)>0 and GT Area<a or b<GT Area<cotherwise

其中的GTAreaGTAreaGTArea是原始的GT框,经过不同尺度的变换得到的,即如果输入图片变大了,那么GTAreaGTAreaGTArea也变大了,而上面公式中的a,b,ca,b,ca,b,c是不变的,这样必然会引起同一个目标在不同尺度的图像中被打成不一样的标签。

2. 生成FocusChips:

  • 过程
    • 使用阈值ttt从特征图中标记 FocusPixels,激活值大于阈值的像素被标注为1(目标),小于的被标注为0(背景)
    • 使用膨胀卷积对这些像素进行膨胀处理以增加上下文信息。
    • 前面两步会得到一个个的像素块,下面使用FocusChip Generator算法,将属于同一目标的块合并,并生成一个大的矩形框作为新的像素块
    • 确保框的尺寸大于预定义的K,小于的话,就多覆盖一些周围的像素,作为context。
      在这里插入图片描述

3. 执行Focus Stacking:

  • 步骤
    • 通过尺度变换合并来自各个尺度的检测结果
    • 如果在边界上检测到目标,删除掉这个框
    • 执行非极大值抑制
      在这里插入图片描述
<think>我们正在讨论Vue中的autofocus属性绑定。根据引用[3],我们知道可以通过v-bind:autofocus(或简写:autofocus)来绑定autofocus属性,并且绑定值为布尔值。当绑定值为false时,该属性会被移除。 用户问题:Vue中autofocus: false的作用 回答思路: 1. 解释autofocus属性的原生作用:HTML的autofocus属性是一个布尔属性,用于指定当页面加载时元素是否自动获得焦点。 2. 在Vue中,我们通常使用v-bind来动态绑定属性。当绑定值为false时,相当于没有设置autofocus属性,因此元素不会自动获得焦点。 3. 示例:在引用[3]中有一个例子:`<input type="text" :value="inputVal" :autofocus="isFocus" placeholder="请输入用户名" />`,其中isFocus是一个响应式变量。当isFocus的值为false时,autofocus属性不会被添加到input元素上,因此不会自动聚焦。 注意:在Vue中,直接使用autofocus(不带绑定)会被视为一个静态的布尔属性,其值为true(因为只要存在就为true)。而使用v-bind绑定后,我们可以动态控制。 另外,引用[2]提到了自定义指令实现自动聚焦,但用户问题主要关注autofocus属性的绑定。 因此,回答可以这样组织: - 首先说明原生autofocus属性。 - 然后说明在Vue中如何动态绑定autofocus属性,特别是当绑定值为false时的效果。 - 对比静态使用和动态绑定的区别。 同时,根据用户提供的引用[3]中的说明:“绑定值为null或undefined时该属性会从渲染元素上移除”,其实false也会被移除。 验证:在Vue的官方文档中,对于布尔属性(如disabled, selected, autofocus等),当绑定的值为假值(false, null, undefined)时,该属性会被移除。 因此,结论:设置:autofocus="false"会导致autofocus属性不被渲染,从而元素不会自动聚焦。 相关问题生成: 1. 在Vue中如何让一个输入框在页面加载时自动获得焦点? 2. 除了使用autofocus属性,还有哪些方式可以实现自动聚焦? 3. Vue中如何处理其他布尔属性(如disabled)?</think>### Vue 中 `autofocus: false` 的作用 在 Vue 中,`autofocus: false` 用于**动态控制 HTML 元素的自动聚焦行为**。其核心作用是通过响应式绑定移除原生 HTML 的 `autofocus` 属性,使元素在页面渲染时不会自动获得焦点。以下是详细解析: --- #### 1. **原生 `autofocus` 属性** - HTML 的 `autofocus` 是一个布尔属性,例如: ```html <input autofocus> <!-- 页面加载时自动聚焦 --> ``` - 只要该属性存在(无论是否赋值),元素就会自动聚焦[^3]。 #### 2. **Vue 的动态绑定机制** - Vue 通过 `v-bind`(简写 `:`)实现属性动态绑定: ```html <input :autofocus="isFocus"> <!-- 绑定响应式变量 --> ``` - **当绑定的值为假值(`false`、`null`、`undefined`)时**: - Vue 会**完全移除**该属性(不会渲染到 DOM 中)[^3]。 - 例如 `:autofocus="false"` 等效于 DOM 中无 `autofocus` 属性,元素不会自动聚焦。 #### 3. **典型使用场景** ```vue <template> <input :autofocus="shouldFocus"> <!-- 绑定布尔变量 --> </template> <script> export default { data() { return { shouldFocus: false // 关闭自动聚焦 } } } </script> ``` - **效果**:`shouldFocus=false` → 渲染为 `<input>`(无 `autofocus` 属性)→ **不自动聚焦**。 - **对比**:若 `shouldFocus=true`,则渲染为 `<input autofocus>` → **自动聚焦**。 --- #### 4. **与自定义指令的区别** - 通过 `v-bind:autofocus="false"` 仅控制属性是否存在。 - 若需更复杂的聚焦逻辑(如条件满足后聚焦),需使用**自定义指令**(如引用[2]的 `v-focus`): ```vue <input v-focus> <!-- 指令式控制聚焦 --> ``` --- ### 总结 | 场景 | 代码示例 | 效果 | |---------------------|--------------------------|--------------------------| | 静态开启自动聚焦 | `<input autofocus>` | 始终自动聚焦 | | 动态关闭自动聚焦 | `<input :autofocus="false">` | **移除属性,不自动聚焦** | | 响应式控制 | `<input :autofocus="isFocus">` | 随变量值动态切换 | > 关键点:`:autofocus="false"` 通过移除 HTML 属性禁用原生自动聚焦行为,适用于需要**条件控制**聚焦的场景[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值