基于 Serverless 与机器学习实现的人像背景自动去除服务

阅读时长 8 分钟读完

前言

随着移动互联网的普及,随时随地拍照已成为人们生活中不可或缺的一部分。然而,很多时候在拍照时,我们无法掌控周围环境的光线、角度以及背景等因素,导致拍出的照片效果并不如意。其中一个常见的问题是背景杂乱,这时我们就需要用到人像背景自动去除服务。

本文将介绍如何基于 Serverless 与机器学习实现人像背景自动去除服务,这不仅可以帮助你把焦点放在重要的主体上,同时也可以让你的照片更加美观。

服务架构

上图为本文所用服务的架构图。用户上传带有人像的照片至对象存储服务,并触发事件通知函数,函数将照片交由机器学习服务进行背景去除处理,得到只有人像的照片,并将其返回给用户。

实现步骤

1. 创建对象存储服务

本文使用阿里云对象存储 OSS 作为存储照片的服务,读者可以根据自己的需求选择其他云服务商提供的对象存储服务。

创建完对象存储服务后,需要在存储桶设置中配置事件通知功能,并设置事件通知的目标为函数计算服务。

2. 创建机器学习服务

本文使用阿里云机器学习 PAI 作为处理背景去除的服务,读者可以根据自己的需求选择其他云服务商提供的机器学习服务。

在创建机器学习服务时,需要上传一定数量的有标注数据集,用于训练模型。数据集的标注可以通过图像标注工具或人工标注等方式完成。

3. 创建函数计算服务

本文使用阿里云函数计算服务作为事件通知的处理服务,读者可以根据自己的需求选择其他云服务商提供的函数计算服务。

在创建函数计算服务时,需要上传处理照片的代码包,在代码中调用机器学习服务进行背景去除处理,并将处理后的照片上传至对象存储服务。

4. 测试服务

创建完服务后,可以上传一些带有人像的照片进行测试,查看服务是否正常工作。

代码示例

函数计算代码

-- -------------------- ---- -------
------ -------
------ --------
------ ---------
---- -- ------ -------
---- --- ------ -----

------ - -------------------

--- -------------- ---------
    ------------------
    --- ------ -- -----------------
        -- ----- -- -------
            --- - -------------
            ----------- - ---------------------
            ---------- - --------------------
            --- - ------------------------------------------------------------------
            -------- - -----------------
            ----
                -- -------------------- -- ----
                    --- - -------------------------------------
                    --- - ------------------
                    -------- - ----------------------------------------------------------------------- 
                                             ---------
                                                 --------------- -------------------
                                                 ---------------- -------- -------------
                                             -- 
                                             ------
                                                 ----------- ---
                                             --
                    ------------- - ---------------
                    ------ - ---------------------------------
                    -- ------ -- ----
                        ---------------- - ----- -------
                        ------
                    -------- - ---------------------------------------------------------------------------- 
                                             ---------
                                                 --------------- -------------------
                                                 ---------------- -------- -------------
                                             -- 
                                             ------
                                                 ------- --
                                                 ---------- ---
                                             --
                    ------------- - ---------------
                    ---------- - -----------------------------------------
                    -- ----------------------------- - ----
                        -------------------- - ------
                        ------
                    - ----- ----------------------------------
                -----
                    ---------------------- ------ ---- ------------------------
            ------ --------- -- --
                --------------------
                ------------------------------------

上述代码使用对象存储服务提供的事件通知功能,当有照片上传至存储桶时,代码将读取照片内容并发送到机器学习服务进行处理,并将处理后的结果上传至对象存储服务。

机器学习代码

本文不涉及机器学习模型的训练部分,读者可以使用已经训练好的模型来处理照片。下面是一个简单的 Python 代码示例,使用已经训练好的背景去除模型对照片进行处理。

-- -------------------- ---- -------
------ --------- -- ---
---- --- ------ -----
------ ----- -- --

----- - -------------------------------------------------

--- ------------------------------
    --- - ----------------------
    --- - -------------
    ------- - --------------------------------
    ---- - ------------------
    ---- - ------------------------------------------------------ -----------------------
    ----- - ----------------- --------- --- -- -- ---
    ---------------------------------
    -------------------------------
    ------ -----

上述代码将照片读取为数组,然后使用 PaddleHub 的 deeplabv3p_xception65_humanseg 模型进行背景去除处理,并返回处理后的带有 alpha 通道的图片。

总结

本文介绍了如何基于 Serverless 与机器学习实现人像背景自动去除服务,并提供了代码示例。读者可以根据本文所述的方法和思路,自行搭建自己的服务,同时根据实际需求进行调整和优化。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65b6b9a0add4f0e0fff60071

纠错
反馈