主题
今天的主题是制作AI识别相册.
实例截图
主要是实现对图片内容的解析识别,然后提取标签做一个双向分类.
主要依赖项
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.67</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/facebody -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>facebody</artifactId>
<version>0.0.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/imagerecog -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>imagerecog</artifactId>
<version>0.0.5</version>
</dependency>
前端是由简单的Vue
来实现的.
这里没有用SSR这些后端渲染的方法来实现,而是使用
AXIOS
来实现数据请求
主要逻辑
在web端上传图片,通过upload
组件将图片传到后端,后端将图片通过阿里云SDK
传到对应的处理服务,然后获取识别结果,存入到本地,再做对前台的响应.
当前端点击网页上的标签时就会发起请求,后端服务从存在本地的JSON
文件读取出数据,再进行响应.
主要业务代码分析
public List<String> recognizeScene(InputStream inputStream) throws Exception {
// 实例化图像识别请求
RecognizeSceneAdvanceRequest request = new RecognizeSceneAdvanceRequest();
// 将图像流挂载到请求上
request.imageURLObject = inputStream;
// 实例化一个标签缓冲区
List<String> labels = new ArrayList<>();
try {
// 实例化图像识别请求client
com.aliyun.imagerecog.Client client = getImageRecogClient(imageRecogEndpoint);
// 获取识别结果
RecognizeSceneResponse resp = client.recognizeSceneAdvance(request, new RuntimeObject());
for (RecognizeSceneResponse.RecognizeSceneResponseDataTags tag: resp.data.tags) {
// 将识别结果加入到缓冲区中
labels.add(tag.value);
}
} catch (ClientException e) {
// 错误处理
log.error("ErrCode:{}, ErrMsg:{}, RequestId:{}", e.getErrCode(), e.getErrMsg(), e.getRequestId());
}
return labels;
} labels;
}
上面的代码实现了标签提取,并加入了链表.
其他部分的业务代码大多类似雷同,不再赘述
项目源代码
欢迎加入阿里云AI训练营