Kinetics数据集下载
Kinetics数据集是行为识别中十分重要的benchmark,其地位相当于图像分类中的ImageNet。本人目前在做小样本行为识别,需要用到Kinetics-400数据集搭建Kinetics-100小样本行为识别数据集。由于种种原因,网上的数据集都有缺失,所以本人基于已经下载的数据集,使用youtube-dl下载缺失视频,仅供大家参考。
百度网盘
1、https://www.codeleading.com/article/23055974480/
该方法用了特定软件将数据集分割成132个小数据集,下载完成后需要使用cat命令完成拼接。对拼接的数据集解压,即可得到Kinetics-400。建议下载好后,在linux下拼接解压或者在windows下安装git bash。
2、https://github.com/PaddlePaddle/PaddleVideo/blob/develop/docs/zh-CN/dataset/k400.md
作者在文中介绍了两种方法,一种是百度网盘下载(数据和第一种方法不一样);另一种使用脚本下载,需要下载官方的trainlist.csv和testlist.csv文件。
和第一种百度网盘方法不同的是,第二种每个子数据集都可以单独解压。不幸的是,第一种方法缺失的视频更多。
Activity
https://www.codetd.com/article/5004295
使用youtube-dl工具,根据提供的唯一标识符youtu id下载视频。
1、下载爬取视频代码https://github.com/activitynet/ActivityNet.git
2、安装youtube-dl包
3、安装ffmpeg
注意:使用pip和conda装的ffmpeg会报以下错误
‘ffmpeg’ 不是内部或外部命令,也不是可运行的程序或批处理文件
需要去官网下载源码,解压后可以在bin目录下得到三个文件,如下图所示。
将"E:/ffmpeg/bin"写进环境变量,即可在命令行使用ffmpeg命令。
A. 下载好代码后,进入ActivityNet-master\ActivityNet-master\Crawler\Kinetics目录,准备一个csv文件data.csv,存储需要下载的视频youtube_id、视频开始时间、视频结束时间、后面两个参数不重要,可以直接写train和0。
python download.py data.csv dataset
但是直接运行这个代码频繁报错,各种错误,而且代码里是先下载原始视频,存储在tmp临时目录中,接着使用ffmpeg工具对视频长度裁剪,清空临时目录,将裁剪后视频放到dataset中。
考虑到中间可能会出现各种错误,我对代码进行了部分修改,先从YouTube下载所有需要的视频,存储在videos中。
#此处将后续的ffmpeg裁剪去掉,同时修改了输出文件位置及视频名称,下载的视频以_kDc7gYphkU_000193_000203.mp4即id_start-time_end-time.mp4 格式命名。方便后续直接根据视频名字读取长度信息进行视频裁剪。
def download_clip(video_identifier, output_filename,start_time, end_time,tmp_dir='/tmp/kinetics',num_attempts=5,url_base='https://www.youtube.com/watch?v='):"""Download a video from youtube if exists and is not blocked.arguments:---------video_identifier: strUnique YouTube video identifier (11 characters)output_filename: strFile path where the video will be stored.start_time: floatIndicates the begining time in seconds from where the videowill be trimmed.end_time: floatIndicates the ending time in seconds of the trimmed video."""# Defensive argument checking.assert isinstance(video_identifier, str), 'video_identifier must be string'assert isinstance(output_filename, str), 'output_filename must be string'assert len(video_identifier) == 11, 'video_identifier must have length 11'status = False# Construct command line for getting the direct video link.tmp_filename = os.path.join(tmp_dir,'%s.%%(ext)s' % uuid.uuid4())#print("origin",tmp_filename)command = ['youtube-dl','--quiet', '--no-warnings','-f', 'mp4','-o', '"%s"' % output_filename,'"%s"' % (url_base + video_identifier)]# print('%s*' % (tmp_filename.split('.')[0]))# print(glob.glob('%s*' % tmp_filename.split('.')[0]))# tmp_filename = glob.glob('%s*' % (tmp_filename.split('.')[0]))[0]command = ' '.join(command)print(command)attempts = 0while True:try:output = subprocess.check_output(command, shell=True,stderr=subprocess.STDOUT)except subprocess.CalledProcessError as err:attempts += 1if attempts == num_attempts:return status, err.outputelse:break
B. 读取下载视频,使用ffmpeg工具剪切视频
def read(dir,out_dir):vid = os.listdir(dir)for k in vid: id = k.split('.')[0]vid_path = os.path.join(dir,id)start_time = int(id.split('_')[-2])end_time = int(id.split('_')[-1])vid_name = id.split('_')[0] + id.split('_')[1]print("{} {} {} {}".format(vid_path,vid_name,start_time,end_time))out_file = os.path.join(out_dir,vid_name+".mp4")status = Falsecommand = ['ffmpeg','-i', '"%s"' % os.path.join(dir,k),'-ss', str(start_time),'-t', str(end_time - start_time),'-c:v', 'libx264', '-c:a', 'copy','-threads', '1','-loglevel', 'panic','"%s"' % out_file]command = ' '.join(command)print(command)try:output = subprocess.check_output(command, shell=True,stderr=subprocess.STDOUT)except subprocess.CalledProcessError as err:return status, err.output
C. 根据配置文件,分析每个视频的动作类别,存储在act字典中,后续读取字典,创建相应动作类别目录,存储RGB帧
def parse(file):act = {}with open(file, "r") as fid:data = fid.readlines()#print(data)for i in range(len(data)):action = data[i].split('/')[0]vid = data[i].split('/')[1]if len(vid.split('_')) == 4:vid_name = vid.split('_')[0] + vid.split('_')[1]else:vid_name = vid.split('_')[0]act[vid_name] = action#print("{} {}".format(action,vid_name))return act
D. 使用ffmpeg工具提取视频RGB帧
def run_RGB_copy(source_path,target_path):# 读取视频文件cmd = 'ffmpeg'+' -i {} {}/image-%6d.jpg'.format(source_path,target_path)print(cmd)os.system(cmd)print('{} done'.format(source_path))sys.stdout.flush()return True
def RGB(out_dir,img_dir,file):#read videosvid = os.listdir(out_dir)act = parse(file)print(vid)for i in range(len(vid)):video_path = os.path.join(out_dir,vid[i])action = act[vid[i].split('.')[0]]target_action_path = os.path.join(img_dir,action)if os.path.exists(target_action_path) == False:os.mkdir(target_action_path)target_video_path = os.path.join(target_action_path,vid[i].split('.')[0])if os.path.exists(target_video_path) == False:os.mkdir(target_video_path)print(video_path)print(target_video_path)run_RGB_copy(video_path,target_video_path)
Kinetics数据集下载及RGB帧提取介绍到这里,希望对大家能有所帮助!
Kinetics数据集下载相关推荐
- 我的AI之路(55)--如何获取kinetics数据集和如何制作自己的kinetics数据集
近来做行为动作识别,根据近两年的CVPR.ICCV.ECCV论文实验了一序列的动作识别方面的模型,很多都用到了kinetics数据集或者something-something数据集,但是后者的官网目前 ...
- AVA时空检测数据集下载—AVA_ActionsAVA_Kinetics
AVA_Actions&AVA_Kinetics AVA系列 AVA-Actions AVA-Kinetics AVA标注规范 标签类别 标注方式 CSV格式 旧版 视频下载 AVA-Acti ...
- mnist等常用数据集下载地址,现成的.mat文件
推荐一个机器学习常用数据集下载网址,LIIBSVM 数据集已经处理好的,可以直接用.
- Flickr30k图像标注数据集下载及使用方法(转载的,备忘)
Flickr30k图像标注数据集下载及使用方法 这是该博主贴的链接:Flickr30k图像标注数据集下载及使用方法 直接从百度云盘中下载 链接:https://pan.baidu.com/s/1r0R ...
- Understanding Clouds from Satellite Images比赛的discussion调研与colab数据集下载配置
colab数据集下载配置代码: %%time !pip install -U -q kaggle !mkdir -p ~/.kaggle!echo '{"username":&qu ...
- 【机器学习】 - 各种人脸数据集下载地址及说明汇总
1. Olivetti Faces人脸数据集 由40个人组成,共计400张人脸: 每人的人脸图片为10张,包含正脸.侧脸以及不同的表情: 整个数据集就是一张大的人脸组合图片,下载地址:https:// ...
- MNIST数据集下载及可视化
MNIST数据集介绍 MNIST数据集官网:http://yann.lecun.com/exdb/mnist/ MNIST数据库是非常经典的一个数据集,就像你学编程起初写一个"Hello W ...
- 深度学习 - MPII Human Pose Database数据集下载
原数据集下载网页:http://human-pose.mpi-inf.mpg.de/#download 转载于:https://blog.51cto.com/396732/2072239
- 数据集下载OTB,VOT,UAV,鸢尾花
OTB数据集下载百度网盘链接 链接:https://pan.baidu.com/s/1snsJF_7Sw_EbKtzdvLO1nw 提取码:ls23 VOT数据集下载百度网盘链接 链接:https:/ ...
- VOC2007数据集 VOC2012数据集下载 百度云
VOC2007数据集 VOC2007数据集下载 百度云 Download VOC2007 trainval & test 链接:https://pan.baidu.com/s/1_uTFp4_ ...
最新文章
- (一)Java基础巩固
- mongodb的聚合操作
- 不懂卷积神经网络?别怕,看完这几张萌图你就明白了
- 【机器学习】4 款超级棒的模型可解释性工具包,总有一款适合你!
- Elasticsearch搜索引擎:ES的segment段合并原理
- php中如何固定表格宽度,实例讲解DataTables固定表格宽度(设置横向滚动条)
- 阿里开发者招聘节 | 面试题06-07: MySQL的数据如何恢复到任意时间点
- 胡斌、张礼礤会摧毁我们的信任
- [LeetCode]Number of 1 Bits
- finder怎么才能找到library
- [学习笔记] 七步从AngularJS菜鸟到专家(6):服务 [转]
- Multi-Scale Boosted Dehazing Network with Dense Feature Fusion笔记和代码
- 论文阅读:LinkNet: Exploiting Encoder Representations forEfficient Semantic Segmentation
- MPB:青岛大学苏晓泉组分享基于分类学和系统发育的宏基因组比较DMS算法
- 股票数据接口-陈科肇
- WinForm在窗体中嵌入窗体
- Rewrite和RewriteRule规则,http强转https的配置总结
- Ivar Jacobson访谈
- css获取第n个元素之后所有的元素
- 麦克风阵列matlab,双通道麦克风阵列方向采集MATLAB代码实现
热门文章
- 【软件项目管理】期末复习
- 《计算机网络 PDF》炸了!!!
- 经典数据库sql查询50题
- 计算机考研复试——计算机前沿知识篇
- SecureCRT zmodem
- 野火RT1052关于 W25Q256JV NORFLASH异常锁死的解锁处理
- C++实现Vgg19分类器(四)主函数
- w ndows7旗舰版怎么重装系统,windows7旗舰版怎么重装系统|怎么重装系统windows7旗舰版...
- java没有pom文件_java – Maven依赖没有得到相应的POM文件下载
- win10 同时多用户远程桌面连接-RDPWrap-v1.6.2-support-21H2-19044.1949