基于深度学习在移动端部署的图像搜索应用

大家好,我是MPIG 2014级本科生朱智康,今天想和大家分享一下我的本科毕业设计,基于深度学习在移动端部署的图像搜索应用。随着大数据时代的来临,深度学习技术逐渐成为图像搜索的主流技术。而广义的图像搜索包含图像主体检索和图像识别,本次毕业设计主要完成了在Google移动端深度学习框架TensorFlow Lite下,完成了Android APP的开发,APP的主要功能是对摄像头拍摄的物体进行分类和识别,最终反馈给用户物体的名称和识别的准确度。

首先介绍一下TensorFlowLite框架,TensorFlow是Google发布于2015年的机器学习平台,由于其速度快而且扩展性好,迅速占领市场。由于PC设备和移动设备计算能力差别较大,开发一个移动端深度学习平台迫在眉睫,所以Google在2017年发布满足了人们的期待。尽管Lite版看起来是Tensorflow Mobile的一个简单升级,是一个轻量级版本,但其依然是深度学习技术部署在智能手机或嵌入式设备上的又一进步。由于提出的时间有限,Lite版本目前只有少量的预训练AI模型问世,例如MobileNet,计算机图像识别的Inception v3和处理自然语言的Smart Reply。当然,Lite本身可以定义自己的数据集进行制定化训练获得想要的模型。它的具体操作如下图所示:

本次设计采用的是inception-v3的预训练模型,能够对1000类物体进行较高准确度的识别,该模型采用卷积神经网络的输入图像提取的一般特点和分类的基础上的特征完全连接和softmax层。

本次设计的APP采用操作系统是Android系统,Android系统总共有四层,每层都会有与众不同的工作模式和作用。第一层是应用层,这层主要包含Android手机自带的所有应用程序,这些程序的开发语言采取的是Java语言,这些程序给Android手机最基本的用户体验,同时也很好的展示了Android系统的基本功能。第二层是应用程序框架层,利用对应的视图或数据的组合实现对主要内容的展示,而且底层数据可以进行封装,接着对数据进行打包,用以实现内容表达的进一步完善。如果需要进行整体布局,可以通过配置相关文本资源,直接用终端设备实现监测和观察整体的活动周期。

第三层是系统运行层,这层里经常会设置Android平台中的Java库,简而言之,就是将可能用到的数据都放在里面方便随时调取。当然现在设计程序时,Dalvik虚拟机可以单独运行。C语言设计的程序同样可以在Android系统中完成设计,因为在系统运行层,Android提供了各种编程语言的支持。最后一层是系统的Linux核心层,系统的所有数据基本上都是用Linux系统进行优化和改革的,这层的所有服务和支持都离不开Linux的使用。它的结构如下图所示:

在了解有关知识后,在Android Studio完成有关代码的编写和环境配置,生成APK文件并最终部署到Android手机上,具体实现效果如下图所示,它完成了对运动鞋的识别:

最后让我们通过视频更直观的了解我的毕业设计吧!

视频1:APP演示Demo

视频2:基于深度学习在移动端部署的图像搜索应用Presentation

想获取本presentation的对应视频和代码,可以点击如下链接下载:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180611G12JRT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券