步态识别最新论文学习
《Gait Lateral Network: Learning Discriminative
and Compact Representations for
Gait Recognition》
出处:ECCV 2020
作者介绍:
侯赛辉
联合银河水滴在2020发表的新作,刷新了GaitSet的成绩,并且超越同组的GaitPart。
摘要:
步态识别的目的是通过步行模式来识别不同的人,这种步行模式可以在没有对象合作的情况下进行很长的距离。步态识别的一个关键挑战是从轮廓上学习表示,这些轮廓对于诸如衣服,携带条件和摄像机视点等因素是不变的。除了辨别身份之外,步态表示还应该紧凑以便存储,以使数以百万计的主题保持在画廊中。在这项工作中,我们提出了一种名为步态横向网络(GLN)的新型网络,该网络可以从步态识别的轮廓中学习判别式和紧凑式表示。具体地说,GLN利用深层卷积神经网络中的固有特征金字塔来增强步态表示。不同阶段提取的轮廓级别和集合级别特征以自顶向下的方式与横向连接合并。此外,GLN配备了紧凑块,可以在不影响准确性的情况下显着减小步态表示的尺寸。在CASIA-B和OUMVLP上进行的大量实验表明,GLN可以使用256维表示法实现最先进的性能。在CASIA-B上穿着不同衣服行走的最具挑战性的条件下,方法将RANK-1准确性提高了6.45%。
结果:
同时附上同组论文GaitPart结果,GaitPart是CVPR2020的文章,较ECCV2020早几个月:
可见总体上这一篇Gait Lateral Network的综合效果是要好于GaitPart。
核心点总结:
1).增大了图片的尺寸:
虽然作者做了公平比较(GaitSet-L),但是并没贴出自己在小图片(64X44)上的表现,因此可以判断大尺寸对于结果是很有利的。
2).增加了Comact_Block分支:
三元损失函数:
交叉熵损失函数:
损失函数综合设计:
如果没有这一分支,总体效果会差一大截:
自己用pytorch将这个模块写了一下,很简单:
import torch
import torch.nn as nn
class Compact_Block(nn.Module):
def __init__(self, input_size, common_size):
super(Compact_Block, self).__init__()
self.bn = nn.BatchNorm1d(256)
self.relu = nn.ReLU(inplace=True)
self.dropout = nn.Dropout(0.9)
self.fc = nn.Linear(input_size,common_size)
def forward(self, x):
x = x.permute(0,2,1).contiguous()
x = self.bn(x)
x = self.relu(x)
x = self.dropout(x)
x = self.fc(x)
x = self.bn(x)
x = x.squeeze()
return x
if __name__ == '__main__':
import torch
input = torch.randn(64,62,256)
model = Compact_Block(62,1)
print(model(input).shape)