电子相册搭建(一)|学习笔记

简介: 快速学习电子相册搭建(一)

开发者学堂课程【视觉 AI 应用开发教程 电子相册搭建(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/289/detail/3415


电子相册搭建(一)


内容介绍:

一、电子相册的介绍

二、整体结构

三、俩个重要 service


一、电子相册的介绍

电子相册是通过阿里云视觉智能平台提供的算法进行图片识别,根据图片识别的结果对图片进行分类

运行界面展示如下:

image.png

由于现在还没有图片上传,因此相册是空白。可以通过点击上传,也可以通过拖拽上传,效果如图:

image.png

可以看到这个项目利用了俩类智能算法:表情识别和场景识别。


二、整体结构:

image.png

1.common

整个的结构中一个是 common,一般存放一些公共的类或者一些常量,需要做一些装载或者是一些数据库的配置,会放入其中,然后进行这个 APP,做的是对静态资源比如说 css,js 图片做了一个映射;static 把它应用到目录下,英文当中写成这种格式,会去自动的在去找到对应的资源。

2.Controller

controller 现在大部分的外部项目都是采用了 mvc 这种方式去提供服务,接收外部的请求,然后一般都会做一些参数校验。然后通过接口调用或得到的数据再返回给前端,这是很重要的作用。

3. Service

service 的作用是把不同的请求,不同的服务,抽象成一个 service,比如说在项目当中,会有两个 service。下载这个数据,然后保存数据。

4. 图像识别

图像识别是通过这个 service 去提供服务,比如函数 recognize ,需要识别这个图片符合哪些场景。电子相册中主要讲解人脸识别的一些显著功能。

5. Utils

里面存放一些公共的类,以及一些工具函数。


三、两个重要 service

1. 获取图片

get on photos 获取到所有的图片,包括获取分类,然后通过分类然后以及标签获取图片,以及包括通过分类获取图片列表。

2. 上传图片

把这个上传的文件保存到文件当中,并且要调用两个识别的函数。

public void saveAndRecognizeImage(String filename,InputStream inputStrean) (

log.info("saveImage");

try 《

//识别场景

inputStream.reset();

inputStream.mark(readlimit:0); I

ListeString>scenes = visionService.recognizeScene(inputStream)

labelModel.addIng(LabelModeL.SCENE, f1lename, scenes);

inputStream.reset();

inputStream,mark( readlimit:0);

ListString>expressions= visionService.recognizeExpression(inputStream) labelModel.addImg(LabelModel.EXPRESSION,filename,expressions);

//重复使用 InputStream 需要 reset.mark 操作

inputStream.reset();

inputStream.mark( reodlimit:0);

//保存文件

System.out.println(imagePath+filename);

OutputStream outputStream =new FileOutputStream( name:imagePath+filename): IOUtils.copy(inputStream,outputStream);

outputStream.close():

catch(Exception e) (

有表情识别和常用识别。

这部分功能实现的是通过图像识别来实现的,这个函数 recognize sense 就是需要识别一下图片符合哪些场景,recognize expression 就是说这个人脸图片包括哪些表情。

可以把它认为是一个资源的管理器。这两个比较特殊的函数,一个post  construct,就是说在装载这个 bin 的时候,会先去执行这个函数,然后就是可以在这个切入点,可以把保存在本地的数据取出来,加载到内存里面。

然后在这个销毁这个对象的时候,把这些数据保存到本地文件,看到这个保存在哪个位置。

下图为整个数据存储的结构:

image.png

allimg,就是所有的图片,都放在这个数组里面,然后分成两个场景,可以看到这是不同的分类。有一个表情场景和有一个表情识别,还有一个场景识别。

里面放所有识别出来的表情,比如说惊讶,生气,开心。比如场景:运动,户外。

做这么多存储,是为了能够快速的进行查询,可以通过分类快速某一个分类下面的所有的识别,看到这个场景这个分类下面的所有的标签,或者是表情下的所有标签。

image.png

expression map,它主要是存放升级和经验两个标签,这个标签下面都包括哪些图片,就是一个反向的查找的过程,通过一个这个图片识别出来了哪些的场景。

image.png

比如它是属于人物场景或属于运动场景,属于生气的表情,属于演出等场景。这样去做结构,可以通过不同维度自去查询,比如要删除一个图片,能精确精确地找到并删除。

3. Vision service

image.png

从识别这个场景和表情,通过上传的这个图片流,把整个片流传到这个接口里面,然后从服务端去识别这个场景。

有两种方式,早期的版本上传有有一个限制,就是必须利用这种 os 的对象才能够识。,所以后面新的版本的就可以开始支持通过本地上传图片来进行识别。

综上是后端的一些功能。

相关文章
|
8月前
【2023Unity游戏开发教程】零基础带你从小白到超神02——新建第一个项目
【2023Unity游戏开发教程】零基础带你从小白到超神02——新建第一个项目
38 0
|
程序员 Swift
谁说程序员不懂浪漫,教你使用SwiftUI搭建一个电子相册送给她吧~
谁说程序员不懂浪漫,教你使用SwiftUI搭建一个电子相册送给她吧~
253 0
|
存储 SQL 算法
第一课(二)|学习笔记
快速学习第一课(二)
124 0
第一课(二)|学习笔记
|
存储 机器学习/深度学习 人工智能
第一课(三)|学习笔记
快速学习第一课(三)
168 0
第一课(三)|学习笔记
|
存储 缓存 移动开发
第四课(三)|学习笔记
快速学习第四课(三)
109 0
第四课(三)|学习笔记
|
搜索推荐 网络协议 Java
第四课(二)|学习笔记
快速学习第四课(二)
106 0
第四课(二)|学习笔记
|
运维 算法 Cloud Native
第三课(三)|学习笔记
快速学习第三课(三)
190 0
第三课(三)|学习笔记
|
缓存 NoSQL 搜索推荐
第三课(二)|学习笔记
快速学习第三课(二)
142 0
第三课(二)|学习笔记
|
SQL 算法 数据库
第一课(一)|学习笔记
快速学习第一课(一)
252 0
第一课(一)|学习笔记
|
存储 SQL 算法
第六课(二)|学习笔记
快速学习第六课(二)
130 0
第六课(二)|学习笔记