TensorFlow 视频帧与静止图像
TensorFlow video frames versus still images
我在使用 TensorFlow 时遇到了一个奇怪的问题,我怀疑有一个简单的解决方案。
我正在处理视频数据。为了创建我的训练数据,我使用 ffmpeg
将视频帧提取到 PNG 文件,然后使用 LabelImg 创建边界框数据集。经过训练的网络在这些 PNG 文件上表现出色。
但是,如果我使用 OpenCV 打开视频并将帧从视频馈送到网络,它根本不起作用。我使用 OpenCV VideoCapture class 喜欢:
video = cv2.VideoCapture(path_to_video)
status, frame = video.read()
output_dict = run_inference_for_single_image(frame, detection_graph)
请注意,run_inference_for_single_image
是 TensorFlow 库提供的函数,同样用于 运行 对打开并转换为 numpy 数组的 PNG 文件进行检测。
我得到了一些检测结果,但准确率几乎降为零。相反,如果我将同一帧保存为 PNG 文件并将该文件提供给网络,它会按预期工作。
我需要更改什么才能避免将视频帧保存为 PNG 文件的步骤?
OpenCV 有这种加载彩色图像的奇怪行为 in the BGR format。您可以使用
im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
将它们转换为 RGB,然后再将它们送入您的网络。
我在使用 TensorFlow 时遇到了一个奇怪的问题,我怀疑有一个简单的解决方案。
我正在处理视频数据。为了创建我的训练数据,我使用 ffmpeg
将视频帧提取到 PNG 文件,然后使用 LabelImg 创建边界框数据集。经过训练的网络在这些 PNG 文件上表现出色。
但是,如果我使用 OpenCV 打开视频并将帧从视频馈送到网络,它根本不起作用。我使用 OpenCV VideoCapture class 喜欢:
video = cv2.VideoCapture(path_to_video)
status, frame = video.read()
output_dict = run_inference_for_single_image(frame, detection_graph)
请注意,run_inference_for_single_image
是 TensorFlow 库提供的函数,同样用于 运行 对打开并转换为 numpy 数组的 PNG 文件进行检测。
我得到了一些检测结果,但准确率几乎降为零。相反,如果我将同一帧保存为 PNG 文件并将该文件提供给网络,它会按预期工作。
我需要更改什么才能避免将视频帧保存为 PNG 文件的步骤?
OpenCV 有这种加载彩色图像的奇怪行为 in the BGR format。您可以使用
im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
将它们转换为 RGB,然后再将它们送入您的网络。