标签: 人像分割

  • 百度一键人像分割 API 试用

    百度一键人像分割 API 试用

    近期百度上线了人像抠图 API – 人像分割 – 识别图像中的人体轮廓,与背景进行分离,其主要分析能力为:

    识别人体的轮廓范围,与背景进行分离,适用于拍照背景替换、照片合成、身体特效等场景;

    输入正常人像图片,返回分割后的二值结果图,返回的二值图像需要进行二次处理才可查看分割效果.

    技术和应用场景简单介绍参考 – 人像分割技术正式上线 一键抠像 欢迎免费使用.

    1. 百度人像分割技术简介

    核心能力

    精准识别图像中的人体轮廓边界,将人体轮廓与图像背景进行分离,实现像素级分割,一键抠像.

    技术优势

    • 适应性强:图像中有多个人体,或者背景比较复杂时,都不在话下,还能hold住人体位置重叠、遮挡、背面、侧面、大动作等各类场景.
    • 精准分割:人体轮廓边缘清晰可见,评测IoU 95%以上.

    分割效果图

    应用场景

    • 人像抠图
      将原始图片中的人像分离出来,选择新的背景图像进行替换、合成;同时可以对背景进行虚化处理,突出人像,实现大光圈人像拍照效果。手残党也能变成修图小能手~
    • 人体特效
      视频直播过程中,识别用户的人体轮廓,为人像实时增加各种设定的背景特效、贴纸道具,拉轰、上档次,妥妥的!

    示例:

    图片去背景

    照片背景替换

    典型案例 – 美啦相机APP

    美啦相机是广州光锥元信息科技有限公司推出的美颜美体应用软件,为女性提供全能的修图服务. 今年8月接入百度人像分割技术,精确分离照片中的人像和背景,为用户提供换背景、给背景添加滤镜、景深模式等定制化个性服务. 一秒就变小仙女~

    如何接入

    人像分割服务已正式上线,欢迎免费试用,请戳这里:http://ai.baidu.com/tech/body/seg

    2. Python 调用百度 API 测试 Demo

    需要首先安装 baidu-aip-2.2.8.0 包

    sudo pip2 install baidu-aip
    # 或
    sudo pip3 install baidu-aip

    百度 API 测试代码如下:

    import cv2
    import base64
    import numpy as np
    
    from aip import AipBodyAnalysis
    
    # 在百度云中申请,每天各接口有 500 次调用限制.
    APP_ID = '****'
    API_KEY = '****'
    SECRET_KEY = '****'
    
    client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
    
    imgfile = 'test.jpg'
    ori_img = cv2.imread(imgfile)
    height, width, _ = ori_img.shape
    
    with open(imgfile, 'rb') as fp:
        img_info = fp.read()
    
    seg_res = client.bodySeg(img_info)
    labelmap = base64.b64decode(seg_res['labelmap'])
    nparr = np.fromstring(labelmap, np.uint8)
    labelimg = cv2.imdecode(nparr,1)
    labelimg = cv2.resize(labelimg,(width,height), interpolation=cv2.INTER_NEAREST)
    new_img = np.where(labelimg==1, 255, labelimg)
    maskfile = imgfile.replace('.jpg', '_mask.png')
    cv2.imwrite(maskfile, new_img)
    
    res_imgfile = imgfile.replace('.jpg', '_res.jpg')
    result = cv2.bitwise_and(ori_img, new_img)
    cv2.imwrite(res_imgfile, result)
    
    print('Done.')

    随便从淘宝上找了几张模特图,测试结构如下:

    总结:

    根据 API 输出结果解析出来的 shape 为 473x473x3,应该采用了类似于 PSPNet 的语义分割网络做的二类分割背景人体背景+人体.

    测试结果感觉差强人意.