something-somethingV2数据集的抽帧处理

文章讲述了作者在处理SSV2视频数据集时遇到的抽帧问题,包括使用ffmpeg进行抽帧操作,遇到的错误如乱码和无图片生成,以及解决方法——安装ffmpeg并配置环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于我在处理ssv2数据集时候遇到的问题,真的挺糟心的,虽然都不么大毛病但是会搞人心态

一. 问题简单介绍

因为ssv2数据集都是视频,不像ssv1有现成的jpg图片,所以这里要对视频进行抽帧处理,网上主流的处理方法大概有两种:

第一种是csdn上up主——海苔眉毛提供的一种:

http://t.csdnimg.cn/FoLsO

第二种是github上,TSM作者提供的一个数据集处理,不仅有ssv2抽帧的,还有后面划分的处理,还有k400和ssv1的数据集的处理过程,算是很详细了,这里挂个链接:

https://github.com/mit-han-lab/temporal-shift-module/blob/master/tools/vid2img_sthv2.py

两种方法都是用的ffmpeg来实现的,代码上大同小异,本人用的是第一种csdn上大佬的代码,改动了一个地方——加了一个帧率fps:每秒抽帧的数量。

原代码是:

except:
print(dst_directory_path)
continue
cmd = 'ffmpeg -i \"{}\" -vf scale=-1:240 \"{}/%06d.jpg\"'.format(video_file_path, dst_directory_path)
print(cmd)
subprocess.call(cmd, shell=True)
print('\n')

本人的是:

except:
print(dst_directory_path)
continue
cmd = 'ffmpeg -i \"{}\" -r 24 -vf scale=-1:240 \"{}/%06d.jpg\"'.format(video_file_path, dst_directory_path)
print(cmd)
subprocess.call(cmd, shell=True)
print('\n')

增加了一个  -r  24 :表示每一秒抽出24帧

- i :要处理视频的文件路径

第一个 {} 里是待处理的webm格式的ssv2视频,不用转换成mp4,即后面video_file_path对应的值,第二个 {} 里是生成jpg图片存放的路径,即dst_directory_path对应的值

- vf :指定图像的宽度 

scale = - 1:240   :按照视频的宽高比例自适应调整宽度,高度为 240 像素

(最后得到的实际大小是宽高为:427*240)

%06d.jpg:是抽帧的图片格式及名称,这里留了六位来命名,从000001开始

二. 具体的操作流程

数据集的下载和解压就不赘述了,可以参考大佬的做法,这里简单介绍下关于抽帧操作的问题,将代码复制过去保存为.py格式,然后新建一个存放抽帧后的jpg文件夹,如图,本人的ssv2视频文件夹为input_dir,存放图片的文件夹是img_ssv2,代码名是video_to_jpg.py

然后win + r ,cmd 回车,进入数据集所在目录,本人数据集在D盘,输入D: ,然后输入cd D:\文件\somethingV2即可进入指定目录,然后运行代码:

python 代码名.py dir_path dst_dir_path

python与 .py 文件,输入路径与输出路径之间都有一个空格

dir_path:是待处理的webm格式的ssv2视频存放文件夹

dst_dir_path:是生成的jpg图片存放的文件夹

本人运行的是:

python video_to_jpg.py D:\文件\somethingV2\input_dir D:\文件\somethingV2\img_ssv2

然后就可以看到运行过程了:跑得非常快,因为视频很多,有十几万条

同时点开img_ssv2文件夹可以看到有生成对应的文件夹,文件夹里有抽好的帧

 

 然后挂机等它跑完就行了,大概需要半天时间(实验室电脑上跑的,没用服务器,有点慢),本人两个小时成功搞出来3万多个。

三. 一些实施过程中具体的问题

在具体操作过程中也不是一帆风顺,还是遇到了很多问题,所以才想写个博客记录一下

1.在原up的评论区有小伙伴说最后生成的文件夹是空的,没有图片,本人也遇到了这个问题,简单说明一下:

在运行代码后出现了这样的bug:ffmpeg  �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���

这串乱码其实是‘ffmpeg‘ 不是内部或外部命令,也不是可运行的程序这个问题,后面发现本人没有在电脑上安装ffmpeg,不是在pycharm里install一个package就够的,要去官网上找ffmpeg这个软件下载,win64的静态的压缩包,然后解压,配置环境变量

挂个链接:ffmpeg Old Versions Downloads - VideoHelp --- ffmpeg 旧版本下载 - 视频帮助

一定要下static的这个,下载后解压,然后找到bin文件夹,复制路径,

然后给它添加环境变量,在我的电脑,右键,属性,高级系统设置

 

点击环境变量后,双击Path,进去新建环境变量

然后把刚才复制的bin路径粘贴过来就行了,然后确定即可

接着win+R,回车,输入ffmpeg -version,出现如图字段即说明环境变量配置成功

将这一步处理好之后,再运行刚才的抽帧代码就成功了,也没有再出现刚才的乱码情况。同样的问题,本人还遇到过一种,在没有进行ffmpeg环境变量配置的时候采取了第二种方式——github上TSM作者提供的抽帧代码,本人在实验室的服务器上运行这个代码的时候也遇到了问题,显示总线忙的问题,然后在img_ssv2的文件夹里有生成相应的文件夹但是里面没有图片。现在想来应该是没有配置ffmpeg 的环境变量导致的

建议在开始尝试运行代码的时候,可以新建两个用来测试的文件夹,输入视频的文件夹里放3-5个webm视频就行了,然后用这个来测试是否成功,如果用ssv2的整个视频数据来测试的话最后可能会生成很多空文件夹,然后再运行代码的时候会出bug。

Something-Something V2是一个大型的数据集,用于记录人类与日常生活中物体之间的动作。相比于Something-Something V1,V2包含更多的视频数量,从V1的108,499增加到了220,847。值得注意的是,V2中的图片形式已经更新,从之前的JPG格式变为了Webm格式。如果你想使用Something-Something V2数据集,可以通过以下链接进行下载:https://20bn.com/datasets/something-something/v2 [3。另外,我还提供了一个网盘链接,你可以使用这个链接进行下载:链接:https://pan.baidu.com/s/1NCqL7JVoFZO6D131zGls-A 提取码:07ka [3。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【数据集使用】Something-Something-v1以及v2数据集使用记录](https://blog.youkuaiyun.com/Amazingren/article/details/103865047)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [something-somethingV2数据集处理](https://blog.youkuaiyun.com/qq_35209694/article/details/112955753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值