深度学习实战23(进阶版)-语义分割实战,实现人物图像抠图的效果(计算机视觉)

大家好,我是微学AI,今天给大家带来深度学习实战23(进阶版)-语义分割实战,实现人物图像抠图的效果。语义分割是计算机视觉中的一项重要任务,其目标是将图像中的每个像素都分配一个语义类别标签。与传统的目标检测或分类任务不同,语义分割不仅需要识别图像中存在的对象以及它们的位置,还需要对每个像素进行精细的分类。

一、计算机视觉中的语义分割应用

语义分割可以在许多应用中使用,例如自动驾驶车辆感知道路、医学图像分析中的肿瘤分割、视频监控中的行人追踪等等。通常情况下,语义分割使用卷积神经网络来完成,例如 U-Net、FCN、DeepLab 等。通过这些深度学习模型的训练和优化,我们可以更好地理解图像中的语义信息,并且可以实现高效准确的语义分割任务。

二、人物语义分割应用

要实现语义分割功能,我们需要使用预训练过的神经网络模型。我将使用DeepLabV3模型,可以在Pytorch中直接获取。

原始的DeepLab方法基于空洞卷积将全连接层替换为可学习的参数,以解决上采样问题。比较于普通的卷积,空洞卷积可以增加卷积核的感受野,从而保留更多的上下文信息。同时使用空洞率(dilation rate)可以一定程度上改变输出的分辨率。

461daa105fc74db3977ae6c7d69677d6.gif

在传统的卷积操作中,每个卷积核只处理其邻近像素的信息,而使用空洞卷积后,卷积核可以 "看到" 更多的像素,即更大的感受野,从而能够更好地捕获图像中的全局信息。同时,空洞卷积还增加了卷积层的有效感受野大小,这样可以避免在保持分辨率的同时丢弃有用信息的问题。

空洞卷积创建案例:

import torch# 定义空洞卷积层
conv = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, dilation=2)# 定义输入
input = torch.randn(1, 3, 32, 32)# 进行空洞卷积操作
output = conv(input)# 查看输出形状
print(output.shape)

三、DeepLabV3模型

在DeepLabV3中,使用了ASPP模块。ASPP是通过在空洞卷积中设置不同的采样率来捕捉图像中各种尺度的信息,这种多尺度信息获取方式可以帮助模型更好地捕捉到不同大小物体的轮廓和上下文信息。最后,将这些并行的分支进行平均池化和1x1卷积来融合,并上采样得到像素级别的分割结果。

0b62b3aabe9a47529c3cc63da660e8d6.png

 DeepLabV3模型训练过程:
1. 数据准备:准备带有像素级注释的图像数据集。例如,PASCAL VOC, Cityscapes或COCO等数据集。每个像素都需要有一个对应的标签,表示该像素属于哪个类别。
2. 数据增强:通过图像旋转、缩放、翻转等方式对训练数据进行增强,以增加训练数据的多样性并提高模型的泛化能力。
3. 网络构建:DeepLabV3包括一个用于特征提取的卷积神经网络(例如ResNet、Xception等)以及一个叫作ASPP(Atrous Spatial Pyramid Pooling,空洞空间金字塔池化)的模块。ASPP模块包含了多个不同采样率的空洞卷积层,用于捕捉不同尺度的信息。这些并行的分支在最后通过一个全局平均池化和一个1x1卷积层进行融合。
4. 损失函数:通常使用交叉熵损失来衡量模型预测结果和真实结果之间的差异。通过计算每个像素预测类别的概率分布与真实标签的概率分布之间的交叉熵损失,来更新模型的权重。
5. 优化算法:选择优化器(如SGD、Adam等)来最小化损失函数。通过不断地输入图像,模型进行前向传播并计算损失,然后通过反向传播来更新权重。
6. 模型训练:重复迭代优化步骤,直到达到一定的收敛条件,例如固定周期、损失平稳等。
7. 模型评估和验证:在验证集和测试集上评估模型的性能,根据需要调整超参数、网络结构等。 

四、代码实现

import torch
import torchvision
import numpy as np
from PIL import Image
from torchvision import transformsdef segment_person(image_path, output_path):# 加载预训练的DeepLabV3模型model = torchvision.models.segmentation.deeplabv3_resnet101(pretrained=True)model.eval()# 读取图片并转换input_image = Image.open(image_path).convert("RGB")preprocess = transforms.Compose([transforms.Resize((256, 256)),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),])input_tensor = preprocess(input_image)input_batch = input_tensor.unsqueeze(0)#if torch.cuda.is_available():input_batch = input_batch.to('cpu')model.to('cpu')with torch.no_grad():output = model(input_batch)['out'][0]output = torch.argmax(output, dim=0).byte().cpu().numpy()# 人物语义分割标签 (在PASCAL VOC数据集中,人物用标签15表示)output_person = (output == 15)# 应用掩码mask = output_person.astype(np.uint8) * 255mask = Image.fromarray(mask)masked_image = Image.composite(input_image.resize((256, 256)), Image.new('RGB', mask.size), mask)masked_image.save(output_path)# 使用方法
input_image_path = "111.png"
output_image_path = "222.png"
segment_person(input_image_path, output_image_path)

运行结果:我们输入111.png图片, 输出222.png图片ca36749fef254103bac666b9864535af.png

图中的女生是通过AI生成的。有感兴趣AI生成图片的也可以关注:
深度学习实战9-文本生成图像-本地电脑实现text2img。

往期作品:

 深度学习实战项目

1.深度学习实战1-(keras框架)企业数据分析与预测

2.深度学习实战2-(keras框架)企业信用评级与预测

3.深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

4.深度学习实战4-卷积神经网络(DenseNet)数学图形识别+题目模式识别

5.深度学习实战5-卷积神经网络(CNN)中文OCR识别项目

6.深度学习实战6-卷积神经网络(Pytorch)+聚类分析实现空气质量与天气预测

7.深度学习实战7-电商产品评论的情感分析

8.深度学习实战8-生活照片转化漫画照片应用

9.深度学习实战9-文本生成图像-本地电脑实现text2img

10.深度学习实战10-数学公式识别-将图片转换为Latex(img2Latex)

11.深度学习实战11(进阶版)-BERT模型的微调应用-文本分类案例

12.深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

13.深度学习实战13(进阶版)-文本纠错功能,经常写错别字的小伙伴的福星

14.深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了

15.深度学习实战15(进阶版)-让机器进行阅读理解+你可以变成出题者提问

16.深度学习实战16(进阶版)-虚拟截图识别文字-可以做纸质合同和表格识别

17.深度学习实战17(进阶版)-智能辅助编辑平台系统的搭建与开发案例

18.深度学习实战18(进阶版)-NLP的15项任务大融合系统,可实现市面上你能想到的NLP任务

19.深度学习实战19(进阶版)-SpeakGPT的本地实现部署测试,基于ChatGPT在自己的平台实现SpeakGPT功能

20.深度学习实战20(进阶版)-文件智能搜索系统,可以根据文件内容进行关键词搜索,快速找到文件

21.深度学习实战21(进阶版)-AI实体百科搜索,任何名词都可搜索到的百科全书

22.深度学习实战22(进阶版)-AI漫画视频生成模型,做自己的漫画视频

...(待更新)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28008.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CPU温度获取

CPU温度获取 总结 Windows和linux采用的函数不同; x86与Arm采用的函数不同; python3.7和python3.8不同,目前; 高温试验下CPU温度 CPU温度会高很多,高出环境温度20度左右,还得空气流通,不能…

NTC温度检测程序

NTC公式:RT RN *EXP(B*(1/T-1/TN)) 对上面的公式解释如下: 1. RT 是热敏电阻的当前阻值; 2. R是热敏电阻在TN常温下的标称阻值; 3. B值是热敏电阻的温度系数; 4. EXP是e的n次方&#xf…

TMP102温度传感器简介与使用

一、特性 1、SMBus, Two-Wire, and I2C Interface Register bytes are sent with the most significant byte first, followed by the least significant byte 2、Supply Range: 1.4 to 3.6 V 3、工作温度:-40~125 4、引脚说明 ALERT用于温度阈值时报警、ADD0…

windows获取CPU温度

CPU温度监测发展历程和硬件支持 早期的CPU(2000以前),都是采用主板CPU插槽下面的温度探头来测量温度,因此准确性欠佳到了2000以后,CPU开始逐步内置温度传感器。早期的CPU温度传感器的信息,是由CPU汇报给BI…

温度传感器调试(HDC1080,TMP275)

我们需要对100C高温的金属进行温度测量。选择的传感器芯片是 HDC1080 和 TMP275。 HDC1080可以同时采集温湿度信息,但他主要是湿度传感器,老板说不用这个。于是最后我选择了单独的温度传感器 TMP275。 整个调试过程太辛苦了,在网上没能找到驱…

chatglm常用参数 :Top-k, Top-p, Temperature

LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature: 总结: 1.Temperature 用于调整随机从生成模型中抽样的程度,因此每次点击“生成”时,相同的提示可能会产生不同的输出。温度为 0 将始终产生相同的输出。温…

Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)

文章目录 第一部分一、 Features:Textual Inversion(文本反转)1.1 Textual Inversion 简介1.1.1 摘要1.1.2 算法1.1.3 模型效果 1.2 Textual Inversion of webai1.2.1 预训练embedding用于图片生成1.2.2 训练embedding1.2.3 Finding embeddin…

Android开发的中年坎怎么跨?与其坐以待毙的焦虑,不如找准出路提高技能!

35岁程序员的中年危机是个魔咒 35岁,已经真的成了所有职场人都不容易迈过去的一道坎。找工作,大多数公司把年龄限制在35岁以下,35岁左右的人,连面试资格都没有。 各大公司一到大规模裁员,35岁以上的普通员工&#xf…

GPT- 4 标注能力直逼人类,成本大砍90%,数据众包危矣?

人类标注员很可能将面临来自大语言模型的残酷冲击。 人工智能本身并不是很智能,这是一个公开的“秘密”。机器学习系统通常依赖低薪众包工人进行标注和微调,很难脱离“有多少人工,就有多少智能”的魔咒。 即便强大如谷歌、微软这样的大公司…

Docker 更换镜像内部的软件源为国内源(apt-get源)

Docker 更换镜像内部的软件源为国内源(apt-get源) 1、查看镜像内部的软件源2、查看系统版本3、更换软件源3.1 在镜像内部更换3.2用Dockerfile构建时更换 1、查看镜像内部的软件源 rootb09e8f69dc59:/# cat /etc/apt/sources.list deb http://deb.debian…

国内镜像源详细使用教程!

WARNING: Retrying (Retry(total2, connectNone, readNone, 这些天一直肝金融学,脑子一直放空,看不太下去,于是乎就想股票的k线图,想着怎么下载k线图,然后从下载库开始就出现大问题了,就记录了一下自己这憨…

源、镜像、镜像源,更换镜像源apt-get、pip、conda 全部搞懂

源、镜像、镜像源,更换镜像源apt-get、pip、conda 全部搞懂 1. 源是什么?2. 镜像是什么?3. 镜像源是什么?4. 更换apt镜像源4.1 清华镜像源4.2 阿里镜像源 5. 更换pip源5.1 清华镜像源5.2 其他镜像源 6. 更换conda源6.1 清华镜像源…

【笔记】pip镜像源改为国内源(Windows、Linux、Mac)

pip镜像源修改 🏷简介🏷修改pip镜像源(Windows)🏷修改pip镜像源(Linux)🏷修改pip镜像源(Mac)🏷结语 🏷简介 当我们在使用Python的pip…

ubuntu更改镜像源(软件源)

更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手;iOS手机上可以下载软件的AppStore 2. 备份Ubuntu默认的源地址 sudo cp /etc/apt/sources.list /etc/apt/…

使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion 0. 前言1. Amazon SageMaker 与机器学习1.1 机器学习流程1.2 Amazon SageMaker 简介1.3 Amazon SageMaker 优势 2. AIGC 与 Stable Diffusion2.1 步入 AIGC 时代2.2 Stable Diffusion 介绍 3. 使用 Amazon SageMaker…

上海首个大模型产业发展研讨会圆满落幕,众顶尖专家共探大模型产业

4月21日,由上海市数据科学重点实验室携手达观数据、上海浦东软件园联合举办的“大模型产业发展研讨会”圆满落幕。本次研讨会是继达观数据在北京、成都顺利举办“ChatGPT及大模型专题研讨会”后的又一场科技盛会,当天大会汇聚了大模型产业国际和国内顶尖…

李永乐六套卷-2021

可以猜,应该是2-a,a-2和1比较 AB显然正确 看哪个可以对角化,且特征值为2,2,-1 注意乘2x,所以我们关注x^3 要加C

李永乐线性代数手写笔记-向量

李永乐线性代数基础知识,整理放在博客上面,方便自己复习查看。 概览请移步李永乐线性代数2020年基础课手写笔记汇总 文章目录 一 基本概念和运算二 线性表示三 相关和无关四 向量组和矩阵的秩 一 基本概念和运算 二 线性表示 三 相关和无关 四 向量组和…

B站李永乐讲解傅里叶变换--笔记

笔记目录 引言一、变换&#xff08;一&#xff09;举例&#xff08;图像<---->坐标&#xff09;&#xff08;二&#xff09;标准正交基 二、傅里叶变换&#xff08;一&#xff09;傅里叶级数&#xff08;二&#xff09;连续傅里叶变换&#xff08;三&#xff09;应用 三、…