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

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 基于卷积神经网络的以图搜图算法实现        如果用这个名称去搜索论文,一定有不少。为什么了,因为从原理上来看,卷积神经网络就非常适合找图片的相似的地方。

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

       如果用这个名称去搜索论文,一定有不少。为什么了,因为从原理上来看,卷积神经网络就非常适合找图片的相似的地方。想想看,许多大牛、小牛、微牛的文章都是说如何从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的实现?这些都需要验证!我认为,通过这个自我项目,能够把对神经网络的理解和应用向前推进一大步!
        我计划利用一周的时间将这些完成,如果这些都完成之后,就应该反思积累,哪些是影响整体项目的关键节点,是数据集的建立?是数据结构的细节?还是训练?最后显示的界面如何来做?把这些做好,理清产学研之间的关系,为未来增加效益!
        此外,神经网络的程序往往都比较复杂,如何将这种程序也好,需要对能够允许的代码的充分理解和应用。
 





目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
4天前
|
机器学习/深度学习 自然语言处理 自动驾驶
CNN的魅力:探索卷积神经网络的无限可能
卷积神经网络(Convolutional Neural Networks, CNN)作为人工智能的重要分支,在图像识别、自然语言处理、医疗诊断及自动驾驶等领域展现了卓越性能。本文将介绍CNN的起源、独特优势及其广泛应用,并通过具体代码示例展示如何使用TensorFlow和Keras构建和训练CNN模型。
|
4天前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
4天前
|
编解码 人工智能 文件存储
卷积神经网络架构:EfficientNet结构的特点
EfficientNet是一种高效的卷积神经网络架构,它通过系统化的方法来提升模型的性能和效率。
10 1
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
深入浅出卷积神经网络(CNN)的奥秘
【9月更文挑战第3天】在人工智能的浪潮中,卷积神经网络(CNN)无疑是最耀眼的明星之一。本文将通过浅显易懂的语言,带你一探CNN的核心原理和应用实例。从图像处理到自然语言处理,CNN如何改变我们对数据的解读方式?让我们一起走进CNN的世界,探索它的魅力所在。
WK
|
1天前
|
机器学习/深度学习 自然语言处理 算法
PSO算法和人工神经网络有什么不同
PSO算法(粒子群优化)与人工神经网络(ANN)在原理、应用及优化方式上差异显著。PSO模拟鸟群行为,通过粒子协作在解空间中搜索最优解;而ANN模仿大脑神经元结构,通过训练学习输入输出映射,适用于模式识别、图像处理等领域。PSO主要用于优化问题,实时性高,结果直观;ANN则在处理复杂非线性关系方面更强大,但结构复杂,训练耗时长,结果解释性较差。实际应用中需根据需求选择合适技术。
WK
8 0
|
1天前
|
机器学习/深度学习 算法
基于小波神经网络的数据分类算法matlab仿真
该程序基于小波神经网络实现数据分类,输入为5个特征值,输出为“是”或“否”。使用MATLAB 2022a版本,50组数据训练,30组数据验证。通过小波函数捕捉数据局部特征,提高分类性能。训练误差和识别结果通过图表展示。
|
4天前
|
机器学习/深度学习 人工智能 监控
深度学习浪潮中的轻舟:探索卷积神经网络的奥秘
在这个数据泛滥的时代,深度学习如同一艘巨轮,在知识的海洋中破浪前行。然而,在这艘巨轮上,有一个小小的角落常常被人忽视—那就是卷积神经网络(CNN)。本文将带领读者一探究竟,从CNN的核心概念到其在实际中的应用,我们将用通俗易懂的语言,揭开这一技术神秘面纱,让每一位对深度学习感兴趣的朋友都能轻松理解并应用CNN。
11 0
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门
【8月更文挑战第31天】在人工智能的浪潮中,深度学习以其强大的数据处理能力成为时代的宠儿。本文将引导你走进深度学习的核心组件之一——卷积神经网络(CNN),并带你一探其背后的奥秘。通过简明的语言和直观的代码示例,我们将一起构建一个简易的CNN模型,理解它在图像处理领域的应用,并探索如何利用Python和TensorFlow实现它。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
12天前
|
测试技术 数据库
探索JSF单元测试秘籍!如何让您的应用更稳固、更高效?揭秘成功背后的测试之道!
【8月更文挑战第31天】在 JavaServer Faces(JSF)应用开发中,确保代码质量和可维护性至关重要。本文详细介绍了如何通过单元测试实现这一目标。首先,阐述了单元测试的重要性及其对应用稳定性的影响;其次,提出了提高 JSF 应用可测试性的设计建议,如避免直接访问外部资源和使用依赖注入;最后,通过一个具体的 `UserBean` 示例,展示了如何利用 JUnit 和 Mockito 框架编写有效的单元测试。通过这些方法,不仅能够确保代码质量,还能提高开发效率和降低维护成本。
24 0
|
7天前
|
算法 BI Serverless
基于鱼群算法的散热片形状优化matlab仿真
本研究利用浴盆曲线模拟空隙外形,并通过鱼群算法(FSA)优化浴盆曲线参数,以获得最佳孔隙度值及对应的R值。FSA通过模拟鱼群的聚群、避障和觅食行为,实现高效全局搜索。具体步骤包括初始化鱼群、计算适应度值、更新位置及判断终止条件。最终确定散热片的最佳形状参数。仿真结果显示该方法能显著提高优化效率。相关代码使用MATLAB 2022a实现。