在日常生活中,我们经常会遇到搜索照片的情况,如果是要寻找已经过去很久的照片,并且记忆中仅剩下零散记忆,常用的检索照片的方法是定位到大致的时间,然后一张一张的去查看 。但这种做法效率低下,经常还会漏掉目标图片,所以在这种时候,我们很需要一款可以搜索图片的软件,即通过简单的文字描述就能实现图片的快速检索 。
近几年微信小程序的发展速度飞快,从张小龙在 2017 微信公开课 Pro 上发布小程序正式上线到目前为止,小程序已经覆盖了超过 200 个细分行业,服务超过 1000 亿人次用户,年交易增长超过 600%,创造超过 5000 亿的商业价值 。
本实例将会通过微信小程序,在 Serverless 架构上实现一款基于人工智能的相册小工具,在保证基础相册功能(新建相册、删除相册、上传图片、查看图片、删除图片)的基础上,增加搜索功能,即用户上传图片之后,基于 Image Caption 技术自动对图片进行描述,实现 Image to Text 的过程,当用户进行搜索时,通过文本间的相似度返回给用户最贴近的图片 。
基础设计

文章插图
该项目设计主要包括登录功能、相册新建、图片上传、相关预览以及搜索功能,整体如图所示 。

文章插图
其中注册功能的主要作用是,通过获取用户的唯一 Id(微信中的 OpenId),将用户信息存储到数据库中,之后的所有操作都需要根据该 Id 作为区分 。相册功能主要包括相册添加、修改、删除以及查看等 。图片功能包括图片上传功能、删除功能、查看功能 。搜索功能主要是可以查看指定标签对应的图片列表,以及指定搜索内容对应的列表 。当然这四个主要功能和模块是与前端关系紧密的部分,除此之外还有后端异步操作的两个模块,分别是图像压缩功能和图像描述功能 。
注册功能注册功能主要是用户点击注册账号之后执行的动作 。该动作需要注意,用户点击注册账号注册的时候要先判断用户是否已经注册过,如果已经注册过则默认登陆,否则进行注册并登陆 。当用户不想注册时,可以点击体验程序,可以对程序大部分页面进行预览 。但是不能实现有关数据库的增删改查等功能 。
登录功能页面如图所示 。

文章插图
相册功能当用户注册登录之后,可以在相册管理页面进行相册相关的管理,包括编辑功能、删除功能以及新建功能,此处在进行添加和修改的时候,需要注意相册名称是否已经存在;在进行删除、修改相册等操作时要判断用户是否有操作该相册的权限等 。
下图是相册功能相关原型图 。

文章插图
图片功能图片功能主要包括图片列表以及图片获取、图片删除以及图片上传功能,在图片获取与删除的过程中,要对用户是否有该项操作的权限进行判断,图片上传时也要判断用户是否有上传到指定相册的权限 。图片功能相关原型图如所示 。

文章插图
图片功能部分除了用户侧可见的功能,还有定时任务,当用户上传图片之后,系统会在后台异步进行图像压缩以及图像的描述、关键词提取等 。
整体流程如图所示:

文章插图
搜索功能搜索功能指的是通过关键词或者使用者的描述,获得目标数据的过程,这一功能原型图如图所示:

文章插图
这一部分的难点和重点在于通过用户的描述,搜索到目标数据 。这个过程的基本流程如图所示:

文章插图
项目开发初步了解 Serverless CliServerless 架构具备按量付费、低成本运维、高效率开发等优点,可以帮助我们快速开发,快速迭代项目 。而 Serverless Framework 则是一个非常高效的工具,其兼容了 AWS,google Cloud 以及腾讯云等多家厂商的 Serverless 架构,为开发者提供一个多云的开发者工具,若以腾讯云为例,其拥有 Plugin 和 Components 两个部分 。
Plugin 和 Components 这两个部分可以说是各有千秋,具体操作大家可以参看官方说明,我在这里想列举几点:
推荐阅读
- 基于Bert和通用句子编码的Spark-NLP文本分类
- eHIDS 一款基于eBPF的HIDS开源工具
- 基于零信任的安全架构
- 教你编译一个基于arm的Linux内核,并用qemu模拟器测试
- 基于机器学习的自适应码率算法的进一步探索与改进
- 基于Modbus协议实现Openplc与Kingview的仿真通讯与模拟测试
- 基于oAuth的授权登陆
- 附代码 基于NLP的COVID-19虚假新闻检测
- 如何基于TCP/IP协议进行MFC Socket网络通讯编程
- 内网渗透基础——命令行下安装Microsoft .NET Framework
