未验证 提交 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 ast
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
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(
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):
def __init__(self):
"""
Initialize with the necessary elements
"""
self.pretrained_model_path = os.path.join(self.directory, "assets", "infer_model")
self.module_image = hub.Module(name="xception71_imagenet") # 调用图像分类的模型
self.module_image = hub.Module(name="efficientnetb4_imagenet") # 调用图像分类的模型
self.module_similar = hub.Module(name="ernie_gen_couplet") # 调用对联生成的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
......@@ -48,9 +43,8 @@ class ReadingPicturesWritingPoems(hub.Module):
return True
def WritingPoem(self, image, use_gpu=False):
input_dict = {"image": [image]}
results_image = self.module_image.classification(data=input_dict)
PictureClassification = list(results_image[0][0].keys())[0]
results_image = self.module_image.classification(paths=[image])
PictureClassification = list(results_image[0].keys())[0]
translator = Translator(to_lang="chinese")
PictureClassification_ch = translator.translate("{}".format(PictureClassification))
texts = ["{}".format(PictureClassification_ch)]
......@@ -70,13 +64,13 @@ class ReadingPicturesWritingPoems(hub.Module):
FirstPoetry = ["{:.5},{:.5}。".format(ChuJu, DuiJu)] # 古诗词的上阕
results = self.module_poem.generate(texts=FirstPoetry, use_gpu=use_gpu, beam_width=5)
SecondPoetry = ["{:.12}".format(results[0][0])]
Poetrys = []
Poetrys.append(FirstPoetry)
Poetrys.append(SecondPoetry)
poetry = []
poetry.append(FirstPoetry)
poetry.append(SecondPoetry)
print("根据图片生成的古诗词:")
print("{}".format(Poetrys[0][0]))
print("{}".format(Poetrys[1][0]))
results = [{'image': image, 'Poetrys': "{}".format(Poetrys[0][0] + Poetrys[1][0])}]
print("{}".format(poetry[0][0]))
print("{}".format(poetry[1][0]))
results = [{'image': image, 'poetry': "{}".format(poetry[0][0] + poetry[1][0])}]
return results
......@@ -85,11 +79,10 @@ class ReadingPicturesWritingPoems(hub.Module):
"""
Run as a command.
"""
self.parser = argparse.ArgumentParser(
description='Run the %s module.' % self.name,
prog='hub run %s' % self.name,
usage='%(prog)s',
add_help=True)
self.parser = argparse.ArgumentParser(description='Run the %s module.' % self.name,
prog='hub run %s' % self.name,
usage='%(prog)s',
add_help=True)
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(
......@@ -114,8 +107,10 @@ class ReadingPicturesWritingPoems(hub.Module):
"""
Add the command config options.
"""
self.arg_config_group.add_argument(
'--use_gpu', type=ast.literal_eval, default=False, help="whether use GPU for prediction")
self.arg_config_group.add_argument('--use_gpu',
type=ast.literal_eval,
default=False,
help="whether use GPU for prediction")
def add_module_input_arg(self):
"""
......
......@@ -17,7 +17,7 @@
<p align="center">
<img src="https://user-images.githubusercontent.com/76040149/133189274-ff86801f-017f-460e-adb0-1d381d74aff6.jpg" width="300">
</p>
- 输入以上图片生成的古诗是:
- 蕾蕾海河海,岳峰岳麓蔓。
......@@ -45,33 +45,33 @@
- ```shell
$ hub install reading_pictures_writing_poems
```
- 本模型还需要用到xception71_imagenet, ernie_gen_couplet, ernie_gen_poetry这3个模型
- 若您未安装这3个模型,代码运行时会自动帮您下载
- 如您安装时遇到问题,可参考:[零基础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)
## 三、模型API预测
- ### 1、命令行预测
- ```shell
$ hub run reading_pictures_writing_poems --input_image "scenery.jpg"
$ hub run reading_pictures_writing_poems --input_image "/PATH/TO/IMAGE"
```
- ### 2、预测代码示例
- ```python
import paddlehub as hub
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:
print(result)
```
- ### 3、API
- ```python
......@@ -83,7 +83,9 @@
- image(str): 待检测的图片路径
- 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 @@
* 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.
先完成此消息的编辑!
想要评论请 注册