ReID网络:MGN网络(1) - 概述

Start MGN

1. 序言

现代基于感知的信息中,视觉信息占了80~85%。基于视觉信息的处理和分析被应用到诸如安防、电力、汽车等领域。

以安防市场为例,早在2017年,行业咨询公司IHS Market,我国在公共和私人领域安装有摄像头约1.76亿部,至2020年这一数值将激增至6.26亿部。虽然这一数字值得考量,但网络摄像头、家用安防摄像头以及各行业特定用途摄像头安装数量的逐年增长是无需置疑的,且现存摄像头安装数量应该是一个不小的量级。围绕各种摄像头,各公司、个人开发了各种各样的智能分析算法,这其中就包括人脸识别、车牌识别以及我们本序列要讲的ReID算法。

2. ReID概念

行人重识别(Person Re-identification也称行人再识别,简称为ReID,是利用计算机视觉技术,通过提取在匹配特征,依次判断图像或者视频序列中是否存在特定行人的技术。简单点讲,就是跨摄像头、跨区域实现行人的匹配。

ReID被广泛的认为是一个图像检索的子问题。给定一个图像输入点的视频所检索到的行人,在其他视频采集点所采集的视频中检索出现过的人。从另一个角度讲,ReID常被用来作为人脸检测识别的补充。在一些无法获得高质量人脸图像的场合,整体的人体外观信息就被用来作为检索的依据。

3. ReID应用

(1) 行人检测与搜索

以往的行人检测与搜索侧重于传统的方法,即首先提取行人视觉特征,然后再进行特征的匹配。近几年来,行人重识别领域引入了深度学习的方法,即通过深度学习的方法提取视觉特征,然后进行匹配。

近几年来,ReID技术在行人检测与搜索领域应用非常广泛。尤其在安防监控、其他智能视频监控(如无人超市)、刑侦(追捕嫌疑人)、交管(追踪车辆等)方面应用尤其突出。

(2) MOT(多目标跟踪)

MOT全程多目标跟踪,顾名思义,是对多个目标同时执行跟踪的一种技术。当前MOT领域一种研究方向比较多,但主要的研究方向无非是JDE(协同检测与Embedding特征提取)、SDE(分离式检测与Embedding特征提取)和JDT(协同检测与跟踪)。其中JDE与SDE合称TBD(Tracking by detection, 基于检测的跟踪技术)。无论是JDE还是SDE ,均需要析出所有目标特征,然后在不同帧之间进行匹配(关联)。析出特征并进行前后帧关联的技术,实际上就利用了ReID的理论。

(3) 其他目标检测与搜索

前面讲到,ReID一般译作行人重识别,同理,在其他类型目标上也同样适用ReID技术(特征析出+匹配/关联)。如车辆跟踪、无人机跟踪等。

4. ReID算法分类

前述内容大致带大家谅解了一些关于ReID的知识,接下来我们一同归纳一下ReID的几种方法。

(1) 表征方法

表征学习又称表示学习,是利用机器学习获取每个实体或关系的向量化表达,以便在构建分类器或其他预测变量时更易提取有用信息的方法。如图一为表征学习方法的一般图例。

图一 表征学习

概念有些绕,我们简单理解,表征学习包含以下几个部分。

a. 首先是通过一个分类网络,对目标进行分类(Softmax Loss)。由于ReID一般是对同一类目标进行重识别,因此这里的分类,更具体的,是一种类内再分类的行为。不同于传统的目标检测等网络,我们再此处实际上是学习一种学习类内特征、增大类内特征的网络。

b. 一般情况下,除了分类以外,还需要添加属性判别分支(Attribute Loss)。这里的属性包括性别、头发、衣着等,增强对目标的特征描述能力。

c. 孪生网络。表征学习一般情况下,会同时训练两个一模一样的网络,每个网络除了执行分类和属性判别任务以外,网络间还要执行对比,获得对比损失(Contrastive Loss)。

(2) 度量方法

度量学习不同于前述的表征学习,度量学习旨在学习两幅图像的相似度。度量学习的依据是同一行人的不同图片的相似度大于不通行人的不同图片,同理,前者的Loss需要小于后者的Loss。

图二 度量学习

在训练过程中,网络输入为两张图片(Anchor和Positive、Anchor和Negative)或三张图片(Anchor、Positive、Negative),前者计算析出特征向量的欧氏距离(或其他特征向量损失),后者一般使用Triplet损失。

(3) 局部方法

局部特征是相对于整体特征而言的。在一些训练网络中,会提取某一行人的全局特征,用来计算Loss。基于局部特征的学习方法大致分为三种思路,分别是基于局部调整的方法、基于特征点检测的方法和基于局部导入判别的方法(PCB)。如图三为基础的局部特征方法。

图三 局部特征ReID网络

a. 基于局部调整的方法

该方法是将行人划分为几个等分不分,同时输入到网络中进行训练。

b. 基于特征点检测的方法

基于特征点检测的方法又叫基于姿态估计的局部调整方法。即首先通过特征点估计方法检测出特征点,然后根据已知知识进行学习,如头部与头部比较,手部与手部比较。

c. 基于局部导入的方法(PCB)

该方法类似于基于局部调整的方法,不同的是,前者是同时输入网络,后者是以此导入网络进行学习。

(4) 多粒度

多粒度学习方法类似于局部方法,不同的是,多粒度是将全局特征以及不同粒度的局部信息同时学习,最后整合到一起,以此来学习一个能够提取丰富信息和细节的网络。

5. MGN

MGN网络(多粒度网络)在云从科技的论文“Learning Discriminative Features with Multiple Granularities”中被提出。其核心思想是,不仅提取整张图像的特征,同时还将图像划分为不同粒度进行特征的提取,最后将完整图像的特征与不同粒度图像特征进行融合。

MGN网络的Backbone采用了ResNet50,但从res_conv4_1之后产生不同粒度的的学习分支。

MGN网络的Loss采用了交叉熵损失(CE)和Triplet损失。

接下来我们将从Backbone、数据预处理、Loss计算等角度做详细解读。

参考:

(1) 行人重识别(Person re-identification)概述 - 知乎

(2) https://www.lmlphp.com/user/70900/article/item/2612478/&wd=&eqid=c976327300010b9000000005645894a3

(3) https://blog.csdn.net/qq_39388410/article/details/108173767

(4) https://blog.csdn.net/wq3095435422/article/details/123697940 各种损失

(5) https://blog.51cto.com/u_15316394/3217922

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QGraphicsView实现简易地图1『加载离线瓦片地图』

最简单粗暴的加载方式,将每一层级的所有瓦片地图全部加载 注:该方式仅能够在瓦片地图层级较低时使用,否则卡顿!!! 瓦片地图数据来源:水经注-高德地图-卫星地图 瓦片地图瓦片大小:25…

#vue3报错 Cannot read properties of null (reading ‘isCE‘)#

场景:使用 npm 安装依赖包的时候,如如安装 npm i xlsx npm i file-saver 重新运行报错 Cannot read properties of null (reading isCE)# 解决办法: 使用的vite vue 在vite.config.ts添加如下配置: dedupe: [ vue ]

二十章:基于弱监督语义分割的亲和注意力图神经网络

0.摘要 弱监督语义分割因其较低的人工标注成本而受到广泛关注。本文旨在解决基于边界框标注的语义分割问题,即使用边界框注释作为监督来训练准确的语义分割模型。为此,我们提出了亲和力注意力图神经网络(A2GNN)。按照先前的做法&a…

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统: 微软的操作系统主要是 Windows 系列,包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统(Microsoft System)是美国微软开发的Wi…

多线程(JavaEE初阶系列4)

目录 前言: 1.单例模式 1.1饿汉模式 1.2懒汉模式 1.3结合线程安全下的单例模式 1.4单例模式总结 2.阻塞式队列 2.1什么是阻塞队列 2.2生产者消费者模型 2.2.1 上下游模块之间进行“解耦合” 2.2.2削峰填谷 2.3阻塞队列的实现 结束语: 前言&a…

【Linux后端服务器开发】select多路转接IO服务器

目录 一、高级IO 二、fcntl 三、select函数接口 四、select实现多路转接IO服务器 一、高级IO 在介绍五种IO模型之前,我们先讲解一个钓鱼例子。 有一条大河,河里有很多鱼,分布均匀。张三是一个钓鱼新手,他钓鱼的时候很紧张&a…

笙默考试管理系统-MyExamTest(18)

笙默考试管理系统-MyExamTest(19) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 六、 笙默考试管理系统…

移动零——力扣283

题目描述 双指针 class Solution{ public:void moveZeroes(vector<int>& nums){int n nums.size(), left0, right0;while(right<n){if(nums[right]){swap(nums[right], nums[left]);left;}right;}} };

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; LLM 进化树升级版&#xff01;清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …

阿里Java开发手册~安全规约

1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明&#xff1a; 防止没有做水平权限校验就可随意访问、修改、删除别人的数据&#xff0c;比如查看他人的私信 内容、修改他人的订单。 2. 【强制】用户敏感数据禁止直接展示&#xff0c;必须对展示数据进…

七、用户画像

目录 7.1 什么是用户画像7.2 标签系统7.2.1 标签分类方式7.2.2 多渠道获取标签 7.3 用户画像数据特征7.3.1 常见的数据形式7.3.2 文本挖掘算法7.3.3 嵌入式表示7.3.4 相似度计算方法 7.4 用户画像应用 因此只基于某个层面的数据便可以产生部分个体面像&#xff0c;可用于从特定…

Spring IOC功能详细介绍和案列分析

目录 1. Spring IOC 介绍2. Spring IOC 源代码分析3. Spring IOC 案例分析 Spring IOC&#xff08;控制反转&#xff09;是 Spring 框架的一个重要组成部分&#xff0c;它提供了一种将程序的控制权从应用代码转移到配置文件中的方式。在 IOC 编程模型中&#xff0c;对象之间的依…

JAVASE---数据类型与变量

1. 字面常量 常量即程序运行期间&#xff0c;固定不变的量称为常量&#xff0c;比如&#xff1a;一个礼拜七天&#xff0c;一年12个月等。 public class Demo{ public static void main(String[] args){ System.Out.println("hello world!"); System.Out.println(…

ArcGIS Runtime API for Android--如何从Geometry中获取闭合区域面积?

使用草图编辑器可以很方便的在底图上进行点线面的绘制,但是绘制完的图形,如何获取值呢?我查了很多资料都没说到关键点,可能默认大家都会,但是我比较菜,还是需要详细说明的。通过官方文档最终实现了面积数据的提取(文档终于看明白了)。 目录 效果 1.Geometry 2.Geome…

Flutter 图片选取及裁剪

在开发项目里修改用户头像的功能&#xff0c;涉及到图片选取及裁剪&#xff0c;基本实现步骤如下&#xff1a; 1、pubspec.yaml 添加 image_picker: ^1.0.1 image_cropper: ^4.0.1&#xff1a; dependencies:image_picker: ^1.0.1image_cropper: ^4.0.1flutter:sdk: flutter…

从源码分析Handler面试问题

Handler 老生常谈的问题了&#xff0c;非常建议看一下Handler 的源码。刚入行的时候&#xff0c;大佬们就说 阅读源码 是进步很快的方式。 Handler的基本原理 Handler 的 重要组成部分 Message 消息MessageQueue 消息队列Lopper 负责处理MessageQueue中的消息 消息是如何添加…

YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()

7 | PyYAML源码之yaml.compose_all&#xff0c;yaml.load,yaml.load_all 1 yaml.compose_all()2 yaml.load()3 yaml.load_all() 1 yaml.compose_all() 源码&#xff1a; 作用&#xff1a;分析流中的所有YAML文档&#xff0c;并产生相应的表示树。解析&#xff1a; # -*- codi…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C++】static的作用

static的作用 修饰局部变量修饰全局变量修饰函数修饰类的成员修饰类的成员变量修饰类的成员函数 修饰局部变量 概念 &#xff1a;static修饰局部变量就使之成为静态局部变量。 作用域 &#xff1a;静态局部变量的作用域并未发生变化&#xff0c;在其所在的局部范围&#xff0c…

Numpy-聚合函数

NumPy 提供了很多统计函数&#xff0c;用于从数组中查找最小元素&#xff0c;最大元素&#xff0c;百分位标准差和方差等。 函数名说明np.sum()求和np.prod()所有元素相乘np.mean()平均值np.std()标准差np.var()方差np.median()中位数np.power()幂运算np.sqrt()开方np.min()最小…