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参数的详细说明和用法…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...