【问题标题】:Recognize what is on image识别图像上的内容
【发布时间】:2016-11-30 20:03:49
【问题描述】:

我正在做一个关于神经网络的小项目。我读过关于数字识别的文章,使用 MNIST 数据集,并考虑是否可以制作相同的数据集,但使用我们每天看到的常规对象。 所以这里的算法(如果我们可以这么说): 一切都是用 python 的 opencv 库完成的 1)从图像中获取轮廓。这不是字面上的轮廓,而是看起来如此的东西。 我已经用这段代码完成了这个:

def findContour(self):
    gray = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY)
    gray = cv2.bilateralFilter(gray, 11, 17, 17)
    self.image = cv2.Canny(gray, 30, 200)

2) 接下来需要创建训练集。 我复制并编辑此消息。改变旋转并翻转它——现在我们有大约 40 张图像,它们由旋转的轮廓组成。 3) 现在我要将这些图像转储到 csv 文件中。 这些图像表示为 3D 数组,因此我使用 numpy 中的 .flatten 函数将它们展平。接下来这个扁平化向量被写入 csv 文件,标签作为最后一个字符

这就是我所做的,并想问:它会成功吗? 接下来我想使用除最后一个元素之外的所有元素作为输入 x 向量,最后一个元素作为 y 向量。 (如here

识别方法相同:我们得到图像的轮廓,并将其输入神经网络,输出将是标签。

有没有可能,或者最好不要尝试?

【问题讨论】:

  • 会成功吗? 不。真的,你在浪费时间。而是阅读有关对象识别的内容以及有关该主题的最新论文。您将了解到这比仅提取轮廓更困难(也更有趣)...
  • 我不同意;不要阅读当前的论文,这比其他方法更令人困惑。谷歌“物体识别神经网络教程”,或者类似的东西,你会发现很多你可以看的教程!
  • @Christopher 也许我应该改写成:“从简单开始,看看在线教程,然后当你想做一些比玩具问题更有意义的事情时,看看新论文和最先进的方法” . ;D

标签: python opencv computer-vision neural-network


【解决方案1】:

有足够的实验空间。但是,您不应该重新发明轮子,除非作为学习练习。研究范式,了解已经存在的内容,然后进行自己的车轮改进。

我强烈建议您从 CNN(卷积神经网络)中的图像识别开始。 ILSVRC 2012 图像数据集(也称为 ImageNet 文件)已经完成了许多出色的工作。事实上,今天的 NN 流行很大一部分来自 Alex Krizhevsky 的突破(导致 AlexNet,第一个赢得 ILSVRC 的 NN)和随后的拓扑(ResNet、GoogleNet、VGG 等)。

简单的答案是让您的网络“决定”原始照片中的重要内容。当然,将图像展平并为其提供轮廓,但如果在原始图像上运行的训练产生了出色的结果,请不要感到惊讶。

搜索有关“图像识别介绍”的资源,并选择一些符合您当前阅读和主题兴趣的热门内容。那里有很多好的。

当您开始编写自己的模型时,我强烈建议您使用现有的框架,而不是从头开始构建所有附属品。转储 CSV 格式;有更好的预打包 I/O 例程和大量支持。这个想法是让你设计你的网络,而不是一直操纵数据。

流行的框架包括 Caffe、TensorFlow、Torch、Theano 和 CNTK 等。到目前为止,我发现 Caffe 和 Torch 具有最简单的整体学习曲线,尽管没有太大的区别,我实际上推荐一般来说。寻找在您感兴趣的领域具有良好文档和示例的文档。

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2013-07-10
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多