• 人像抠图


    https://blog.csdn.net/XiaoFengsen/article/details/105841598来源

    PaddleHub体验与应用
    目录
    PaddleHub体验与应用
    PaddleHub简介
    PaddleHub安装
    PaddleHub体验
    1.PaddleHub的安装
    2.情感分析
    3.口罩检测
    4.人像抠图
    5.风格迁移
    PaddleHub简介
    PaddleHub是为了解决对深度学习模型的需求而开发的工具。基于飞桨领先的核心框架,精选
    效果优秀的算法,提供了百亿级大数据训练的预训练模型,方便用户不用花费大量精力从头开始训练
    一个模型。
    PaddleHub有很多方便实用的模型,如基于PaddleHub的人像抠图、口罩检测、视觉应用、图片风格迁移、NLP应用、超快完成图像分类的Finetune API等。
    关于这个开源框架的各类网址推荐如下:
    PaddleHub的官网:https://www.paddlepaddle.org.cn/hub

    PaddleHub的github地址:https://github.com/PaddlePaddle/PaddleHub

    PaddleHub的课程地址:https://aistudio.baidu.com/aistudio/course/introduce/1070

    PaddleHub的教程地址:https://aistudio.baidu.com/aistudio/personalcenter/thirdview/79927

    PaddleHub的模型地址:https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.6/demo

    PaddleHub安装

    PaddleHub体验
    1.PaddleHub的安装
    首先要安装PaddleHub,此模块的安装是下面所有体验能正常运行的前提:

    #安装paddlehub
    !pip install paddlehub==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
    1
    安装的部分过程如下:

    Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    Collecting paddlehub==1.6.0
    Downloading https://pypi.tuna.tsinghua.edu.cn/packages/7f/9f/6617c2b8e9c5d847803ae89924b58bccd1b8fb2c98aa00e16531540591f2/paddlehub-1.6.0-py3-none-any.whl (206kB)
    |████████████████████████████████| 215kB 10.4MB/s eta 0:00:01
    Requirement already satisfied: six>=1.10.0 in /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages (from paddlehub==1.6.0) (1.12.0)
    1
    2
    3
    4
    2.情感分析
    情感倾向分析(Sentiment Classification,简称Senta)针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度,能够帮助企业理解用户消费习惯、分析热点话题和危机舆情监控,为企业提供有利的决策支持。

    #安装情感分析模型
    !hub install senta_lstm==1.1.0
    1
    运行过程:

    /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp
    2020-04-29 15:19:52,131-INFO: font search path ['/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/afm', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts']
    2020-04-29 15:19:52,549-INFO: generated new fontManager
    Downloading senta_lstm
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmp10orpzhd/senta_lstm
    [==================================================] 100.00%
    Successfully installed senta_lstm-1.1.0
    1
    2
    3
    4
    5
    6
    7
    8
    然后开始情感分析:

    #!hub run senta_lstm --input_text "这家餐厅很难吃"

    !hub run senta_lstm --input_text "人工智能课程很有趣"
    1
    2
    可以看到分析结果如下:

    /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp
    Downloading lac
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmpvysxd7sb/lac
    [==================================================] 100.00%
    [{'text': '人工智能课程很有趣', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9572, 'negative_probs': 0.0428}]
    1
    2
    3
    4
    5
    6
    结果显示这句话为positive积极的概率为0.9572

    3.口罩检测
    PyramidBox-Lite是基于2018年百度发表于计算机视觉顶级会议ECCV 2018的论文PyramidBox而研发的轻量级模型,模型基于主干网络FaceBoxes,对于光照、口罩遮挡、表情变化、尺度变化等常见问题具有很强的鲁棒性。该PaddleHub Module基于WIDER FACE数据集和百度自采人脸数据集进行训练,支持预测,可用于检测人脸是否佩戴口罩。口罩检测对于疫情期间的公共场所防控具有重要意义。

    下面便分别开始在Linux和Python下的口罩预测的体验之旅。
    【Linux下使用:】
    首先安装口罩检测模型:

    #安装口罩检测模型
    !hub install pyramidbox_lite_mobile_mask==1.1.0
    1
    安装过程如下:

    /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp
    Downloading pyramidbox_lite_mobile_mask
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmpib4bh5t1/pyramidbox_lite_mobile_mask
    [==================================================] 100.00%
    Successfully installed pyramidbox_lite_mobile_mask-1.1.0
    1
    2
    3
    4
    5
    6
    然后一键执行模型,并将要检测的图片路径输入进来,一键执行之后便已经生成了预测之后的图片,保存在了"./detection_result/test.jpeg"路径

    !hub run pyramidbox_lite_mobile_mask --input_path "data/data31681/test.jpeg"
    运行过程如下:

    /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/sklearn/externals/joblib/externals/cloudpickle/cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
    import imp
    Downloading pyramidbox_lite_mobile
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmphq433pbl/pyramidbox_lite_mobile
    [==================================================] 100.00%
    image with bbox drawed saved as /home/aistudio/detection_result/test.jpeg
    [{'data': {'label': 'MASK', 'left': 678.9846324920654, 'right': 893.2966804504395, 'top': 241.9092297554016, 'bottom': 487.231333732605, 'confidence': 0.9711812}, 'id': 1, 'path': 'data/data31681/test.jpeg'}]
    1
    2
    3
    4
    5
    6
    7
    在开始预测之前可以先展示一下我们待预测的原始图片(data/data31681路径下的test.jpeg):

    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    test_img_path = "data/data31681/test.jpeg"
    img = mpimg.imread(test_img_path)

    # 展示待预测图片
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    1
    2
    3
    4
    5
    6
    7
    8
    9

    然后进行预测,并展示预测结果图("./detection_result/test.jpeg"):

    # 预测结果展示
    test_img_path = "./detection_result/test.jpeg"
    img = mpimg.imread(test_img_path)

    # 展示预测结果图片
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    1
    2
    3
    4
    5
    6
    7
    8

    【在Python下使用:】用Python预测图片中的人物是否使用了口罩(上面Linux的第二步也预测了):

    #首先导入hub工具包和处理图片的工具cv2
    import paddlehub as hub
    import cv2

    module = hub.Module(name="pyramidbox_lite_mobile_mask")#调用口罩检测模型
    #若将test_img_path变为数组,则可以检测多张图片
    test_img_path = "data/data31681/test.jpeg"#要检测的图片路径

    # set input dict
    input_dict = {"data": [cv2.imread(test_img_path)]}#用cv2读取待检测图片,得到json形式的输入数据
    results = module.face_detection(data=input_dict)#用检测模型调用输入数据
    print(results)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    效果如下:

    [2020-04-29 16:53:56,282] [ INFO] - Installing pyramidbox_lite_mobile_mask module
    [2020-04-29 16:53:56,417] [ INFO] - Module pyramidbox_lite_mobile_mask already installed in /home/aistudio/.paddlehub/modules/pyramidbox_lite_mobile_mask
    [2020-04-29 16:53:56,498] [ INFO] - Installing pyramidbox_lite_mobile module-1.1.0
    [2020-04-29 16:53:56,510] [ INFO] - Module pyramidbox_lite_mobile-1.1.0 already installed in /home/aistudio/.paddlehub/modules/pyramidbox_lite_mobile
    [2020-04-29 16:53:56,681] [ INFO] - 133 pretrained paramaters loaded by PaddleHub
    [2020-04-29 16:53:56,719] [ INFO] - 0 pretrained paramaters loaded by PaddleHub
    [{'data': {'label': 'MASK', 'left': 678.9846324920654, 'right': 893.2966804504395, 'top': 241.9092297554016, 'bottom': 487.231333732605, 'confidence': 0.9711812}, 'id': 1}]
    1
    2
    3
    4
    5
    6
    ‘label’:为’MASK’,表明此人戴了口罩,为’NO MASK’,表示没戴口罩。预测结果表明,此人戴了口罩的可能性为0.97。

    4.人像抠图
    目前亲测png、jpg、jpeg的图片格式都可以成功运行。

    首先加载人像抠图模型:

    import paddlehub as hub
    humanseg = hub.Module(name="deeplabv3p_xception65_humanseg")#读取模型,赋给humanseg
    1
    运行过程如下:

    [2020-04-29 15:20:56,526] [ INFO] - Installing deeplabv3p_xception65_humanseg module
    Downloading deeplabv3p_xception65_humanseg
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmp3nsjdpj5/deeplabv3p_xception65_humanseg
    [==================================================] 100.00%
    [2020-04-29 15:21:11,602] [ INFO] - Successfully installed deeplabv3p_xception65_humanseg-1.0.0
    1
    2
    3
    4
    5
    然后开始人像抠图:

    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    path = ["data/data31681/test.jpeg"]#要处理的图片路径
    results = humanseg.segmentation(data={"image":path})#将图片喂给模型


    # 预测结果展示
    test_img_path = results[0]["processed"]
    img = mpimg.imread(test_img_path)

    # 展示预测结果图片
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    效果如下:


    上面那段代码中,processed就是生成的图片的路径的键,如果将results输出可以看到它的形式为:

    将print(results[0]["processed"])输出,可以看到结果为:


    人像抠图简直为不会PS的小伙伴们节约了一笔巨资,另附其他一名学员的资料链接:https://aistudio.baidu.com/aistudio/projectdetail/433260
    强力推荐这位大佬设计的抠图服务、证件照服务与美颜服务,手机即可操作,链接如下:http://182.92.120.215/upload

    玩起来简直很上瘾有没有。


    5.风格迁移
    先展示一下文件路径:


    首先需要加载一下相关模块

    import paddlehub as hub
    import cv2
    stylepro_artistic = hub.Module(name="stylepro_artistic")
    1
    2
    加载成功显示如下:

    [2020-04-29 17:02:10,095] [ INFO] - Installing stylepro_artistic module
    Downloading stylepro_artistic
    [==================================================] 100.00%
    Uncompress /home/aistudio/.paddlehub/tmp/tmpgqxtm24o/stylepro_artistic
    [==================================================] 100.00%
    [2020-04-29 17:02:12,553] [ INFO] - Successfully installed stylepro_artistic-1.0.0
    1
    2
    3
    4
    5
    因为风格迁移需要原始图片和风格图片,所以需要输入两张图片,如下:

    results = stylepro_artistic.style_transfer(images=[{
    'content': cv2.imread("data/data31681/main.png"),#原始图片
    'styles': [cv2.imread("data/data31681/style1.png")]}],#风格图片
    alpha = 1.0,#风格比重,可调整为任意数,效果各不相同
    visualization = True)#要保存迁移后的结果照片就设置为true
    1
    2
    3
    4
    下面展示一下原图和风格图:

    # 原图展示
    test_img_path = "data/data31681/main.png"
    img = mpimg.imread(test_img_path)

    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()

    # 风格图展示
    test_img_path = "data/data31681/style1.png"
    img = mpimg.imread(test_img_path)

    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

    最后是显示风格迁移之后的图片:

    # 预测结果展示
    test_img_path = "transfer_result/ndarray_1587809892.1425676.jpg"
    img = mpimg.imread(test_img_path)

    # 展示预测结果图片
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis('off')
    plt.show()
    1
    2
    3
    4
    5
    6
    7
    8
    最终效果如下:


    如果换成风格图style2.png:


    可以看到运行之后的结果如下:


    当将Alpha调整为不同参数时,风格图也会发生相应的变化,如下所示:


    怎么样?有没有很神奇,人人好像都能变成文森特·梵高或者毕加索了,赶紧来试一试你自己的风格图吧。
    ————————————————
    版权声明:本文为CSDN博主「何处微尘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/XiaoFengsen/article/details/105841598

  • 相关阅读:
    输出python的help结果到文件中
    webdriver 的三种等待方式
    Loadrunner 怎么将response的数据下载下来
    Loadrunner web_reg_find 和web_reg_save_param 比较
    LR的响应时间与使用IE所感受时间不一致的讨论
    Loadrunner错误-26601、-27492、-27727处理方法
    loadrunner运行乱码解决方法
    OpenGL ES: (1) OpenGL ES的由来 (转)
    JPG:文件格式系列科普之.JPEG/.JPG(转)
    单色位图、16色位图、256色位图的含义
  • 原文地址:https://www.cnblogs.com/vip136510786/p/14595889.html
Copyright © 2020-2023  润新知