• 图形搜索中用到的机器学习基础介绍


    概述

    针对目标图像(具有统一特征的图像),进行基于深度学习技术的模型训练,通过调优模型结构与参数,得到对于指定图像具有提取特征信息的模型 M。将库中所有图像通过 M 提取出特征信息,并将特征信息存储在ceph 中,所有特征信息提取完成后,创建多叉树索引。当用户上传图片查找时,用 M 提取图片的特征信息,将提取的特征信息转换为索引树叶节点相同数据结构,用该数据在索引中查找到相似度符合要求的图片。

    基础概念

    深度学习技术的模型为一个结构复杂的层叠神经网络,通过各层的计算(卷积计算,非线性激活层,池化层等),提取得到图片的关键特征信息。对于不同的任务,需要用任务对应的图像,使用深度学习框架作为工具,训练模型,从而得到能够执行特定任务功能的模型。常用的深度学习框架有tensorflow,mxnet等。

    卷积层 :利用卷积运算对原始图像或上一层的特征进行变换的层。一般需要采用多个卷积核多滑几次,但也不是越多越好。过多可能造成梯度消失。(问题又来了,什么是梯度?梯度是模型输出与输入结果的差异,每一层参数调整通过这个差值传播完成。网络过深,该差值会被逐层地指数级缩小,接近于 0 时,参数就没有变化了。)

    池化层:用来减小图片分辨率,降低计算量和参数数量。具体说就是将特征按通道分开,得到矩阵,对矩阵分割,每个分割块取平均值,将平均值组合,然后堆叠输出。

    全连接层:将特征向量进行变换。使用若干维数相同的向量与输入向量做内积操作,然后将结果拼接输出。

    非线性激活层:线性函数的复合依然是线性,若无非线性变换,多层变换效果不会被保留。需要进行非线性运算才可保留。常用线性整流函数 ReLU ,这个函数听起来绕口,实际上就是 x > 0 时 y = x, x < 0 时,y = 0。

    归一化层:完成多类线性分类器中归一化指数函数的计算。一般为最后一层,以一个长度和类别个数相等的特征向量作为输入,然后输出图像属各个类别的概率。

    过拟合:模型过于贴近训练集。

    欠拟合:模型能力太差,搞不定训练集也搞不定测试集。

     基本流程

    一、环境配置

    首先当然是搭建环境,这个里头坑坑洼洼不是一般的多, 参考官方文档,多踩几次就好了。

    建议采用 Ubuntu 系统,资源比较多。

     二、模型训练

    1、图片预处理

    mxnet 要求处理的图像数据具有共同的规范,如何尺寸、通道数等,因此文件服务器中的图片不能直接作为训练数据,需要进行处理,以某种 dataiter 的形式呈现。

      

    2、创建训练集与测试集

    ImageRecordIter是一种特殊的DataIter,可以直接接受上文所说的数据集转化成 4 维NDArray。

    3、定义神经网络

    一个深度神经网络通常由多个顺序连接的层组成,每一层以上一层提取出的特征输入,对其进行特定变换,进过多次变换后,可将原始图像提取为高层次的抽象(具体是什么特征,谁也不知道)。一般神经网络可分为卷积层(提取边沿特征等)、非线性激活层(完成非线性变换),池化层,全链接层等。 可参考维基神经网络

    下面是复制过来的一个神经网络,至于为何要这样配置的原因,也不清楚,还需要进一步的学习。

    4、模型训练

    算法会先初始化一个解,在这个解的基础上,确定一个搜索方向和一个移动步长(各种法算确定方向和步长的方法不同,也就使各种算法适用于解决不同的问题),使初始解根据这个方向和步长移动后,能使预测误差下降。 然后将它更新为新的解,再继续寻找下一步的移动方向的步长,这样不断的迭代下去,最终就能找到一个解,使得误差在可接受的范围内。在寻解过程中,步长太大,就会搜索得不仔细,可能跨过了优秀的解,而步长太小,又会使寻解过程进行得太慢。学习率对原步长作调整,如果学习率lr = 0.1,那么梯度下降法中每次调整的步长就是0.1*梯度。

    一般来说,按照以上步骤完成训练的模型,肯定是没法工作的, 蛋疼。

    因为非常容易过拟合(太迁就训练集数据)或者欠拟合(模型连训练集都搞不定),这个就要考验一个人的水平了。因为机器学习的关键就是特征工程,数据是有的,就看怎么提取到合适的特征来进行识别了。

     参考:

    https://mxnet.incubator.apache.org/api/python/index.html

    https://baijiahao.baidu.com/s?id=1584288173097662506&wfr=spider&for=pc

    https://baike.baidu.com/item/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/382460

    https://blog.csdn.net/storMouse/article/details/56115308?locationNum=4&fps=1

  • 相关阅读:
    ASP.NET验证控件的使用 拓荒者
    读书笔记:MFC单文档应用程序结构分析 拓荒者
    MFC单文档(SDI)全屏程序的实现 拓荒者
    jQuery的animate函数
    设备尺寸杂谈:响应性Web设计中的尺寸问题
    Yeoman学习与实践笔记
    IE对文档的解析模式及兼容性问题
    推荐给开发和设计人员的iPad应用
    几个移动应用统计平台
    颜色、网页颜色与网页安全色
  • 原文地址:https://www.cnblogs.com/yaolin1228/p/9222302.html
Copyright © 2020-2023  润新知