我建立了一个CNN模型,用于PyTorch视频中的动作识别。我正在使用torch dataloader模块加载训练数据。你知道吗
train_loader = torch.utils.data.DataLoader(
training_data,
batch_size=8,
shuffle=True,
num_workers=4,
pin_memory=True)
然后传递train_loader
来训练模型。你知道吗
train_epoch(i, train_loader, action_detect_model, criterion, optimizer, opt,
train_logger, train_batch_logger)
现在我想添加一个额外的路径,它将采取相应的视频帧光流。为了计算光流,我使用cv2.calcOpticalFlowFarneback
。但问题是,我不确定如何获得与火车数据加载器张量中的数据相对应的图像,因为它们将被洗牌。我不想预先计算光流,因为存储需求将是巨大的(每帧需要600 kBs)。你知道吗
您必须使用自己的数据加载器类来动态计算光流。这个类的思想是获取包含视频序列的当前和下一帧文件名的文件名元组列表(curr image,next image),而不是简单的文件名列表。这允许在填充文件名列表后获得正确的图像对。 下面的代码为您提供了一个非常简单的示例实现:
这只是FlowDataLoader的一个简单示例。理想情况下,这应该扩展,以便当前图像输出包含标准化的rgb值,光流也被标准化和剪裁。你知道吗
相关问题 更多 >
编程相关推荐