图像识别,如何开始

时间:2016-10-28 18:36:29

标签: python opencv tensorflow image-recognition

作为我的理学学士学位论文的一部分,我必须在视频源上使用图像识别。

我已经确定openCV和Tensorflow - 特别是Inception训练模型 - 作为两个选项,但我不知道如何从那里开始。基本上我需要的是传递一个字符串,如“keys”,如果前5个结果之一是“keys”,则返回布尔值。

简单来说,我在网上做了一个python课程,因为两者都使用python。我对Java也有相当丰富的经验,过去两年我们一直在使用它。

请注意,我需要创建一个全新的图像识别系统,我需要用一个来告诉我相机看到了什么。

此外,虽然它是视频,但我认为处理实际视频会更加困难。我想到的是挑选30帧中的1帧(假设30fps视频输入)并对其进行图像识别。

提前致谢!

1 个答案:

答案 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

对于视频,您可能必须对视频序列进行二次采样以跟上帧速率。一些实验和时序测试将让您感受到所需的子采样率。

祝你好运!