diff --git a/docs/tutorial/how_to_load_data.md b/docs/tutorial/how_to_load_data.md index 8e0321bfad65ac4471f01e527f09d6e7b53168fe..c66a1867bff8c5f3e06b9e4a0cdffbc9dd5f1227 100644 --- a/docs/tutorial/how_to_load_data.md +++ b/docs/tutorial/how_to_load_data.md @@ -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开始计数 diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems/__init__.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems/__init__.py index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems/__init__.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems/__init__.py @@ -1 +0,0 @@ - diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems/module.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems/module.py index f15986245f6d29609ab9a6f924e8cd52290f8896..e0ea750bfb69c7066f2ce7771b475f6abe3c6724 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems/module.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems/module.py @@ -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 diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/__init__.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/__init__.py index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/__init__.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/__init__.py @@ -1 +0,0 @@ - diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/module.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/module.py index 00fd8abbdbe25fb9b22d1a74d8b647384f50e7c0..b9ec86ad94e1f71c6c2486f65e599e947b73a917 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/module.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnDetection/module.py @@ -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): diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/__init__.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/__init__.py index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/__init__.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/__init__.py @@ -1 +0,0 @@ - diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/module.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/module.py index 1b3ae0aa52d8c5960ca0dd379fd6cb1d69b6b287..17b9cec0f6753dea5d7f1340c2fa7709f448a0f1 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/module.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/MidAutumnPoetry/module.py @@ -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 diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/__init__.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/__init__.py index 8b137891791fe96927ad78e64b0aad7bded08bdc..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/__init__.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/__init__.py @@ -1 +0,0 @@ - diff --git a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/module.py b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/module.py index 68a0ead5b845e7ca56f200cf85c58ac477e703c2..621e1f78a2ba4333bc05e31a6d276bfa82a2a86d 100644 --- a/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/module.py +++ b/hub_module/modules/text/text_generation/reading_pictures_writing_poems_for_midautumn/module.py @@ -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 diff --git a/hub_module/tests/unittests/test_reading_pictures_writing_poems.py b/hub_module/tests/unittests/test_reading_pictures_writing_poems.py index 6615c96e92f3b4a123b44c6f8c11ba7e97409c00..e78da212a4ad1aa7aafdc8142192146d8a9f2611 100644 --- a/hub_module/tests/unittests/test_reading_pictures_writing_poems.py +++ b/hub_module/tests/unittests/test_reading_pictures_writing_poems.py @@ -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()