我是靠谱客的博主 糟糕西装,最近开发中收集的这篇文章主要介绍阿里云趣味视觉AI训练营Class 2笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天实现分割抠图和人脸融合功能

视频里用的是python,但我选择用java,为啥?!后面几节课用的也是java,而且用python的话,大家都在写,我用java,岂不妙哉。

话不多说,直接上手。

1.首先开通人体分割https://vision.aliyun.com/experience/detail?spm=a211p3.14020179.J_7524944390.19.66cd35cc22y0Lj&tagName=imageseg&children=SegmentBody

2.打开IDEA,新建一个maven项目,由于代码量很少,直接使用昨天的工程(maven、jdk、idea、maven项目的创建昨天做过了,这里不再重复)

3.改pom.xml,增加以下依赖

 <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.14</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-imageseg -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-imageseg</artifactId>
            <version>1.1.2</version>
</dependency>

4.新建一个测试类,并写入以下代码

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.imageseg.model.v20191230.*;

public class SegmentBody {

    public static void main(String[] args) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "idxxxxx", "keyxxxxxx");
        IAcsClient client = new DefaultAcsClient(profile);

        SegmentBodyRequest request = new SegmentBodyRequest();
        request.setRegionId("cn-shanghai");
        request.setImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/imageseg/SegmentBody/SegmentBody1.png");

        try {
            SegmentBodyResponse response = client.getAcsResponse(request);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }
}

5.运行代码,得到以下结果即为调用API成功

然后,还有个合图(将png人像融合到一张背景图上),我在官网的能力广场没找到这个合图,所以我们来玩个更好玩的,人脸融合(就是AI换脸【手动狗头】)

1.开通服务https://vision.aliyun.com/experience/detail?spm=a211p3.14020179.J_7524944390.14.29c735ccS4uE48&tagName=facebody&children=MergeImageFace

2.首先我们要获取TemplateId,两种方式,一种直接在以下网址在线调用生成https://next.api.aliyun.com/api/facebody/2019-12-30/AddFaceImageTemplate?spm=api-workbench..0.0.10e71e0fKTDdGR&params={%22ImageURL%22:%22http://invi-label.oss-cn-shanghai.aliyuncs.com/label/temp/cartoon/test_data/g02.jpeg%22,%22UserId%22:%22test%22}&OSSAccessKeyId=LTAI4FoLmvQ9urWXgSRpDvh1&Signature=m4CF4ieza9oq5emJoSKM5JarxWw%3D%22}&tab=DEBUG

另一种是,我们依旧使用上一次的maven项目,增加依赖,并运行代码得到结果,userid的话随便填,图片地址要放在上海的OSS里面,或者用官方示例图(如何存放的话第一天已经详细讲过了)。

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>facebody20191230</artifactId>
            <version>1.0.9</version>
        </dependency>

import com.aliyun.tea.*;
import com.aliyun.facebody20191230.*;
import com.aliyun.facebody20191230.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;

public class Sample {

    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config()
                // 您的AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
        return new com.aliyun.facebody20191230.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.facebody20191230.Client client = Sample.createClient("idxxxx", "keyxxxxx");
        AddFaceImageTemplateRequest addFaceImageTemplateRequest = new AddFaceImageTemplateRequest()
                .setImageURL("http://invi-label.oss-cn-shanghai.aliyuncs.com/label/temp/cartoon/test_data/g02.jpeg")
                .setUserId("test");
        // 复制代码运行请自行打印 API 的返回值
        System.out.println(client.addFaceImageTemplate(addFaceImageTemplateRequest).toMap());
    }
}

3.新建一个测试类,然后写入代码,运行后得到的imageurl即为结果,TemplateId是上一步获取的,userid是上一步填入的。图片地址也是要放在OSS里(这个图片就是要与上张图片要融合的另一张图片,或者用官方示例图)。


import com.aliyun.tea.*;
import com.aliyun.facebody20191230.*;
import com.aliyun.facebody20191230.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;

public class Sample2 {

    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config()
                // 您的AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "facebody.cn-shanghai.aliyuncs.com";
        return new com.aliyun.facebody20191230.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.facebody20191230.Client client = Sample2.createClient("idxxxx", "keyxxxx");
        MergeImageFaceRequest mergeImageFaceRequest = new MergeImageFaceRequest()
                .setUserId("test")
                .setTemplateId("e3184189-7243-400e-a918-99038edabb22")
                .setImageURL("https://invi-label.oss-cn-shanghai.aliyuncs.com/label/temp/faceswap/img_facefusion/template/sucai1.jpg");
        // 复制代码运行请自行打印 API 的返回值
        client.mergeImageFace(mergeImageFaceRequest);
        System.out.println(client.mergeImageFace(mergeImageFaceRequest).toMap());
    }
}

4.最终融合结果

5.顺利完成所有任务!!


阿里云高校计划,陪伴两千多所高校在校生云上实践、云上成长。在这里你可以领用免费的cpu资源,还可以参加免费训练营,实践提高:https://developer.aliyun.com/adc/student/

最后

以上就是糟糕西装为你收集整理的阿里云趣味视觉AI训练营Class 2笔记的全部内容,希望文章能够帮你解决阿里云趣味视觉AI训练营Class 2笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部