在做深度学习训练的时候,自己用视频采集了数据集,后期一帧一帧提取出来,很多帧是重复的,这时候可以只选取某一列作为训练用的数据集,比如我原始数据集中有80625张图片,如果不借助代码提取,太费人了,这里我总结两种方法快速提取。
方法一:追风掣电法
直接用代码大批量快速提取,比如我的是每隔30帧提取一张图像,代码见下:
import os
import shutil
## 新建目标文件夹
IsExists = os.path.exists('Images\Image_New_INF') ##在目录中新建一个文件夹
if not IsExists:
os.makedirs("Images\Image_New_INF")
else:
print("目录已存在")
new_img_folder = "Images\Image_New_INF"
## 遍历读取文件夹筛选符合标准的图片
dir_path = "Images/INF2022530" ## 将原始的数据集文件路径加载进来
for root,dirs,files in os.walk(dir_path):
for file in files:
num_name = file.rstrip(".jpg") ## 将图片名末尾的.jpg去掉
num_name_int = int(num_name)
if num_name_int % 30 == 0:
shutil.copy(os.path.join(root, file), new_img_folder)
原始的数据集见下:
提取后的数据集见下:
以上是针对我自己的数据集提取的方法,大家可以参考我上面提供的代码进行修改,大致原理都是想通的,主要是运用到了os和shutil这两个库,提取速度特别快。
方法二:费人法
这种方法简单粗暴,直接下滑到图片文件夹的最底端,单击鼠标左键选中某一列,按着鼠标不放,一直往上拖,直至滑到图片文件夹顶端,松开鼠标左键,按下Ctrl + C(复制),去到新建文件夹中Ctrl + V(粘贴),这样就直接将选定图片提取到新文件夹中了,具体见下。这种方法适合图片数量小的情况,图片数量大了,还是建议使用上面的方法一。
以上就是在做深度学习时,快速批量提取有效数据集的方法。如果我总结的方法对你有用,多多支持,谢谢!