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
相关文章:
ReID网络:MGN网络(1) - 概述
Start MGN 1. 序言 现代基于感知的信息中,视觉信息占了80~85%。基于视觉信息的处理和分析被应用到诸如安防、电力、汽车等领域。 以安防市场为例,早在2017年,行业咨询公司IHS Market,我国在公共和私人领域安装有摄像头约1.76亿…...
C++数据结构笔记(10)递归实现二叉树的三序遍历
对于三种遍历方式来说,均为先左后右!区别在于根结点的位置顺序 先序遍历:根——左——右 中序遍历:左——根——右 后序遍历:左——右——根 (所谓先中后的顺序,是指根结点D先于子树还是后于…...
hMailServer-5.3.3-B1879.exe
hMailServer-5.3.3-B1879.exe...
后端校验JSR303
目录 一、导入依赖 二、实现步骤 三、分组校验 四、自定义校验 一、导入依赖 <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency> 二…...
vmware磁盘组使用率100%处理
今天在外办事时,有客户发过来一个截图,问vmware 磁盘组空间使用率100%咋办?如下图: 直接回复: 1、首先删除iso文件等 2、若不存在ISO文件等,找个最不重要的虚拟机直接删除,删除后稍等就会释放…...
Redis实战(3)——缓存模型与缓存更新策略
1 什么是缓存? 缓存就是数据交换的缓冲区, 是存贮数据的临时区,一般读写性能较高 \textcolor{red}{是存贮数据的临时区,一般读写性能较高} 是存贮数据的临时区,一般读写性能较高。缓存可在多个场景下使用 以一次 w e b 请求为例…...
python与深度学习(十):CNN和cifar10二
目录 1. 说明2. cifar10的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试。首…...
剑指offer12 矩阵中的路径 13 机器人的运动范围 34.二叉树中和为某一值得路径
class Solution { public:bool exist(vector<vector<char>>& board, string word) {int rowboard.size(),colboard[0].size();int index0,i0,j0;if(word.size()>row*col) return 0;//vector<vector<int>> visit[row][col];//标记当前位置有没有…...
Pushgateway+Prometheus监控Flink
思路方案 FlinkMtrics->pushgateway->prometheus->grafnana->altermanager 方案 : Flink任务先将数据推到pushgateway。然后pushgateway将值推送到prometheus,最后grafana展示prometheus中的值, 去这个 https://prometheus.io/download/ 下载最新的 Prometheu…...
OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG
视频分割背景 1.概念介绍2. 函数介绍MOG算法MOG2算法GMG算法 原视频获取链接 1.概念介绍 视频背景扣除原理:视频是一组连续的帧(一幅幅图组成),帧与帧之间关系密切(GOP/group of picture),在GOP中,背景几乎…...
nginx 反向代理浅谈
前言 通常情况下,客户端向Web服务器发送请求,Web服务器响应请求并返回数据。而在反向代理中,客户端的请求不直接发送到Web服务器,而是发送到反向代理服务器。反向代理服务器会将请求转发给真实的Web服务器,Web服务器响…...
【概率预测】对风力发电进行短期概率预测的分析研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
原型设计模式go实现尝试
文章目录 前言代码结果总结 前言 本文章尝试使用go实现“原型”。 代码 package mainimport ("fmt" )// 不同原型标志枚举 type Type intconst (PROTOTYPE_1 Type iotaPROTOTYPE_2 )// 原型接口 type IPrototype interface {Clone() IPrototypeMethod(value int)P…...
链表是否有环、环长度、环起点
问题引入 如何检测一个链表是否有环,如果有,那么如何确定环的长度及起点。 引自博客:上述问题是一个经典问题,经常会在面试中被问到。我之前在杭州一家网络公司的电话面试中就很不巧的问到,当时是第一次遇到那个问题&…...
有效文档管理离不开这几个特点
在我们日常生活中经常会遇到各式各样的文档类型,想要把它们都统一管理起来也不是一件容易的事情。后来looklook就去研究怎么样可以把这一堆文档整理起来呢?接下来,looklook就从有效的文档管理展开,和大家分享一下! 有效…...
爬虫-requests-cookie登录古诗文网
一、前言 1、requests简介 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,它是python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib更简洁也更强大。 2、requests的安装 pip i…...
Spring Boot实践三 --数据库
一,使用JdbcTemplate访问MySQL数据库 1,确认本地已正确安装mysql 按【winr】快捷键打开运行;输入services.msc,点击【确定】;在打开的服务列表中查找mysql服务,如果没有mysql服务,说明本机没有…...
分布式锁漫谈
简单解释一下个人理解的分布式锁以及主要的实现手段。 文章目录 什么是分布式锁常用分布式锁实现 什么是分布式锁 以java应用举例,如果是单应用的情况下,我们通常使用synchronized或者lock进行线程锁,主要为了解决多线程或者高并发场景下的共…...
mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目
m系列 mac 安装 php 与 hyperf 框架依赖的扩展并启动 gptlink 项目 gptlink 项目是一个前后端一体化的 chatgpt 开源项目 gptlink 项目地址:https://github.com/gptlink/gptlink 安装 php 8.0 版本: brew install php8.0安装完成后提示如下ÿ…...
ansible中run_once的详细介绍和使用说明
在Ansible中,run_once是一个用于控制任务在主机组中只执行一次的关键字参数。当我们在编写Ansible任务时,有时候我们希望某个任务只在主机组中的某个主机上执行一次,而不是在每个主机上都执行。 以下是run_once参数的详细说明和用法…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
CSP信奥赛C++常用系统函数汇总
# CSP信奥赛C常用系统函数汇总## 一、输入输出函数### 1. cin / cout(<iostream>) cpp int x; cin >> x; // 输入 cout << x << endl;// 输出 优化:ios::sync_with_stdio(false); 可提升速度 2. scanf() /…...
Server - 使用 Docker 配置 PyTorch 研发环境
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/148421901 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 建议使…...
