PaddleHub
PaddleHub

快速体验

在PaddleHub中,Module代表一个可执行模块,一般来讲就是一个可以端到端预测的预训练模型(例如目标检测模型、中文词法分析模型),又或者是一个需要根据下游任务进一步微调(迁移学习)的模型,例如BERT/ERNIE。

PaddleHub采用模型即软件的设计理念,所有的预训练模型与Python软件包类似,具备版本的概念。

本教程会带您快速体验如何使用PaddleHub提供的预训练模型来完成一些常见的AI任务。

下载测试图片

首先,使用`wget`下载一张测试图片

# 下载图片
wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
../_images/humanseg_test.png

人像分割

人像分割任务旨在将输入图片中的人像和背景区分开来。该任务有很多的应用场景,例如背景虚化、背景替换、影视后期处理等等。我们使用 humanseg_lite 来展示这个功能。

import paddlehub as hub
# module = hub.Module(name="humanseg_lite", version="1.1.1")
module = hub.Module(name="humanseg_lite")

res = module.segment(
    paths = ["./test_image.jpg"],
    visualization=True,
    output_dir='humanseg_output')
../_images/output_8_3.png

人体解析

人体解析是人像分割的细粒度任务。该任务旨在提取输入图片中人体的不同部件。相关模型经常和新兴的GAN模型一起使用,应用场景包括美颜、换衣服等等。我们使用 ace2p 来展示这个功能。

import paddlehub as hub
# module = hub.Module(name="ace2p", version="1.1.0")
module = hub.Module(name="ace2p")

res = module.segment(
    paths = ["./test_image.jpg"],
    visualization=True,
    output_dir='ace2p_output')
../_images/output_12_3.png

人脸检测

人脸检测任务旨在检测出输入图片中的每一张人脸的位置。应用的场景包括视频监控、人流量估计等等场景。我们使用 ultra_light_fast_generic_face_detector_1mb_640 来展示这个功能。

import paddlehub as hub
# module = hub.Module(name="ultra_light_fast_generic_face_detector_1mb_640", version="1.1.2")
module = hub.Module(name="ultra_light_fast_generic_face_detector_1mb_640")

res = module.face_detection(
    paths = ["./test_image.jpg"],
    visualization=True,
    output_dir='face_detection_output')
../_images/output_15_3.png

关键点检测

关键点检测任务旨在识别输入图片中每一个人体的不同关键点信息,例如头部、肩膀、关节等等。依赖于模型能力的不同,能够检测到的关键点数量也不同。该任务一般用于人体美型、人体姿态估计等等,我们使用 openpose_body_estimation 来展示这个功能。

import paddlehub as hub
# module = hub.Module(name="openpose_body_estimation", version="1.0.0")
module = hub.Module(name="openpose_body_estimation")

res = module.predict(
    img="./test_image.jpg",
    visualization=True,
    save_path='keypoint_output')
../_images/output_18_2.png

中文词法分析

中文词法分析旨在对输入的语句进行分词、词性分析、命名实体识别,我们使用 lac 来展示这个功能。

import paddlehub as hub
# lac = hub.Module(name="lac", version="2.2.0")
lac = hub.Module(name="lac")

test_text = ["1996年,曾经是微软员工的加布·纽维尔和麦克·哈灵顿一同创建了Valve软件公司。他们在1996年下半年从id software取得了雷神之锤引擎的使用许可,用来开发半条命系列。"]
print(lac.lexical_analysis(texts = test_text))

[{‘word’: [‘1996年’, ‘,’, ‘曾经’, ‘是’, ‘微软’, ‘员工’, ‘的’, ‘加布·纽维尔’, ‘和’, ‘麦克·哈灵顿’, ‘一同’, ‘创建’, ‘了’, ‘Valve软件公司’, ‘。’, ‘他们’, ‘在’, ‘1996年下半年’, ‘从’, ‘id’, ‘ ‘, ‘software’, ‘取得’, ‘了’, ‘雷神之锤’, ‘引擎’, ‘的’, ‘使用’, ‘许可’, ‘,’, ‘用来’, ‘开发’, ‘半条命’, ‘系列’, ‘。’], ‘tag’: [‘TIME’, ‘w’, ‘d’, ‘v’, ‘ORG’, ‘n’, ‘u’, ‘PER’, ‘c’, ‘PER’, ‘d’, ‘v’, ‘u’, ‘ORG’, ‘w’, ‘r’, ‘p’, ‘TIME’, ‘p’, ‘nz’, ‘w’, ‘n’, ‘v’, ‘u’, ‘n’, ‘n’, ‘u’, ‘vn’, ‘vn’, ‘w’, ‘v’, ‘v’, ‘n’, ‘n’, ‘w’]}]

中文情感分析

中文情感分析旨在分析输入语句的情感倾向,我们使用 senta_bilstm 来展示这个功能。

import paddlehub as hub
# senta = hub.Module(name="senta_bilstm", version="1.2.0")
senta = hub.Module(name="senta_bilstm")

test_text = ["味道不错,确实不算太辣,适合不能吃辣的人。就在长江边上,抬头就能看到长江的风景。鸭肠、黄鳝都比较新鲜。"]
print(senta.sentiment_classify(texts = test_text))

[{‘text’: ‘味道不错,确实不算太辣,适合不能吃辣的人。就在长江边上,抬头就能看到长江的风景。鸭肠、黄鳝都比较新鲜。’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.9771, ‘negative_probs’: 0.0229}]