slowfast官方数据集复现版(AVA)及yaml文件介绍
发布时间:2026/9/10 16:20:20来源:尧图网络
文章目录软硬件配置前言训练官方AVA数据集数据集准备ava数据集格式annotationsframe_lists帧列表存放train.csv和val.csv两个文件下载视频裁剪视频提取帧下载标注下载帧列表下载人的标注框数据集训练配置文件yaml介绍训练前配置文件准备进行训练后言参考链接软硬件配置win 11python 3.8pytorch 2.0.0torchvision 0.15.0CUDA 11.8RTX3070前言这里是跟着b站视频视频行为识别模型—Slowfast算法实战教程迪哥带你学CV根据我的任务用AVA格式是最合适的因此通过把官方数据集跑一下来练手这篇文章里没有测试的部分可以参考我的上一篇Win11下配置安装slowfast并测试运行成功疯狂踩坑版训练官方AVA数据集基本步骤是按照官方文档DATASET.md的数据集制作AVA数据集下载网站下载数据集准备AVA v2.2 数据集包含 430 个视频分为 235 个用于训练、64 个用于验证和 131 个用于测试。每个视频有 15 分钟的注释间隔为 1 秒。AVA v2.2 与 v2.1 在两个方面不同。首先进行了另一轮人工评分以插入缺失的标签使注释的数量增加了 2.5%。其次对于少数宽高比远大于 169 的视频对框位置进行了矫正。此处来自于官网介绍ava数据集格式ava|_ frames||_[video name0]|||_[video name0]_000001.jpg|||_[video name0]_000002.jpg|||_...||_[video name1]||_[video name1]_000001.jpg||_[video name1]_000002.jpg||_...|_ frame_lists||_ train.csv||_ val.csv|_ annotations|_[official AVA annotation files]|_ ava_train_predicted_boxes.csv|_ ava_val_predicted_boxes.csv因此目的就是按照这个数据集格式制作数据集我在slowfast文件夹下新建了一个文件夹名为ava_demo在ava_demo中新建子文件夹annotations、frame_lists、frames、videos其中最重要的前三个videos中存储的是下载的视频annotations存放标注文件ava_action_list_v2.2.pbtxt存放行为列表ava_train/val_v2.2.csv分别存放训练/测试的行为标签以ava_train_v2.2.csv示例第一列视频数据的名称第二列开始的秒数第三到六列框的四角坐标第七列行为标签第八列身份IDava_train/val_excluded_timestamps_v2.2.csv标注错误帧如果某一帧是错误的就需要排除记录一下需要排除的帧frame_lists帧列表存放train.csv和val.csv两个文件第一列视频名称第二列视频id第三列帧id第四列视频路径第五列标签空的下载视频在这里使用一个训练视频和一个验证视频不用测试视频官方给出的下载视频的命令DATA_DIR../../data/ava/videosif[[!-d${DATA_DIR}]];thenecho${DATA_DIR}doesnt exist. Creating it.;mkdir-p${DATA_DIR}fiwgethttps://s3.amazonaws.com/ava-dataset/annotations/ava_file_names_trainval_v2.1.txtforlinein$(catava_file_names_trainval_v2.1.txt)dowgethttps://s3.amazonaws.com/ava-dataset/trainval/$line-P${DATA_DIR}done由于只想用一个视频进行测试就没运行这个文件而是直接在浏览器中复制https://s3.amazonaws.com/ava-dataset/trainval/-5KQ66BBWC4.mkv对于该视频的类型名可以在https://s3.amazonaws.com/ava-dataset/annotations/ava_file_names_trainval_v2.1.txt查到直接ctrlF搜索就可以将训练和验证的第一个视频都下载下来存放在videos文件夹中裁剪视频直接使用官方的命令我用的是绝对路径会不容易混淆对于代码中具体的命令含义可以借助chatgpt搜索一下IN_DATA_DIRD:/file/SlowFast-main/ava_demo/videosOUT_DATA_DIRD:/file/SlowFast-main/ava_demo/videos_15minif[[!-d${OUT_DATA_DIR}]];thenecho${OUT_DATA_DIR}doesnt exist. Creating it.;mkdir-p${OUT_DATA_DIR}fiforvideoin$(ls-A1-U${IN_DATA_DIR}/*)doout_name${OUT_DATA_DIR}/${video##*/}if[!-f${out_name}];thenffmpeg-ss900-t901-i${video}${out_name}fidone新建了一个.sh的文件将下面的代码复制进去直接在cmd运行因为我是windows系统试了一下这样也可以shvideoTo15.sh提取帧每秒提取30帧也就是所有的原始帧是官方源代码唯一的更改就是路径IN_DATA_DIRD:/file/SlowFast-main/ava_demo/videos_15minOUT_DATA_DIRD:/file/SlowFast-main/ava_demo/framesif[[!-d${OUT_DATA_DIR}]];thenecho${OUT_DATA_DIR}doesnt exist. Creating it.;mkdir-p${OUT_DATA_DIR}fiforvideoin$(ls-A1-U${IN_DATA_DIR}/*)dovideo_name${video##*/}if[[$video_name*.webm]];thenvideo_name${video_name::-5}elsevideo_name${video_name::-4}fiout_video_dir${OUT_DATA_DIR}/${video_name}/mkdir-p${out_video_dir}out_name${out_video_dir}/${video_name}_%06d.jpgffmpeg-i${video}-r30-q:v1${out_name}done新建frames.sh文件在cmd下运行shframes.sh下载标注当时不知道wget命令能不能在windows下运行所以就直接自己在官网上下载的直接下载解压后将里面的文件放在annotations文件夹下就可以解压下的文件包含这些内容下载帧列表按照DATASET.md中AVA数据集的第五点下载train.csv和val.csv放在frames_lists文件夹下下载人的标注框按照DATASET.md中AVA数据集的第六点下载ava_train_predicted_boxes.csv、ava_val_predicted_boxes.csv和ava_test_predicted_boxes.csv放在annotations文件夹中理论上来说test是不需要的就先下载下来备用吧至此所有需要的标注文件都下载完成了接下来就是训练啦数据集训练配置文件yaml介绍训练的时候需要更改yaml配置文件写这篇教程的时候发现配置文件被我改的乱七八蕉的而且SLOW_8x8_R50_SHORT和SLOWFAST_32x2_R101_50_50等等混在一起了分不出配置文件的区别因此在这里优先介绍一下配置文件源代码中所配置的yaml文件就是下图所示的这些首先从命名上来看命名规则是模型架构类型_帧长度×采样率_ResNet深度50/101.yaml即不同文件名对应不同的网络架构以SLOWFAST_32x2_R101_50_50.yaml为例来具体介绍一下TRAIN:# 训练参数设置ENABLE:FalseDATASET:avaBATCH_SIZE:16EVAL_PERIOD:1CHECKPOINT_PERIOD:1AUTO_RESUME:True# CHECKPOINT_FILE_PATH: #path to pretrain modelCHECKPOINT_TYPE:pytorch# 权重保存格式DATA:# 数据预处理参数NUM_FRAMES:32SAMPLING_RATE:2TRAIN_JITTER_SCALES:[256,320]TRAIN_CROP_SIZE:224TEST_CROP_SIZE:256INPUT_CHANNEL_NUM:[3,3]DETECTION:# 检测设置ENABLE:TrueALIGNED:FalseAVA:# AVA数据集的特定设置FRAME_DIR:# 原始帧路径FRAME_LIST_DIR:# 帧列表路径ANNOTATION_DIR:# 标签路径DETECTION_SCORE_THRESH:0.8TRAIN_PREDICT_BOX_LISTS:[ava_train_v2.2.csv,person_box_67091280_iou90/ava_detection_train_boxes_and_labels_include_negative_v2.2.csv,]BGR:FalseDETECTION_SCORE_THRESH:0.8TEST_PREDICT_BOX_LISTS:[person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv]SLOWFAST:# slowfast模型配置ALPHA:4BETA_INV:8FUSION_CONV_CHANNEL_RATIO:2FUSION_KERNEL_SZ:5RESNET:# ResNet模型配置ZERO_INIT_FINAL_BN:TrueWIDTH_PER_GROUP:64NUM_GROUPS:1DEPTH:101TRANS_FUNC:bottleneck_transformSTRIDE_1X1:FalseNUM_BLOCK_TEMP_KERNEL:[[3,3],[4,4],[6,6],[3,3]]SPATIAL_DILATIONS:[[1,1],[1,1],[1,1],[2,2]]SPATIAL_STRIDES:[[1,1],[2,2],[2,2],[1,1]]NONLOCAL:# 非局部块的设置LOCATION:[[[],[]],[[],[]],[[6,13,20],[]],[[],[]]]GROUP:[[1,1],[1,1],[1,1],[1,1]]INSTANTIATION:dot_productPOOL:[[[2,2,2],[2,2,2]],[[2,2,2],[2,2,2]],[[2,2,2],[2,2,2]],[[2,2,2],[2,2,2]]]BN:# 批归一化参数USE_PRECISE_STATS:FalseNUM_BATCHES_PRECISE:200SOLVER:# 优化器设置训练的优化器设置会更详细BASE_LR:0.1LR_POLICY:steps_with_relative_lrsSTEPS:[0,10,15,20]LRS:[1,0.1,0.01,0.001]MAX_EPOCH:20MOMENTUM:0.9WEIGHT_DECAY:1e-7WARMUP_EPOCHS:5.0WARMUP_START_LR:0.000125OPTIMIZING_METHOD:sgdMODEL:# 模型架构配置NUM_CLASSES:80ARCH:slowfastMODEL_NAME:SlowFastLOSS_FUNC:bceDROPOUT_RATE:0.5HEAD_ACT:sigmoidTEST:# 测试配置ENABLE:FalseDATASET:avaBATCH_SIZE:8DATA_LOADER:# 数据加载器配置NUM_WORKERS:2PIN_MEMORY:TrueNUM_GPUS:1# GPU数量NUM_SHARDS:1RNG_SEED:0OUTPUT_DIR:.# 可视化参数TENSORBOARD:MODEL_VIS:TOPK:2DEMO:# 测试视频设置ENABLE:TrueLABEL_FILE_PATH:./demo/AVA/ava.jsonINPUT_VIDEO:./input/1.mp4#视频输入路径OUTPUT_FILE:./output/1.mp4#视频输出路径#WEBCAM: 0DETECTRON2_CFG:COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml# 目标检测架构DETECTRON2_WEIGHTS:detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl训练前配置文件准备根据实验需求和电脑配置选择合适自己的网络架构对应不同名字的配置文件对选中的配置文件中的参数进行检查下面是着重需要检查和设置的DEMO下的目标检测那里的权重和配置文件应该是fastrcnn训练的可以对人进行目标检测的预训练权重TRAIN:# 训练参数设置ENABLE:# 是否启用训练BATCH_SIZE:16# 内存溢出要降低该值AVA:# 要注意换成自己的路径FRAME_DIR:# 原始帧路径FRAME_LIST_DIR:# 帧列表路径ANNOTATION_DIR:# 标签路径TRAIN_PREDICT_BOX_LISTS:[ava_train_v2.2.csv,person_box_67091280_iou90/ava_detection_train_boxes_and_labels_include_negative_v2.2.csv,]TEST_PREDICT_BOX_LISTS:[person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv]MODEL:NUM_CLASSES:80# 自制数据集要根据自己的类别更改该值NUM_GPUS:1# GPU数量根据电脑性能更改NUM_SHARDS:1DEMO:# 测试视频设置ENABLE:LABEL_FILE_PATH:./demo/AVA/ava.json# 标签文件INPUT_VIDEO:./input/1.mp4#视频输入路径OUTPUT_FILE:./output/1.mp4#视频输出路径DETECTRON2_CFG:COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml# 目标检测架构DETECTRON2_WEIGHTS:detectron2://COCO-Detection/faster_rcnn_R_50_FPN_3x/137849458/model_final_280758.pkl对官方数据集进行训练时配置文件的设置我使用的是SLOWFAST_32x2_R50.yaml这个配置文件另外将TEST设置为false进行训练cfg后面放自己yaml文件所在的路径python tools/run_net.py--cfgconfigs/AVA/c2/SLOWFAST_32x2_R50.yaml后言slowfast的教程零零散散的一切都是自己摸索着来看了很多教程并且也遇到了很多报错上面的是chatgpt加上自己的理解我的实验主要是自制数据集这篇的主要目的也是在自制数据集之前先熟悉一下流程可能会有错误欢迎大家指出也欢迎大家交流祝科研顺利下一篇就是自制数据集啦参考链接【slowfast复现 训练】训练过程 制作ava数据集关于slowfast杨帆老师出了蛮多教程的也是主要参考的他的帖子推荐大家去看
网站建设高端定制企业官网