提交 7098f925 编写于 作者: W wuzewu

Fix ci issue

上级 315a3084
......@@ -70,15 +70,14 @@ cat
dog
```
### 自定义数据加载
### 自定义数据加载
加载图像类自定义数据集,用户仅需要继承基类BaseCVDatast,修改数据集存放地址即可。具体使用如下:
**NOTE:**
* 数据集文件编码格式建议为utf8格式。
* dataset_dir为数据集实际路径,需要填写全路径,以下示例以`/test/data`为例。
* 训练/验证/测试集的数据列表文件中的图片路径需要相对于dataset_dir的相对路径,例如图片的实际位置为`/test/data/dog/dog1.jpg`。base_path为`/test/data`,则文件中填写的路径应该为`dog/dog1.jpg`
* 如果您还有预测数据(没有文本类别),可以将预测数据存放在predict_list.txt文件,文件格式和train_list.txt类似。去掉label一列即可
* 如果您的数据集类别较少,可以不用定义label_list.txt,可以选择定义label_list=["数据集所有类别"]。
* 分类任务中,数据集的label必须从0开始计数
加载图像类自定义数据集,用户仅需要继承基类BaseCVDatast,修改数据集存放地址即可。具体使用如下:
**NOTE:**
* 数据集文件编码格式建议为utf8格式。
* dataset_dir为数据集实际路径,需要填写全路径,以下示例以`/test/data`为例。
* 训练/验证/测试集的数据列表文件中的图片路径需要相对于dataset_dir的相对路径,例如图片的实际位置为`/test/data/dog/dog1.jpg`。base_path为`/test/data`,则文件中填写的路径应该为`dog/dog1.jpg`
* 如果您还有预测数据(没有文本类别),可以将预测数据存放在predict_list.txt文件,文件格式和train_list.txt类似。去掉label一列即可
* 如果您的数据集类别较少,可以不用定义label_list.txt,可以选择定义label_list=["数据集所有类别"]。
* 分类任务中,数据集的label必须从0开始计数
......@@ -12,6 +12,7 @@ import paddle.fluid as fluid
import paddlehub as hub
from translate import Translator
@moduleinfo(
name="reading_pictures_writing_poems",
version="1.0.0",
......@@ -26,9 +27,9 @@ class ReadingPicturesWritingPoems(hub.Module):
"""
self.pretrained_model_path = os.path.join(self.directory, "assets",
"infer_model")
self.module_image = hub.Module(name="xception71_imagenet") # 调用图像分类的模型
self.module_similar = hub.Module(name="ernie_gen_couplet") # 调用对联生成的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
self.module_image = hub.Module(name="xception71_imagenet") # 调用图像分类的模型
self.module_similar = hub.Module(name="ernie_gen_couplet") # 调用对联生成的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
def is_chinese(self, string):
"""
......@@ -38,10 +39,10 @@ class ReadingPicturesWritingPoems(hub.Module):
Return
bool
"""
if (len(string) <= 1): # 去除只有单个字或者为空的字符串
if (len(string) <= 1): # 去除只有单个字或者为空的字符串
return False
for chart in string: # 把除了中文的所有字母、数字、符号去除
for chart in string: # 把除了中文的所有字母、数字、符号去除
if (chart < u'\u4e00' or chart > u'\u9fff'):
return False
......@@ -52,10 +53,12 @@ class ReadingPicturesWritingPoems(hub.Module):
results_image = self.module_image.classification(data=input_dict)
PictureClassification = list(results_image[0][0].keys())[0]
translator = Translator(to_lang="chinese")
PictureClassification_ch = translator.translate("{}".format(PictureClassification))
PictureClassification_ch = translator.translate(
"{}".format(PictureClassification))
texts = ["{}".format(PictureClassification_ch)]
results_keywords = self.module_similar.generate(texts=texts, use_gpu=use_gpu, beam_width=20)
Words = [] # 将符合标准的近义词保存在这里(标准:字符串为中文且长度大于1)
results_keywords = self.module_similar.generate(
texts=texts, use_gpu=use_gpu, beam_width=20)
Words = [] # 将符合标准的近义词保存在这里(标准:字符串为中文且长度大于1)
for item in range(20):
if (self.is_chinese(results_keywords[0][item])):
Words.append(results_keywords[0][item])
......@@ -65,10 +68,11 @@ class ReadingPicturesWritingPoems(hub.Module):
ThirdWord = Words[4] + Words[5]
FourthWord = Words[6] + Words[7]
# 出句和对句,也可以理解为上下句(专业讲法是出句和对句,古诗词是中国传统文化,出句和对句的英文翻译即拼音)
ChuJu = FirstWord + SecondWord # 出句
DuiJu = ThirdWord + FourthWord # 对句
FirstPoetry = ["{:.5},{:.5}。".format(ChuJu, DuiJu)] # 古诗词的上阕
results = self.module_poem.generate(texts=FirstPoetry, use_gpu=use_gpu, beam_width=5)
ChuJu = FirstWord + SecondWord # 出句
DuiJu = ThirdWord + FourthWord # 对句
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)
......@@ -80,7 +84,7 @@ class ReadingPicturesWritingPoems(hub.Module):
'image': image,
'Poetrys': "{}".format(Poetrys[0][0] + Poetrys[1][0])
}]
return results
@runnable
......@@ -135,7 +139,7 @@ class ReadingPicturesWritingPoems(hub.Module):
type=str,
default=None,
help="Pictures to write poetry")
def check_input_data(self, args):
input_data = []
if args.input_image:
......@@ -145,6 +149,7 @@ class ReadingPicturesWritingPoems(hub.Module):
input_data = args.input_image
if input_data == []:
raise RuntimeError("The input data is inconsistent with expectations.")
raise RuntimeError(
"The input data is inconsistent with expectations.")
return input_data
......@@ -118,9 +118,7 @@ class MODULE(hub.Module):
self.add_module_config_arg()
self.add_module_input_arg()
args = self.parser.parse_args(argvs)
results = self.predict(
paths=[args.input_path],
use_gpu=args.use_gpu)
results = self.predict(paths=[args.input_path], use_gpu=args.use_gpu)
return results
def add_module_config_arg(self):
......
......@@ -174,4 +174,3 @@ class ErnieGen(hub.NLPPredictionModule):
texts=input_data, use_gpu=args.use_gpu, beam_width=args.beam_width)
return results
\ No newline at end of file
......@@ -14,6 +14,7 @@ from translate import Translator
import reading_pictures_writing_poems_for_midautumn.MidAutumnDetection.module as MidAutumnDetection
import reading_pictures_writing_poems_for_midautumn.MidAutumnPoetry.module as MidAutumnPoetry
@moduleinfo(
name="reading_pictures_writing_poems_for_midautumn",
version="1.0.0",
......@@ -26,20 +27,27 @@ class ReadingPicturesWritingPoems(hub.Module):
"""
Initialize with the necessary elements
"""
self.pretrained_model_path = os.path.join(self.directory, "assets", "infer_model")
self.module_image = MidAutumnDetection.MODULE(directory="reading_pictures_writing_poems_for_midautumn/MidAutumnDetection") # 调用目标检测的模型
self.module_similar = MidAutumnPoetry.ErnieGen(directory='reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry') # 调用根据关键词生成古诗上阕的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
self.pretrained_model_path = os.path.join(self.directory, "assets",
"infer_model")
self.module_image = MidAutumnDetection.MODULE(
directory=
"reading_pictures_writing_poems_for_midautumn/MidAutumnDetection"
) # 调用目标检测的模型
self.module_similar = MidAutumnPoetry.ErnieGen(
directory=
'reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry'
) # 调用根据关键词生成古诗上阕的模型
self.module_poem = hub.Module(name="ernie_gen_poetry") # 调用古诗生成的模型
def WritingPoem(self, images, use_gpu=False):
# 目标检测,输入图片,输入得分最高的标签
results_image = self.module_image.predict(images = images)
best = {'score':0, 'category':'none'}
results_image = self.module_image.predict(images=images)
best = {'score': 0, 'category': 'none'}
for item in results_image:
for items in item:
if (items['score'] > best['score']):
best['score'], best['category'] = items['score'], items['category']
best['score'], best['category'] = items['score'], items[
'category']
if best['category'] == 'MoonCake':
objects = ['月饼']
elif best['category'] == 'moon':
......@@ -51,10 +59,12 @@ class ReadingPicturesWritingPoems(hub.Module):
else:
objects = ['中秋节']
# 根据关键词生成古诗上阕
FirstPoetrys = self.module_similar.generate(texts=objects, use_gpu=True, beam_width=5)
FirstPoetrys = self.module_similar.generate(
texts=objects, use_gpu=True, beam_width=5)
FirstPoetry = [FirstPoetrys[0][0]]
# 调用古诗生成模型,使用上阕生成下阕
SecondPoetry = self.module_poem.generate(texts=FirstPoetry, use_gpu=True, beam_width=5)
SecondPoetry = self.module_poem.generate(
texts=FirstPoetry, use_gpu=True, beam_width=5)
Poetrys = []
Poetrys.append(FirstPoetry[0])
Poetrys.append(SecondPoetry[0][0])
......@@ -62,7 +72,7 @@ class ReadingPicturesWritingPoems(hub.Module):
'images': images,
'Poetrys': "{}".format(Poetrys[0] + Poetrys[1])
}]
return results
@runnable
......@@ -117,7 +127,7 @@ class ReadingPicturesWritingPoems(hub.Module):
type=str,
default=None,
help="Pictures to write poetry")
def check_input_data(self, args):
input_data = []
if args.input_image:
......@@ -127,6 +137,7 @@ class ReadingPicturesWritingPoems(hub.Module):
input_data = args.input_image
if input_data == []:
raise RuntimeError("The input data is inconsistent with expectations.")
raise RuntimeError(
"The input data is inconsistent with expectations.")
return input_data
\ No newline at end of file
return input_data
......@@ -13,13 +13,12 @@ class ReadingPicturesWritingPoemsTestCase(TestCase):
'image': 'castle.jpg',
'Poetrys': '山川山陵山,沟渠村庄沟。我来春雨余,草木亦已柔。'
}]
def test_writing_poems(self):
# test gpu
results = self.module.WritingPoem(
image=self.test_image, use_gpu=True)
results = self.module.WritingPoem(image=self.test_image, use_gpu=True)
self.assertEqual(results, self.results)
if __name__ == '__main__':
main()
\ No newline at end of file
main()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册