行人属性“Weakly-supervised Learning of Mid-level Features for Pedestrian Attribute Recognition and Loca”

提出一种弱监督行人属性定位框架,利用GoogleNet提取mid-level特征并定位行人属性,解决传统方法难以识别细粒度属性的问题。

不同于多标签学习,这篇论文建立了一个弱监督属性定位框架。基于GoogleNet,设计新的检测层提取mid-level属性特征。不需要bbox属性标记,使用基于最大池化的弱监督目标检测技术训练mid-level层。然后,回归这些检测响应梯度,预测属性标签。最后,对检测层的融合激活图聚类,得到属性的位置和形状。融合的权值由属性及其对应的mid-level特征相关程度估计。在PETA和RAP数据集上实验。

基于CNN的方法行人属性识别方法,一般是抠出行人样本,输入到CNN分类器,输出多个行人属性标签。行人属性预测值得研究的点:1)精细尺度的属性,如“戴眼镜”由于尺度小还比较难识别;2)精细尺度属性在卷积池化过程中有可能被忽略;3)属性的位置变化较大,如“包”的位置;4)裁切出的人体不在图像中间。

考虑到上述困难,论文在属性定位框架中进行属性预测,即弱监督的行人属性定位网络,根据mid-level层属性相关特征的检测结果,得到属性标记,而不是直接从整个人体样本中预测。动机来自实际的和抽象的特征与mid-level语义特征相关,如行人是否带包可以先检测是否有包。

但是全监督的目标检测又不现实,论文使用图像层的属性标记指导弱监督学习,跟据弱监督检测层发掘mid-level语义特征。训练得到WPAL网络后,根据检测器的响应定位属性,估计属性和mid-level特征间相关性强度。然后根据mid-level检测器激活图与权值叠加的特征图估计属性的形状。最后,属性的位置根据激活聚类中心估计。

相关研究
弱监督目标检测方法:Is object localization for free?-weakly-supervised learning with convolutional neural networks。

网络结构
网络结构如下图所示:
这里写图片描述
卷积层来自GoogleNet模型, inception4a/output, inception4d/output and inception5b/output三个分支替换到与卷积层及可变金字塔(FSPP)层连接。FSPP层扮演全局最大池化的角色,机制如下图所示:
这里写图片描述

属性定位及形状估计
先确定属性和mid-lvel特征检测bins的相关度,对每个bin,相关度计算算法为:
这里写图片描述

然后属性概率图由加权的激活图估计,权值为归一化的相关度,算法为:
这里写图片描述

实验结果
属性定位的结果:
这里写图片描述
在RAP和PETA数据集上的结果
这里写图片描述

“Distilling Aggregated Knowledge for Weakly - Supervised Video Anomaly Detection”聚焦于弱监督视频异常检测领域。在弱监督的场景下,训练数据仅带有粗略的标签信息,不像强监督那样具有精确的逐帧标注,这给视频异常检测带来了挑战。 该研究提出的方法核心在于知识蒸馏和聚合。知识蒸馏是一种将复杂模型(教师模型)的知识传递给简单模型(学生模型)的技术,通过这种方式可以让学生模型学习到教师模型所蕴含的更丰富的信息。在视频异常检测中,利用知识蒸馏可以帮助模型更好地捕捉视频中的异常模式。 聚合知识的过程则是将多个不同层面或者不同视角的信息进行整合。在视频数据中,可能包括不同帧之间的时序信息、不同特征维度的空间信息等。通过聚合这些信息,能够让模型从更全面的角度去判断视频是否存在异常。 例如,在实际应用中,对于监控视频里的异常行为检测,可能只有少量的视频被标注为异常,但不清楚具体哪一帧或者哪一段是异常的。利用该研究的方法,模型可以通过知识蒸馏和聚合,从有限的标注信息中学习到异常行为的特征,从而对新的未标注视频进行异常检测。 ```python # 这里可以简单示意一个可能的代码思路,仅为概念示意 # 假设定义一个简单的学生模型和教师模型 import torch import torch.nn as nn # 简单定义教师模型 class TeacherModel(nn.Module): def __init__(self): super(TeacherModel, self).__init__() # 这里简单用一个线性层示意 self.fc = nn.Linear(10, 2) def forward(self, x): return self.fc(x) # 简单定义学生模型 class StudentModel(nn.Module): def __init__(self): super(StudentModel, self).__init__() # 简单用一个线性层示意 self.fc = nn.Linear(10, 2) def forward(self, x): return self.fc(x) teacher = TeacherModel() student = StudentModel() # 模拟输入数据 input_data = torch.randn(1, 10) # 教师模型输出 teacher_output = teacher(input_data) # 这里可以添加知识蒸馏的损失函数等后续处理步骤 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值