作为我的理学学士学位论文的一部分,我必须在视频源上使用图像识别。
我已经确定openCV和Tensorflow - 特别是Inception训练模型 - 作为两个选项,但我不知道如何从那里开始。基本上我需要的是传递一个字符串,如“keys”,如果前5个结果之一是“keys”,则返回布尔值。
简单来说,我在网上做了一个python课程,因为两者都使用python。我对Java也有相当丰富的经验,过去两年我们一直在使用它。
请注意,我不需要创建一个全新的图像识别系统,我需要用一个来告诉我相机看到了什么。
此外,虽然它是视频,但我认为处理实际视频会更加困难。我想到的是挑选30帧中的1帧(假设30fps视频输入)并对其进行图像识别。
提前致谢!
答案 0 :(得分:2)
如果您阅读this tutorial,特别是“使用Python API”一节,您的项目应该相当简单。 classify_image.py
生成的前N个结果将在此代码块中转换为人类可读文本here:
top_k = predictions.argsort()[-FLAGS.num_top_predictions:][::-1]
for node_id in top_k:
human_string = node_lookup.id_to_string(node_id)
score = predictions[node_id]
print('%s (score = %.5f)' % (human_string, score))
对于您的示例,您需要将FLAGS.num_top_predictions
设置为5,并且您希望将前5个human_string
值累积为:
top_k_strings = []
top_k = predictions.argsort()[-FLAGS.num_top_predictions:][::-1]
for node_id in top_k:
human_string = node_lookup.id_to_string(node_id)
top_k_strings.append(human_string)
score = predictions[node_id]
print('%s (score = %.5f)' % (human_string, score))
最后,您可以检查“keys”是否是imagenet生成的前5个字符串之一,并将布尔值传回
return "keys" in top_k_strings
此外,如果您对人类可读类别的完整列表感兴趣,可以找到它们here
对于视频,您可能必须对视频序列进行二次采样以跟上帧速率。一些实验和时序测试将让您感受到所需的子采样率。
祝你好运!