【slowfast 减少ava数据集】将ava数据集缩小到2个,对数据集做训练,然后进行检测,为训练自己的数据集做准备

目录

  • 前言
  • 一,数据文件结构
    • 1.1 myava
    • 1.2 annotations
    • 1.3 annotations文件处理
    • 1.4 frame_lists
    • 1.5 frames
  • 二,预训练模型
  • 四,配置文件
    • 4.1 创建新的yaml文件
    • 4.2 yaml文件解释
  • 五,训练
  • 六,结果查看

前言

b站讲解
ava的数据集非常大,训练起来非常慢,这次我就把ava的数据集缩小到2个视频(原本有299个视频),这样做的目的是观察slowfast是如何训练ava数据集的。也为我后面制作自己的数据集做下铺垫。

一,数据文件结构

首先需要把原有的数据文件的内容进行修改,原来的数据文件针对的是299个视频图片,这次只针对2个视频图片。

1.1 myava

新建一个文件夹myava,这里存放下图显示的文件夹:annotationsframe_listsframes

在这里插入图片描述

1.2 annotations

在annotations文件下,有如下文件,这些文件是从官网下载的

在这里插入图片描述

在这里插入图片描述

这里不要使用官网的默认版本,采用最新的2.2版本,官网有一个下载的链接:https://dl.fbaipublicfiles.com/pyslowfast/annotation/ava/ava_annotations.tar
在这里插入图片描述

下载后,解压(我是在ubuntu下解压的),使用tree查看其结构:

├── ava_annotations
│   ├── ava_action_list_v2.1_for_activitynet_2018.pbtxt
│   ├── ava_action_list_v2.2_for_activitynet_2019.pbtxt
│   ├── ava_action_list_v2.2.pbtxt
│   ├── ava_included_timestamps_v2.2.txt
│   ├── ava_test_excluded_timestamps_v2.1.csv
│   ├── ava_test_excluded_timestamps_v2.2.csv
│   ├── ava_test_v2.2.csv
│   ├── ava_train_excluded_timestamps_v2.1.csv
│   ├── ava_train_excluded_timestamps_v2.2.csv
│   ├── ava_train_v2.1.csv
│   ├── ava_train_v2.2.csv
│   ├── ava_val_excluded_timestamps_v2.1.csv
│   ├── ava_val_excluded_timestamps_v2.2.csv
│   ├── ava_val_v2.1.csv
│   ├── ava_val_v2.2.csv
│   ├── person_box_67091280_iou75
│   │   ├── ava_detection_test_boxes_and_labels.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative_v2.1.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative_v2.2.csv
│   │   ├── ava_detection_val_boxes_and_labels.csv
│   │   ├── ava_detection_val_for_training_boxes_and_labels_include_negative.csv
│   │   └── ava_detection_val_for_training_boxes_and_labels_include_negative_v2.2.csv
│   ├── person_box_67091280_iou90
│   │   ├── ava_action_list_v2.1_for_activitynet_2018.pbtxt
│   │   ├── ava_detection_test_boxes_and_labels.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative_v2.1.csv
│   │   ├── ava_detection_train_boxes_and_labels_include_negative_v2.2.csv
│   │   ├── ava_detection_val_boxes_and_labels.csv
│   │   ├── ava_detection_val_for_training_boxes_and_labels_include_negative.csv
│   │   ├── ava_detection_val_for_training_boxes_and_labels_include_negative_v2.1.csv
│   │   ├── ava_detection_val_for_training_boxes_and_labels_include_negative_v2.2.csv
│   │   ├── ava_train_predicted_boxes.csv
│   │   ├── ava_train_v2.1.csv
│   │   ├── ava_val_excluded_timestamps_v2.1.csv
│   │   ├── ava_val_predicted_boxes.csv -> ava_detection_val_boxes_and_labels.csv
│   │   ├── ava_val_v2.1.csv
│   │   ├── test.csv
│   │   ├── train.csv
│   │   └── val.csv
│   ├── test.csv
│   ├── train.csv
│   └── val.csv
└── ava_annotations.tar

这些文件不能全要,只去我们所需的,因为我们用的每一个都是需要进行修改的。

下面是需要的文件:
annotations
person_box_67091280_iou90
------ava_detection_train_boxes_and_labels_include_negative_v2.2.csv
------ava_detection_val_boxes_and_labels.csv
ava_action_list_v2.2_for_activitynet_2019.pbtxt
ava_detection_val_boxes_and_labels.csv
ava_train_v2.1.csv
ava_train_v2.2.csv
ava_val_excluded_timestamps_v2.2.csv
ava_val_v2.2.csv

1.3 annotations文件处理

每一个文件都需要处理,下面开始处理:
1,/annotations/person_box_67091280_iou90/ava_detection_train_boxes_and_labels_include_negative_v2.2.csv:
如下图所示,只要第一列名为: -5KQ66BBWC4的所有行
ava_detection_train_boxes_and_labels_include_negative_v2.2.cs

2,/annotations/person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv
如下图所示,只要第一列为:1j20qq1JyX4 的所有行
在这里插入图片描述
3,/annotations/ava_action_list_v2.2_for_activitynet_2019.pbtxt:
这个文件不改,这是用来记录行为种类的,共有80个

在这里插入图片描述

4,annotations/ava_detection_val_boxes_and_labels.csv

如下图所示,只要第一列为:1j20qq1JyX4 的所有行
在这里插入图片描述

5,/annotations/ava_train_v2.1.csv, /annotations/ava_train_v2.2csv
这两个文件非常类似,处理方法也一样

如下图所示,只要第一列名为: -5KQ66BBWC4的所有行
在这里插入图片描述

6,/annotations/ava_val_excluded_timestamps_v2.2.csv
这个是空文件,因为在我们所选的视频中,没有需要排除的帧。

7,/annotations/ava_val_v2.2.csv

如下图所示,只要第一列为:1j20qq1JyX4 的所有行

在这里插入图片描述

1.4 frame_lists

frame_lists目录下,这里只存放了两个文件:train.csvval.csv
下载地址:train.csv、val.csv
在这里插入图片描述

同样需要修改,同上一小节讲的。

1,frame_lists/train.csv

如下图所示,只要第一列名为: -5KQ66BBWC4的所有行
在这里插入图片描述

2,frame_lists/val.csv

如下图所示,只要第一列为:1j20qq1JyX4 的所有行
在这里插入图片描述

 

1.5 frames

/frames下有两个文件夹:-5KQ66BBWC4,1j20qq1JyX4
这两个文件夹里存放的就是ava剪辑后的图片,制作过程参考官网
在这里插入图片描述

在这里插入图片描述

二,预训练模型

最好使用预训练模型,这样可以缩短训练的一个时间,我用的预训练模型如下图

模型下载官网,预训练模型下载链接
在这里插入图片描述
下载下来后,放在文件夹/SlowFast/configs/AVA/c2/下面,如下图(由于下载的预训练模型和之前一个模型重名,所以我在预训练模型后面加了个ss)
在这里插入图片描述

四,配置文件

4.1 创建新的yaml文件

/SlowFast/configs/AVA/下创建一个新的yaml文件:SLOWFAST_32x2_R50_SHORT4.yaml,如下图

在这里插入图片描述

代码如下:

TRAIN:ENABLE: TrueDATASET: avaBATCH_SIZE: 2 #64EVAL_PERIOD: 5CHECKPOINT_PERIOD: 1AUTO_RESUME: TrueCHECKPOINT_FILE_PATH: '/home/lxn/0yangfan/Slowfast2/SlowFast-master/configs/AVA/c2/SLOWFAST_32x2_R101_50_50ss.pkl'  #path to pretrain modelCHECKPOINT_TYPE: caffe2
DATA:NUM_FRAMES: 32SAMPLING_RATE: 2TRAIN_JITTER_SCALES: [256, 320]TRAIN_CROP_SIZE: 224TEST_CROP_SIZE: 224INPUT_CHANNEL_NUM: [3, 3]PATH_TO_DATA_DIR: '/disk6T/ava'
DETECTION:ENABLE: TrueALIGNED: True
AVA:FRAME_DIR: '/disk6T/myava/frames'FRAME_LIST_DIR: '/disk6T/myava/frame_lists'ANNOTATION_DIR: '/disk6T/myava/annotations'#LABEL_MAP_FILE: 'ava_action_list_v2.1_for_activitynet_2018.pbtxt'#0GROUNDTRUTH_FILE: 'ava_val_v2.1.csv'#TRAIN_GT_BOX_LISTS: ['ava_train_v2.1.csv']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",]#TRAIN_PREDICT_BOX_LISTS: ["ava_train_predicted_boxes.csv"]TEST_PREDICT_BOX_LISTS: ["person_box_67091280_iou90/ava_detection_val_boxes_and_labels.csv"]#TEST_PREDICT_BOX_LISTS: ["ava_test_predicted_boxes.csv"]#EXCLUSION_FILE: "ava_train_excluded_timestamps_v2.1.csv"SLOWFAST:ALPHA: 4BETA_INV: 8FUSION_CONV_CHANNEL_RATIO: 2FUSION_KERNEL_SZ: 7
RESNET:ZERO_INIT_FINAL_BN: TrueWIDTH_PER_GROUP: 64NUM_GROUPS: 1DEPTH: 50TRANS_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: [[[], []], [[], []], [[], []], [[], []]]GROUP: [[1, 1], [1, 1], [1, 1], [1, 1]]INSTANTIATION: dot_productPOOL: [[[1, 2, 2], [1, 2, 2]], [[1, 2, 2], [1, 2, 2]], [[1, 2, 2], [1, 2, 2]], [[1, 2, 2], [1, 2, 2]]]
BN:USE_PRECISE_STATS: FalseNUM_BATCHES_PRECISE: 200
SOLVER: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: sgd
MODEL:NUM_CLASSES: 80ARCH: slowfastMODEL_NAME: SlowFastLOSS_FUNC: bceDROPOUT_RATE: 0.5HEAD_ACT: sigmoid
TEST:ENABLE: FalseDATASET: avaBATCH_SIZE: 8
DATA_LOADER:NUM_WORKERS: 2PIN_MEMORY: True
NUM_GPUS: 1
NUM_SHARDS: 1
RNG_SEED: 0
OUTPUT_DIR: .

4.2 yaml文件解释

  1. TRAIN
    1.1. ENABLE: True。这里将TRAIN设置为TRUE,同样的,也要TEST.ENABLE设置为False(我们只需要训练的过程)
    1.2 BATCH_SIZE: 2 #64.这里batch_size是由于我的电脑显存不够,只能设置为2,如果大家的显存够大,可以把这个batch_size设置的大一些。
    1.3 CHECKPOINT_FILE_PATH: ‘/home/lxn/0yangfan/Slowfast2/SlowFast-master/configs/AVA/c2/SLOWFAST_32x2_R101_50_50ss.pkl’ 这里放的是预训练模型的位置
  2. DATA
    2.1 PATH_TO_DATA_DIR: ‘/disk6T/ava’ 这里是ava文件的位置

其他也比较简单,大家就自己理解了。

五,训练

 python tools/run_net.py --cfg configs/AVA/SLOWFAST_32x2_R50_SHORT4.yaml

在这里插入图片描述

六,结果查看

这里就要参考之前的博客进行结果的查看:
【SlowFast复现】SlowFast Networks for Video Recognition复现代码 使用自己的视频进行demo检测

使用训练后的权重,对我们的视频进行检测,会发现检测结果很糟糕。毕竟只是用了1个训练视频和1个验证视频

最后检验的视频会上传到B站中。

任何程序错误,以及技术疑问或需要解答的,请添加

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。

2019独角兽企业重金招聘Python工程师标准>>> 首先必须明一点 Field类主要是用来辅助获取和操作类的属性的! 1.怎么通过反射获取类的属性 先来看JDK提供的方法有如下几种: a)Class.getDeclaredField(String name); 返回一个 Field 对象&#x…

Python3自带HTTP文件传输服务(局域网文件共享)

一行命令搭建一个基于python3的http文件传输服务 WIN10系统下,打开打算要分享传输的文件夹(文件夹内存放分享的文件,建议以压缩包形式存放),shift鼠标右键,出现如下图,选择“在此处打开Powershe…

90% 的人都会答错的面试题 == 和 equals 的区别

和 equals 的区别是什么? 解读对于基本类型和引用类型, 的作用效果是不同的,如下所示:基本类型:比较的是值是否相同;引用类型:比较的是引用是否相同;代码示例:String x …

【slowfast 训练自己的数据集】自定义动作,制作自己的数据集,使用预训练模型进行训练,并检测其结果

目录 前言一,视频的处理 1.1 视频准备1.2 切割视频为图片1.3 使用faster rcnn自动框人1.4 via标注图片二,数据集文件 2.1 数据集文件总览2.2 annotations 2.2.1 ava_train_v2.2.csv2.2.2 ava_val_v2.2.csv2.2.3 ava_val_excluded_timestamps_v2.2.csv2.…

windows Secure CRT使用SSH访问Linux服务器被拒绝,winscp访问Linux服务器被拒绝

我们在windows上使用Secure CRT、PUTTY等工具SSH连接到Linux服务器时,会出现linux服务器拒绝访问情况。 可能是Linux系统上没有安装SSH服务; 在终端输入: ssh localhost若出现: ssh: connect to host localhost port 22: Conne…

【代码收集】提前载入贴图

2019独角兽企业重金招聘Python工程师标准>>> 在进入一个比较大的场景的时候,我们一般都会提前load场景的贴图,使游戏更加流畅,一边加载一边显示游戏的加载的进度 具体的方法实现如下: CCTextureCache::sharedTextureCa…

Jetson nano上部署自己的Yolov5模型(TensorRT加速)onnx模型转engine文件

Jetson nano上部署自己的Yolov5模型(TensorRT加速)onnx模型转engine文件 背景 在主机上训练自己的Yolov5模型,转为TensorRT模型并部署到Jetson Nano上,用DeepStream运行。 硬件环境: RTX 2080TI主机 Jetson Nano 4…

程序员专属精美简历合集—第二弹

找工作除了技能之外最重要的就是简历,从某种意义上来说简历有时候比能力更重要!为什么简历如此重要?根据拉勾的招聘调研报告显示,大约有 80% 的简历通不过主筛。所以简历就是一堆 0 之前的那个 1,如果简历通不过筛选&a…

CDH6报错解决全记录

一、服务器准备 1、服务器配置 准备3台服务器,建议最低配置如下(阿里云大约每台每月六百多): centos7.4 8c 16G 39.101.192.109 node001 39.101.179.3 node002 39.99.236.205 node003 为服务器开启外网端口访问 7180、8900 2…

QT5动态创建多个按钮控件并关联信号槽函数

创建QT对话框工程,动态创建多个按钮,把动态创建的按钮存放在QList中,并关联同一个信号槽函数,在该槽函数中根据按钮对象名称各自进行其他事项处理。 在mainwindow.h文件添加 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include…

Java 200+ 面试题补充 ThreadLocal 模块

让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 本文是前文《Java 最常见的 200 面试题》的第一个补充模块。 1.ThreadLocal 是什么? ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该线程…

如何在CDH5.16.2中部署海豚调度器Apache Dolphin Scheduler 1.2.0

Apache Dolphin Scheduler 组件介绍 分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 官网 : https://dolphinscheduler.apache.org/en-us/ Github : https://github.com/apache…

Ubuntu20.04 pycharm python打包制作DEB包详细步骤及雷区

记录一次Deb打包过程及踩雷警示 最近写了一个python的小程序,希望能打包成deb文件,便于将写好的软件安装 在其他没有安装工作环境的电脑上,把这安装deb后可以在应用列表和桌面看到。下面介绍一个python工程的打包过程, 分为两大步…

有人问我,为什么1+1等于2

2019独角兽企业重金招聘Python工程师标准>>> 我回复说:“这是规则,天地万物有其规则,人观察而形成自己的规则。李小龙说:“以无法为有法,以无限为有限”,其实也是用最大的规则作为准则&#xff…

你真的知道 == 和 equals 的区别吗?

让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 在 Java 中 和 equals 的区别,感觉只有很少的人能才完全说正确。 常见的错误回答就是: 基础类型对比的是值是否相同,引用类型对比的是…

Ray集群搭建 Python Demo

目录 准备条件(基于linux环境) 参考文献例子-python Ray集群 1.部署head节点2.部署worker节点部署Ray集群安装Ray(在所有节点上安装)Ray工作原理Ray的优势Ray简介准备条件(基于linux环境) 这里部署2个节点…

Java 200+ 面试题补充② Netty 模块

让我们每天都能看到自己的进步。老王带你打造最全的 Java 面试清单,认真把一件事做到最好。 本文是前文《Java 最常见的 200 面试题》的第二个补充模块,第一模块为:《Java 200 面试题补充 ThreadLocal 模块》。 1.Netty 是什么? …

Ray.tune可视化调整超参数Tensorflow 2.0

Ray.tune官方文档 调整超参数通常是机器学习工作流程中最昂贵的部分。 Tune专为解决此问题而设计,展示了针对此痛点的有效且可扩展的解决方案。 请注意,此示例取决于Tensorflow 2.0。 Code: ray/python/ray/tune at master ray-project/ray GitHub E…

MySql 优化的 30 条建议

文章来源&#xff1a;包子博客MySql 优化的 30 条建议1、应尽量避免在 where 子句中使用!或<>操作符&#xff0c;否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引…

Ubuntu18 Win10搭建Caffe训练识别mnist手写数字demo

ubuntu 系统下的Caffe环境搭建 对于caffe的系统一般使用linux系统&#xff0c;当然也有windows版本的caffe&#xff0c;不过如果你一开始使用了windows下面的caffe&#xff0c;后面学习的过程中&#xff0c;会经常遇到各种错误&#xff0c;网上下载的一些源码、模型也往往不能…