4 Star 43 Fork 16

PaddlePaddle / Paddle.js

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README_cn.md 3.67 KB
一键复制 编辑 原始数据 按行查看 历史

English

人像分割

实时的人像分割模型。使用者可以用于背景替换。需要使用接口 getGrayValue 获取灰度值。 然后使用接口 drawHumanSeg 绘制分割出来的人像,实现背景替换;使用接口 blurBackground 实现背景虚化;也可以使用 drawMask 接口绘制背景,可以配置参数来获取全黑背景或者原图背景。

version size downloads downloads

运行 Demo

  1. 在当前目录下执行
npm install
npm run dev
  1. 访问 http://0.0.0.0:8866
  2. 访问 gpu 全流程处理效果 http://0.0.0.0:8866/gpu.html

使用


// 引入 humanseg sdk
import * as humanseg from '@paddlejs-models/humanseg';

// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();

// 指定下载更轻量模型, 该模型 shape 288x160,预测过程会更快,但会有少许精度损失
// await humanseg.load(true, true);


// 获取分割后的像素 alpha 值,大小为 [2, 398, 224] 或者 [2, 288, 160]
const { data } = await humanseg.getGrayValue(img);

// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;

// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas1, back_canvas) ;

// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
humanseg.drawHumanSeg(data, canvas2) ;

// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
humanseg.drawMask(data, canvas3, back_canvas);

gpu pipeline


// 引入 humanseg sdk
import * as humanseg from '@paddlejs-models/humanseg/lib/index_gpu';

// 默认下载 398x224 shape 的模型,默认执行预热
await humanseg.load();

// 指定下载更轻量模型, 该模型 shape 288x160,预测过程会更快,但会有少许精度损失
// await humanseg.load(true, true);


// 获取 background canvas
const back_canvas = document.getElementById('background') as HTMLCanvasElement;

// 背景替换, 使用 back_canvas 作为新背景实现背景替换
const canvas1 = document.getElementById('back') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas1, back_canvas) ;

// 背景虚化
const canvas2 = document.getElementById('blur') as HTMLCanvasElement;
await humanseg.drawHumanSeg(input, canvas2) ;

// 绘制人型遮罩,在新背景上隐藏人像
const canvas3 = document.getElementById('mask') as HTMLCanvasElement;
await humanseg.drawMask(input, canvas3, back_canvas);

在线体验

图片人像分割:https://paddlejs.baidu.com/humanseg

基于视频流人像分割:https://paddlejs.baidu.com/humanStream

效果

从左到右:原图、背景虚化、背景替换、人型遮罩

视频会议

TypeScript
1
https://gitee.com/paddlepaddle/Paddle.js.git
git@gitee.com:paddlepaddle/Paddle.js.git
paddlepaddle
Paddle.js
Paddle.js
release/v2.2.5

搜索帮助