【问题标题】:Neural network library for true-false based image recognition用于基于真假的图像识别的神经网络库
【发布时间】:2017-02-07 22:48:12
【问题描述】:
我需要一个人工神经网络库(最好在 python 中)来完成一项(简单)任务。我想训练它,以便它能够判断某物是否在图像中。我会通过喂它很多图片来训练它,并告诉它它是否包含我正在寻找的东西:
这些图片包含这个东西,返回真(或者它包含这个东西的概率)
这些图片不包含这个东西,返回False(或者它包含这个东西的概率)
这样的库是否已经存在?我对人工神经网络和图像识别还很陌生;虽然我理解它们在原则上是如何工作的,但我发现很难找到一个合适的库来完成这项任务,而且即使是这个领域的研究也被证明是一种挫折——任何对正确方向的建议都非常感谢。
【问题讨论】:
标签:
python
python-3.x
boolean
neural-network
image-recognition
【解决方案1】:
Python 中有几种很好的神经网络方法,包括 TensorFlow、Caffe、Lasagne 和 sknn(Sci-kit 神经网络)。 sknn 提供了一个简单的、开箱即用的解决方案,尽管在我看来它更难以定制并且在大型数据集上可能会很慢。
要考虑的一件事是您是要使用 CNN(卷积神经网络)还是标准 ANN。使用 ANN,您很可能必须将图像“展开”成向量,而使用 CNN,它希望图像是立方体(如果是彩色,则为正方形)。
这里是一个good resource,关于 Python 中的 CNN。
但是,由于您并没有真正进行多类图像分类(CNN 是当前的黄金标准)并且更多地进行单个对象识别,因此您可以考虑使用转换图像方法,例如使用 @987654323 的方法@。
无论如何,神经网络方法的准确性,尤其是在使用 CNN 时,高度依赖于成功的超参数调整。不幸的是,目前还没有任何关于在给定情况下什么超参数值(层数和大小、学习率、更新规则、辍学率、批量大小等)是最佳的通用理论。所以准备好有一个很好的训练、验证和测试集设置,以适应一个健壮的模型。
【解决方案2】:
我不知道有任何图书馆可以为您做到这一点。我使用了很多 Caffe 并且可以给你一个解决方案,直到你找到一个可以为你做的库。
我希望你知道ImageNet,并且Caffe 有一个基于ImageNet 的trained model。
这是一个想法:
- 定义
the object 是什么。说object = "laptop"。
- 使用 Caffe 的 ImageNet 训练模型,当
object 位于 output labels 中时,更改代码以显示所需的输出(您提到了 TRUE 或 FALSE)。
这是我写的ImageNet tutorial的链接。
您可以尝试以下方法:
- 看看here。它是我在预测引擎中使用的 ImageNet 程序的精简版。
- 在第 80 行,您将获得前 1 个预测输出标签。在第 86 行,您将获得前 5 个预测标签。编写一行代码,检查
object是否在output_label中,并根据它返回TRUE或FALSE。
我知道您正在寻找一个特定的库,我会寻找它,但这是我一开始会尝试的东西。