Learning To Count Everything

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • Abstract
  • 文献阅读:学习数一切东西
    • 1、研究背景
    • 2、提出方法
    • 3、模块详细
      • 3.1、多尺度特征提取模块
      • 3.2、密度预测模块
    • 4、损失函数
    • 5、性能对比
    • 6、贡献
  • 二、RNN代码学习
    • 2.1、什么是RNN
    • 2.2、RNN的处理过程
    • 2.3、RNN简单代码实现
  • 总结


摘要

本周主要阅读了CVPR文章,Learning To Count Everything。文章提出了一种名为FamNet的新型网络结构,是卷积神经网络(CNN)的改进版本。可以将FAMNet与CNN或其他类型的神经网络结合,形成更复杂的深度学习模型,以处理更复杂的图像识别任务。FamNet利用提供的示例对象和查询图像之间的相似性来估计密度图,从而实现物体计数。。除此之外,还学习学习了RNN代码的学习。

Abstract

This week, I mainly read the CVPR article Learning To Count Everything. The article proposes a new network structure called FamNet, which is an improved version of convolutional neural network (CNN). FamNet can be combined with CNN or other types of neural networks to form more complex deep learning models to handle more complex image recognition tasks. FamNet estimates a density map using the similarity between provided example objects and query images to achieve object counting. In addition, I also learned how to learn RNN code.


文献阅读:学习数一切东西

Title: Learning To Count Everything
Author:Viresh Ranjan, Udbhav Sharma, Thu Nguyen, Minh Hoai
From:2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)

1、研究背景

在面对密集场景或新类别时的计数问题。在现实生活中,我们经常会遇到需要计数的场景,如统计人群数量、货架上的物品数量或书架上的书本数等。然而,当目标物体数量庞大月分布密集时,传统的人工计数方法不仅效率低下,而且容易出错。因此,开发一种能够自动、准确地进行目标检测与计数的方法变得尤为重要。当前,大多数物体计数方面的研究主要关注单个类别的计数,且大多需要大量的标注数据进行训练。然而,在实际应用中,我们往往面临标注数据不足或需要计数的新类别不断出现的情况。因此,如何在小样本或新类别的情况下实现准确的目标检测与计数成为了一个亟待解决的问题。

2、提出方法

对于物体计数和分类的任务,通常需要大量的标注数据来进行训练。然而,获取这些标注数据是一个昂贵且耗时的过程。因此,文章提出了一种名为FamNet(Fast Adaptive Matching Network)的新方法,用于解决在只有少量标注实例的情况下进行物体计数的问题。FAMNet是一种深度学习模型,主要用于图像识别和计算机视觉任务。它是深度神经网络的一种变体,特别是卷积神经网络(CNN)的改进版本。可以将FAMNet与CNN或其他类型的神经网络结合,形成更复杂的深度学习模型,以处理更复杂的图像识别任务。FamNet利用提供的示例对象和查询图像之间的相似性来估计密度图,从而实现物体计数。
在这里插入图片描述

3、模块详细

3.1、多尺度特征提取模块

使用ImageNet预训练的网络进行特征提取,可以处理广泛的视觉类别。多尺度特征提取模块由来自预训练ResNet-50骨干网络的前四个块组成(这些块的参数在训练期间被冻结)。利用第三和第四个块处的卷积特征映射来表示图像。通过对第三和第四个Resnet-50块卷积特征映射执行ROI池化获得一个示例的多尺度特征。

3.2、密度预测模块

为了使密度预测模块不受视觉类别的影响,不直接使用从特征提取模块获得的特征进行密度预测。相反,只使用范例特征和图像特征之间的相关映射作为密度预测模块的输入。为了解释在不同尺度下感兴趣的对象,将样本特征缩放到不同尺度,并将缩放后的样本特征与图像特征关联,从而获得多个相关map,每个尺度一个。在实验中,使用0.9和1.1的scales,以及原始的scales。将相关图串联并送入密度预测模块。
密度预测模块由5个卷积块和3个上采样层组成,分别位于第一、第二和第三个卷积层之后。最后一层是1*1的卷积层预测2维密度图,其大小与输入图像一致。
在这里插入图片描述

4、损失函数

  • Min-Count loss:每个框对应位置的物体数量应该至少是1个,若小于1个就产生损失。大于等于1不产生损失,框可能包含超过一个物体。
    在这里插入图片描述

  • Perturbation Loss:从目标跟踪的研究借用correlation filter而来的。给定一个需要跟踪的物体以及它的标注框,当一个框位于标注框的位置有最大的响应值,当这个框偏离了标注框,它的响应值根据距离指数型下降。
    在这里插入图片描述

5、性能对比

最终的性能对比结果显示,FamNet在计数任务上的表现优于其他几种方法。具体来说,FamNet在平均绝对误差(MAE)和均方根误差(RMSE)两个评价指标上均取得了最佳结果。此外,FamNet还可以通过增加示例数量来提高计数性能。在与其他几种基线方法的比较中,FamNet也表现出色,尤其是在处理未见过的新类别时。在CARPK数据集上的计数汽车性能测试中,FamNet的表现也优于其他方法。总之,FamNet是一种有效的多目标计数方法,具有良好的泛化能力。
在这里插入图片描述

6、贡献

文章提出了FamNet(Family of Neural Networks)方法,其是一种用于图像识别和计算机视觉任务的神经网络框架。它旨在通过构建一系列相关的神经网络模型来解决不同但相关的任务,这些模型共享一些基础结构和参数,从而提高效率和性能。在FamNet中,不同任务之间的模型共享部分网络层,这使得模型能够学习到跨任务的有用特征表示。通过共享网络层,FamNet可以减少计算量,加速模型训练,并在多个任务之间实现知识迁移。

二、RNN代码学习

2.1、什么是RNN

循环神经网络(Recurrent Neural Network,RNN)是一种深度学习模型,用于处理序列数据。RNN的核心特点是具有记忆单元,能够捕捉序列数据中的长期依赖关系。在RNN中,神经网络单元按照时间序列连接,每个单元的输出作为下一个单元的输入,从而实现信息的循环传递。RNN的应用领域非常广泛,包括自然语言处理、语音识别、机器翻译、时间序列预测等。常见的RNN变种包括长短时记忆网络(LSTM)和门控循环单元(GRU),它们通过引入不同的机制来改善RNN的训练和性能。

2.2、RNN的处理过程

  1. 对数据集进行向量化表示,例如使用词向量或one-hot编码。
  2. 前向过程:定义一个输出向量,该网络由n个RNN模块组成。将向量化的数据与一个矩阵W1相乘得到输出out1,将上一个RNN模块的输出out与一个矩阵W2相乘得到out2,将out1与out2相加得到当前RNN模块的输出out3,给out3施加一个激活函数得到out4,out4即为当前RNN模块的输出。
  3. 反向传播:利用梯度下降法对所有的RNN模块的W1和W2进行更新。

2.3、RNN简单代码实现

class SimpleRNN(nn.Module):  
    def __init__(self, input_size, hidden_size, output_size):  
        super(SimpleRNN, self).__init__()  
        self.hidden_size = hidden_size  
        self.rnn = nn.RNN(input_size, hidden_size, batch_first=True)  
        self.fc = nn.Linear(hidden_size, output_size)  
          
    def forward(self, x):  
        # 初始化隐藏状态  
        h0 = torch.zeros(1, x.size(0), self.hidden_size).to(x.device)   
          
        # 前向传播RNN  
        out, _ = self.rnn(x, h0)  
          
        # 获取最后一个时间步的输出  
        out = self.fc(out[:, -1, :])  
        return out

总结

本周主要阅读了CVPR文章,Learning To Count Everything。文章提出了一种名为FamNet的新型网络结构,是卷积神经网络(CNN)的改进版本。可以将FAMNet与CNN或其他类型的神经网络结合,形成更复杂的深度学习模型,以处理更复杂的图像识别任务。FamNet利用提供的示例对象和查询图像之间的相似性来估计密度图,从而实现物体计数。。除此之外,还学习学习了RNN代码的学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/507388.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue element-plus 导航栏 [el-menu]

导航栏 [el-menu] Menu 菜单 | Element Plus el-menu有很多属性和子标签,为网站提供导航功能的菜单。 常用标签: 它里面有两个子标签。el-menu-item,它其实就是el-menu每一个里面的item,item就是真实匹配到路由的每个栏目&#…

[优选算法专栏]专题十五:FloodFill算法(二)

本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小…

剑指offer--数组中重复的数字

一.题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 算法1.排序,然后遍历,时间复杂度O(nlogn),空…

openstack云计算(二)——使用Packstack安装器安装一体化OpenStack云平台

初步掌握OpenStack快捷安装的方法。掌握OpenStack图形界面的基本操作。 一【准备阶段】 (1)准备一台能够安装OpenStack的实验用计算机,建议使用VMware虚拟机。 (2)该计算机应安装CentOS 7,建议采用CentO…

【Java面试题】Redis中篇(高可用:主从复制、哨兵、集群)

文章目录 高可用14.Redis如何保证高可用?15.Redis的主从复制?16.Redis主从有几种常见的拓扑结构?17.Redis的主从复制原理了解吗?18.说说主从数据同步的方式?19.主从复制存在的问题?20.Redis Sentinel(哨兵)…

Swap交易所系统开发流程与区块链交易所系统规划方案

随着区块链技术的迅速发展,交易所在加密货币行业中扮演着至关重要的角色。Swap交易所因其独特的去中心化交易模式备受关注。在本文中,我们将深入探讨Swap交易所系统的开发流程,并详细介绍区块链交易所系统的规划方案,以帮助读者更…

智慧城市数字孪生,综合治理一屏统览

现代城市作为一个复杂系统,牵一发而动全身,城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维,从构成城市诸多要素、结构、功能等方面入手,系统推进…

算法沉淀 —— 深度搜索(dfs)

算法沉淀 —— 深度搜索(dfs) 一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证二叉搜索树五、二叉搜索树中第K小的元素 一、计算布尔二叉树的值 【题目链接】:2331. 计算布尔二叉树的值 【题目】: …

Pyhon 大模型常见的微调方式,LLMs常见的Finetune方式;chatglm3微调实战;大模型微调通俗易懂总结

一、 LLMs微调 微调(Fine-tuning)是指在一个已经训练好的神经网络模型基础上,使用额外的数据集或调整超参数,以实现特定任务的训练过程。在微调中,通常会固定预训练模型的大部分参数,只调整最后几层或特定层…

Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

盲水印脚本安装说明_bwm、_bwmforpy

此工具需要python2/python3 脚本下载地址https://gitcode.com/chishaxie/BlindWaterMark/tree/master?utm_sourcecsdn_blog_hover 直接下载压缩包解压 在python里面添加两个库,python.exe目录上方输入cmd pip install opencv-python python.exe -m pip install …

docker部署实用的运维开发手册

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestdocker-compose部署 vim docker-compose.yml version: 3 services:reference:container_name: referenceimage: registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestports:…

Gparted工具 初始化磁盘

Gparted工具 初始化磁盘 1、安装 没有此工具请先安装: yum install epel-release yum install gparted yum install yum-utils git gnome-common gcc-c yum-builddep gparted 2、打开Gparted工具,初始化磁盘 使用具有root权限的普通用户打开gparted&…

回溯算法|40.组合总和II

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex, vector<bool>& used) {if (sum target) {result.push_back…

OSPF不规则区域以及OSPF的数据库和优化OSPF的LSA

OSPF的不规则区域 远离骨干非骨干区域不连续骨干-----区域水平分割 解决方案&#xff1a; 1.tunnel ---点到点GRE 在合法与非法ABR(在两个区域之间&#xff0c;但没有连到骨干area0)间建立隧道&#xff0c;然后将其宣告于OSPF协议中&#xff1b; 缺点&#xff1a;1、周期和…

Web应急响应

2024年护网将至&#xff0c;最近我将分享一些红蓝对抗的一些技巧&#xff0c;应急响应、信息收集相关的知识概念以及相关技巧。 目录 1. 黑客攻击流程 2. webshell流量特征 1.1.菜刀特征 1.2.冰蝎3.0 &#xff1a; 1.3.冰蝎2.0&#xff1a; 1.4.冰蝎3.11流量特征 1.5.蚁…

cocos使用playable ads adapter打包试玩广告报错RangeError: Invalid string length

前言 最近有做试玩广告的需求&#xff0c;引擎用的cocos&#xff0c;打包使用的playable ads adapter插件。不过最近打包遇到个奇怪的问题&#xff0c;就是通过插件打包报错RangeError: Invalid string length。因为之前也用空包和早期项目测试过都能顺利打包&#xff0c;经过…

数码管时钟--LABVIEW编程

一、程序的前面板 1.获取系统时钟&#xff0c;年月日&#xff0c;时分秒&#xff0c;用14个数码管显示。 2.闹钟设定小时和分钟。 二、程序的后面板 三、程序运行图 四、程序源码 源程序可以在百度网盘自行下载&#xff0c;地址链接见下方。 链接&#xff1a;https://pan.b…

健身运动蓝牙耳机什么牌子好?五大业内顶级优品推荐

在当下这个健身热潮席卷的时代&#xff0c;越来越多的人开始注重运动与健康&#xff0c;而音乐作为运动时的最佳伴侣&#xff0c;无疑为锻炼过程增添了不少乐趣。为了在运动时享受音乐&#xff0c;一款优质的健身运动蓝牙耳机显得尤为重要&#xff0c;市场上各大品牌纷纷推出自…

python对接百度云车牌识别

注册百度智能云&#xff0c;选择产品服务。 https://console.bce.baidu.com/ 每天赠送200次&#xff0c;做开发测试足够了。 在应用列表复制 AppID , API Key ,Secret Key 备用。 SDK下载地址 https://ai.baidu.com/sdk#ocr 下载SDK文件&#xff0c;解压&#xff0c;…