一、问题描述
现有若干个视频,视频被分割成若干帧,需要对视频帧进行随机数据增强。
二、解决思路
1.问题的解决
参考了这篇博客1,但是同一视频中的不同帧数据增强效果不同,不符合实际意图。
参考带标签的图像增强方法2,在增强同个视频的不同帧时,利用seq.to_deterministic()
得到确定的增强函数,从而解决问题。
修改之后,程序单独增强每帧图片,而非增强一个batchs,运行的速度比较慢。可以考虑调用多核CPU3。
2.效果的选取
三、解决方案
import csv
import cv2
from imgaug import augmenters as iaa
import os
# Sometimes(0.5, ...) applies the given augmenter in 50% of all cases,
# e.g. Sometimes(0.5, GaussianBlur(0.3)) would blur roughly every second image.
sometimes = lambda aug: iaa.Sometimes(0.5, aug)
# 定义一组变换方法.
seq = iaa.Sequential([
# 选择2到4种方法做变换
iaa.SomeOf((2, 4),
[
#iaa.Fliplr(0.5), # 对50%的图片进行水平镜像翻转
#iaa.Flipud(0.5), # 对50%的图片进行垂直镜像翻转
iaa.OneOf([iaa.Affine(
rotate=(-