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参数的详细说明和用法…...

短视频矩阵系统源码开发流程
一、视频矩阵系统源码开发流程分为以下几个步骤: 四、技术开发说明: 产品原型PRD需求文档产品交互流程图部署方式说明完整源代码源码编译方式说明三方框架和SDK使用情况说明和代码位置平台操作文档程序架构文档 一、抖音SEO矩阵系统源码开发流程分为以…...

vite+vue3 css scss PC移动布局自适应
1. 安装 postcss-pxtorem 和 autoprefixer npm install postcss-pxtorem autoprefixer --save2. vite.config.js引入并配置 import postCssPxToRem from postcss-pxtorem import autoprefixer from autoprefixerexport default defineConfig({base: ./,resolve: {alias},plug…...

BLE配对和绑定
参考:一篇文章带你解读蓝牙配对绑定 参考:BLE安全之SM剖析(1) 参考:BLE安全之SM剖析(2) 参考:BLE安全之SM剖析(3) 目录 前言基本概念解读Paring(配对)Bonding(绑定)STK短期秘钥、LTK长期秘钥等 …...

无涯教程-jQuery - html( val )方法函数
html(val)方法设置每个匹配元素的html内容。此属性在XML文档上不可用。 html( val ) - 语法 selector.html( val ) 这是此方法使用的所有参数的描述- val - 这是要设置的html内容。 html( val ) - 示例 以下是一个简单的示例,简单说明了此方法的用法- <…...

【单链表OJ题:删除链表中等于给定值 val 的所有节点】
1.删除链表中等于给定值 val 的所有节点 题目来源 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 /*** Definition for singly-linked list.* struct ListNode {* int val;* s…...

vue element ui web端引入百度地图,并获取经纬度
最近接到一个新需要,要求如下: 当我点击选择地址时,弹出百度地图, 效果如下图: 实现方法: 1、首先要在百度地图开放平台去申请一个账号和key 2、申请好之后,在项目的index.html中引入 3、…...

25.10 matlab里面的10中优化方法介绍—— 函数fmincon(matlab程序)
1.简述 关于非线性规划 非线性规划问题是指目标函数或者约束条件中包含非线性函数的规划问题。 前面我们学到的线性规划更多的是理想状况或者说只有在习题中,为了便于我们理解,引导我们进入规划模型的一种情况。相比之下,非线性规划会更加贴近…...

赛效:如何将PDF文件免费转换成Word文档
1:在网页上打开wdashi,默认进入PDF转Word页面,点击中间的上传文件图标。 2:将PDF文件添加上去之后,点击右下角的“开始转换”。 3:稍等片刻转换成功后,点击绿色的“立即下载”按钮,将…...

java 8 的Stream API
Java 8中引入了Stream API,它是一种处理集合数据的新方式,可以用来处理集合中的元素。Stream API通过提供一组函数式接口和方法,可以使集合的处理更加简洁、高效和易读。 Stream API的主要特点如下: 延迟执行:Stream …...

TypeChat,用TypeScript快速接入AI大语言模型
TypeChat是C# 和 TypeScript 之父 Anders Hejlsberg全新的开源项目。使用AI在自然语言和应用程序和API之间建立桥梁,并且使用TypeScript。 现在出现了很多大型语言模型,但是如何将这些模型最好地集成到现有的应用程序中,如何使用人工智能来接…...