【学术论文】基于深度学习的图像分类搜索系统

摘要:
图像分类是根据图像的信息将不同类别的图像区分开来,是计算机视觉中重要的基本问题,也是图像检测、图像分割、物体跟踪、行为分析等其他高层视觉任务的基础。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像、声音和文本。该系统基于Caffe深度学习框架,首先对数据集进行训练分析构建深度学习网络,提取数据集图像特征信息,得到数据对应的分类模型,然后以bvlc-imagenet训练集模型为基础,对目标图像进行扩展应用,实现“以图搜图”Web应用。

中文引用格式: 张璘,杨丰墒. 基于深度学习的图像分类搜索系统[J].电子技术应用,2019,45(12):51-55.
英文引用格式: Zhang Lin,Yang Fengshang. Image classification search system based on deep learning method[J]. Application of Electronic Technique,2019,45(12):51-55.

0 引言

Caffe(Convolutional Architecture for Fast Feature Embedding)是由伯克利大学的贾杨清等人开发的一个开源的深度学习框架[1],采用高效的C++语言实现,并内置有Python和MATLAB接口,以供开发人员开发和部署以深度学习为核心算法的应用。本文从基本的深度学习概念出发,以mnist手写识别数据集为基础,通过Caffe框架设计的LeNet卷积网络对数据集进行训练分析,提取目标图像特征信息,训练出一个模型进行测试以及网络结构的图解[2]。为了更好地展示深度学习的应用效果,使用bvlc_reference_caffenet.caffemodel来作为基本模型进行图片识别分类,实现了一个简单的“以图搜图”Web应用。

1 深度学习的介绍

深度学习的概念由HINTON G E等人于2006年提出[3],基于深度置信网络(DBN)提出非监督贪心逐层训练算法,多非线性层级系统有效解决了深度学习在训练过程中的过拟合问题,通过在图像层次稀疏表示中引入图像显著信息,加强了图像特征的语义信息,得到图像显著特征表达。

1.1 卷积过程

对于一维信号,卷积定义为:
其中,f表示Mr×Nc的二维图像矩阵,g表示Nr×Nc的二维图像矩阵,卷积结果y的大小为(Mr+Nr-1)×(Mc+Nc-1),即0≤m<Mr+Nr-1,0≤n<Mc+Nc-1。以具体图像处理为例,卷积过程其实还是基于一个固定的矩阵,将另外一个矩阵一格一格扫过去得到数值的和,如图1所示。
如果输入的图像是6×6的一组矩阵,其前3×3格的数据经过权值weight的加权求和后可以得到429,得到第一个卷积后的数据;输入矩阵每次运算向后移动一小格,并与权值weight进行加权求和,扫完整个数据可以得到一个4×4的数据,卷积的结果是维数降低了,如图2所示。

1.2 卷积核

卷积核为图1中3×3矩阵的数量,因为有时要提取的特征非常多且广泛,所以需要用更多不同的矩阵来扫(多扫几遍),那么矩阵的个数就是卷积核个数。
输出的矩阵公式为:
当使用n个不同权重的矩阵卷积6×6矩阵时,可以将6×6的一个矩阵转变成n个4×4的矩阵,即6×6-->n×4×4的矩阵。

1.3 池化(pooling)

池化与卷积非常相似,简单来说就是下采样,都是使用一个矩阵与另一个矩阵的加权和得到最后的数据。池化与卷积最大的不同是卷积重复使用一个数据,而池化是每个数据只加权求和使用一次。当原来的矩阵是m×m、采样窗口是n×n时,卷积能够取得(m-n+1)×(m-n+1)的矩阵结果,而池化在不重复使用数据加权求和的情况下,一共只能采样(m/n)×(m/n)的结果矩阵。之所以这么做,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。之所以能这么做,是因为即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合[4-5]。池化的过程如图3所示,原始图片大小是12×12 维度,对其进行下采样,采样窗口为10×10,通过池化将其下采样成为一个2×2大小的特征图。

1.4 训练流程

训练的主要流程是训练卷积神经网络(CNN)的某一个卷积层时,实际上是在训练一系列的滤波器(filter)。简单来说,训练CNN在相当意义上是在训练每一个卷积层的滤波器,让这些滤波器组对特定的模式特征有较高的激活,从而达到CNN网络的分类/检测等目的[6]。因此,在相当程度上,构建卷积神经网络的任务就在于构建这些滤波器,也就是改变滤波器矩阵的值,即改变权值weight,用来识别特定的特征[7]。这个过程叫做训练,图4是深度学习训练流程图。
其中weight权值即图4中的W0、W1、W2,其值由初始权值随着学习训练的过程由损失函数来控制和调整,从而达到学习的目的。

2 LeNet卷积网络的mnist手写识别模型

2.1 训练过程

由LECUN Y等人于1998年提出的LeNet网络[8]是最早的卷积神经网络之一,它在手写数字的识别问题中取得成功。本文使用的mnist图片数据来源于官网http://yann.lecun.com/exdb/mnist/,数据分成了训练集(60 000张共10类)和测试集(共10 000张10类),每个类别放在一个单独的文件夹里,并将所有的图片都生成txt列表清单(train.txt和test.txt)[9]
环境说明:采用VMware Workstation14下的Linux(Ubuntu16.04)操作系统系统,Python环境:Anaconda2.7,Caffe 以及Caffe所需要的Opencv(3.4)支持。环境搭建如图5所示。

2.2 测试结果

本文使用mnist官方提供的测试集对训练好的模型进行训练,每类数字有1 000张共10个分类10 000张图片,判断正确结果较多,因此这里跳过了判断正确结果的输出,图6依次为0~9的测试出错结果:头顶标记为模型对图片预测分类的结果。
从测试的结果可以看出:
(1)测试大概10 000张图片,共用时不到10 s(仅使用CPU运算,且不同性能计算机用时差异较大,仅作参考),其中判断错误数量为80张左右,正确率大概有99.2%,每张的测试时间不到1 ms。
(2)分析输出的错误图像判断结果,可知有些错误原因是手写字迹潦草、部分较为模糊、手写有歧义(即使人为判断也无法准确断定数字具体分类)。
(3)部分的测试结果在人眼识别过程中没有太大的问题,在字迹方面也算可以清晰显示出数字的具体信息,而此模型却给出了一个错误的结果。这些识别结果只显示了概率最大的分类,可能在识别的部分特征过于相似,导致并不能得到最好的分类结果,这应该属于深度学习的训练缺陷的一部分,原因是由于训练集的质量和数量决定的。

3 图片识别的一个简单应用

百度上线了其最新的搜索功能——“识图”,该功能基于相似图片识别技术,让用户通过上传本地图片或者输入图片的URL地址后,根据图像特征进行分析,进而从互联网中搜索出与此相似的图片资源及信息内容。根据前面的深度学习图片分类的学习结果,设计出一款类似百度“识图”的应用。

3.1 总体设计思路

使用Web前端获取用户所上传(POST)的图片文件或者URL,服务器接收到用户图片后调用bvlc模型进行处理,载入模型识别出图片分类信息,后台根据这个分类信息使用requests爬虫库搜索Bing上相似的图片,获取到相关的图片链接并传给前端浏览器,浏览器根据所给的图片链接进行访问请求,并显示在用户浏览界面中,从而达到以图搜图的功能。处理流程图如图7所示。

3.2 模型框架说明

后台服务器Django:Django是一个开放源代码的Web应用框架,由Python写成,较适合中等规模的Web项目,本图片搜索系统是基于Django搭建并部署Web应用。
Web前端框架Bootstrap:Bootstrap是当前比较流行的前端框架,起源于推特,提供了简洁的层叠样式表和HTML规则,以及更为完善的人性化网站风格。根据此框架能够较好较快地搭建前端Web UI界面,且很符合该图片展示模块的风格。
搜索分类依据bvlc模型:该模型由Caffe团队使用imagenet图片集迭代训练30多万次而成,共有1 000种的分类,是一个可应用级别的model。此次分析图片的具体分类就是通过这个模型得到分类的关键字。

3.3 搜图流程

前端界面:这里提供了两种图片的上传方式,即图片的本地文件以及图片的URL地址,选择上传一张小猫图片,如图8所示。
后台分类:后台将图片载入bvlc模型进行运算,如图9展示的是第一个卷积层的卷积核与进行第一次卷积后的图片。
最终后台经过分析特征得到图片分类的概率分布图,如下结果最可能的分类为283,再通过查找label文件得到283类为label:n02123394 Persian cat,如图10所示。
也可以查看前5个最有可能的分类结果:
[(0.99606931,′n02123394 Persian cat′),
(0.0019333176,′n02127052 lynx,catamount′),
(0.0013805312,′n02123159 tiger cat′),
(0.00041564793,′n02123045 tabby,tabby cat′),
(8.5782471e-05,′n02124075 Egyptian cat′)]
更多图片搜索的实现:得到关键字后,通过requests爬虫库爬取Bing图片(https://cn.bing.com/images),对网页HTML源码进行分析,因此得到了一个API接口:https://cn.bing.com/images/async?q={%s}&mmasync=1。
该接口提供一个搜索关键词的参数代替URL中的%s,因而得到想要的图片数据,再使用xpath:’//*[@id="mmComponent_images_1"]/ul/li/div/div/div/div[1]/ul/li[2]/text()’,从而提取到想要的图片地址以及图片源信息。获得图片的URL信息后,后台系统会整理好数据以JSON方式传送给浏览器,浏览器便可依据此地址展示给用户更多的相似图片。
前端图片展示页面:第一张图片为搜索的原图以及其分类的信息,其他图片为向用户提供的更多相似图片的结果,并且有查看大图(view)和下载功能(download),如图11所示。

4 结论

图片识别分类系统在应用级别的构建需要大量图片作为训练的基础,不断迭代学习才能得到一个较好的模型。本文使用的模型为Caffe官方提供的bvlc_reference_caffenet.caffemodel,使用的训练集imagenet数据集是一个强大的模型。但若以人工智能应用部署在计算机视觉领域上还远远不够,仍需要更多的大数据作为基础。同时,即使有这样一个强大模型在实际应用中,还需要动态一步步地修正和完善其模型与参数配置,这点现在的Caffe还无法很好地给出解决方案。本文最终的图片搜索应用功能依赖于识别的分类结果,本质上还是为以分类关键词搜图作为结果,若是相同分类的不同图片,搜到的结果可能相似度过高,不够智能化。可参考的解决方案是使用多个训练模型分析所选图片的各方面信息,如色调、风格、其他分类等综合结果,再加以搜索会更加智能化,但同时对训练的数据集和训练网络的学习效率会有更高的要求。

参考文献

[1] Jia Yangqing,SHELHAMER E,DONAHUE J,et al.Caffe:convolutional architecture for fast feature embedding[C].ACM International Conference on Multimedia ACM,2014:675-678.

[2] 王茜,张海仙.深度学习框架Caffe在图像分类中的应用[J].现代计算机(专业版),2016(5):72-75,80.

[3] HINTON G E,OSINDERO S,THE Y W.A fast learning algorithm for deep belief nets[J].Neural Computation,2006,18(7):1527-1554.

[4] 魏正.基于Caffe平台深度学习的人脸识别研究与实现[D].西安:西安电子科技大学,2015.

[5] 许少尉,陈思宇.基于深度学习的图像分类方法[J].电子技术应用,2018,44(6):116-119.

[6] 张顺,龚怡宏,王进军.深度卷积神经网络的发展及其在计算机视觉领域的应用[J].计算机学报,2017,42(3):453-462.

[7] 孙志军,薛磊,许阳明,等.深度学习研究综述[J].计算机应用研究,2012,29(8):2806-2810.

[8] LECUN Y,BOTTOU L,BENGIO Y,et al.Gradient-based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324.

[9] 黄睿,陆许明,邬依林.基于Ten-sorFlow深度学习手写体数字识别及应用[J].电子技术应用,2018,44(10):6-10.

作者信息:

张  璘,杨丰墒

(厦门理工学院 光电与通信工程学院,福建 厦门361024)

原创声明:此内容为AET网站原创,未经授权禁止转载。

 

(0)

相关推荐

  • 【图像分类】 标签噪声对分类性能会有什么样的影响?

    不同类型的噪声会对模型的分类性能产生什么样的影响呢,让我们一同进行实验,来探索那暗中作祟的标签噪声! 作者&编辑 | 郭冰洋 1 简介 在数据集制作过程中,由于主观.客观的原因,会导致标签噪声 ...

  • 机器学习之于IOT浅见

    为了更好地服务于目标客户, 嵌入式设计团队也在研究新技术, 如机器学习和深度学习. 深度学习允许这些设计师以有限的资源更快地开发和部署复杂的系统和设备. 通过这些技术, 设计团队可以使用数据驱动的方法 ...

  • 【学员分享】深度学习计算机视觉,两个星期从入门到上线

    Hello,everyone!今天给大家讲述一个深度学习项目. 在讲这个项目之前,很多业外人士可能不明白人工智能(AI),机器学习(ML),深度学习(DL),这三者是什么关系.先科普一下小常识,它们三 ...

  • 【学术论文】基于深度学习的图像分类方法

    摘要: 提出了一种用于图像分类的卷积神经网络,将不同池化方式对图像分类的影响进行了分析对比,采用重叠池化和dropout技术,较好地解决过拟合问题.与传统神经网络相比,该方法在CIFAR-10数据集上 ...

  • 【学术论文】深度学习中的卷积神经网络系统设计及硬件实现

    摘要 针对目前深度学习中的卷积神经网络(CNN)在CPU平台下训练速度慢.耗时长的问题,采用现场可编程门阵列(FPGA)硬件平台设计并实现了一种深度卷积神经网络系统.该系统采用修正线性单元(ReLU) ...

  • 【学术论文】基于深度学习的复杂分拣图像快速识别方法研究

       摘 要 : 训练速度更快.识别精准度更高的图像识别技术一直是智能技术的研究热点及前沿.针对物流分拣仓库环境复杂.照明度不高以及快递外包装区别不明显的特点,对基于深度学习的分拣图像快速识别进行了研 ...

  • 【学术论文】基于深度学习的人脸活体检测算法

    摘要: 身份认证技术有了很大的发展,随之不断出现的是各种伪造合法用户信息的欺诈手段.针对这一问题,提出一种基于深度学习人脸活体检测算法,分析了真实人脸和欺诈人脸之间的区别,将真实人脸和照片进行数据去中 ...

  • 【学术论文】基于深度学习的胸部X光影像分析系统

    摘要 提出一种应用嵌入式技术和深度学习技术实现对胸部X光影像分析的设计方案.采用NIVIDIA公司生产的Jetson TX2作为核心板,配备以太网模块.WiFi模块等功能模块搭建该分析系统的硬件平台. ...

  • 【学术论文】基于深度学习的烟雾识别研究

    摘要 基于Google第二代人工智能学习系统TensorFlow构建神经网络对烟雾图像进行识别检测,通过改进的运动检测算法截取疑似烟雾区域图像,并结合PCA降维算法和Inception Resnet ...

  • 【学术论文】基于深度学习的人体行为识别算法

    摘要: 为改善人体行为识别任务中准确率低的问题,提出了一种基于批归一化的卷积神经网络(CNN)与长短期记忆(LSTM)神经网络结合的神经网络.CNN部分引入批归一化思想,将输入网络的训练样本进行小批量 ...

  • 【学术论文】基于深度学习的智能路牌识别系统设计

    摘要: 提出了一种基于机器视觉和深度学习的智能路牌识别系统.采用嵌入式的ARM9作为前端采集系统,在服务器上采用图像处理算法先对前端采集的路牌图像进行文字区域的提取和分割,然后用训练好的卷积神经网络对 ...

  • 基于深度学习的特征提取和匹配方法介绍

    转载于 :黄浴博士知乎 https://zhuanlan.zhihu.com/p/78053406 计算机视觉需要图像预处理,比如特征提取,包括特征点,边缘和轮廓之类.以前做跟踪和3-D重建,首先就得 ...