精华内容
下载资源
问答
  • PaddleHub是飞桨生态的预训练模型应用工具,开发者可以便捷地使用高质量的预训练模型结合Fine-tune API快速完成模型迁移到部署的全流程工作。PaddleHub提供的预训练模型涵盖了图像分类、目标检测、词法分析、语义...
  • PaddleHub是飞桨生态的预训练模型应用工具,开发者可以便捷地使用高质量的预训练模型结合Fine-tune API快速完成模型迁移到部署的全流程工作。PaddleHub提供的预训练模型涵盖了图像分类、目标检测、词法分析、语义...
  • PaddleHub抠图及图片合成 2.0环境,新版本模型PaddleHub抠图及图片合成deeplabv3p_xception65_humanseg一、安装新版Hub二、定义数据集三、API预测四、代码示例五、命令行预测六、效果展示七、图像合成 PaddleHub抠图...

    PaddleHub抠图及图片合成

    deeplabv3p_xception65_humanseg

    本示例用DeepLabv3+模型完成一键抠图。DeepLabv3+ 是Google DeepLab语义分割系列网络的最新作,其前作有 DeepLabv1,DeepLabv2, DeepLabv3。在最新作中,作者通过encoder-decoder进行多尺度信息的融合,同时保留了原来的空洞卷积和ASSP层, 其骨干网络使用了Xception模型,提高了语义分割的健壮性和运行速率,在 PASCAL VOC 2012 dataset取得新的state-of-art performance。在完成一键抠图之后,通过图像合成,实现扣图比赛任务

    NOTE: 如果您在本地运行该项目示例,需要首先安装PaddleHub。如果您在线运行,需要首先fork该项目示例。之后按照该示例操作即可。

    deeplabv3p_xception65_humanseg模型链接:https://www.paddlepaddle.org.cn/hubdetail?name=deeplabv3p_xception65_humanseg&en_category=ImageSegmentation

    环境:PaddlePaddle2.0.0rc PaddleHub2.0.0b1 deeplabv3p_xception65_humanseg1.1.1(最新版)

    一、安装新版Hub

    !pip install paddlehub==2.0.0b1 -i https://pypi.tuna.tsinghua.edu.cn/simple

    二、定义数据集

    以本示例中文件夹下meditation.jpg为待预测图片,background.jpg为背景图片

    实现效果

    # 待抠图照片
    image = 'meditation.jpg'
    # 背景
    background = 'background.jpg'
    # 合成照片名称
    save_image = 'save_image.jpg'
    

    三、API预测

    def segmentation(images=None,
                     paths=None,
                     batch_size=1,
                     use_gpu=False,
                     visualization=False,
                     output_dir='humanseg_output').
    

    预测API,用于人像分割。

    参数

    • images (list[numpy.ndarray]): 图片数据,ndarray.shape 为 [H, W, C],BGR格式;
    • paths (list[str]): 图片的路径;
    • batch_size (int): batch 的大小;
    • use_gpu (bool): 是否使用 GPU;
    • visualization (bool): 是否将识别结果保存为图片文件;
    • output_dir (str): 图片的保存路径。

    返回

    • res (list[dict]): 识别结果的列表,列表中每一个元素为 dict,关键字有 ‘save_path’, ‘data’,对应的取值为:
      • save_path (str, optional): 可视化图片的保存路径(仅当visualization=True时存在);
      • data (numpy.ndarray): 人像分割结果,仅包含Alpha通道,取值为0-255 (0为全透明,255为不透明),也即取值越大的像素点越可能为人体,取值越小的像素点越可能为背景。

    四、代码示例

    import paddlehub as hub
    import cv2
    
    human_seg = hub.Module(name="deeplabv3p_xception65_humanseg")
    result = human_seg.segmentation(images=[cv2.imread(image)],visualization=True)
    print(result[0]['save_path'])
    # or
    # result = human_seg.segmentation(paths=['/PATH/TO/IMAGE'])
    

    五、命令行预测

    !hub run deeplabv3p_xception65_humanseg --input_path 'meditation.jpg' --visualization True
    

    六、效果展示

    # 预测结果展示
    import matplotlib.pyplot as plt 
    import matplotlib.image as mpimg 
    
    test_img_path = result[0]['save_path']
    img = mpimg.imread(test_img_path)
    plt.figure(figsize=(10,10))
    plt.imshow(img) 
    plt.axis('off') 
    plt.show()
    

    七、图像合成

    将抠出的人物图片合成在想要的背景图片当中。

    from PIL import Image
    import numpy as np
    
    def blend_images(fore_image, base_image):
        """
        将抠出的人物图像换背景
        fore_image: 前景图片,抠出的人物图片
        base_image: 背景图片
        """
        # 读入图片
        base_image = Image.open(base_image).convert('RGB')
        fore_image = Image.open(fore_image).resize(base_image.size)
    
        # 图片加权合成
        scope_map = np.array(fore_image)[:,:,-1] / 255
        scope_map = scope_map[:,:,np.newaxis]
        scope_map = np.repeat(scope_map, repeats=3, axis=2)
        res_image = np.multiply(scope_map, np.array(fore_image)[:,:,:3]) + np.multiply((1-scope_map), np.array(base_image))
        
        #保存图片
        res_image = Image.fromarray(np.uint8(res_image))
        res_image.save(save_image)
    
    blend_images(test_img_path, background)
    
    # 展示合成图片
    plt.figure(figsize=(10,10))
    img = mpimg.imread(save_image)
    plt.imshow(img) 
    plt.axis('off') 
    plt.show()
    

    点我进入项目

    展开全文
  • 创意项目_用PaddleHub抠图后再分类 最近参加百度PaddlePaddle(https://paddlepaddle.org.cn/)的线上师资培训,学习好了很多好东西,和我之前所用的pytorch,tensorflow相比,模型框架类似,关键在于PaddlePaddle...

    创意项目_用PaddleHub抠图后再分类

    最近参加百度PaddlePaddle(https://paddlepaddle.org.cn/)的线上师资培训,学习好了很多好东西,和我之前所用的pytorch,tensorflow相比,模型框架类似,关键在于PaddlePaddle基本国内的用户出发,提供了非常容易理解的文档和案例模型,对初习者来说,利用PaddlePaddle进行尝试学习是能够坚持和实现自己想法的是好场所。详情请参见 https://paddlepaddle.org.cn/

    一、想法:利用paddlehub进行图像分类时,有时准确率不是很理想,会不会是图像中的干扰比较多,所以就想到了一个方法:先抠图,再分类。

    本项目采用的数据集是之前的“PaddleHub图像分类作业”中的乘风破浪的姐姐的数据集。

    二、实施步骤:

    1、上传sisters.zip 解压,可以利用PaddleHub先进行分类,并保存分类的结果。具体过程见代码。

    2、对sisters数据集进行抠图,并形成PaddleHub要求的格式规范。具体过程见代码。

    3、对抠图后的数据进行相同模型的PaddleHub分类,保存分类的结果。具体过程见代码。

    4、对两种数据集的分类结果进行比较分析。

    三、实验结果(结果分析):

    #抠图前的finetune情况的结果(15轮):EVAL] - [test dataset evaluation result] loss=0.81379 acc=0.87500 [step/sec: 66.09]

    #抠图前图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 万茜

    #抠图后的finetune情况的结果(15轮):EVAL] - [test dataset evaluation result] loss=0.57906 acc=1.00000 [step/sec: 28.38]

    #抠图后图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 宁静

    #抠图前的finetune情况的结果(30轮):EVAL] - [test dataset evaluation result] loss=0.94754 acc=0.75000 [step/sec: 69.18]

    #抠图前图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 万茜

    #抠图后的finetune情况的结果(30轮):EVAL] - [test dataset evaluation result] loss=0.57906 acc=1.00000 [step/sec: 28.55]

    #抠图后图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 宁静

    从目前的实验结果来看,效果比较反复,有时比较理想的,准确率也有比较大的提升,预测结果也比较准确,有时结果和没有抠图前一样,没有太大变化。会不会是数据集太小超成的呢?由于目前只在一个数据集上实验,所以接下来想拿更多的数据集来验证,看看“先抠图再分类”在其他数据集上的表现,很是期待呀。

    请点击此处查看本环境基本用法.

    Please click here for more detailed instructions.

    In[1]:

    import matplotlib.pyplot as plt
    import matplotlib.image as mpimg
    import matplotlib.image as image
    from matplotlib import animation
    import cv2
    import paddlehub as hub
    from PIL import Image, ImageSequence, ImageDraw,ImageFont
    from IPython.display import display, HTML
    import numpy as np
    import imageio
    import os

    In[2]:

    import zipfile
    train_parameters = {
    “src_path”:"/home/aistudio/data/data48958/sisters.zip", #原始数据集路径
    “target_path”:"/home/aistudio/data/",
    }

    In[3]:

    #Step1、基础工作
    def unzip_data(src_path,target_path):
    ‘’’
    解压原始数据集,将src_path路径下的zip包解压至data目录下
    ‘’’
    if(not os.path.isdir(target_path + “sisters”)):
    z = zipfile.ZipFile(src_path, ‘r’)
    z.extractall(path=target_path)
    z.close()

    src_path = train_parameters[“src_path”]
    target_path = train_parameters[“target_path”]

    unzip_data(src_path,target_path)

    In[4]:

    #step2、抠图

    测试图片路径和输出路径

    test_path = ‘data/sisters/’
    output_path = ‘data/sisters_blend_out/’

    待预测图片

    class_dirs=[‘wanqian’,‘wanglikun’,‘ningjing’]
    img_list_wanqian=[]
    img_list_wanglikun=[]
    img_list_ningjing=[]
    img_class_dirs=[]
    for class_dir in class_dirs:
    img_path=test_path+class_dir
    #print(img_path)
    img_class_dirs.append(img_path)
    imgs=os.listdir(img_path)
    for img in imgs:
    #print(img_path+’/’+img)
    #img_list.append(img_path+’/’+img)
    if img!=".DS_Store":
    if class_dir==‘wanqian’:
    img_list_wanqian.append(img_path+’/’+img)
    if class_dir==‘wanglikun’:
    img_list_wanglikun.append(img_path+’/’+img)
    if class_dir==‘ningjing’:
    img_list_ningjing.append(img_path+’/’+img)

    In[5]:

    #获取文件件名
    print(img_list_ningjing[1])
    print(img_list_ningjing[1].split("/")[-1])

    In[6]:

    img=img_list_wanglikun[0]
    #展示图片
    img = image.imread(img)
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis(‘off’)
    #plt.show()
    img_class_dirs[0]

    In[7]:

    module_seg = hub.Module(name=“deeplabv3p_xception65_humanseg”)

    In[8]:

    #查重数据情况
    print(img_class_dirs[0])
    print(img_list_wanqian[0])

    In[ ]:

    In[9]:

    #分别对三个类别中的图像进行抠图 img_list_wanqian[] 、img_list_wanglikun[]、img_list_ningjing[]
    for imgs in img_list_wanqian:
    test_img= [cv2.imread(imgs)]
    results = module_seg.segmentation(images=test_img,output_dir=‘data/sisters_out/wanqian’,visualization=True)

    for imgs in img_list_wanglikun:
    test_img= [cv2.imread(imgs)]
    results = module_seg.segmentation(images=test_img,output_dir=‘data/sisters_out/wanglikun’,visualization=True)

    for imgs in img_list_ningjing:
    test_img= [cv2.imread(imgs)]
    results = module_seg.segmentation(images=test_img,output_dir=‘data/sisters_out/ningjing’,visualization=True)

    In[10]:

    #改名

    rename_path=‘data/sisters_out/wanqian’#表示需要命名处理的文件夹
    items = os.listdir(rename_path)
    for name,new_name in zip(items,img_list_wanqian):
    #print(name,new_name.split("/")[-1])
    src = os.path.join(os.path.abspath(rename_path), name)
    dst = os.path.join(os.path.abspath(rename_path),new_name.split("/")[-1])
    #print(src,dst)
    os.rename(src,dst)

    rename_path=‘data/sisters_out/wanglikun’#表示需要命名处理的文件夹
    items = os.listdir(rename_path)
    for name,new_name in zip(items,img_list_wanglikun):
    #print(name,new_name.split("/")[-1])
    src = os.path.join(os.path.abspath(rename_path), name)
    dst = os.path.join(os.path.abspath(rename_path),new_name.split("/")[-1])
    #print(src,dst)
    os.rename(src,dst)

    rename_path=‘data/sisters_out/ningjing’#表示需要命名处理的文件夹
    items = os.listdir(rename_path)
    for name,new_name in zip(items,img_list_ningjing):
    #print(name,new_name.split("/")[-1])
    src = os.path.join(os.path.abspath(rename_path), name)
    dst = os.path.join(os.path.abspath(rename_path),new_name.split("/")[-1])
    #print(src,dst)
    os.rename(src,dst)

    In[11]:

    #此处sisters和sisters_out用相同的label.txt train.txt eval.txt,所以直接拷贝
    get_ipython().system(‘cp data/sisters/*.txt data/sisters_out/’)

    In[12]:

    test_img_path = “data/sisters_out/ningjing/4.jpg”
    img = mpimg.imread(test_img_path)
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis(‘off’)
    plt.show()

    In[13]:

    #没有抠图前的finetune情况
    train_parameters = {
    “src_path”:"/home/aistudio/data/data48958/sisters.zip", #原始数据集路径
    “target_path”:"/home/aistudio/data/", #要解压的路径
    “train_list_path”: “/home/aistudio/data/sisters/train.txt”, #train.txt路径
    “eval_list_path”: “/home/aistudio/data/sisters/eval.txt”, #eval.txt路径
    “num_epochs”: 10, #训练轮数
    “train_batch_size”: 8, #训练时每个批次的大小
    “checkpoint_path”: “cv_finetune_turtorial_demo”,
    “eval_interval”: 10
    }

    In[14]:

    #加载预训练模型

    module_class = hub.Module(name=“resnet_v2_50_imagenet”)

    In[36]:

    #没有抠图前的finetune过程:
    #1、准备数据
    from paddlehub.dataset.base_cv_dataset import BaseCVDataset

    class DemoDataset(BaseCVDataset):
    def init(self):
    # 数据集存放位置

       self.dataset_dir = "data/sisters"     #抠图前
       #self.dataset_dir = "data/sisters_out"   #抠图后
       super(DemoDataset, self).__init__(
           base_path=self.dataset_dir,
           train_list_file="train.txt",
           validate_list_file="eval.txt",
           test_list_file="eval.txt",
           label_list_file="label.txt",
           )
    

    dataset = DemoDataset()

    In[35]:

    #2、生成数据读取器
    data_reader = hub.reader.ImageClassificationReader(
    image_width=module_class.get_expected_image_width(),
    image_height=module_class.get_expected_image_height(),
    images_mean=module_class.get_pretrained_images_mean(),
    images_std=module_class.get_pretrained_images_std(),
    dataset=dataset
    )

    In[32]:

    #3、配置策略
    config = hub.RunConfig(
    use_cuda=True, #是否使用GPU
    num_epoch=15, #Fine-tune的轮数
    checkpoint_dir=“cv_finetune_turtorial_sisters”,#抠图前,训练的参数和数据保存到cv_finetune_turtorial_demo目录
    #checkpoint_dir=“cv_finetune_turtorial_sisters_out”,#抠图后
    batch_size=4, #选择一个合适的batch_size是很重要的一步
    eval_interval=1,#模型评估的间隔,默认每100个Step评估一次验证集
    #strategy=hub.finetune.strategy.DefaultFinetuneStrategy() # Fine_tune优化策略
    strategy=hub.finetune.strategy.AdamWeightDecayStrategy()
    )

    In[33]:

    #4、组建Finetune Task
    input_dict, output_dict, program = module_class.context(trainable=True)
    img = input_dict[“image”]
    feature_map = output_dict[“feature_map”]
    feed_list = [img.name]

    task = hub.ImageClassifierTask(
    data_reader=data_reader,
    feed_list=feed_list,
    feature=feature_map,
    num_classes=dataset.num_labels,
    #num_classes=5,
    config=config)

    In[34]:

    #5、开始Finetune 我们选择finetune_and_eval接口来进行模型训练,这个接口在finetune的过程中,会周期性的进行模型效果的评估,
    #以便我们了解整个训练过程的性能变化。
    run_states = task.finetune_and_eval()

    In[ ]:

    In[43]:

    #6、预测
    get_ipython().run_line_magic(‘matplotlib’, ‘inline’)
    def show_image(image_path):
    ‘’’
    展示图片
    ‘’’
    img = image.imread(image_path)
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis(‘off’)
    plt.show()

    index = 0
    data = [“data/sisters/infer/infer_ningjing.jpg”]

    label_map = dataset.label_dict()
    run_states = task.predict(data=data)
    results = [run_state.run_results for run_state in run_states]

    for batch_result in results:
    batch_result = np.argmax(batch_result, axis=2)[0]
    for result in batch_result:
    index += 1
    result = label_map[result]
    print(“input %i is %s, and the predict result is %s” %
    (index, data[index - 1], result))

    show_image(data[0])

    In[ ]:

    In[20]:

    #抠图后的分类过程:
    #1、准备数据
    from paddlehub.dataset.base_cv_dataset import BaseCVDataset

    class DemoDataset(BaseCVDataset):
    def init(self):
    # 数据集存放位置

       #self.dataset_dir = "data/sisters"     #抠图前
       self.dataset_dir = "data/sisters_out"   #抠图后
       super(DemoDataset, self).__init__(
           base_path=self.dataset_dir,
           train_list_file="train.txt",
           validate_list_file="eval.txt",
           test_list_file="eval.txt",
           label_list_file="label.txt",
           )
    

    dataset = DemoDataset()

    #2、生成数据读取器
    data_reader = hub.reader.ImageClassificationReader(
    image_width=module_class.get_expected_image_width(),
    image_height=module_class.get_expected_image_height(),
    images_mean=module_class.get_pretrained_images_mean(),
    images_std=module_class.get_pretrained_images_std(),
    dataset=dataset
    )

    #3、配置策略
    config = hub.RunConfig(
    use_cuda=True, #是否使用GPU
    num_epoch=15, #Fine-tune的轮数
    #checkpoint_dir=“cv_finetune_turtorial_sisters2”,#抠图前,训练的参数和数据保存到cv_finetune_turtorial_demo目录
    checkpoint_dir=“cv_finetune_turtorial_sisters_out”,#抠图后,此处注意:修改数据戓其他参数造成不能重样finetune时,可以删除或修改该目录
    batch_size=4, #选择一个合适的batch_size是很重要的一步
    eval_interval=1,#模型评估的间隔,默认每100个Step评估一次验证集
    #strategy=hub.finetune.strategy.DefaultFinetuneStrategy() # Fine_tune优化策略
    strategy=hub.finetune.strategy.AdamWeightDecayStrategy()
    )

    In[21]:

    #4、组建Finetune Task
    #input_dict, output_dict, program = module_class.context(trainable=True)
    input_dict, output_dict, program = module_class.context(trainable=False)
    img = input_dict[“image”]
    feature_map = output_dict[“feature_map”]
    feed_list = [img.name]

    task = hub.ImageClassifierTask(
    data_reader=data_reader,
    feed_list=feed_list,
    feature=feature_map,
    num_classes=dataset.num_labels,
    #num_classes=5,
    config=config)

    In[22]:

    #5、开始Finetune 我们选择finetune_and_eval接口来进行模型训练,这个接口在finetune的过程中,会周期性的进行模型效果的评估,
    #以便我们了解整个训练过程的性能变化。
    run_states = task.finetune_and_eval()

    In[23]:

    #6、预测 此处代码和前面代码一样,为了看结果重新弄一遍,平时可以用一个代码。
    get_ipython().run_line_magic(‘matplotlib’, ‘inline’)
    def show_image(image_path):
    ‘’’
    展示图片
    ‘’’
    img = image.imread(image_path)
    plt.figure(figsize=(10,10))
    plt.imshow(img)
    plt.axis(‘off’)
    plt.show()

    index = 0
    data = [“data/sisters/infer/infer_ningjing.jpg”]

    label_map = dataset.label_dict()
    run_states = task.predict(data=data)
    results = [run_state.run_results for run_state in run_states]

    for batch_result in results:
    batch_result = np.argmax(batch_result, axis=2)[0]
    for result in batch_result:
    index += 1
    result = label_map[result]
    print(“input %i is %s, and the predict result is %s” %
    (index, data[index - 1], result))

    show_image(data[0])

    In[ ]:

    结果分析:

    #抠图前的finetune情况的结果(15轮):EVAL] - [test dataset evaluation result] loss=0.81379 acc=0.87500 [step/sec: 66.09]

    #抠图前图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 万茜

    #抠图后的finetune情况的结果(15轮):EVAL] - [test dataset evaluation result] loss=0.57906 acc=1.00000 [step/sec: 28.38]

    #抠图后图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 宁静

    #抠图前的finetune情况的结果(30轮):EVAL] - [test dataset evaluation result] loss=0.94754 acc=0.75000 [step/sec: 69.18]

    #抠图前图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 万茜

    #抠图后的finetune情况的结果(30轮):EVAL] - [test dataset evaluation result] loss=0.57906 acc=1.00000 [step/sec: 28.55]

    #抠图后图像预测结果:input 1 is data/sisters/infer/infer_ningjing.jpg, and the predict result is 宁静

    展开全文
  • 文章目录1 抠图代码2 抠图效果3 绘制词云图4 词云效果图5 项目链接 1 抠图代码 # 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, so that every time ...

    
    

    链接
    在这里插入图片描述

    1 抠图代码

    # 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可:
    # Also add the following code, so that every time the environment (kernel) starts, just run the following code:
    import sys
    sys.path.append('/home/aistudio/external-libraries')
    
    # 创建系统字体文件路径
    !mkdir .fonts
    # 复制文件到该路径
    !cp simhei.ttf .fonts/
    !rm -rf .cache/matplotlib
    
    import paddlehub as hub
    
    module = hub.Module(name="deeplabv3p_xception65_humanseg")
    test_img_path=['词云抠图.png']
    input_dict = {"image": test_img_path}
    
    # execute predict and print the result
    results = module.segmentation(data=input_dict)
    for result in results:
        print(result['origin'])
        print(result['processed'])
    
    
    [32m[2020-04-29 15:17:43,465] [    INFO] - Installing deeplabv3p_xception65_humanseg module[0m
    [32m[2020-04-29 15:17:43,487] [    INFO] - Module deeplabv3p_xception65_humanseg already installed in /home/aistudio/.paddlehub/modules/deeplabv3p_xception65_humanseg[0m
    [32m[2020-04-29 15:17:44,266] [    INFO] - 0 pretrained paramaters loaded by PaddleHub[0m
    
    
    词云抠图.png
    humanseg_output/词云抠图.png
    

    2 抠图效果

    from PIL import Image
    Image.open('词云抠图.png')
    
    

    在这里插入图片描述

    from PIL import Image
    Image.open('humanseg_output/词云抠图.png')
    

    在这里插入图片描述

    3 绘制词云图

    def fenci(text):
        '''
        利用jieba进行分词
        参数 text:需要分词的句子或文本
        return:分词结果
        '''
    
        jieba.load_userdict('add.txt')  #自定义词典
        seg=jieba.lcut(text,cut_all=False)
        return  seg
    def stopwordslist(file_path):
        '''
        创建停用词表
        参数 file_path:停用词文本路径
        return:停用词list
        '''
        stopwords=[line.strip()for line in open(file_path).readlines()]
        return  stopwords
    def movestopwords(sentence,stopwords,counts):
        '''
        去除停用词,统计词频
        参数 file_path:停用词文本路径 stopwords:停用词list counts: 词频统计结果
        return:None
        '''
        out=[]
        for word in sentence:
            if word not in stopwords:
                if len(word)!=1:
                    counts[word]=counts.get(word,0)+1
        
        return None
    def drawcounts(counts,num):
        '''
        绘制词频统计表
        参数 counts: 词频统计结果前几 num:绘制topN
        return:none
        '''
        x_aixs=[]
        y_aixs=[]
        c_order=sorted(counts.items(),key= lambda x :x[1],reverse=True)
    
        for c in c_order[:num]:
            x_aixs.append(c[0])
            y_aixs.append(c[1])
    
        #设置显示中文
        plt.figure(figsize=(12,12))
        plt.rcParams['font.sans-serif'] = ['SimHei'] 
        
        plt.bar(x_aixs,y_aixs)
        plt.title('词频统计结果')
        plt.show()
        return
    def drawcloud(word_f):
        '''
        根据词频绘制词云图
        参数 word_f:统计出的词频结果
        return:none
        '''
        #加载背景图片
        cloud_mask=np.array(Image.open('humanseg_output/词云背景图.png'))
        
        #忽略显示的词
        st=set(['东西','觉得'])
        #生成wordcloud对象
        wc=WordCloud(background_color='white',
        mask=cloud_mask,
        max_words=300,
        font_path='simhei.ttf',
        min_font_size=10,
        max_font_size=100,
        width=400,
        relative_scaling=0.3,
        stopwords=st
        )
    
    
        wc.fit_words(word_f)
        wc.to_file('pic.png')
    
    from __future__ import print_function
    import json
    import time #时间处理模块
    import jieba #中文分词
    import matplotlib
    import matplotlib.pyplot as plt
    from PIL import Image
    import numpy as np 
    from wordcloud import WordCloud  #绘制词云模块
    
    #打开网上爬取的爱艺奇下的评价aqy.txt 
    #使用stopwordslist 剔除点一些不用的词语
    #使用fenci  ,利用jieba 裁剪长句子
    with open ('aqy.txt','r',encoding='utf-8') as f:
        counts={}
        stopwords=stopwordslist('baidu_stopwords.txt')
        for line in f:
            words=fenci(line)
            movestopwords(words,stopwords,counts)
    drawcounts(counts,20)#绘制top20 的高频词
        
    drawcloud(counts)  #绘制词云图
    

    在这里插入图片描述

    4 词云效果图

    image1=Image.open('humanseg_output/词云抠图.png')
    image2=Image.open('pic.png')
    plt.figure(figsize=(10,10))
    plt.subplot(121)
    plt.imshow(image1)
    plt.axis('off')
    plt.subplot(122)
    plt.imshow(image2)
    plt.axis('off')
    e(figsize=(10,10))
    plt.subplot(121)
    plt.imshow(image1)
    plt.axis('off')
    plt.subplot(122)
    plt.imshow(image2)
    plt.axis('off')
    plt.show()
    

    在这里插入图片描述

    5 项目链接

    (AiStudio)项目链接:https://aistudio.baidu.com/aistudio/projectdetail/439601
    https://aistudio.baidu.com/aistudio/projectdetail/439601?shared=1

    展开全文
  • PaddleHub WEB抠图服务

    2020-05-02 00:21:38
    PaddleHub web抠图服务 step1. 启动flask服务 python upload_pictures.py step2. 启动PaddleHub 一键部署deeplabv3p_xception65_humanseg服务 hub serving start -m deeplabv3p_xception65_humanseg step3. 打开...

    PaddleHub web抠图服务

    step1. 启动flask服务

    python upload_pictures.py
    

    step2. 启动PaddleHub 一键部署deeplabv3p_xception65_humanseg服务

    hub serving start -m deeplabv3p_xception65_humanseg
    

    step3. 打开浏览器体验web 抠图服务

    http://localhost/upload
    

    step4. 依赖

    1.PaddlePaddle(飞桨)
    2.PaddleHub
    3.Flask
    

    Gitee地址

    https://gitee.com/livingbody/AutoCutout.git

    在这里插入图片描述

    展开全文
  • paddlehub自动抠图-人像

    2021-10-13 19:36:40
    paddlehub自动抠图-人像 import os import matplotlib.pyplot as plt import matplotlib.image as mpimg, cv2 import paddlehub as hub import numpy as np # 测试图片路径和输出路径 input_path = 'img_input/' # ...
  • 使用百度PaddleHub制作抠图视频目标:制作在太空中跳街舞的视频 目标:制作在太空中跳街舞的视频 import paddlehub as hub from PIL import Image import os import cv2 import matplotlib.pyplot as plt # 显示图片...
  • Paddlehub人像抠图解读

    2021-01-14 16:12:02
    需求 ...import paddlehub as hub pic_dir = './pic/' images_name = sorted(glob.glob(pic_dir+'*.png'))[:1] module_root = './deeplabv3p_xception65_humanseg/' module = hub.Module(name=None,
  • paddlehub批量抠图大法好!不得不说,这个模型还是非常智能的,可以识别到主体是什么,然后进行智能化抠图处理。 1. 模块下载 python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple ...
  • PaddleHub创意赛:AI人像抠图及图像合成——基于paddleHub的韦小宝穿越 本项目根据DeepLabv3+模型一键抠图示例(https://aistudio.baidu.com/aistudio/projectdetail/354462),主要采用PaddleHub DeepLabv3+模型...
  • 基于PaddleHub实现简易人像抠图1. 背景2. 思路和步骤3. 代码实现4、致谢 1. 背景 PaddleHub是为了解决对深度学习模型的需求而开发的工具。基于飞桨领先的核心框架,精选效果优秀的算法,提供了百亿级大数据训练的预...
  • 文章目录前言简介paddlehub安装功能实现引入库用到的hub库每帧的图像处理结果输出总结 前言 看完文章您将学会: paddlehub的使用方法 如何用cv2加载图片并保存 如何用cv2逐帧加载视频以及将图片逐帧保存成视频 如何...
  • 1、安装paddlehub https://paddlehub.readthedocs.io/zh_CN/develop/install.html 2、安装错误请查看 https://blog.csdn.net/ywsydwsbn/article/details/105835538 话不多少先上图 贴代码 import os import...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 377
精华内容 150
关键字:

paddlehub抠图