从视频中提取非冗余图像

问题描述

我正在收集项目数据。通过录制主题和环境的视频来完成数据收集。但是,在训练网络时,我不想将其与视频序列中收集的所有图像一起训练。

主要目标是不使用冗余图像来训练网络。以30帧/秒的速度采集的视频序列可以在很短的间隔内包含冗余图像(非常相似的图像)。第(T)帧和第(T + 1)帧可以相似。

有人可以建议仅提取对训练有用的图像的方法吗?

解决方法

更新#2:其他资源,

https://github.com/JohannesBuchner/imagehash

https://www.pyimagesearch.com/2017/11/27/image-hashing-opencv-python/

https://www.pyimagesearch.com/2020/04/20/detect-and-remove-duplicate-images-from-a-dataset-for-deep-learning/

更新#1::您可以使用此存储库来计算给定图像之间的相似度。 https://github.com/quickgrid/image-similarity **

如果带有某些对象(例如,车辆,设备)的框架很重要,请使用pretrained object detectors(如果有)来提取重要的框架。

接下来,使用similarity method删除附近帧中的类似图像。直到超出选择的threshold为止,继续移除附近的N帧。

此链接应有助于为您的案例找到正确的方法,

https://datascience.stackexchange.com/questions/48642/how-to-measure-the-similarity-between-two-images

下面的这个存储库应该可以用几行代码来帮助实现这个想法。它使用CNN提取特征,然后如此处所述计算那里的余弦距离。

https://github.com/ryanfwy/image-similarity