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

这篇具有很好参考价值的文章主要介绍了行人重识别优化: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
行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification,ReID,深度学习,人工智能,ReID

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维.

行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification,ReID,深度学习,人工智能,ReID

​ 图1

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

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

行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification,ReID,深度学习,人工智能,ReID

​ 图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的向量。

行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification,ReID,深度学习,人工智能,ReID

​ 图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_block
        self.classifier = classifier

    def 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_feature
        pg_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文章来源地址https://www.toymoban.com/news/detail-769710.html

到了这里,关于行人重识别优化:Pose-Guided Feature Alignment for Occluded Person Re-Identification的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 行人重识别数据集之 Market1501 数据集

    2015年,论文 Person Re-Identification Meets Image Search 提出了 Market 1501 数据集,现在 Market 1501 数据集已经成为行人重识别领域最常用的数据集之一。 百度云下载链接 Market-1501-v15.09.15.zip Market 1501 的行人图片采集自清华大学校园的 6 个摄像头,一共标注了 1501 个行人。其中,751 个行

    2024年02月04日
    浏览(25)
  • python使用opencv实现识别指定区域的行人

    1、案例介绍         案例实现对视频中的行人进行实时检测,并可在视频画面通过鼠标绘制矩形区域,行人经过区域内后,程序会进行判断行人已进入该区域,行人检测框颜色将变为蓝色。该程序主要使用python的opencv模块实现,实现流程:首先利用Haar分类器实现行人检测

    2024年02月09日
    浏览(31)
  • 基于YOLOv7的密集场景行人检测识别分析系统

    密集场景下YOLO系列模型的精度如何?本文的主要目的就是想要基于密集场景基于YOLOv7模型开发构建人流计数系统,简单看下效果图:  这里实验部分使用到的数据集为VSCrowd数据集。 实例数据如下所示:   下载到本地解压缩后如下所示: annotations/目录下存放的是标注数据文

    2024年02月13日
    浏览(38)
  • 竞赛保研 基于深度学习的行人重识别(person reid)

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的行人重识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 行人重识别技术,是智能视频监控系统的关键技术之一,其研宄是针对特定目标行人

    2024年01月17日
    浏览(30)
  • 竞赛选题 深度学习实现行人重识别 - python opencv yolo Reid

    🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的行人重识别算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:5分 🧿 更多资料, 项目分享: https://

    2024年02月05日
    浏览(32)
  • 行人重识别数据集Person Re-Identification Datasets(全)

    Dataset Release time # identities # cameras # images Label method Crop size Multi-shot Tracking sequences Full frames availability VIPeR 2007 632 2 1264 Hand 128X48 ETH1,2,3 2007 85, 35, 28 1 8580 Hand Vary ✔ ✔ ✔ QMUL iLIDS 2009 119 2 476 Hand Vary ✔ GRID 2009 1025 8 1275 Hand Vary CAVIAR4ReID 2011 72 2 1220 Hand Vary ✔ 3DPeS 2011 192 8 1011 Hand V

    2024年02月02日
    浏览(27)
  • 目标检测YOLO实战应用案例100讲-面向恶劣环境下的多模态 行人识别

    目录 前言 国内外研究现状  可见光行人目标识别  红外行人目标识别 

    2024年02月07日
    浏览(26)
  • 计算机毕设 深度学习实现行人重识别 - python opencv yolo Reid

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月14日
    浏览(31)
  • 跨膜态行人重识别 综述,查阅许多资料,详细解释,适合以前没有基础的同学学习。

    标签:机器学习、深度学习、神经网络、图像检索、图像处理、数据驱动、行人重识别、行人检索、评价度量  行人重识别(Person re-identification)也称行人再识别,是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术。广泛被认为是一个 图像检索 的子问

    2024年02月16日
    浏览(30)
  • 深度学习毕设项目 深度学习实现行人重识别 - python opencv yolo Reid

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包