Learning Memory-guided Normality for Anomaly Detection 代码解析
目录 :
- 整体结构
- 训练(train)部分分析
- 评估(evaluate)部分分析
- 模型(model)部分分析
- 代码环境配置及运行
- 相关资料参考
1.整体结构
1.1 代码文件及作用
根目录下包含 :
- Evaluate.py 评估代码
- Train.py 模型训练代码
- utils.py 负责数值运算:包含均方根差,峰值信噪比,学习率以及评估最后的准确率等.
model文件夹下包含:
- final_future_prediction_with_spatial_sumonly_weight_ranking_top1.py 包含编码器(encoder),译码器(decoder)及卷积自动编码器(convAE)模块.
- memory_final_spatial_sumonly_weight_ranking_top1.py 包含记忆(memory)模块.
- utils.py 数据集(dataset)类模块.
- Memory.py
- Reconstruction.py
上述4,5实现和作用与1,2基本一致,在训练中通过method参数来区别调用:pred对应1,2 , recon对应4,5.(下文省略recon)
1.2 代码结构
1.2.1 训练(Train)部分
Train调用的代码文件:
1.2.2 评估(Evaluate)部分
Evaluate调用的代码文件:
2.训练(train)部分分析
2.1 训练流程
在训练开始之前还存在以下步骤:
- 载入数据集
- 模型设定
- 建立日志文件
训练结束后,会在工程目录下生成exp文件夹,其中包含模型文件及日志文件.
2.2 代码分析
2.2.1 启动参数
- 此处对训练(train)模块代码的启动,参数说明见图中help
2.2.2 数据集载入
- 此处调用的DataLoader为model文件夹下的DataLoader类,该类用于载入数据集,并将数据集分划成mini-batch的形式,每个batch中含5个视频帧.其中ToTensor将(H,W,C)的视频帧转化为(C,H,W)的张量.