提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
一个行为识别的论文,目标是脱敏,为了防止信息泄露。将两个模态进行融合,用RGB的视频辅助depth的视频。
提示:以下是本篇文章正文内容,下面案例可供参考
实验室四块2080ti,11G
python、pytorch、i7
代码如下(示例):
import torch
import torch.nn as nn
代码如下(示例):
# 前面的一小部分操作
print("x",x.size())
x = self.conv1(x)
print("conv1", x.size())
x = self.bn1(x)
print("bn1", x.size())
x = self.relu(x)
print("relu", x.size())
x = self.maxpool(x)
print("maxpool", x.size())
# 四个layer
x = self.layer1(x)
print("layer1", x.size())
x = self.layer2(x)
print("layer2", x.size())
x = self.layer3(x)
print("layer3", x.size())
x = self.layer4(x)
print("layer4", x.size())
x = self.avgpool(x)
print("avgpool", x.size())
x = torch.flatten(x, 1)
print("flatten", x.size())
x = self.fc(x)
print("fc", x.size())
return x
该处使用的url网络请求的数据。
大概有60种行为,后面10种为双人行为
NTU的两种评价指标
cs评价指标(有很多人,每个人做60个动作,每个动作是2个角度,前五个人的数据动作作为训练集,后五个人的动作作为测试集)
cv(10个人的第一个角度作为训练集,第二个角度作为测试集)
dogv:因为用单纯的depth进行行为识别,准确率太低
类似于光流的思路 将一个视频的连续帧抽取关键帧去识别 最大程度的过滤环境等无关因素
R3D Resnet3D卷积
C3D -> I3D-> R3D(ImageNet的数据预训练)
网络结构
Resnet3D因为多了一个时间维度 所以训练起来难度较大 所以如果将Resnet2D的训练模型迁移到Resnet3D,训练难度会大大降低
1.参考对比Resnet
2.如何加载R3D模型
模型权重
(查看网络初始结构)
static_weight = model.state_dict()
for key,value in static_weight.items():
print(key,value.size())
pth文件也是一个种模型(字典) 一些权重的集合,里面有每一层的一些参数
save_weight = torch.load("./***.pth")
model. load_state_dict(save_weight )
print("a")
如何将2D卷积加载进3D卷积呢?
//这里是保存在本地的2D网络的权重
save_weight = torch.load("./**pth")
for key,value in static_weight.items():
print(key,value.size())
把save_weight里面的tensor复制到state_weight里面的tensor,之后再加载state_weight
for key,value in state_weight.items:
#把sava_weight里的tensor取出来
if key in save_weight.keys():
value2 = save_weight[key]
if value.size() == value2.size():
state_weight[key] = value2
else: #改变尺寸
num = value.size()[2]
p = value2.unqueeze(2)/num
n_tensor = torch.cat([p]*num,dim=2)
state_weight[key] = n_tensor
model.load_state_dict(state_weight)