【阿里云高校计划】学习分享:AI相册的搭建与实现

主题

今天的主题是制作AI识别相册.

实例截图

【阿里云高校计划】学习分享:AI相册的搭建与实现_第1张图片

主要是实现对图片内容的解析识别,然后提取标签做一个双向分类.

主要依赖项

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.67version>
        dependency>
        
        <dependency>
            <groupId>commons-codecgroupId>
            <artifactId>commons-codecartifactId>
            <version>1.14version>
        dependency>
       
        <dependency>
            <groupId>com.aliyungroupId>
            <artifactId>aliyun-java-sdk-coreartifactId>
            <version>4.4.9version>
        dependency>
        
        <dependency>
            <groupId>com.aliyungroupId>
            <artifactId>facebodyartifactId>
            <version>0.0.7version>
        dependency>

        
        <dependency>
            <groupId>com.aliyungroupId>
            <artifactId>imagerecogartifactId>
            <version>0.0.5version>
        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训练营
在这里插入图片描述

你可能感兴趣的:(阿里云AI训练营)