LOCA类别无关的目标统计算法详解(A Low-Shot Object Counting Network With Iterative Prototype Adaptation)

视频讲解1:Bilibili视频讲解

视频讲解2:https://www.douyin.com/video/7592511338140683535

论文下载:[2211.08217] A Low-Shot Object Counting Network With Iterative Prototype Adaptation

 代码下载:https://github.com/djukicn/loca

https://github.com/KeepTryingTo

基于Zero-Shot的计数算法详解(T2ICount: Enhancing Cross-modal Understanding for Zero-Shot Counting)

统一的人群计数训练框架(PyTorch)——基于主流的密度图模型训练框架

算法VLCount详解(VLCounter: Text-aware Visual Representation for Zero-Shot Object Counting)

人群计数中常用数据集的总结以及使用方式(Python/PyTorch)

基于Zero-Shot的目标计数算法详解(Open-world Text-specified Object Counting)

基于zero-shot目标计数方法详解(Zero-Shot Object Counting)

基于Transformer的目标统计方法(CounTR: Transformer-based Generalised Visual Counting)

基于zero-shot目标统计算法详解(Zero-shot Object Counting with Good Exemplars)

开发词汇的目标计数COUNTGD:Multi-Modal Open-World Counting算法详解

Class-Agnostic Counting类别无关的统计算法讲解

基于无监督backbone无需训练的类别无关目标统计CountingDINO算法详解

        本文提出了一种低样本目标计数网络LOCA,通过迭代原型自适应方法解决现有计数算法忽略形状信息导致定位不准的问题。针对现有方法(如GMN、FamNet)通过特征池化丢失物体尺寸/长宽比信息、原型泛化能力有限等缺陷,LOCA创新性地分离处理示例的形状和外观信息。网络采用ResNet-50骨干提取特征,通过目标原型提取模块显式编码形状信息,再经深度互相关匹配生成响应图,最终回归为密度图实现计数。实验表明该方法在保持简洁架构的同时,有效提升了高密度场景和尺寸变化情况下的计数精度。论文代码已开源,为类别无关的统计算法研究提供了新思路。

目录

现有方法的局限性

提出的方法

具体方法

目标原型提取模块

自适应到zero-shot中

损失函数

实验结果

综合比较

消融实验

可视化实现


现有方法的局限性

忽略形状信息,导致定位不准:现有方法(如GMN, FamNet, CFOCNet等)通常通过特征池化​ 来从示例的边界框中提取固定大小的物体原型。这个过程是形状无关的,因为它将不同尺寸和长宽比的示例对象都池化到相同大小的特征图上。这导致了关键的物体形状信息(如尺寸、长宽比)的丢失

原型泛化能力有限:由于形状信息的缺失,提取出的物体原型在图像中进行匹配时,定位精度会下降。这在高密度场景或物体尺寸变化大的情况下尤为明显,最终影响计数的准确性。

方法复杂化倾向:为了弥补上述缺陷,一些近期工作(如BMNet+)试图通过设计复杂的架构来学习非线性的相似度度量函数,但这增加了模型的复杂性和计算开销

提出的方法

图像特征提取:使用ResNet-50 backbone和全局自注意力块提取图像特征。

物体原型提取:这是本文的主要贡献。该模块显式地、分别地处理示例的形状外观信息。

原型匹配:将学习到的物体原型与图像特征进行深度互相关,得到相似性响应图。

密度图回归:通过一个解码器将响应图上采样为最终的密度图,求和即得物体数量。

具体方法

目标原型提取模块

自适应到zero-shot

损失函数

模型结构细节配置

        LOCA将输入图像的大小调整为H_IN = W_IN = 512像素,并应用swv[5]预训练的ResNet50骨干,将最后三个块的特征上采样到h = w = 64像素。这就产生了一个有3584个通道的激活图,通过一个1 × 1的卷积层进一步投影到d = 256个通道。全局自关注块是一个3层的变压器编码器。MHA模块由8个注意头组成,隐藏维数d = 256,而FFN的隐藏维数为1024。每个MHA和FFN模块后应用Dropout,概率为0.1。迭代自适应模块包含L = 3层,具有相同的MHA和FFN维度。对象原型空间大小为s × s, s = 3,不使用dropout。ground truth真密度图是通过在物体位置上放置单元密度并使用高斯核平滑生成的,高斯核的大小是为每个图像单独确定的。特别是,内核大小被确定为样例边界box平均大小的1/8。

实验结果

综合比较

消融实验

可视化实现

### 关于 `@amap/amap-jsapi-loader` 中 Loca 的使用方法与功能 `@amap/amap-jsapi-loader` 是一个用于加载高德地图 JavaScript API 的工具库,它支持通过配置参数来动态加载高德地图的功能模块以及扩展插件。其中,Loca 是高德地图提供的一款可视化渲染引擎,主要用于实现复杂的数据可视化效果[^1]。 #### Loca 的基本概念 Loca 提供了一种高效的方式来处理大规模地理数据的渲染和交互。它的核心功能在于能够将各种类型的地理数据(如点、线、面)转换为可视化的图形,并支持多种样式定制和动画效果。Loca 支持的地图层类型包括但不限于热力图、轨迹图、网格图等[^2]。 #### 配置 Loca 参数的方式 在使用 `@amap/amap-jsapi-loader` 加载 Loca 时,可以通过传递 `Loca` 对象到 `load` 方法中的配置项完成初始化: ```javascript import AMapLoader from '@amap/amap-jsapi-loader'; AMapLoader.load({ key: "您的高德地图API Key", // 替换为您自己的Key version: '2.0', plugins: [], // 如果需要其他插件可以在此处添加 Loca: { version: '2.0.0' // 指定 Loca 的版本号 } }).then((AMap) => { console.log('Loca 已成功加载:', AMap.Loca); }).catch(err => { console.error('加载失败:', err); }); ``` 上述代码展示了如何通过 `Loca` 属性指定其版本号并加载该组件。一旦加载完成后,即可通过 `AMap.Loca` 访问 Loca 实例[^1]。 #### 常见功能示例 ##### 1. 绘制热力图 以下是利用 Loca 创建热力图的一个简单例子: ```javascript // 初始化地图实例 let map = new AMap.Map('container', { zoom: 11, center: [116.397428, 39.90923] }); // 使用 Loca 渲染热力图 let locaData = [ {lnglat: [116.397428, 39.90923], value: 1}, {lnglat: [116.407428, 39.91923], value: 2} ]; let heatmapLayer = new AMap.Loca.HeatmapLayer({ style: { radius: 25, opacity: [0, 0.8], gradient:{ 0.2: 'blue', 0.4: 'cyan', 0.6: 'lime', 0.8: 'yellow', 1.0: 'red' } }, visible: true }); heatmapLayer.setDataSet({data: locaData, lngLat: ['lnglat'], value: ['value']}); heatmapLayer.addTo(map); // 添加到地图中 ``` 此代码片段定义了一个简单的热力图层,并将其绑定至地图实例上显示出来。 ##### 2. 轨迹绘制 除了热力图外,Loca 还擅长表现移动物体的历史轨迹或者预测路线等功能。下面是一个关于轨迹绘制的例子: ```javascript let trajectoryData = [{ path: [[116.397428, 39.90923],[116.407428, 39.91923]], time: [new Date().getTime(), new Date().getTime() + 10 * 1000] }]; let lineLayer = new AMap.Loca.LineLayer(); lineLayer.source(trajectoryData, { lnglat: 'path', time: 'time' }); lineLayer.setStyle({ width: 5, color: '#FF0000' }); lineLayer.addTo(map); ``` 这段脚本实现了基于时间戳变化的一条红色线条随时间推移逐渐显现的效果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值