[blog]基于卷积神经网络的以图搜图算法实现

基于卷积神经网络的以图搜图算法实现

       如果用这个名称去搜索论文,一定有不少。为什么了,因为从原理上来看,卷积神经网络就非常适合找图片的相似的地方。想想看,许多大牛、小牛、微牛的文章都是说如何从mnist中、从CIFA10中、从CIFA100中去找到相似的图片。那么,反过来想一想,如果那么复杂的数据卷积神经网络都能够去处理,那么对于这种相对来说,比较简单的“以图搜图”的需求,应该更容易来解决。这里的神经网络解决这个问题,还是尝试得到一种较为通用的问题解决方法。

零、数据集的创建

基于之前的一些项目,我创建这样的数据集:

训练数据:

测试数据

我认为,在本项目中."花纹"这个特征是比较重要的。因为颜色不是重点。在训练的时候,因为图像是可以被选择的,倾向于采用比较小的,能够完全展示一个单元的图像来做训练;在测试的时候,没有具体要求。

以前对手写体采用的投影的方法,在解决这个问题的时候不适合,因为这些图像没有体现出突出的投影差异;而如果采用"哈希感知"的方法,也是不适合的。因为这些图像中可能存在重复的单元。、

如果采取之前对手写体的识别方法,结果如下

交叉训练,特征维度5,神网层数80

平均正确率0.250000,最低正确率0.000000

交叉训练,特征维度5,神网层数100
平均正确率0.221591,最低正确率0.000000

交叉训练,特征维度5,神网层数120
平均正确率0.267045,最低正确率0.000000

交叉训练,特征维度5,神网层数140
平均正确率0.204545,最低正确率0.000000

交叉训练,特征维度5,神网层数160
平均正确率0.159091,最低正确率0.000000

交叉训练,特征维度10,神网层数20
平均正确率0.306818,最低正确率0.000000

交叉训练,特征维度10,神网层数40
平均正确率0.323864,最低正确率0.000000

交叉训练,特征维度10,神网层数60
平均正确率0.306818,最低正确率0.000000

交叉训练,特征维度10,神网层数80
平均正确率0.295455,最低正确率0.000000

交叉训练,特征维度10,神网层数100
平均正确率0.278409,最低正确率0.000000

交叉训练,特征维度10,神网层数120
平均正确率0.267045,最低正确率0.000000

交叉训练,特征维度10,神网层数140
平均正确率0.193182,最低正确率0.000000

交叉训练,特征维度10,神网层数160
平均正确率0.227273,最低正确率0.000000

交叉训练,特征维度15,神网层数20
平均正确率0.363636,最低正确率0.125000

交叉训练,特征维度15,神网层数40
平均正确率0.289773,最低正确率0.000000

交叉训练,特征维度15,神网层数60
平均正确率0.267045,最低正确率0.000000

交叉训练,特征维度15,神网层数80
平均正确率0.284091,最低正确率0.000000

交叉训练,特征维度15,神网层数100
平均正确率0.244318,最低正确率0.000000

交叉训练,特征维度15,神网层数120
平均正确率0.232955,最低正确率0.000000

交叉训练,特征维度15,神网层数140
平均正确率0.284091,最低正确率0.000000

交叉训练,特征维度15,神网层数160
平均正确率0.221591,最低正确率0.000000

交叉训练,特征维度20,神网层数20
平均正确率0.289773,最低正确率0.000000

交叉训练,特征维度20,神网层数40
平均正确率0.278409,最低正确率0.000000

交叉训练,特征维度20,神网层数60
平均正确率0.289773,最低正确率0.000000

交叉训练,特征维度20,神网层数80
平均正确率0.232955,最低正确率0.000000

交叉训练,特征维度20,神网层数100
平均正确率0.329545,最低正确率0.000000

交叉训练,特征维度20,神网层数120
平均正确率0.267045,最低正确率0.000000

交叉训练,特征维度20,神网层数140
平均正确率0.232955,最低正确率0.000000

交叉训练,特征维度20,神网层数160
平均正确率0.238636,最低正确率0.000000



这个结果是非常的烂了,其原因和前面我提到的应该是哟关系的。

因此,只有gaobor或者类似nns的这种方法,才可能去解决问题。

一、利用mlp和gabor特征来解决问题;(gabor是否更好了?这里前面给出的就是对比结果)

在图像处理中,gabor函数是一个用于边缘提出的线性滤波器。其频率和方向非常类似人的视觉系统。因此非常适合纹理表达和分离。在空间域中,一个二维gabor滤波器是一个由正弦平面波调制的高斯核函数。

生物实验发现gabor滤波器能够很好地近似单细胞的感受野函数等。

一般来说,gabor滤波的方法是:不同纹理一般具有不同的中心频率和带宽,根据这些频率和带宽可以设计一组gabor滤波器对纹理图像进行过滤,每个gabor滤波器只允许于其频率相应的纹理顺利通过,。从各个滤波器的输出结果中分析和提出纹理特征,用于之后的分类和分割任务。

具体步骤:

1、将输入的图像分为3*3和4*4

2、建立gabor滤波器组,选择4个尺度、6个方向,共24个滤波器;

那么具体的过程,目前的代码是无法完成的。

gabor特征只有对于对于实际生活中出现的图像,有比较好的原子区分能力,得到类似cnns的这种结构。

这里比较关键的一个问题就是“什么事gabor特征,那个数值是需要最后来使用的”。中间我做出了一些解决的方法,效果是有的,但是不是非常好。

二、训练卷积神经网络来解决问题;

三、小结和反思

为什么要写这样的一篇文章。因为经过一段时间关于神经网络和卷积神经网络的学习之后,我一直在寻找神经网络的实际应用。相比较于之前研究学习过的其它技术,卷积神经网络具有以下特点:

1、原理比较复杂;

2、工具比较难找;

3、参数调整比较复杂;

4、调试需要大量时间,因为一次训练就需要大量资源。

这几点就决定了卷积神经网络的研究需要较多的时间,所以学习也花了很长的时间。那么在使用这个方面,也是只能跑一跑mnist和CIFA10之类的东西。如果想要最终利用于验证码识别的话,还有较长一段路需要来走。这个中间,我就需要有一个自己的项目来填补空白。

这里我选择的是“以图搜图”的需求。这个需求在现实中,也是比较常见的。之前的思路也只能是类似于手写体识别一样,通过采集投影特征,进行距离运算等。现在,因为对卷积神经网络的初步研究,我认识到了,对于这样的图像来说,哪些特征是最重要的、哪种训练方法是最可行的。

所以我将这个“自我项目”分为两个部分,一个部分是用gabor+mlp来实现,一个部分是用卷积神经网络来实现。对待于前者,无论是gabor还是mlp都已经有代码积累;而卷积神经网络,目前还没有比较系统的解决方法,并且是否选择lanet5的实现?这些都需要验证!我认为,通过这个自我项目,能够把对神经网络的理解和应用向前推进一大步!

我计划利用一周的时间将这些完成,如果这些都完成之后,就应该反思积累,哪些是影响整体项目的关键节点,是数据集的建立?是数据结构的细节?还是训练?最后显示的界面如何来做?把这些做好,理清产学研之间的关系,为未来增加效益!

此外,神经网络的程序往往都比较复杂,如何将这种程序也好,需要对能够允许的代码的充分理解和应用。

来自为知笔记(Wiz)

时间: 2024-10-20 21:59:08

[blog]基于卷积神经网络的以图搜图算法实现的相关文章

深度学习与脑机接口_1(基于卷积神经网络的P300信号检测)

参考论文<Convolutional Neutral Networks for P300 Detection with Application to Brain-Computer Interfaces> Hubert Cecotti and Axel Gra¨ser ?1.所研究问题:检测单次刺激P300信号的有无(即不经过叠加平均) 以下四个图全部都包含P300波形: 我们只能从图1和4中观察出P300波形,图2和图3很难确定的说P300波形存在与否(然而实际上是有的) 提出问题:如何在叠加

基于卷积神经网络的单图像去雨

图像去雨是图像处理和计算机视觉领域共同关心的重要问题,传统的关于图像去雨的图像恢复方法在某些特定的情况下会失效,鉴于深度卷积神经网络(CNN)在计算机视觉领域的迅猛发展及其良好的学习性能,越来越多的研究者将CNN应用到图像恢复领域.本文主要从图像处理和物理模型的研究角度,并结合卷积神经网络技术,对图像去雨技术进行综述.并主要介绍近几年提出的典型的去雨CNN网络的基本原理和研究进展,并对这些方法给出其视觉上的效果和客观的评估数据. 近年来,随着计算机软件和硬件技术的不断发展,计算能力不断增强,对雨

读《基于卷积神经网络的木材缺陷识别》 徐姗姗

0 引言 介绍了木材缺陷检测的作用和价值,近年以来的普遍使用的方法,以及使用卷积神经网络的好处. 1 卷积神经网络 介绍卷积神经网络的现在使用的方面,成熟的技术,然后介绍组成结构(就是常见的CNN模型),然后顺带的点名了使用CNN的好处. 2 网络结构设计 文中主要有三种类别的样本,于是最终可以利用CNN分3类,实验中使用了8层网络,对数据的学习使用的是渐进式的学习方法. 3 试验分析 给出了实验的结果,以及自己的部分理解,和对实验数据的解释. 4 结论 CNN的好处,以及解决了问题,需要改进的

基于卷积神经网络CNN的电影推荐系统

本项目使用文本卷积神经网络,并使用MovieLens数据集完成电影推荐的任务. 推荐系统在日常的网络应用中无处不在,比如网上购物.网上买书.新闻app.社交网络.音乐网站.电影网站等等等等,有人的地方就有推荐.根据个人的喜好,相同喜好人群的习惯等信息进行个性化的内容推荐.比如打开新闻类的app,因为有了个性化的内容,每个人看到的新闻首页都是不一样的. 这当然是很有用的,在信息爆炸的今天,获取信息的途径和方式多种多样,人们花费时间最多的不再是去哪获取信息,而是要在众多的信息中寻找自己感兴趣的,这就

基于卷积神经网络(CNN)的中文垃圾邮件检测

前言 跳过废话,直接看正文 文本分类任务是一个经久不衰的课题,其应用包括垃圾邮件检测.情感分析等. 传统机器学习的做法是先进行特征工程,构建出特征向量后,再将特征向量输入各种分类模型(贝叶斯.SVM.神经网络等)进行分类. 随着深度学习的发展以及RNN.CNN的陆续出现,特征向量的构建将会由网络自动完成,因此我们只要将文本的向量表示输入到网络中就能够完成自动完成特征的构建与分类过程. 就分类任务而言,CNN比RNN更为合适.CNN目前在图像处理方向应用最为广泛,在文本处理上也有一些的应用.本文将

数据挖掘、目标检测中的cnn和cn---卷积网络和卷积神经网络

content 概述 文字识别系统LeNet-5 简化的LeNet-5系统 卷积神经网络的实现问题 深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系列文章主要记录自己对深度神经网络的一些学习心得. 第二篇,讲讲经典的卷积神经网络.我不打算详细描述卷积神经网络的生物学运行机理,因为网络上有太多的教程可以参考.这里,主要描述其数学上的计算过程,也就是如何自己编程去实现的问题. 1. 概述 回想一下BP神经网络.BP网络每一层节点是一个线性的一维排列

Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之:CNN卷积神经网络推导和实现 [4]Deep Learning模型之:CNN的反向求导及练习 [5]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN [6]Deep Learn

卷积神经网络大总结

#Deep Learning回顾#之2006年的Science Paper 大家都清楚神经网络在上个世纪七八十年代是着实火过一回的,尤其是后向传播BP算法出来之后,但90年代后被SVM之类抢了风头,再后来大家更熟悉的是SVM.AdaBoost.随机森林.GBDT.LR.FTRL这些概念.究其原因,主要是神经网络很难解决训练的问题,比如梯度消失.当时的神经网络研究进入一个低潮期,不过Hinton老人家坚持下来了. 功夫不负有心人,2006年Hinton和学生发表了利用RBM编码的深层神经网络的Sc

(转载)Convolutional Neural Networks卷积神经网络

Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional Neural Networks卷积神经网络 三:LeCun的LeNet-5 四:CNNs的训练过程 五:总结 本文是我在20140822的周报,其中部分参照了以下博文或论文,如果在文中有一些没说明白的地方,可以查阅他们.对Yann LeCun前辈,和celerychen2009.zouxy09表示感谢