行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification

文章记录了ICCV2019的一篇优化遮挡行人重识别论文的知识点:Pose-Guided Feature Alignment for Occluded Person Re-Identification
论文地址:
https://yu-wu.net/pdf/ICCV2019_Occluded-reID.pdf
在这里插入图片描述

Partial Feature Branch分支:

PCB结构,将特征图F按照垂直方向水平划分为6个part,每个part引入一个分类损失。

从全局特征中提取局部(未遮挡)人体的特征。将input(输入图像的shape为3x384x128)经过Resnet50 之后的feature map直接做horizontal partition,再average pooling以及1*1 conv之后,将每一个part都预测一个id(id表示每个局部部分的身份标识。它用于将每个局部特征映射到相应的身份。

细节点:

1.代码中用的Resnet50模型去掉了中global average pooling及以后的部分。

2.将最后一层feature map 分成 p个horizontal stripes。分别对p个horizontal stripes做global average pooling就得到了p个局部特征。(horizontal stripes 的个数 p 取6。)

3.因为 Resnet50 最后一层feature map的通道数为2048,作者又用1x1 conv将其降到256维.

在这里插入图片描述

​ 图1

图1中是全局特征提取,代码如下所示:

def extract_global_feature(model,input_):output=model(input_)return output

在这里插入图片描述

​ 图2:partial特征

代码:

def extract_partial_feature(model,global_feature,part_num):partial_feature=nn.AdaptiveAvgPool2d((part_num,1))(global_feature)partial_feature=torch.squeeze(partial_feature,-1)partial_feature=partial_feature.permute(0,2,1)return partial_feature

partial_feature: torch.Size([32, 3, 2048]),表示一个批次中有32个样本,在每个样本中有3个局部部分(这里做说明,这个3就是part_num变量的值,源代码的权重中应该是设置为3了)的特征。每个局部部分的特征是一个长度为2048的向量。

在这里插入图片描述

​ 图3

这里用nn.Linear(线性层)将输入特征从 num_bottleneck (256维)维度映射到 class_num (应该是表示数据集中行人ID个数,源代码训练数据集中有702个ID)维度,线性层的输出可以被看作是一个概率分布,用于表示输入特征属于每个类别的可能性(这个输出并不是直接的概率分布,而是未经过归一化的原始分数)

具体代码:

# Defines the new fc layer and classification layer
# |--Linear--|--bn--|--relu--|--Linear--|
class ClassBlock(nn.Module):def __init__(self, input_dim, class_num, relu=True, num_bottleneck=512):super(ClassBlock, self).__init__()add_block = []add_block += [nn.Conv2d(input_dim, num_bottleneck, kernel_size=1, bias=False)]add_block += [nn.BatchNorm2d(num_bottleneck)]if relu:#add_block += [nn.LeakyReLU(0.1)]add_block += [nn.ReLU(inplace=True)]add_block = nn.Sequential(*add_block)add_block.apply(weights_init_kaiming)classifier = []classifier += [nn.Linear(num_bottleneck, class_num)]classifier = nn.Sequential(*classifier)classifier.apply(weights_init_classifier)self.add_block = add_blockself.classifier = classifierdef forward(self, x):x = self.add_block(x)x = torch.squeeze(x)x = self.classifier(x)return x

Pose-Guided Global Feature Branch:

当一张query图像输入网络时候,预训练好的姿态估计模型会给出一个key points预测结果。然后对每个key point都生成一个heatmap。姿态估计模型预测时除了返回关键点的坐标之外还会返回一个置信度,对于置信度较低的关键点,可以认为该部分是处于遮挡状态中的。因此最后返回的heatmap,对于置信度很低的点,该点的heatmap应该是置0的。

将所有的heatmap叠加之后做max-pooling得到的feature vector和input经过resnet之后再max-pooling的feature vector 做concatenate,最后得到的feature vector即为该Pose-Guided分支的表征结果。用这个feature vector会得到一个id预测结果。

该分支具体代码:

def extract_pg_global_feature(model,global_feature,masks):pg_global_feature_1=nn.AdaptiveAvgPool2d((1,1))(global_feature)pg_global_feature_1=pg_global_feature_1.view(-1,2048)pg_global_feature_2=[]for i in range(18):  mask=masks[:,i,:,:]mask= torch.unsqueeze(mask,1)mask=mask.expand_as(global_feature)pg_feature_=mask*global_featurepg_feature_=nn.AdaptiveAvgPool2d((1,1))(pg_feature_)pg_feature_=pg_feature_.view(-1,2048,1)pg_global_feature_2.append(pg_feature_)pg_global_feature_2=torch.cat((pg_global_feature_2),2)pg_global_feature_2=nn.AdaptiveMaxPool1d(1)(pg_global_feature_2)pg_global_feature_2=pg_global_feature_2.view(-1,2048)pg_global_feature=torch.cat((pg_global_feature_1,pg_global_feature_2),1)pg_global_feature=model(pg_global_feature)return pg_global_feature

global_feature: torch.Size([32, 2048, 24, 8])

参考文章:

行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019

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

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

相关文章

精致旅游网ROXANDREA 网页设计 html模板

一、需求分析 旅游网站通常具有多种功能,以下是一些常见的旅游网站功能: 酒店预订:旅游网站可以提供酒店预订服务,让用户搜索并预订符合其需求和预算的酒店房间。 机票预订:用户可以通过旅游网站搜索、比较和预订机票…

JavaScript 工具库 | PrefixFree给CSS自动添加浏览器前缀

新版的CSS拥有多个新属性,而标准有没有统一,有的浏览器厂商为了吸引更多的开发者和用户,已经加入了最新的CSS属性支持,这其中包含了很多炫酷的功能,但是我们在使用的时候,不得不在属性前面添加这些浏览器的…

Java项目:102SSM汽车租赁系统

博主主页:Java旅途 简介:分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 汽车租赁系统基于SpringSpringMVCMybatis开发,系统使用shiro框架做权限安全控制,超级管理员登录系统后可根据自己的实际需求配角色…

uniapp的css样式图片大小截图展示

目录 截取图片前截取图片后第一种方式&#xff1a;代码第二种方式&#xff1a;代码最后 截取图片前 截取图片后 第一种方式&#xff1a;代码 <view class"swiper-box-img"><image class"swiper-box-img-img" :src"item.file_path" mod…

Windows系统历史版本简介详细版

学习目标&#xff1a; 目录 学习目标&#xff1a; 学习内容&#xff1a; 学习产出&#xff1a; Windows 11的全新用户界面设计&#xff1a;学习新的任务栏、开始菜单、窗口管理等界面元素的使用与操作。 Windows 11的新功能和特点&#xff1a;学习新的虚拟桌面、Microsoft Team…

【Latex错误:】Package fontspec: The font “SIMLI“ cannot be found. LaTex [行 37,列1]

【Latex错误&#xff1a;】Package fontspec: The font "SIMLI" cannot be found. LaTex [行 37&#xff0c;列1] 解决方案 错误详情如下图所示&#xff1a; 最近使用latex写毕业论文&#xff0c;效率是快&#xff0c;但是出些一些错误就难得搞了&#xff0c;上面的…

2023年终总结丨很苦,很酷!

文章目录 个人简介丨了解博主写在前面丨博主介绍年终总结丨博主成就年终总结丨博主想说年终总结丨学习芝士年终总结丨未来展望写在后面丨新年快乐 个人简介丨了解博主 主页地址&#xff1a;https://blog.csdn.net/m0_68111267 荣誉身份 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年…

什么是SEO?

什么是SEO&#xff1f; SEO代表“搜索引擎优化”。这是通过非付费&#xff08;也称为“自然”&#xff09;搜索引擎结果来提高网站流量的质量和数量以及品牌曝光率的做法。 尽管有首字母缩略词&#xff0c;但 SEO 既关乎搜索引擎本身&#xff0c;也关乎人。这是关于了解人们在…

有了向量数据库,我们还需 SQL 数据库吗?

“除了向量数据库外&#xff0c;我是否还需要一个普通的 SQL 数据库&#xff1f;” 这是我们经常被问到的一个问题。如果除了向量数据以外&#xff0c;用户还有其他标量数据信息&#xff0c;那么其业务可能需要在进行语义相似性搜索前先根据某种条件过滤数据&#xff0c;例如&a…

文心一言 VS 讯飞星火 VS chatgpt (168)-- 算法导论13.2 1题

一、用go语言&#xff0c;写出 RIGHT-ROTATE 的伪代码。 文心一言&#xff1a; 在计算机科学中&#xff0c;右旋转&#xff08;RIGHT-ROTATE&#xff09;是一种常见的操作&#xff0c;通常用于数组或链表。以下是一个使用Go语言实现右旋转的伪代码&#xff1a; func rightRo…

计算机组成原理复习7

内存管理 文章目录 内存管理存储器概述存储器的分类按在计算机中的作用&#xff08;层次&#xff09;分类按存储介质分类按存取方式分类按信息的可保存性分类 存储器的性能指标存储容量单位成本存储速度&#xff1a;数据传输率数据的宽度/存储周期 存储器的层次化结构多级存储系…

SpringBoot 医药咨询系统

概述 智慧医药系统&#xff08;smart-medicine&#xff09;是一个基于 SpringBoot 开发的Web 项目。整体页面简约大气&#xff0c;增加了AI医生问诊功能&#xff0c;功能设计的较为简单。 开源地址 https://gitcode.net/NVG_Haru/Java_04 界面预览 功能介绍 游客功能介绍 …

算法中浅谈分支限界法,并区分回溯法

回溯法一般递归&#xff0c;分支一般不递归 布线问题 先判断是四个分叉&#xff0c;四叉树 如何减枝 如果加完减一都是不符合的&#xff0c;没走一步加一 注意是bfs搜索 我们再看一下最大团问题 旅行售货员问题 h(x) 为 已经花费的费用&#xff0c;g(x) 为剩下顶点的最小出…

数据结构: 位图

位图 概念 用一个bit为来标识数据在不在 功能 节省空间快速查找一个数在不在一个集合中排序 去重求两个集合的交集,并集操作系统中的磁盘标记 简单实现 1.设计思想:一个bit位标识一个数据, 使用char(8bit位)集合来模拟 2.预备工作:a.计算这个数在第几个char b.是这个ch…

vue-springboot基于JavaWeb的家装一体化商城平台guptn

针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有效地促进了家装一体化的发展。然而&#xff0c;由于用户量和需求量的增加&#xff0c;信息过载等问题暴露出来&#xff0c;为改善传统线下管理中的不足&#xff0c;本文将提出一套基于…

【YOLO系列】YOLOv4论文超详细解读2(网络详解)

上一篇我们一起读了YOLOv4的论文《YOLOv4&#xff1a;Optimal Speed and Accuracy of Object Detection》&#xff08;直通车→【YOLO系列】YOLOv4论文超详细解读1&#xff08;翻译 &#xff0b;学习笔记&#xff09;&#xff09;&#xff0c;有了初步的印象&#xff0c;论文里…

15-网络安全框架及模型-BLP机密性模型

目录 BLP机密性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 困难和挑战 6 应用场景 7 应用案例 BLP机密性模型 1 背景概述 BLP模型&#xff0c;全称为Bell-LaPadula模型&#xff0c;是在1973年由D.Bell和J.LaPadula在《Mathematical foundations and mod…

波特云 集装箱和 海恒蓝 集装箱 自动化集装箱下单方案

背景&#xff1a; 这几天 遇到了一个客户 是做外贸的 需要大量多的集装箱&#xff0c;了解后 他们是需要在平台上 下单集装箱 才有可能预约到集装箱使用&#xff0c;所以公司每天都需要都需要派个人 盯着电脑来 下单集装箱。 波特云 网站&#xff1a;https://www.eportyun.com…

vue-springboot基于JavaWeb的汽配汽车配件销售采购管理系统

过对知识内容的学习研究&#xff0c;进而设计并实现一个基于JavaWeb的汽配销售管理系统。系统能实现的主要功能应包括&#xff1b;汽车配件、销售订单、采购订单、采购入库等的一些操作&#xff0c;ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 数据库: mysql5.7 框架&…

回首2023: 程序员跳出舒适圈

1 前言 今天的冬日暖阳高照&#xff0c;照耀着我穿着羽绒服的身体&#xff0c;让我感到火一般的燥热&#xff0c;仿佛错觉中已经到了阳春三月。刚刚把孩子洗好&#xff0c;我坐在电脑前&#xff0c;准备整理一下思绪&#xff0c;回顾一下2023年的生活和工作。 2 2023 回顾 回…