未验证 提交 3d33cadc 编写于 作者: jm_12138's avatar jm_12138 提交者: GitHub

update reading_pictures_writing_poems (#2106)

* update reading_pictures_writing_poems

* update README

* update README

* update

* update
上级 939258c6
import argparse import argparse
import ast import ast
import os import os
import math
import six
from paddle.fluid.core import PaddleTensor, AnalysisConfig, create_paddle_predictor
from paddlehub.module.module import runnable, serving, moduleinfo
from paddlehub.io.parser import txt_parser
import numpy as np
import paddle.fluid as fluid
import paddlehub as hub
from translate import Translator from translate import Translator
import paddlehub as hub
from paddlehub.module.module import moduleinfo
from paddlehub.module.module import runnable
@moduleinfo(name="reading_pictures_writing_poems",
version="1.1.0",
summary="Just for test",
author="Mr.郑先生_",
author_email="2733821739@qq.com",
type="nlp/text_generation")
class ReadingPicturesWritingPoems:
@moduleinfo( def __init__(self):
name="reading_pictures_writing_poems",
version="1.0.0",
summary="Just for test",
author="Mr.郑先生_",
author_email="2733821739@qq.com",
type="nlp/text_generation")
class ReadingPicturesWritingPoems(hub.Module):
def _initialize(self):
""" """
Initialize with the necessary elements Initialize with the necessary elements
""" """
self.pretrained_model_path = os.path.join(self.directory, "assets", "infer_model") self.module_image = hub.Module(name="efficientnetb4_imagenet") # 调用图像分类的模型
self.module_image = hub.Module(name="xception71_imagenet") # 调用图像分类的模型
self.module_similar = hub.Module(name="ernie_gen_couplet") # 调用对联生成的模型 self.module_similar = hub.Module(name="ernie_gen_couplet") # 调用对联生成的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型 self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
...@@ -48,9 +43,8 @@ class ReadingPicturesWritingPoems(hub.Module): ...@@ -48,9 +43,8 @@ class ReadingPicturesWritingPoems(hub.Module):
return True return True
def WritingPoem(self, image, use_gpu=False): def WritingPoem(self, image, use_gpu=False):
input_dict = {"image": [image]} results_image = self.module_image.classification(paths=[image])
results_image = self.module_image.classification(data=input_dict) PictureClassification = list(results_image[0].keys())[0]
PictureClassification = list(results_image[0][0].keys())[0]
translator = Translator(to_lang="chinese") translator = Translator(to_lang="chinese")
PictureClassification_ch = translator.translate("{}".format(PictureClassification)) PictureClassification_ch = translator.translate("{}".format(PictureClassification))
texts = ["{}".format(PictureClassification_ch)] texts = ["{}".format(PictureClassification_ch)]
...@@ -70,13 +64,13 @@ class ReadingPicturesWritingPoems(hub.Module): ...@@ -70,13 +64,13 @@ class ReadingPicturesWritingPoems(hub.Module):
FirstPoetry = ["{:.5},{:.5}。".format(ChuJu, DuiJu)] # 古诗词的上阕 FirstPoetry = ["{:.5},{:.5}。".format(ChuJu, DuiJu)] # 古诗词的上阕
results = self.module_poem.generate(texts=FirstPoetry, use_gpu=use_gpu, beam_width=5) results = self.module_poem.generate(texts=FirstPoetry, use_gpu=use_gpu, beam_width=5)
SecondPoetry = ["{:.12}".format(results[0][0])] SecondPoetry = ["{:.12}".format(results[0][0])]
Poetrys = [] poetry = []
Poetrys.append(FirstPoetry) poetry.append(FirstPoetry)
Poetrys.append(SecondPoetry) poetry.append(SecondPoetry)
print("根据图片生成的古诗词:") print("根据图片生成的古诗词:")
print("{}".format(Poetrys[0][0])) print("{}".format(poetry[0][0]))
print("{}".format(Poetrys[1][0])) print("{}".format(poetry[1][0]))
results = [{'image': image, 'Poetrys': "{}".format(Poetrys[0][0] + Poetrys[1][0])}] results = [{'image': image, 'poetry': "{}".format(poetry[0][0] + poetry[1][0])}]
return results return results
...@@ -85,11 +79,10 @@ class ReadingPicturesWritingPoems(hub.Module): ...@@ -85,11 +79,10 @@ class ReadingPicturesWritingPoems(hub.Module):
""" """
Run as a command. Run as a command.
""" """
self.parser = argparse.ArgumentParser( self.parser = argparse.ArgumentParser(description='Run the %s module.' % self.name,
description='Run the %s module.' % self.name, prog='hub run %s' % self.name,
prog='hub run %s' % self.name, usage='%(prog)s',
usage='%(prog)s', add_help=True)
add_help=True)
self.arg_input_group = self.parser.add_argument_group(title="Input options", description="Input data. Required") self.arg_input_group = self.parser.add_argument_group(title="Input options", description="Input data. Required")
self.arg_config_group = self.parser.add_argument_group( self.arg_config_group = self.parser.add_argument_group(
...@@ -114,8 +107,10 @@ class ReadingPicturesWritingPoems(hub.Module): ...@@ -114,8 +107,10 @@ class ReadingPicturesWritingPoems(hub.Module):
""" """
Add the command config options. Add the command config options.
""" """
self.arg_config_group.add_argument( self.arg_config_group.add_argument('--use_gpu',
'--use_gpu', type=ast.literal_eval, default=False, help="whether use GPU for prediction") type=ast.literal_eval,
default=False,
help="whether use GPU for prediction")
def add_module_input_arg(self): def add_module_input_arg(self):
""" """
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<p align="center"> <p align="center">
<img src="https://user-images.githubusercontent.com/76040149/133189274-ff86801f-017f-460e-adb0-1d381d74aff6.jpg" width="300"> <img src="https://user-images.githubusercontent.com/76040149/133189274-ff86801f-017f-460e-adb0-1d381d74aff6.jpg" width="300">
</p> </p>
- 输入以上图片生成的古诗是: - 输入以上图片生成的古诗是:
- 蕾蕾海河海,岳峰岳麓蔓。 - 蕾蕾海河海,岳峰岳麓蔓。
...@@ -45,33 +45,33 @@ ...@@ -45,33 +45,33 @@
- ```shell - ```shell
$ hub install reading_pictures_writing_poems $ hub install reading_pictures_writing_poems
``` ```
- 本模型还需要用到xception71_imagenet, ernie_gen_couplet, ernie_gen_poetry这3个模型 - 本模型还需要用到xception71_imagenet, ernie_gen_couplet, ernie_gen_poetry这3个模型
- 若您未安装这3个模型,代码运行时会自动帮您下载 - 若您未安装这3个模型,代码运行时会自动帮您下载
- 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md)
| [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md)
## 三、模型API预测 ## 三、模型API预测
- ### 1、命令行预测 - ### 1、命令行预测
- ```shell - ```shell
$ hub run reading_pictures_writing_poems --input_image "scenery.jpg" $ hub run reading_pictures_writing_poems --input_image "/PATH/TO/IMAGE"
``` ```
- ### 2、预测代码示例 - ### 2、预测代码示例
- ```python - ```python
import paddlehub as hub import paddlehub as hub
readingPicturesWritingPoems = hub.Module(name="reading_pictures_writing_poems") readingPicturesWritingPoems = hub.Module(name="reading_pictures_writing_poems")
results = readingPicturesWritingPoems.WritingPoem(image = "scenery.jpg", use_gpu=False) results = readingPicturesWritingPoems.WritingPoem(image="/PATH/TO/IMAGE", use_gpu=False)
for result in results: for result in results:
print(result) print(result)
``` ```
- ### 3、API - ### 3、API
- ```python - ```python
...@@ -83,7 +83,9 @@ ...@@ -83,7 +83,9 @@
- image(str): 待检测的图片路径 - image(str): 待检测的图片路径
- use_gpu (bool): 是否使用 GPU - use_gpu (bool): 是否使用 GPU
- **返回** - **返回**
- results (list[dict](https://www.paddlepaddle.org.cn/hubdetail?name=reading_pictures_writing_poems&en_category=TextGeneration)): 识别结果的列表,列表中每一个元素为 dict,关键字有 image,Poetrys, 其中: image字段为原输入图片的路径,Poetrys字段为输出的古诗词 - results (list\[dict\]): 识别结果的列表,列表中每一个元素为 dict,关键字有 image, poetry
- image: 为原输入图片的路径
- poetry: 字段为输出的古诗词
## 四、服务部署 ## 四、服务部署
...@@ -95,3 +97,11 @@ ...@@ -95,3 +97,11 @@
* 1.0.0 * 1.0.0
初始发布 初始发布
* 1.1.0
移除 Fluid API,更换分类模型
- ```shell
$ hub install porn_detection_lstm==1.1.0
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册