代码复现--Self-Distilled Masked Auto-Encoders are Efficient Video Anomaly Detectors (CVPR 2024)

数据预处理

  • 如下的结构是根据源代码和作者在github-issue中的回答结合得到的
Avenue Dataset/
├── test/
│   ├── frames/         # 测试集原始帧(脚本处理)
│   │   ├── video01/1.png
│   │   ├── ...
│   │   ├── video21/...
│   ├── gradients2/     # 测试集梯度图 (见UB数据集,步骤3)
│   │   ├── video01/1.png
│   │   ├── ...
│   │   ├── video21/...
│   └── ...
├── train/
│   ├── frames/         # 训练集正常帧(脚本处理)
│   │   ├── video01/0.png... # (我这不规范,一会0.png一会1.png,虽然使用上同个test或train里能对应就好,但最好统一0开始)
│   │   ├── ...
│   │   ├── video16/0.png...
│   ├── gradients2/     # 训练集梯度图 (见UB数据集,步骤3)
│   │   ├── video01/0.png...
│   │   ├── ...
│   │   ├── video16/0.png...
│   ├── frames_abnormal/  # 训练集异常帧 (见UB数据集,步骤2)
│   │   ├── video01/0.png...
│   │   ├── ...
│   │   ├── video16/0.png...
│   ├── masks_abnormal/   # 异常帧的掩码 (见UB数据集,步骤2)
│   │   ├── video01/00000.png
│   │   ├── ...
│   │   ├── video16/0.png...
└── ...

Avenue数据集

  • Avenue数据集(点击跳转)
  • 将Avenue数据集中的视频,根据视频帧率截取帧(Avenue数据集的fps=25,即1秒截取25帧),并按照如上结构放置好。
    • 如下是我用来提取视频帧的脚本(脚本放入视频文件夹里,开终端运行下即可):extract_An_frames.py
    • 提取好的文件夹我放入的路径:
      • testing_videos:/home/user/datasets/Avenue_Dataset/Avenue Dataset/test/frames/
      • training_videos:/home/user/datasets/Avenue_Dataset/Avenue Dataset/train/frames/
import os
import cv2

# 遍历当前目录中的所有视频文件
def extract_frames_from_videos():
    # 获取当前目录
    current_dir = os.getcwd()
    
    # 获取所有视频文件,假设视频文件后缀为 .mp4, .avi, .mkv等
    video_extensions = ['.mp4', '.avi', '.mkv']
    video_files = [f for f in os.listdir(current_dir) if any(f.endswith(ext) for ext in video_extensions)]

    for video_file in video_files
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值