博客
关于我
使用Python+yolov3实现对帧数不等长视频进行批处理
阅读量:230 次
发布时间:2019-03-01

本文共 1170 字,大约阅读时间需要 3 分钟。

训练和测试一个有效的机器学习模型最重要的一步是收集大量数据并使用这些数据对其进行有效训练。小批量(Mini-batches)训练是最有效的训练策略,在每次迭代中使用一小部分数据进行训练。

然而,随着大量的机器学习任务在视频数据集上执行,存在着对不等长视频进行有效批处理的问题。大多数解决方法依赖于将视频裁剪成相等的长度,以便在迭代期间提取相同数量的帧,但在我们需要从每一帧获取信息来有效地预测某些事情的场景中,这并不是特别有用的,特别是在自动驾驶汽车和动作识别的情景中。

本文我们通过创建一个可以处理不同长度视频的处理方法来解决该问题。在Glenn Jocher的Yolov3中(https://github.com/ultralytics/yolov3),我用LoadStreams作为基础,创建了LoadStreamsBatch类。

在类初始化中,接受四个参数:sourcesbatch_sizesubdir_searchsources可以是目录路径或文本文件。如果是一个目录,我会读取目录中的所有内容(如果subdir_search参数为True,子目录也会包括在内),否则我会读取文本文件中视频的路径,视频的路径存储在列表中。使用cur_pos来跟踪列表中的当前位置。

该列表以< strong>batch_size</ strong>为最大值进行迭代,并检查以跳过错误视频或不存在的视频。它们被发送到< strong>letterbox</ strong>函数进行调整,确保所有视频的形状一致。

< strong>update</ strong>函数存储了默认的图像大小,以便在所有视频都被提取进行处理,但由于长度不相等,一个视频比另一个视频提前完成。当我解释代码的下一部分时,它就会更清楚了,那就是< strong>next</ strong> 函数。

< strong>next</ strong> 函数将帧传递给< strong>letterbox</ strong>函数,确保视频的形状一致。如果帧为None,则意味着视频已被完全处理,这时我们检查列表中的所有视频是否都已被处理。如果有更多的视频要处理,< strong>cur_pos</ strong>指针将用于获取下一个可用视频的位置。

为了实现这一目标,我们需要修改现有的代码,确保能够处理不同长度的视频。在< strong>update</ strong>函数中,我们引入了一个小的变化,确保每隔4帧读取一次,以便在不同长度的视频中保持同步。

最终,我们实现了一个能够处理不同长度视频的批处理方法,确保在自动驾驶汽车和动作识别等场景中仍然能够有效地预测和识别。

通过这种方法,我们可以显著减少数据收集和预处理的时间,从而使模型与数据相匹配的时间也大大减少。

转载地址:http://qnov.baihongyu.com/

你可能感兴趣的文章
Objective-C实现Luhn (Mod 10)Algorithm算法(附完整源码)
查看>>
Objective-C实现max subarray sum最大子数组和算法(附完整源码)
查看>>
Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
查看>>
Objective-C实现max_heap最大堆算法(附完整源码)
查看>>
Objective-C实现md5算法(附完整源码)
查看>>
Objective-C实现memoization优化技术算法(附完整源码)
查看>>
Objective-C实现memset函数功能(附完整源码)
查看>>
Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
查看>>
Objective-C实现merge sort归并排序算法(附完整源码)
查看>>
Objective-C实现mergesort归并排序算法(附完整源码)
查看>>
Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现Miller-Rabin素性测试程序(附完整源码)
查看>>
Objective-C实现MinhashLSH算法(附完整源码)
查看>>
Objective-C实现MinHeap最小堆算法(附完整源码)
查看>>
Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
查看>>
Objective-C实现n body simulationn体模拟算法(附完整源码)
查看>>
Objective-C实现naive string search字符串搜索算法(附完整源码)
查看>>
Objective-C实现natural sort自然排序算法(附完整源码)
查看>>
Objective-C实现nested brackets嵌套括号算法(附完整源码)
查看>>