• 计算机视觉的应用18-一键抠图人像与更换背景的项目应用,可扩展批量抠图与背景替换


    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用18-一键抠图人像与更换背景的项目应用,可扩展批量抠图与背景替换。该项目能够让你轻松地处理和编辑图片。这个项目的核心功能是一键抠图和更换背景。这个项目能够自动识别图片中的主体,然后将其从背景中抠出来。这个过程不需要你进行任何复杂的操作,只需要一键点击,就可以得到一个有透明背景的PNG图片。该项目还提供了更换背景的功能。你可以选择使用简约的纯色为背景着色,或者使用其他的图片作为全新的背景。这样,你就可以根据自己的需要,为图片创造出各种不同的视觉效果。后续还会提供一些其他的图片编辑功能,比如改图、修图和美图应用。这些功能都是一键操作,非常方便易用。 该项目应用是一个强大而又便捷的图片处理工具,无论你是专业的设计师,还是普通的用户,都可以通过这个项目,轻松地处理和编辑图片,实现你的创意想法。

    目录:

    1. 项目应用概述
    2. 一键人像抠图的原理
    3. 模型结构详解
    4. 数据标注过程
    5. 标注的形式
    6. 训练过程
    7. 一键人像抠图的代码实现
    8. 未来发展趋势

    1. 项目应用概述

    一键人像抠图与更换背景的应用广泛,例如在摄影后期制作、影视制作、广告设计等领域。只需要一键就能准确抠出人像,再将人像放置在新的背景之中,极大地提高了工作效率。

    2. 一键人像抠图的原理

    一键人像抠图主要通过深度学习的方法实现。首先,模型会对整个图像进行语义分割,识别出图像中的人物部分。然后,对人物部分和背景部分进行精细的边缘处理,实现准确的抠图效果。

    一键人像抠图其核心是基于像素的分类问题。我们将输入图像的每个像素归类为特定类别(例如人物或背景)。这个过程可以被看作是对每个像素进行分类的概率问题。其中,常用的方法有Softmax函数,它可以将一个含任意实数的K维向量“压缩”到另一个K维实向量中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。

    3. 模型结构详解

    人像抠图的模型通常由两部分组成:特征提取网络和语义分割网络。特征提取网络首先提取出图像的基本特征,然后语义分割网络根据这些特征进行精确的分割。常见的模型有U-Net,它的优点是可以在保证分割精度的同时,大幅度减少计算量。

    模型U-Net其结构为编码器-解码器结构。编码器用于抽取图像特征,解码器则用于将这些特征映射回原始图像的空间分辨率,以进行像素级别的预测。

    4. 数据标注过程

    抠图模型的训练需要大量标注过的图像数据。标注过程一般包括以下步骤:
    首先,选择要标注的原始图像。这些图像可以来自于公开的数据集,也可以是自己收集的图像。接下来,对每一个原始图像进行标注。标注的目标是区分出图像中的人物和背景。这通常需要专业的图像处理软件和经验丰富的标注员来完成。
    最后,将标注好的图像和对应的原始图像一起,作为训练数据供模型学习。

    5. 标注的形式

    标注的结果通常以掩膜(mask)的形式存在,也就是一张与原始图像大小相同的二值图像。在这张图像中,人物部分的像素值为1,背景部分的像素值为0。这种方式可以清晰地区分出人物和背景,方便模型进行学习。

    我们需要注意:对于一些复杂的情况,例如人物的头发、玻璃等半透明物体,可能需要使用更细粒度的标注,例如alpha通道。Alpha通道可以表示像素的透明度,范围通常在0(完全透明)到1(完全不透明)之间。

    6. 训练过程

    模型的输入数据通常是RGB图像,输出数据则是与输入图像大小相同的分割图,其中每个像素的值表示其所属的类别。模型训练的目标是最小化预测的分割图与真实分割图之间的差异,常用的损失函数有交叉熵损失。

    在训练过程中,常用的优化器有Adam,它结合了AdaGrad和RMSProp两种优化算法的优点,能够自适应地调整学习率,从而在训练初期快速收敛,训练后期则能保持较小的学习率,确保模型的稳定性。

    7. 一键人像抠图的代码实现

    我们用快速方法实现一键人像抠图,利用到ModelScope库,ModelScope是阿里推出的开源仓库,它提供了接口和实现,允许开发者进行模型推理、训练和评估。特别是,通过丰富的API抽象层,ModelScope库提供了统一的体验,可以探索跨越CV、NLP、语音、多模态和科学计算等领域的最新模型。
    这里需要安装modelscope第三方库,可以用以下命令,只安装modelscope[cv]的cv形式,即计算机视觉部分。

    pip install "modelscope[cv]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html
    
    • 1
    import cv2
    from modelscope.pipelines import pipeline
    from modelscope.utils.constant import Tasks
    from modelscope.outputs import OutputKeys
    import time
    from PIL import Image
    
    def portrait_person(image_path,out_path,color):
    
        portrait_matting = pipeline(Tasks.portrait_matting, model='damo/cv_unet_image-matting')
        result = portrait_matting(image_path)
        timestamp = str(int(time.time()))
    
        cv2.imwrite(out_path, result[OutputKeys.OUTPUT_IMG])
    
        # 打开已经扣好的图片和背景图片
        foreground_image = Image.open(out_path)
        print(foreground_image.size)
        # background_image = Image.open('bk3.jpg')
        background_image = Image.new('RGB', foreground_image.size, color=color)
    
        # 调整已经扣好的图片大小和位置(可选)
        resized_foreground = foreground_image.resize(foreground_image.size)
    
        # 创建一个新的图像对象作为融合后的图像
        merged_image = background_image.copy()
    
        # 将已经扣好的图片粘贴到背景图片上
        merged_image.paste(resized_foreground, (0,0), mask=resized_foreground)
    
        # 保存融合后的图片
        merged_image.save(out_path)
    
        return out_path
    
    if __name__ == "__main__":
    
        input_path = "input1.jpg"
        out_path = "results.png"
        color = (255, 192, 203) # 粉红色的 RGB 值
        portrait_person(input_path,out_path,color)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    运行图片换背景:
    在这里插入图片描述

    更换背景颜色之后:
    在这里插入图片描述

    8. 未来发展趋势

    随着深度学习技术的发展,一键人像抠图的准确率和效率都在不断提高。未来,我们期待看到的是,这种技术能更好地融入到我们的日常生活中,使得任何人都可以轻松地进行人像抠图和背景更换。以上就是一键人像抠图与更换背景的项目应用,以及一键人像抠图的原理和模型结构的详细介绍。希望大家多多支持与关注,谢谢!!

  • 相关阅读:
    GBase 8s定制安装
    《国资报告》专访高煜光 | 国企数字化转型如何拥抱超自动化?
    海思3559万能平台搭建:在截获的YUV图像上画框
    k8s 容忍和污点
    ASP.NET MVC--数据验证
    为什么禁止MyBatis批量插入几千条数据使用foreach?
    Oracle中的索引碎片
    TAP 文章系列-10 | 从应用感知能力谈 TAP 的约定服务
    流数据湖平台Apache Paimon(三)Flink进阶使用
    无人机开发
  • 原文地址:https://blog.csdn.net/weixin_42878111/article/details/134476488