PaddleSeg快速开始:

通过本实例可以学习使用预训练好的图像分割模型进行预测(以常见的人像分割任务为例)

人像分割:

人像分割任务旨在识别图像中的人体轮廓,与背景进行分离,返回分割后的二值图、灰度图、前景人像图,适应多个人体、复杂背景、各类人体姿态。可应用于人像扣图、人体特效和影视后期处理等场景。

下面是结果图,左边是输入图像,右边是使用训练模型进行测试得到的人体分割图

下面进行具体演示:

Step1:PaddleSeg安装

PaddleSeg是基于PaddlePaddle生态下的语义分割库,可结合丰富的预训练模型更便捷高效地进行语义分割。

本实例已经挂载了paddleseg的安装包,可以直接解压即可。

#解压从https://github.com/PaddlePaddle/PaddleSeg下载好的压缩包
!unzip PaddleSeg-release-v0.1.0.zip#将PaddleSeg代码上移至当前目录
!mv PaddleSeg-release-v0.1.0/* ~#安装所依赖项
!pip install -r requirements.txt

结果如图所示

Step2:模型简介(这里使用的是DeepLabv3+xception网络检测人像)

DeepLabv3+介绍:它是DeepLab语义分割系列网络的最新作,通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层,其骨干网络使用了Xception模型,提高了语义分割的健壮性和运行速率。

Xception介绍:是DeepLabv3+原始实现的backbone网络,兼顾精度和性能,适用于服务端部署。

Step3:预训练模型下载:

下载预训练好的DeepLabv3+xception65模型

#下载预训练模型并放入./pretrained_model目录下
%cd /home/aistudio/pretrained_model/
!wget https://paddleseg.bj.bcebos.com/models/deeplabv3p_xception65_humanseg.tgz
!tar -xvf deeplabv3p_xception65_humanseg.tgz

Step4:数据准备

这里用少量数据集做模型测试。

# 将测试数据集放入./dataset目录下,其中data/data10908/humanseg.zip是测试数据集的位置
%cd ~
!cp data/data10908/humanseg.zip dataset/
!unzip -o dataset/humanseg.zip -d dataset/

结果如下所示

其中test_list.txt是测试数据集的路径及文件名

Step5:模型预测和可视化

pdseg/vis.py 是模型预测和可视化的脚本

模型配置说明:PaddleSeg中关于模型的配置记录在yaml文件里。configs文件夹存放各个模型的yaml文件。

#!/bin/bash#将配置文件humanseg.yaml复制到configs目录下
!cp work/humanseg.yaml configs/
# 模型预测
#--cfg ./configs/humanseg.yaml\是指定yaml配置文件路径
#--vis_dir ./visual \是指定测试结果存放路径
#---use_gpu是指是否使用gpu
#DATASET.DATA_DIR是指测试数据集存放位置
#DATASET.TEST_FILE_LIST是指测试数据集的测试列表
#TEST.TEST_MODEL是指测试模型路径
!python ./pdseg/vis.py  --cfg ./configs/humanseg.yaml\--vis_dir ./visual \--use_gpu \DATASET.DATA_DIR "/home/aistudio/dataset/humanseg" \DATASET.TEST_FILE_LIST "/home/aistudio/dataset/humanseg/test_list.txt" \TEST.TEST_MODEL "/home/aistudio/pretrained_model/deeplabv3p_xception65_humanseg"

实验结果如下所示:

/home/aistudio/pdseg/utils/collect.py:138: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.dic = yaml.load(file)
{'AUG': {u'AUG_METHOD': u'unpadding',u'FIX_RESIZE_SIZE': (513, 513),u'FLIP': True,u'FLIP_RATIO': 0.2,u'INF_RESIZE_VALUE': 513,u'MAX_RESIZE_VALUE': 400,u'MAX_SCALE_FACTOR': 2.0,u'MIN_RESIZE_VALUE': 513,u'MIN_SCALE_FACTOR': 0.5,u'MIRROR': True,'RICH_CROP': {u'ASPECT_RATIO': 0,u'BLUR': True,u'BLUR_RATIO': 0.1,u'BRIGHTNESS_JITTER_RATIO': 0.5,u'CONTRAST_JITTER_RATIO': 0.5,u'ENABLE': True,u'MAX_ROTATION': 45,u'MIN_AREA_RATIO': 0,u'SATURATION_JITTER_RATIO': 0.5},u'SCALE_STEP_SIZE': 0.25},u'BATCH_SIZE': 24,'DATALOADER': {u'BUF_SIZE': 256, u'NUM_WORKERS': 8},'DATASET': {u'DATA_DIM': 3,u'DATA_DIR': '/home/aistudio/dataset/humanseg',u'IGNORE_INDEX': 255,u'IMAGE_TYPE': 'rgb',u'NUM_CLASSES': 2,u'PADDING_VALUE': [104.00799749999999,116.66899995,122.67499965],u'SEPARATOR': '|',u'TEST_FILE_LIST': '/home/aistudio/dataset/humanseg/test_list.txt',u'TEST_TOTAL_IMAGES': 15,u'TRAIN_FILE_LIST': u'dataset/humanseg/test_list.txt',u'TRAIN_TOTAL_IMAGES': 15,u'VAL_FILE_LIST': u'dataset/humanseg/test_list.txt',u'VAL_TOTAL_IMAGES': 15,u'VIS_FILE_LIST': None},u'EVAL_CROP_SIZE': (513, 513),'FREEZE': {u'MODEL_FILENAME': u'model',u'PARAMS_FILENAME': u'params',u'SAVE_DIR': u'human_freeze_model'},u'MEAN': [0.4078745, 0.45752549, 0.48107843],'MODEL': {u'BN_MOMENTUM': 0.99,'DEEPLAB': {u'ASPP_WITH_SEP_CONV': True,u'BACKBONE': 'xception_65',u'DECODER_USE_SEP_CONV': True,u'DEPTH_MULTIPLIER': 1.0,u'ENABLE_DECODER': True,u'ENCODER_WITH_ASPP': True,u'OUTPUT_STRIDE': 16},u'DEFAULT_EPSILON': 1e-05,u'DEFAULT_GROUP_NUMBER': 32,u'DEFAULT_NORM_TYPE': u'bn',u'FP16': False,'ICNET': {u'DEPTH_MULTIPLIER': 0.5, u'LAYERS': 50},u'MODEL_NAME': 'deeplabv3p',u'MULTI_LOSS_WEIGHT': [1.0],'PSPNET': {u'DEPTH_MULTIPLIER': 1, u'LAYERS': 50},u'SCALE_LOSS': 1.0,'UNET': {u'UPSAMPLE_MODE': u'bilinear'}},'SOLVER': {u'BEGIN_EPOCH': 1,u'DECAY_EPOCH': [10, 20],u'GAMMA': 0.1,u'LR': 0.1,u'LR_POLICY': 'poly',u'MOMENTUM': 0.9,u'MOMENTUM2': 0.999,u'NUM_EPOCHS': 40,u'OPTIMIZER': 'sgd',u'POWER': 0.9,u'WEIGHT_DECAY': 4e-05},u'STD': [0.00392156, 0.00392156, 0.00392156],'TEST': {u'TEST_MODEL': '/home/aistudio/pretrained_model/deeplabv3p_xception65_humanseg'},'TRAIN': {u'MODEL_SAVE_DIR': 'snapshots/humanseg/aic_v2/',u'PRETRAINED_MODEL_DIR': u'pretrain/xception65_pretrained/',u'RESUME_MODEL_DIR': '',u'SNAPSHOT_EPOCH': 5,u'SYNC_BATCH_NORM': False},u'TRAIN_CROP_SIZE': (513, 513)}
W0602 10:05:15.773231   260 device_context.cc:259] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 10.1, Runtime API Version: 9.0
W0602 10:05:15.776937   260 device_context.cc:267] device: 0, cuDNN Version: 7.3.
#1 visualize image path: ./visual/visual_results/56173ddd1ccb419e1efdeb5f5cb242ab160142cb.png
#2 visualize image path: ./visual/visual_results/aa611a0cf92ace38bd2d3b0fe0bc50b5235eea7e.png
#3 visualize image path: ./visual/visual_results/aa6300f76981dcf8701534dd1d3b2ec19b3dee02.png
#4 visualize image path: ./visual/visual_results/aa63d7e6db0d03137883772c246c6761fc201059.png
#5 visualize image path: ./visual/visual_results/aa645bc9cf23db7912a69309072cd9ab325f02cd.png
#6 visualize image path: ./visual/visual_results/aa65c231dbce73de1527101bf35b975b2c2e9d5a.png
#7 visualize image path: ./visual/visual_results/aa65dc40ae9713e4fe3e63b55a8fd10bd1320822.png
#8 visualize image path: ./visual/visual_results/aa65f5b4f85c37ce44dc48473150a16e652b6bc5.png
#9 visualize image path: ./visual/visual_results/aa662fb7540312c51f6e6870c0542c8035495b14.png
#10 visualize image path: ./visual/visual_results/aa67b2d074e00942191c4bd2472e7f77538ec113.png
#11 visualize image path: ./visual/visual_results/aa6b34b24414bafa7fab8393239c793587513ce6.png
#12 visualize image path: ./visual/visual_results/aa6bd3eaf471bea1cca7467a95fe93e69b006797.png
#13 visualize image path: ./visual/visual_results/aa6f23e6ac596962ee773e4eea0560fb0e4522ac.png
#14 visualize image path: ./visual/visual_results/aa6ff076c7360b8dabc30edd05ebafb65bba9343.png
#15 visualize image path: ./visual/visual_results/20200602093501.png

结果进行显示

import matplotlib.pyplot as plt# 定义显示函数
def display(img_dir):plt.figure(figsize=(15, 15))title = ['Input Image', 'Predicted Mask']for i in range(len(title)):plt.subplot(1, len(img_dir), i+1)plt.title(title[i])img = plt.imread(img_dir[i])plt.imshow(img)plt.axis('off')plt.show()# 显示分割效果
# 注:仅显示其中一张图片的效果。
image_dir = "dataset/humanseg/20200602093501.jpg"
mask_dir = "visual/visual_results/20200602093501.png"
imgs = [image_dir, mask_dir]
display(imgs)

PaddleSeg快速开始之 人像分割相关推荐

  1. 荟聚NeurIPS顶会模型、智能标注10倍速神器、人像分割SOTA方案、3D医疗影像分割利器,PaddleSeg重磅升级!

    导读 图像分割是计算机视觉三大任务之一,基于深度学习的图像分割技术也发挥日益重要的作用,广泛应用于智慧医疗.工业质检.自动驾驶.遥感.智能办公等行业. 然而在实际业务中,图像分割依旧面临诸多挑战,比如 ...

  2. 基于图像分割网络HRNet实现人像分割

    基于图像分割网络HRNet实现人像分割 人像分割是图像分割领域非常常见的应用,PaddleSeg推出了在大规模人像数据上训练的人像分割PPSeg模型,满足在服务端.移动端.Web端多种使用场景的需求. ...

  3. 视频编辑SDK,AE模版SDK,绿幕抠图SDK,AI人像分割SDK,VLOG模版SDK

    蓝松短视频SDK(视频编辑.AE模版.绿幕抠图.人像分割.人体抠图.VLOG模版): 高集成度:SDK中的大部分功能,都是一行代码设置 高完整度:提供常见视频编辑UI界面,可直接使用 高独立性:蓝松S ...

  4. 人像分割技术解析与应用

    一.抠图简介 抠图主要解决的是图像中前景和背景区域的准确预测问题,对于图像编辑和影视制作有着及其重要的实际意义.所以准确有效的抠图算法可以极大的改善内容生产的工作流程,从而节省大量的人力物力来提高工作 ...

  5. 优酷端侧弹幕穿人技术实战之:PixelAI移动端实时人像分割

    一. 业务背景 随着各大视频平台相继推出弹幕穿人功能,广受好评.在大众消费视频的同时,大大增加了观看的娱乐互动性.接着,其他视频.动漫.阅读等内容平台也都增加了弹幕功能.弹幕已经成为一种重要的内容互动 ...

  6. php人像分割 人像抠图 证件照换底色 在线制作证件照API

    证件照在我们生活中也是随时都需要的 例如去办证.体检.或者是参加考试等,但不是每个人都会P图 有些时候并不需要问了一个电子版证件照去照相馆拍照,所以可以利用技术 开发一个在线工具,即拍即出图. 本文使 ...

  7. PaddleSeg快速标注图像

    PaddleSeg快速标注图像 一.介绍 1.paddleseg是百度开发的交互式图像分割软件,可以通过点击target,自动生成建议区域,然后可以人工微调分割区域,提高标注效率.图像分割工具Padd ...

  8. 利用Java实现人像分割(去除背景,保留人像 )

    1.首先,使用JavaSDK,快速实现人像的分割. 我用的是使用maven依赖,(前提是项目中有用的maven): <dependency><groupId>com.baidu ...

  9. 人像分割PP-HumanSeg模型onnx C++ windows部署

    目录 一.下载PaddleSeg 二.下载模型 三.模型导出 1.动态图模型转静态图 2.静态图转onnx 四.C++部署 1.环境 2.onnx模型查看 3.C++代码 参考: 本文将PaddleS ...

最新文章

  1. 第十六届智能车竞赛竞速组别网络报名说明
  2. parasoft Jtest 使用教程:创建并使用参数化测试用例(上)
  3. quad8是matlab中调用那个,Matlab 数值积分
  4. 机器学习资料整理,收藏了不后悔!
  5. 深度学习领域有哪些瓶颈
  6. microsoft query sql引用单元格_Microsoft.Office.Interop.Excel操作Excel拾遗
  7. 一文学会JVM常见参数设置+调优经验(JDK1.8)
  8. 信号与线性系统分析_线性系统与采样定理
  9. Android官方api的下载
  10. Active Diretory 全攻略(六)--文件夹权限与共享(2)
  11. addcslashes与stripcslashes
  12. Java服务器多站点,java客户端web服务器连接到多个web服务器
  13. 【python】Tkinter窗口可视化二
  14. 传输层协议(13):拥塞控制(2)
  15. python中win32api模块_解决在Python中使用Win32api报错的问题,No module named win32api
  16. 安装SQL server需要重启计算机,解决安装sql server 需要重启问题
  17. 推荐两个高仿抖音 App 项目
  18. yapi在centos下的部署安装 后台启动(亲自动手实践)
  19. 互联网基石:TCP/IP 四层模型,由浅入深直击原理!
  20. nn.Linear()函数详解

热门文章

  1. 苹果邮箱怎么登录qq邮箱_qq邮箱app下载安装-手机QQ邮箱2020下载v6.1.0 官方安卓版...
  2. 1259_STM32CubeProgrammer的简单使用
  3. 移动端meta设置大全(持续收集中。。。。)
  4. 控制台、操作台、调度台如何区分?
  5. 【补充习题三】待定常数法之微分中值定理
  6. 嵌入式开发--智能机械臂
  7. 装系统时遇到的一些坑
  8. 扦插技术图解_扦插葡萄生根最快方法(图解)
  9. 类脑计算芯片作为基础前沿技术重大突破成果,荣登CCTV《新闻联播》
  10. 解决svg格式的图片移入PPT中,图片出现viewer does not support svg 1.1问题