Python 识别图像上的内容

Python 识别图像上的内容,python,opencv,computer-vision,neural-network,Python,Opencv,Computer Vision,Neural Network,我正在做一个关于神经网络的小项目。我读过关于数字识别的书,关于MNIST数据集,我想是否有可能制作相同的数据集,但我们每天都会看到规则的对象。 下面是算法(如果我们可以这么说的话): 所有这些都是通过python的opencv库完成的 1) 从图像中获取轮廓。这不是字面上的轮廓,而是看起来如此的东西。 我使用以下代码完成了此操作: def findContour(self): gray = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY)

我正在做一个关于神经网络的小项目。我读过关于数字识别的书,关于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中的.flatte函数展平它们。接下来,此展平向量将写入csv文件,标签作为最后一个字符

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

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


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

有足够的实验空间。然而,你不应该重新发明轮子,除非是作为一种学习练习。研究这个范例,了解已经存在的东西,然后去做你自己的车轮改进

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

简单的答案是让你的网络“决定”原始照片中什么是重要的。当然,可以展平图像并为其提供轮廓,但是如果对原始图像进行训练可以产生更好的效果,也不要感到惊讶

在“图像识别导论”上搜索资源,并从中挑选一些符合您当前阅读和主题兴趣的热门作品。外面有很多好的

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


流行的框架包括Caffe、TensorFlow、Torch、Theano和CNTK等。到目前为止,我发现Caffe和Torch具有最简单的整体学习曲线,尽管它们之间没有太大的差异,我实际上会推荐它们。寻找一个在你感兴趣的领域有好的文档和示例的文档。

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