From 005c23cddf52f98792c2b1c6af295eb091f6e97d Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 24 Apr 2024 14:34:25 +0800 Subject: [PATCH 01/13] to be debug --- README.md | 1 + README_ZH.md | 1 + configs/demo/sandbox/vbench_eval_config.yaml | 26 + data_juicer/core/sandbox/evaluators.py | 44 + data_juicer/core/sandbox/factories.py | 8 +- docs/Sandbox-ZH.md | 1 + docs/Sandbox.md | 1 + environments/sandbox_requires.txt | 2 + setup.py | 2 + .../vbench_metrics/VBench_full_info.json | 9132 +++++++++++++++++ tools/mm_eval/vbench_metrics/evaluate.py | 164 + 11 files changed, 9378 insertions(+), 4 deletions(-) create mode 100644 configs/demo/sandbox/vbench_eval_config.yaml create mode 100644 environments/sandbox_requires.txt create mode 100644 tools/mm_eval/vbench_metrics/VBench_full_info.json create mode 100644 tools/mm_eval/vbench_metrics/evaluate.py diff --git a/README.md b/README.md index e7a702285..b7a155275 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,7 @@ The dependency options are listed below: | `.[dist]` | Install dependencies for distributed data processing. (Experimental) | | `.[dev]` | Install dependencies for developing the package as contributors. | | `.[tools]` | Install dependencies for dedicated tools, such as quality classifiers. | +| `.[sandbox]` | Install dependencies for sandbox, such as VBench for video evaluation. | ### Using pip diff --git a/README_ZH.md b/README_ZH.md index 04f8dc70a..2f8068c02 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -166,6 +166,7 @@ pip install -v -e .[tools] # 安装部分工具库的依赖 | `.[dist]` | 安装以分布式方式进行数据处理的依赖(实验性功能) | | `.[dev]` | 安装作为贡献者开发 Data-Juicer 所需的依赖项 | | `.[tools]` | 安装专用工具库(如质量分类器)所需的依赖项 | +| `.[sandbox]` | 安装沙河实验需要的依赖库,如用于视频评测的VBench | ### 使用 pip 安装 diff --git a/configs/demo/sandbox/vbench_eval_config.yaml b/configs/demo/sandbox/vbench_eval_config.yaml new file mode 100644 index 000000000..b53b45ea8 --- /dev/null +++ b/configs/demo/sandbox/vbench_eval_config.yaml @@ -0,0 +1,26 @@ +type: vbench_video_evaluator + +# The vbench prompts for video generation. +prompt_path: ./tools/mm_eval/vbench_metrics/VBench_full_info.json + +# The path to the dir of generated videos +videos_path: /path/to/the/generated/videos + +# The dir to store the eval results +result_dir: ./outputs/demo-sandbox/vbench_eval_results + +# Give a name for this eval +eval_name: + +# If true, load the required model for VBench from the cache path of evironment parameter VBENCH_CACHE_DIR +load_ckpt_from_local: false + +# The dimensions considered in this eval. +# All dimensions include: ['subject_consistency', 'background_consistency', +# 'temporal_flickering', 'motion_smoothness', 'dynamic_degree', +# 'aesthetic_quality', 'imaging_quality', 'object_class', +# 'multiple_objects', 'human_action', 'color', 'spatial_relationship', +# 'scene', 'temporal_style', 'appearance_style', 'overall_consistency'] +dimension_list: + -subject_consistency + -dynamic_degree diff --git a/data_juicer/core/sandbox/evaluators.py b/data_juicer/core/sandbox/evaluators.py index 4c76f7ff3..a67e42d0f 100644 --- a/data_juicer/core/sandbox/evaluators.py +++ b/data_juicer/core/sandbox/evaluators.py @@ -1,6 +1,8 @@ import os import shutil +from vbench import VBench +from data_juicer import cuda_device_count # TODO: cannot import tools correctly if DJ is installed by pypi. Maybe we need # other importing methods. from tools.quality_classifier.predict import predict_score @@ -73,6 +75,48 @@ def run(self, eval_type, eval_obj, **kwargs): raise NotImplementedError( 'To be refactored from gpt4v related operators/tools.') +class VBenchEvaluator(BaseEvaluator): + + def merge_results(self, result_path): + result_dict = {'mean_score': 0, 'detail': {}} + scores = [] + cur_result = json.load(open(result_path)) + for dimension in cur_result: + score = cur_result[dimension][0] + result_dict['detail'][dimension] = score + scores.append(score) + result_dict['mean_score'] = sum(scores) / len(scores) + return result_dict + + def run(self, eval_type, eval_obj, **kwargs): + if eval_type == 'data': + prompt_path = self.eval_config.prompt_path + videos_path = self.eval_config.videos_path + result_dir = self.eval_config.result_dir + name = self.eval_config.eval_name + dimension_list = self.eval_config.dimension_list + local = self.eval_config.load_ckpt_from_local + if cuda_device_count() > 0: + device = torch.device("cuda") + else: + device = torch.device("cpu") + my_vbench = VBench(device, prompt_path, result_dir) + my_VBench.evaluate( + videos_path = videos_path, + name = name, + dimension_list = dimension_list, + local = local + ) + result_dict = self.merge_results(os.path.join(result_dir, + name+'_eval_results.json')) + + return float(result_dict['mean_score']) + else: + raise NotImplementedError( + 'Unsupported evaluation type: {}'.format(eval_type)) + + + class LmHarnessEvaluator(BaseEvaluator): diff --git a/data_juicer/core/sandbox/factories.py b/data_juicer/core/sandbox/factories.py index cbfd17355..e81545a23 100644 --- a/data_juicer/core/sandbox/factories.py +++ b/data_juicer/core/sandbox/factories.py @@ -1,4 +1,5 @@ -from data_juicer.core.sandbox.evaluators import Gpt3QualityEvaluator +from data_juicer.core.sandbox.evaluators import (Gpt3QualityEvaluator, + VBenchEvaluator) from data_juicer.core.sandbox.model_executors import (ModelscopeInferExecutor, ModelscopeTrainExecutor) @@ -15,9 +16,8 @@ def __call__(self, eval_cfg: dict = None, *args, **kwargs): return None evaluator = None - if eval_cfg.type == 'dj_video_evaluator': - pass - # evaluator = VideoEvaluator(eval_cfg) + if eval_cfg.type == 'vbench_video_evaluator': + evaluator = VBenchEvaluator(eval_cfg) if eval_cfg.type == 'dj_text_quality_classifier': evaluator = Gpt3QualityEvaluator(eval_cfg) diff --git a/docs/Sandbox-ZH.md b/docs/Sandbox-ZH.md index 9292a3083..accab8bd1 100644 --- a/docs/Sandbox-ZH.md +++ b/docs/Sandbox-ZH.md @@ -75,6 +75,7 @@ python tools/sandbox_starter.py --config configs/demo/sandbox/sandbox.yaml | 组件 | 功能 | `run`方法说明 | 参考材料 | | --- | --- | --- | --- | | `Gpt3QualityEvaluator` | 使用Data-Juicer复现的GPT-3文本质量分类器对数据集进行质量评估 |
- `eval_type`:该评估器评估对象类型,目前只支持`"data"`
- `eval_obj`:待评估的数据集路径
- 返回值:待评估数据集样本质量打分均值
| [Data-Juicer质量分类器工具集](https://github.com/modelscope/data-juicer/tree/main/tools/quality_classifier) | +| `VBenchEvaluator` | 使用VBench对基于prompt生成的视频进行多维度的评估 |
- `eval_type`:该评估器评估对象类型,目前只支持`"data"`
- `eval_obj`:未使用的参数
- 返回值:待评生成视频集各维度打分均值
| [VBench论文](https://arxiv.org/abs/2311.17982) | - 模型训练工厂 -- ModelTrainExecutorFactory diff --git a/docs/Sandbox.md b/docs/Sandbox.md index 8e1d8e622..4004f3460 100644 --- a/docs/Sandbox.md +++ b/docs/Sandbox.md @@ -75,6 +75,7 @@ The currently supported component factories and the components supported within | Component | Function | Desc. of Method `run` | Reference Materials | | --- | --- | --- | --- | | `Gpt3QualityEvaluator` | Evaluate the quality of a dataset using the GPT-3 text quality classifier reproduced by Data-Juicer. |
- `eval_type`: The type of the object to be evaluated by the evaluator, currently only supports `"data"`.
- `eval_obj`: The path to the dataset to be evaluated.
- Return: The average quality score of the dataset samples.
| [Data-Juicer Quality Classifier Toolkit](https://github.com/modelscope/data-juicer/tree/main/tools/quality_classifier) | +| `VBenchEvaluator` | Evaluate the generated videos according to given prompts in multi dimensions |
- `eval_type`: The type of the object to be evaluated by the evaluator, currently only supports `"data"`
- `eval_obj`: A useless parameter
- Return: The average score of generated videos in multi dimensions.
| [VBench paper](https://arxiv.org/abs/2311.17982) | - ModelTrainExecutorFactory diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt new file mode 100644 index 000000000..c8dab43cf --- /dev/null +++ b/environments/sandbox_requires.txt @@ -0,0 +1,2 @@ +torch +vbench \ No newline at end of file diff --git a/setup.py b/setup.py index 0cf944927..000bfe901 100644 --- a/setup.py +++ b/setup.py @@ -41,6 +41,8 @@ def get_install_requirements(require_f_paths, env_dir='environments'): 'tools': get_install_requirements( ['preprocess_requires.txt', 'quality_classifier_requires.txt']), + 'sandbox': + get_install_requirements(['sandbox_requires.txt']) } extra_requires['all'] = [v for v in extra_requires.values()] diff --git a/tools/mm_eval/vbench_metrics/VBench_full_info.json b/tools/mm_eval/vbench_metrics/VBench_full_info.json new file mode 100644 index 000000000..a3a4f0968 --- /dev/null +++ b/tools/mm_eval/vbench_metrics/VBench_full_info.json @@ -0,0 +1,9132 @@ +[ + { + "prompt_en": "In a still frame, a stop sign", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "a toilet, frozen in time", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "a laptop, frozen in time", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of alley", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of bar", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of barn", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of bathroom", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of bedroom", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of cliff", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, courtyard", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, gas station", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of house", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "indoor gymnasium, frozen in time", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of indoor library", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of kitchen", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of palace", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, parking lot", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, phone booth", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of restaurant", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of tower", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a bowl", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of an apple", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a bench", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a bed", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a chair", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a cup", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a dining table", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, a pear", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a bunch of grapes", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a bowl on the kitchen counter", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a beautiful, handcrafted ceramic bowl", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of an antique bowl", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of an exquisite mahogany dining table", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a wooden bench in the park", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a beautiful wrought-iron bench surrounded by blooming flowers", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, a park bench with a view of the lake", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a vintage rocking chair was placed on the porch", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the jail cell was small and dimly lit, with cold, steel bars", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the phone booth was tucked away in a quiet alley", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "a dilapidated phone booth stood as a relic of a bygone era on the sidewalk, frozen in time", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the old red barn stood weathered and iconic against the backdrop of the countryside", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a picturesque barn was painted a warm shade of red and nestled in a picturesque meadow", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, within the desolate desert, an oasis unfolded, characterized by the stoic presence of palm trees and a motionless, glassy pool of water", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, the Parthenon's majestic Doric columns stand in serene solitude atop the Acropolis, framed by the tranquil Athenian landscape", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, the Temple of Hephaestus, with its timeless Doric grace, stands stoically against the backdrop of a quiet Athens", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, the ornate Victorian streetlamp stands solemnly, adorned with intricate ironwork and stained glass panels", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the Stonehenge presented itself as an enigmatic puzzle, each colossal stone meticulously placed against the backdrop of tranquility", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, in the vast desert, an oasis nestled among dunes, featuring tall palm trees and an air of serenity", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "static view on a desert scene with an oasis, palm trees, and a clear, calm pool of water", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of an ornate Victorian streetlamp standing on a cobblestone street corner, illuminating the empty night", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a tranquil lakeside cabin nestled among tall pines, its reflection mirrored perfectly in the calm water", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, a vintage gas lantern, adorned with intricate details, gracing a historic cobblestone square", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, a tranquil Japanese tea ceremony room, with tatami mats, a delicate tea set, and a bonsai tree in the corner", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the Parthenon stands resolute in its classical elegance, a timeless symbol of Athens' cultural legacy", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the heart of Plaka, the neoclassical architecture of the old city harmonizes with the ancient ruins", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the desolate beauty of the American Southwest, Chaco Canyon's ancient ruins whispered tales of an enigmatic civilization that once thrived amidst the arid landscapes", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of at the edge of the Arabian Desert, the ancient city of Petra beckoned with its enigmatic rock-carved fa\u00e7ades", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, amidst the cobblestone streets, an Art Nouveau lamppost stood tall", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the quaint village square, a traditional wrought-iron streetlamp featured delicate filigree patterns and amber-hued glass panels", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of the lampposts were adorned with Art Deco motifs, their geometric shapes and frosted glass creating a sense of vintage glamour", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, in the picturesque square, a Gothic-style lamppost adorned with intricate stone carvings added a touch of medieval charm to the setting", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, in the heart of the old city, a row of ornate lantern-style streetlamps bathed the narrow alleyway in a warm, welcoming light", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the heart of the Utah desert, a massive sandstone arch spanned the horizon", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the Arizona desert, a massive stone bridge arched across a rugged canyon", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the corner of the minimalist tea room, a bonsai tree added a touch of nature's beauty to the otherwise simple and elegant space", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, amidst the hushed ambiance of the traditional tea room, a meticulously arranged tea set awaited, with porcelain cups, a bamboo whisk", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, nestled in the Zen garden, a rustic teahouse featured tatami seating and a traditional charcoal brazier", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a country estate's library featured elegant wooden shelves", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of beneath the shade of a solitary oak tree, an old wooden park bench sat patiently", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of beside a tranquil pond, a weeping willow tree draped its branches gracefully over the water's surface, creating a serene tableau of reflection and calm", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the Zen garden, a perfectly raked gravel path led to a serene rock garden", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, a tranquil pond was fringed by weeping cherry trees, their blossoms drifting lazily onto the glassy surface", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "In a still frame, within the historic library's reading room, rows of antique leather chairs and mahogany tables offered a serene haven for literary contemplation", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of a peaceful orchid garden showcased a variety of delicate blooms", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "A tranquil tableau of in the serene courtyard, a centuries-old stone well stood as a symbol of a bygone era, its mossy stones bearing witness to the passage of time", + "dimension": [ + "temporal_flickering" + ] + }, + { + "prompt_en": "a bird and a cat", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bird and cat" + } + } + }, + { + "prompt_en": "a cat and a dog", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "cat and dog" + } + } + }, + { + "prompt_en": "a dog and a horse", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "dog and horse" + } + } + }, + { + "prompt_en": "a horse and a sheep", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "horse and sheep" + } + } + }, + { + "prompt_en": "a sheep and a cow", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "sheep and cow" + } + } + }, + { + "prompt_en": "a cow and an elephant", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "cow and elephant" + } + } + }, + { + "prompt_en": "an elephant and a bear", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "elephant and bear" + } + } + }, + { + "prompt_en": "a bear and a zebra", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bear and zebra" + } + } + }, + { + "prompt_en": "a zebra and a giraffe", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "zebra and giraffe" + } + } + }, + { + "prompt_en": "a giraffe and a bird", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "giraffe and bird" + } + } + }, + { + "prompt_en": "a chair and a couch", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "chair and couch" + } + } + }, + { + "prompt_en": "a couch and a potted plant", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "couch and potted plant" + } + } + }, + { + "prompt_en": "a potted plant and a tv", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "potted plant and tv" + } + } + }, + { + "prompt_en": "a tv and a laptop", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "tv and laptop" + } + } + }, + { + "prompt_en": "a laptop and a remote", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "laptop and remote" + } + } + }, + { + "prompt_en": "a remote and a keyboard", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "remote and keyboard" + } + } + }, + { + "prompt_en": "a keyboard and a cell phone", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "keyboard and cell phone" + } + } + }, + { + "prompt_en": "a cell phone and a book", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "cell phone and book" + } + } + }, + { + "prompt_en": "a book and a clock", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "book and clock" + } + } + }, + { + "prompt_en": "a clock and a backpack", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "clock and backpack" + } + } + }, + { + "prompt_en": "a backpack and an umbrella", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "backpack and umbrella" + } + } + }, + { + "prompt_en": "an umbrella and a handbag", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "umbrella and handbag" + } + } + }, + { + "prompt_en": "a handbag and a tie", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "handbag and tie" + } + } + }, + { + "prompt_en": "a tie and a suitcase", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "tie and suitcase" + } + } + }, + { + "prompt_en": "a suitcase and a vase", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "suitcase and vase" + } + } + }, + { + "prompt_en": "a vase and scissors", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "vase and scissors" + } + } + }, + { + "prompt_en": "scissors and a teddy bear", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "scissors and teddy bear" + } + } + }, + { + "prompt_en": "a teddy bear and a frisbee", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "teddy bear and frisbee" + } + } + }, + { + "prompt_en": "a frisbee and skis", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "frisbee and skis" + } + } + }, + { + "prompt_en": "skis and a snowboard", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "skis and snowboard" + } + } + }, + { + "prompt_en": "a snowboard and a sports ball", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "snowboard and sports ball" + } + } + }, + { + "prompt_en": "a sports ball and a kite", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "sports ball and kite" + } + } + }, + { + "prompt_en": "a kite and a baseball bat", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "kite and baseball bat" + } + } + }, + { + "prompt_en": "a baseball bat and a baseball glove", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "baseball bat and baseball glove" + } + } + }, + { + "prompt_en": "a baseball glove and a skateboard", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "baseball glove and skateboard" + } + } + }, + { + "prompt_en": "a skateboard and a surfboard", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "skateboard and surfboard" + } + } + }, + { + "prompt_en": "a surfboard and a tennis racket", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "surfboard and tennis racket" + } + } + }, + { + "prompt_en": "a tennis racket and a bottle", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "tennis racket and bottle" + } + } + }, + { + "prompt_en": "a bottle and a chair", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bottle and chair" + } + } + }, + { + "prompt_en": "an airplane and a train", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "airplane and train" + } + } + }, + { + "prompt_en": "a train and a boat", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "train and boat" + } + } + }, + { + "prompt_en": "a boat and an airplane", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "boat and airplane" + } + } + }, + { + "prompt_en": "a bicycle and a car", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bicycle and car" + } + } + }, + { + "prompt_en": "a car and a motorcycle", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "car and motorcycle" + } + } + }, + { + "prompt_en": "a motorcycle and a bus", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "motorcycle and bus" + } + } + }, + { + "prompt_en": "a bus and a traffic light", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bus and traffic light" + } + } + }, + { + "prompt_en": "a traffic light and a fire hydrant", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "traffic light and fire hydrant" + } + } + }, + { + "prompt_en": "a fire hydrant and a stop sign", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "fire hydrant and stop sign" + } + } + }, + { + "prompt_en": "a stop sign and a parking meter", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "stop sign and parking meter" + } + } + }, + { + "prompt_en": "a parking meter and a truck", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "parking meter and truck" + } + } + }, + { + "prompt_en": "a truck and a bicycle", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "truck and bicycle" + } + } + }, + { + "prompt_en": "a toilet and a hair drier", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "toilet and hair drier" + } + } + }, + { + "prompt_en": "a hair drier and a toothbrush", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "hair drier and toothbrush" + } + } + }, + { + "prompt_en": "a toothbrush and a sink", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "toothbrush and sink" + } + } + }, + { + "prompt_en": "a sink and a toilet", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "sink and toilet" + } + } + }, + { + "prompt_en": "a wine glass and a chair", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "wine glass and chair" + } + } + }, + { + "prompt_en": "a cup and a couch", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "cup and couch" + } + } + }, + { + "prompt_en": "a fork and a potted plant", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "fork and potted plant" + } + } + }, + { + "prompt_en": "a knife and a tv", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "knife and tv" + } + } + }, + { + "prompt_en": "a spoon and a laptop", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "spoon and laptop" + } + } + }, + { + "prompt_en": "a bowl and a remote", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bowl and remote" + } + } + }, + { + "prompt_en": "a banana and a keyboard", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "banana and keyboard" + } + } + }, + { + "prompt_en": "an apple and a cell phone", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "apple and cell phone" + } + } + }, + { + "prompt_en": "a sandwich and a book", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "sandwich and book" + } + } + }, + { + "prompt_en": "an orange and a clock", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "orange and clock" + } + } + }, + { + "prompt_en": "broccoli and a backpack", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "broccoli and backpack" + } + } + }, + { + "prompt_en": "a carrot and an umbrella", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "carrot and umbrella" + } + } + }, + { + "prompt_en": "a hot dog and a handbag", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "hot dog and handbag" + } + } + }, + { + "prompt_en": "a pizza and a tie", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "pizza and tie" + } + } + }, + { + "prompt_en": "a donut and a suitcase", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "donut and suitcase" + } + } + }, + { + "prompt_en": "a cake and a vase", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "cake and vase" + } + } + }, + { + "prompt_en": "an oven and scissors", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "oven and scissors" + } + } + }, + { + "prompt_en": "a toaster and a teddy bear", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "toaster and teddy bear" + } + } + }, + { + "prompt_en": "a microwave and a frisbee", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "microwave and frisbee" + } + } + }, + { + "prompt_en": "a refrigerator and skis", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "refrigerator and skis" + } + } + }, + { + "prompt_en": "a bicycle and an airplane", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "bicycle and airplane" + } + } + }, + { + "prompt_en": "a car and a train", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "car and train" + } + } + }, + { + "prompt_en": "a motorcycle and a boat", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "motorcycle and boat" + } + } + }, + { + "prompt_en": "a person and a toilet", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "person and toilet" + } + } + }, + { + "prompt_en": "a person and a hair drier", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "person and hair drier" + } + } + }, + { + "prompt_en": "a person and a toothbrush", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "person and toothbrush" + } + } + }, + { + "prompt_en": "a person and a sink", + "dimension": [ + "multiple_objects" + ], + "auxiliary_info": { + "multiple_objects": { + "object": "person and sink" + } + } + }, + { + "prompt_en": "A person is riding a bike", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is marching", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is roller skating", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is tasting beer", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is clapping", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is drawing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is petting animal (not cat)", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is eating watermelon", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing harp", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is wrestling", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is riding scooter", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is sweeping floor", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is skateboarding", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is dunking basketball", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing flute", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is stretching leg", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is tying tie", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is skydiving", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shooting goal (soccer)", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing piano", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is finger snapping", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is canoeing or kayaking", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is laughing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is digging", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is clay pottery making", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shooting basketball", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is bending back", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shaking hands", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is bandaging", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is push up", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is catching or throwing frisbee", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing trumpet", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is flying kite", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is filling eyebrows", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shuffling cards", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is folding clothes", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is smoking", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is tai chi", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is squat", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing controller", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is throwing axe", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is giving or receiving award", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is air drumming", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is taking a shower", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is planting trees", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is sharpening knives", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is robot dancing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is rock climbing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is hula hooping", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is writing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is bungee jumping", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is pushing cart", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is cleaning windows", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is cutting watermelon", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is cheerleading", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is washing hands", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is ironing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is cutting nails", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is hugging", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is trimming or shaving beard", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is jogging", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is making bed", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is washing dishes", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is grooming dog", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is doing laundry", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is knitting", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is reading book", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is baby waking up", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is massaging legs", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is brushing teeth", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is crawling baby", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is motorcycling", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is driving car", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is sticking tongue out", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shaking head", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is sword fighting", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is doing aerobics", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is strumming guitar", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is riding or walking with horse", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is archery", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is catching or throwing baseball", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is playing chess", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is rock scissors paper", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is using computer", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is arranging flowers", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is bending metal", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is ice skating", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is climbing a rope", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is crying", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is dancing ballet", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is getting a haircut", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is running on treadmill", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is kissing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is counting money", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is barbequing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is peeling apples", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is milking cow", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is shining shoes", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is making snowman", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "A person is sailing", + "dimension": [ + "human_action" + ] + }, + { + "prompt_en": "a person swimming in ocean", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person giving a presentation to a room full of colleagues", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person washing the dishes", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person eating a burger", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person walking in the snowstorm", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person drinking coffee in a cafe", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person playing guitar", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bicycle leaning against a tree", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bicycle gliding through a snowy field", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bicycle slowing down to stop", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bicycle accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a car stuck in traffic during rush hour", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a car turning a corner", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a car slowing down to stop", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a car accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a motorcycle cruising along a coastal highway", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a motorcycle turning a corner", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a motorcycle slowing down to stop", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a motorcycle gliding through a snowy field", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a motorcycle accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an airplane soaring through a clear blue sky", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an airplane taking off", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an airplane landing smoothly on a runway", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an airplane accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bus turning a corner", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bus stuck in traffic during rush hour", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bus accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a train speeding down the tracks", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a train crossing over a tall bridge", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a train accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a truck turning a corner", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a truck anchored in a tranquil bay", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a truck stuck in traffic during rush hour", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a truck slowing down to stop", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a truck accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a boat sailing smoothly on a calm lake", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a boat slowing down to stop", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a boat accelerating to gain speed", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bird soaring gracefully in the sky", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bird building a nest from twigs and leaves", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bird flying over a snowy forest", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cat grooming itself meticulously with its tongue", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cat playing in park", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cat drinking water", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cat running happily", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a dog enjoying a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a dog playing in park", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a dog drinking water", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a dog running happily", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a horse bending down to drink water from a river", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a horse galloping across an open field", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a horse taking a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a horse running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a sheep bending down to drink water from a river", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a sheep taking a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a sheep running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cow bending down to drink water from a river", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cow chewing cud while resting in a tranquil barn", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a cow running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an elephant spraying itself with water using its trunk to cool down", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an elephant taking a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "an elephant running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bear catching a salmon in its powerful jaws", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bear sniffing the air for scents of food", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bear climbing a tree", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a bear hunting for prey", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a zebra bending down to drink water from a river", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a zebra running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a zebra taking a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a giraffe bending down to drink water from a river", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a giraffe taking a peaceful walk", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a giraffe running to join a herd of its kind", + "dimension": [ + "subject_consistency", + "dynamic_degree", + "motion_smoothness" + ] + }, + { + "prompt_en": "a person", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "person" + } + } + }, + { + "prompt_en": "a bicycle", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bicycle" + } + } + }, + { + "prompt_en": "a car", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "car" + } + } + }, + { + "prompt_en": "a motorcycle", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "motorcycle" + } + } + }, + { + "prompt_en": "an airplane", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "airplane" + } + } + }, + { + "prompt_en": "a bus", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bus" + } + } + }, + { + "prompt_en": "a train", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "train" + } + } + }, + { + "prompt_en": "a truck", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "truck" + } + } + }, + { + "prompt_en": "a boat", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "boat" + } + } + }, + { + "prompt_en": "a traffic light", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "traffic light" + } + } + }, + { + "prompt_en": "a fire hydrant", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "fire hydrant" + } + } + }, + { + "prompt_en": "a stop sign", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "stop sign" + } + } + }, + { + "prompt_en": "a parking meter", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "parking meter" + } + } + }, + { + "prompt_en": "a bench", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bench" + } + } + }, + { + "prompt_en": "a bird", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bird" + } + } + }, + { + "prompt_en": "a cat", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "cat" + } + } + }, + { + "prompt_en": "a dog", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "dog" + } + } + }, + { + "prompt_en": "a horse", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "horse" + } + } + }, + { + "prompt_en": "a sheep", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "sheep" + } + } + }, + { + "prompt_en": "a cow", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "cow" + } + } + }, + { + "prompt_en": "an elephant", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "elephant" + } + } + }, + { + "prompt_en": "a bear", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bear" + } + } + }, + { + "prompt_en": "a zebra", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "zebra" + } + } + }, + { + "prompt_en": "a giraffe", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "giraffe" + } + } + }, + { + "prompt_en": "a backpack", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "backpack" + } + } + }, + { + "prompt_en": "an umbrella", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "umbrella" + } + } + }, + { + "prompt_en": "a handbag", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "handbag" + } + } + }, + { + "prompt_en": "a tie", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "tie" + } + } + }, + { + "prompt_en": "a suitcase", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "suitcase" + } + } + }, + { + "prompt_en": "a frisbee", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "frisbee" + } + } + }, + { + "prompt_en": "skis", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "skis" + } + } + }, + { + "prompt_en": "a snowboard", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "snowboard" + } + } + }, + { + "prompt_en": "a sports ball", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "sports ball" + } + } + }, + { + "prompt_en": "a kite", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "kite" + } + } + }, + { + "prompt_en": "a baseball bat", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "baseball bat" + } + } + }, + { + "prompt_en": "a baseball glove", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "baseball glove" + } + } + }, + { + "prompt_en": "a skateboard", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "skateboard" + } + } + }, + { + "prompt_en": "a surfboard", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "surfboard" + } + } + }, + { + "prompt_en": "a tennis racket", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "tennis racket" + } + } + }, + { + "prompt_en": "a bottle", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bottle" + } + } + }, + { + "prompt_en": "a wine glass", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "wine glass" + } + } + }, + { + "prompt_en": "a cup", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "cup" + } + } + }, + { + "prompt_en": "a fork", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "fork" + } + } + }, + { + "prompt_en": "a knife", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "knife" + } + } + }, + { + "prompt_en": "a spoon", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "spoon" + } + } + }, + { + "prompt_en": "a bowl", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bowl" + } + } + }, + { + "prompt_en": "a banana", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "banana" + } + } + }, + { + "prompt_en": "an apple", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "apple" + } + } + }, + { + "prompt_en": "a sandwich", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "sandwich" + } + } + }, + { + "prompt_en": "an orange", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "orange" + } + } + }, + { + "prompt_en": "broccoli", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "broccoli" + } + } + }, + { + "prompt_en": "a carrot", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "carrot" + } + } + }, + { + "prompt_en": "a hot dog", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "hot dog" + } + } + }, + { + "prompt_en": "a pizza", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "pizza" + } + } + }, + { + "prompt_en": "a donut", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "donut" + } + } + }, + { + "prompt_en": "a cake", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "cake" + } + } + }, + { + "prompt_en": "a chair", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "chair" + } + } + }, + { + "prompt_en": "a couch", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "couch" + } + } + }, + { + "prompt_en": "a potted plant", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "potted plant" + } + } + }, + { + "prompt_en": "a bed", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "bed" + } + } + }, + { + "prompt_en": "a dining table", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "dining table" + } + } + }, + { + "prompt_en": "a toilet", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "toilet" + } + } + }, + { + "prompt_en": "a tv", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "tv" + } + } + }, + { + "prompt_en": "a laptop", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "laptop" + } + } + }, + { + "prompt_en": "a remote", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "remote" + } + } + }, + { + "prompt_en": "a keyboard", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "keyboard" + } + } + }, + { + "prompt_en": "a cell phone", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "cell phone" + } + } + }, + { + "prompt_en": "a microwave", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "microwave" + } + } + }, + { + "prompt_en": "an oven", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "oven" + } + } + }, + { + "prompt_en": "a toaster", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "toaster" + } + } + }, + { + "prompt_en": "a sink", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "sink" + } + } + }, + { + "prompt_en": "a refrigerator", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "refrigerator" + } + } + }, + { + "prompt_en": "a book", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "book" + } + } + }, + { + "prompt_en": "a clock", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "clock" + } + } + }, + { + "prompt_en": "a vase", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "vase" + } + } + }, + { + "prompt_en": "scissors", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "scissors" + } + } + }, + { + "prompt_en": "a teddy bear", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "teddy bear" + } + } + }, + { + "prompt_en": "a hair drier", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "hair drier" + } + } + }, + { + "prompt_en": "a toothbrush", + "dimension": [ + "object_class" + ], + "auxiliary_info": { + "object_class": { + "object": "toothbrush" + } + } + }, + { + "prompt_en": "a red bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white bicycle", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white car", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white bird", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a black cat", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white cat", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "an orange cat", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a yellow cat", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "a red umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white umbrella", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white suitcase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white bowl", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white chair", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white clock", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "a red vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "red" + } + } + }, + { + "prompt_en": "a green vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "green" + } + } + }, + { + "prompt_en": "a blue vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "blue" + } + } + }, + { + "prompt_en": "a yellow vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "yellow" + } + } + }, + { + "prompt_en": "an orange vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "orange" + } + } + }, + { + "prompt_en": "a purple vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "purple" + } + } + }, + { + "prompt_en": "a pink vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "pink" + } + } + }, + { + "prompt_en": "a black vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "black" + } + } + }, + { + "prompt_en": "a white vase", + "dimension": [ + "color" + ], + "auxiliary_info": { + "color": { + "color": "white" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "The bund Shanghai, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "The bund Shanghai, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "The bund Shanghai by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "The bund Shanghai, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "The bund Shanghai, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "The bund Shanghai, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "The bund Shanghai, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "The bund Shanghai, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "The bund Shanghai, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "a shark is swimming in the ocean, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "Gwen Stacy reading a book, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "An astronaut flying in space, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "An astronaut flying in space, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "An astronaut flying in space by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "An astronaut flying in space, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "An astronaut flying in space, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "An astronaut flying in space, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "An astronaut flying in space, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "An astronaut flying in space, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "An astronaut flying in space, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, Van Gogh style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "Van Gogh style" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, oil painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "oil painting" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks by Hokusai, in the style of Ukiyo", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "by Hokusai, in the style of Ukiyo" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, black and white", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "black and white" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, pixel art", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "pixel art" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, in cyberpunk style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "in cyberpunk style" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, animated style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "animated style" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, watercolor painting", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "watercolor painting" + } + } + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, surrealism style", + "dimension": [ + "appearance_style" + ], + "auxiliary_info": { + "appearance_style": { + "appearance_style": "surrealism style" + } + } + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "The bund Shanghai, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "A couple in formal evening wear going home get caught in a heavy downpour with umbrellas, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "An astronaut flying in space, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, in super slow motion", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, zoom in", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, zoom out", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, pan left", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, pan right", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, tilt up", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, tilt down", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, with an intense shaking effect", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, featuring a steady and smooth perspective", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks, racking focus", + "dimension": [ + "temporal_style" + ] + }, + { + "prompt_en": "Close up of grapes on a rotating table.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Turtle swimming in ocean.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A storm trooper vacuuming the beach.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A panda standing on a surfboard in the ocean in sunset.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An astronaut feeding ducks on a sunny afternoon, reflection from the water.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Two pandas discussing an academic paper.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Sunset time lapse at the beach with moving clouds and colors in the sky.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A fat rabbit wearing a purple robe walking through a fantasy landscape.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A koala bear playing piano in the forest.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An astronaut flying in space.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Fireworks.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An animated painting of fluffy white clouds moving in sky.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Flying through fantasy landscapes.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A bigfoot walking in the snowstorm.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A squirrel eating a burger.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cat wearing sunglasses and working as a lifeguard at a pool.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Snow rocky mountains peaks canyon. snow blanketed rocky mountains surround and shadow deep canyons. the canyons twist and bend through the high elevated mountain peaks.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Splash of turquoise water in extreme slow motion, alpha channel included.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "an ice cream is melting on the table.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "a drone flying over a snowy forest.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "a shark is swimming in the ocean.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Aerial panoramic video from a drone of a fantasy land.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "a teddy bear is swimming in the ocean.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "time lapse of sunrise on mars.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "golden fish swimming in the ocean.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An artist brush painting on a canvas close up.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A drone view of celebration with Christmas tree and fireworks, starry sky - background.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "happy dog wearing a yellow turtleneck, studio, portrait, facing camera, dark background", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Origami dancers in white paper, 3D render, on white background, studio shot, dancing modern dance.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Campfire at night in a snowy forest with starry sky in the background.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "a fantasy landscape", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A 3D model of a 1800s victorian house.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "this is how I do makeup in the morning.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A raccoon that looks like a turtle, digital art.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Robot dancing in Times Square.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Busy freeway at night.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Balloon full of water exploding in extreme slow motion.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An astronaut is riding a horse in the space in a photorealistic style.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Macro slo-mo. Slow motion cropped closeup of roasted coffee beans falling into an empty bowl.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Sewing machine, old sewing machine working.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Motion colour drop in water, ink swirling in water, colourful ink in water, abstraction fancy dream cloud of ink.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Few big purple plums rotating on the turntable. water drops appear on the skin during rotation. isolated on the white background. close-up. macro.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Vampire makeup face of beautiful girl, red contact lenses.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Ashtray full of butts on table, smoke flowing on black background, close-up", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Pacific coast, carmel by the sea ocean and waves.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A teddy bear is playing drum kit in NYC Times Square.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A corgi is playing drum kit.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An Iron man is playing the electronic guitar, high electronic guitar.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A raccoon is playing the electronic guitar.", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background by Vincent van Gogh", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A corgi's head depicted as an explosion of a nebula", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A fantasy landscape", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A future where humans have achieved teleportation technology", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A jellyfish floating through the ocean, with bioluminescent tentacles", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A Mars rover moving on Mars", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A panda drinking coffee in a cafe in Paris", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A space shuttle launching into orbit, with flames and smoke billowing out from the engines", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A steam train moving on a mountainside", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A super cool giant robot in Cyberpunk Beijing", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A tropical beach at sunrise, with palm trees and crystal-clear water in the foreground", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Cinematic shot of Van Gogh's selfie, Van Gogh style", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Gwen Stacy reading a book", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Iron Man flying in the sky", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "The bund Shanghai, oil painting", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Yoda playing guitar on the stage", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand by Hokusai, in the style of Ukiyo", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A beautiful coastal beach in spring, waves lapping on sand by Vincent van Gogh", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A boat sailing leisurely along the Seine River with the Eiffel Tower in background", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A car moving slowly on an empty street, rainy evening", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cat eating food out of a bowl", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cat wearing sunglasses at a pool", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A confused panda in calculus class", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cute fluffy panda eating Chinese food in a restaurant", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cute happy Corgi playing in park, sunset", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A cute raccoon playing guitar in a boat on the ocean", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A happy fuzzy panda playing guitar nearby a campfire, snow mountain in the background", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A lightning striking atop of eiffel tower, dark clouds in the sky", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A modern art museum, with colorful paintings", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A panda cooking in the kitchen", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A panda playing on a swing set", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A polar bear is playing guitar", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A raccoon dressed in suit playing the trumpet, stage background", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A robot DJ is playing the turntable, in heavy raining futuristic tokyo rooftop cyberpunk night, sci-fi, fantasy", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A shark swimming in clear Caribbean ocean", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A super robot protecting city", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "A teddy bear washing the dishes", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An epic tornado attacking above a glowing city at night, the tornado is made of smoke", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "An oil painting of a couple in formal evening wear going home get caught in a heavy downpour with umbrellas", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Clown fish swimming through the coral reef", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Hyper-realistic spaceship landing on Mars", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "The bund Shanghai, vibrant color", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Vincent van Gogh is painting in the room", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "Yellow flowers swing in the wind", + "dimension": [ + "overall_consistency", + "aesthetic_quality", + "imaging_quality" + ] + }, + { + "prompt_en": "alley", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "alley" + } + } + } + }, + { + "prompt_en": "amusement park", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "amusement park" + } + } + } + }, + { + "prompt_en": "aquarium", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "aquarium" + } + } + } + }, + { + "prompt_en": "arch", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "arch" + } + } + } + }, + { + "prompt_en": "art gallery", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "art gallery" + } + } + } + }, + { + "prompt_en": "bathroom", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "bathroom" + } + } + } + }, + { + "prompt_en": "bakery shop", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "bakery shop" + } + } + } + }, + { + "prompt_en": "ballroom", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "ballroom" + } + } + } + }, + { + "prompt_en": "bar", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "bar" + } + } + } + }, + { + "prompt_en": "barn", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "barn" + } + } + } + }, + { + "prompt_en": "basement", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "basement" + } + } + } + }, + { + "prompt_en": "beach", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "beach" + } + } + } + }, + { + "prompt_en": "bedroom", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "bedroom" + } + } + } + }, + { + "prompt_en": "bridge", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "bridge" + } + } + } + }, + { + "prompt_en": "botanical garden", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "botanical garden" + } + } + } + }, + { + "prompt_en": "cafeteria", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "cafeteria" + } + } + } + }, + { + "prompt_en": "campsite", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "campsite" + } + } + } + }, + { + "prompt_en": "campus", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "campus" + } + } + } + }, + { + "prompt_en": "carrousel", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "carrousel" + } + } + } + }, + { + "prompt_en": "castle", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "castle" + } + } + } + }, + { + "prompt_en": "cemetery", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "cemetery" + } + } + } + }, + { + "prompt_en": "classroom", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "classroom" + } + } + } + }, + { + "prompt_en": "cliff", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "cliff" + } + } + } + }, + { + "prompt_en": "crosswalk", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "crosswalk" + } + } + } + }, + { + "prompt_en": "construction site", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "construction site" + } + } + } + }, + { + "prompt_en": "corridor", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "corridor" + } + } + } + }, + { + "prompt_en": "courtyard", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "courtyard" + } + } + } + }, + { + "prompt_en": "desert", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "desert" + } + } + } + }, + { + "prompt_en": "downtown", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "downtown" + } + } + } + }, + { + "prompt_en": "driveway", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "driveway" + } + } + } + }, + { + "prompt_en": "farm", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "farm" + } + } + } + }, + { + "prompt_en": "food court", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "food court" + } + } + } + }, + { + "prompt_en": "football field", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "football field" + } + } + } + }, + { + "prompt_en": "forest road", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "forest road" + } + } + } + }, + { + "prompt_en": "fountain", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "fountain" + } + } + } + }, + { + "prompt_en": "gas station", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "gas station" + } + } + } + }, + { + "prompt_en": "glacier", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "glacier" + } + } + } + }, + { + "prompt_en": "golf course", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "golf course" + } + } + } + }, + { + "prompt_en": "indoor gymnasium", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "indoor gymnasium" + } + } + } + }, + { + "prompt_en": "harbor", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "harbor" + } + } + } + }, + { + "prompt_en": "highway", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "highway" + } + } + } + }, + { + "prompt_en": "hospital", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "hospital" + } + } + } + }, + { + "prompt_en": "house", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "house" + } + } + } + }, + { + "prompt_en": "iceberg", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "iceberg" + } + } + } + }, + { + "prompt_en": "industrial area", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "industrial area" + } + } + } + }, + { + "prompt_en": "jail cell", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "jail cell" + } + } + } + }, + { + "prompt_en": "junkyard", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "junkyard" + } + } + } + }, + { + "prompt_en": "kitchen", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "kitchen" + } + } + } + }, + { + "prompt_en": "indoor library", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "indoor library" + } + } + } + }, + { + "prompt_en": "lighthouse", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "lighthouse" + } + } + } + }, + { + "prompt_en": "laboratory", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "laboratory" + } + } + } + }, + { + "prompt_en": "mansion", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "mansion" + } + } + } + }, + { + "prompt_en": "marsh", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "marsh" + } + } + } + }, + { + "prompt_en": "mountain", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "mountain" + } + } + } + }, + { + "prompt_en": "indoor movie theater", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "indoor movie theater" + } + } + } + }, + { + "prompt_en": "indoor museum", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "indoor museum" + } + } + } + }, + { + "prompt_en": "music studio", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "music studio" + } + } + } + }, + { + "prompt_en": "nursery", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "nursery" + } + } + } + }, + { + "prompt_en": "ocean", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "ocean" + } + } + } + }, + { + "prompt_en": "office", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "office" + } + } + } + }, + { + "prompt_en": "palace", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "palace" + } + } + } + }, + { + "prompt_en": "parking lot", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "parking lot" + } + } + } + }, + { + "prompt_en": "pharmacy", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "pharmacy" + } + } + } + }, + { + "prompt_en": "phone booth", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "phone booth" + } + } + } + }, + { + "prompt_en": "raceway", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "raceway" + } + } + } + }, + { + "prompt_en": "restaurant", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "restaurant" + } + } + } + }, + { + "prompt_en": "river", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "river" + } + } + } + }, + { + "prompt_en": "science museum", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "science museum" + } + } + } + }, + { + "prompt_en": "shower", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "shower" + } + } + } + }, + { + "prompt_en": "ski slope", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "ski slope" + } + } + } + }, + { + "prompt_en": "sky", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "sky" + } + } + } + }, + { + "prompt_en": "skyscraper", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "skyscraper" + } + } + } + }, + { + "prompt_en": "baseball stadium", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "baseball stadium" + } + } + } + }, + { + "prompt_en": "staircase", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "staircase" + } + } + } + }, + { + "prompt_en": "street", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "street" + } + } + } + }, + { + "prompt_en": "supermarket", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "supermarket" + } + } + } + }, + { + "prompt_en": "indoor swimming pool", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "indoor swimming pool" + } + } + } + }, + { + "prompt_en": "tower", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "tower" + } + } + } + }, + { + "prompt_en": "outdoor track", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "outdoor track" + } + } + } + }, + { + "prompt_en": "train railway", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "train railway" + } + } + } + }, + { + "prompt_en": "train station platform", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "train station platform" + } + } + } + }, + { + "prompt_en": "underwater coral reef", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "underwater coral reef" + } + } + } + }, + { + "prompt_en": "valley", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "valley" + } + } + } + }, + { + "prompt_en": "volcano", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "volcano" + } + } + } + }, + { + "prompt_en": "waterfall", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "waterfall" + } + } + } + }, + { + "prompt_en": "windmill", + "dimension": [ + "scene", + "background_consistency" + ], + "auxiliary_info": { + "scene": { + "scene": { + "scene": "windmill" + } + } + } + }, + { + "prompt_en": "a bicycle on the left of a car, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bicycle", + "object_b": "car", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a car on the right of a motorcycle, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "car", + "object_b": "motorcycle", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a motorcycle on the left of a bus, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "motorcycle", + "object_b": "bus", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a bus on the right of a traffic light, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bus", + "object_b": "traffic light", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a traffic light on the left of a fire hydrant, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "traffic light", + "object_b": "fire hydrant", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a fire hydrant on the right of a stop sign, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "fire hydrant", + "object_b": "stop sign", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a stop sign on the left of a parking meter, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "stop sign", + "object_b": "parking meter", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a parking meter on the right of a bench, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "parking meter", + "object_b": "bench", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a bench on the left of a truck, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bench", + "object_b": "truck", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a truck on the right of a bicycle, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "truck", + "object_b": "bicycle", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a bird on the left of a cat, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bird", + "object_b": "cat", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a cat on the right of a dog, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "cat", + "object_b": "dog", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a dog on the left of a horse, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "dog", + "object_b": "horse", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a horse on the right of a sheep, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "horse", + "object_b": "sheep", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a sheep on the left of a cow, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "sheep", + "object_b": "cow", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a cow on the right of an elephant, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "cow", + "object_b": "elephant", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "an elephant on the left of a bear, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "elephant", + "object_b": "bear", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a bear on the right of a zebra, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bear", + "object_b": "zebra", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a zebra on the left of a giraffe, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "zebra", + "object_b": "giraffe", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a giraffe on the right of a bird, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "giraffe", + "object_b": "bird", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a bottle on the left of a wine glass, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bottle", + "object_b": "wine glass", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a wine glass on the right of a cup, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "wine glass", + "object_b": "cup", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a cup on the left of a fork, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "cup", + "object_b": "fork", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a fork on the right of a knife, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "fork", + "object_b": "knife", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a knife on the left of a spoon, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "knife", + "object_b": "spoon", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a spoon on the right of a bowl, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "spoon", + "object_b": "bowl", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a bowl on the left of a bottle, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bowl", + "object_b": "bottle", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a potted plant on the left of a remote, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "potted plant", + "object_b": "remote", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a remote on the right of a clock, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "remote", + "object_b": "clock", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a clock on the left of a vase, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "clock", + "object_b": "vase", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a vase on the right of scissors, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "vase", + "object_b": "scissors", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "scissors on the left of a teddy bear, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "scissors", + "object_b": "teddy bear", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a teddy bear on the right of a potted plant, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "teddy bear", + "object_b": "potted plant", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a frisbee on the left of a sports ball, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "frisbee", + "object_b": "sports ball", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a sports ball on the right of a baseball bat, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "sports ball", + "object_b": "baseball bat", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a baseball bat on the left of a baseball glove, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "baseball bat", + "object_b": "baseball glove", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a baseball glove on the right of a tennis racket, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "baseball glove", + "object_b": "tennis racket", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a tennis racket on the left of a frisbee, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "tennis racket", + "object_b": "frisbee", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a toilet on the left of a hair drier, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "toilet", + "object_b": "hair drier", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a hair drier on the right of a toothbrush, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "hair drier", + "object_b": "toothbrush", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a toothbrush on the left of a sink, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "toothbrush", + "object_b": "sink", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a sink on the right of a toilet, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "sink", + "object_b": "toilet", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a chair on the left of a couch, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "chair", + "object_b": "couch", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a couch on the right of a bed, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "couch", + "object_b": "bed", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a bed on the left of a tv, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "bed", + "object_b": "tv", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a tv on the right of a dining table, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "tv", + "object_b": "dining table", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a dining table on the left of a chair, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "dining table", + "object_b": "chair", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "an airplane on the left of a train, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "airplane", + "object_b": "train", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "a train on the right of a boat, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "train", + "object_b": "boat", + "relationship": "on the right of" + } + } + } + }, + { + "prompt_en": "a boat on the left of an airplane, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "boat", + "object_b": "airplane", + "relationship": "on the left of" + } + } + } + }, + { + "prompt_en": "an oven on the top of a toaster, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "oven", + "object_b": "toaster", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "an oven on the bottom of a toaster, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "oven", + "object_b": "toaster", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a toaster on the top of a microwave, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "toaster", + "object_b": "microwave", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a toaster on the bottom of a microwave, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "toaster", + "object_b": "microwave", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a microwave on the top of an oven, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "microwave", + "object_b": "oven", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a microwave on the bottom of an oven, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "microwave", + "object_b": "oven", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a banana on the top of an apple, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "banana", + "object_b": "apple", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a banana on the bottom of an apple, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "banana", + "object_b": "apple", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "an apple on the top of a sandwich, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "apple", + "object_b": "sandwich", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "an apple on the bottom of a sandwich, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "apple", + "object_b": "sandwich", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a sandwich on the top of an orange, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "sandwich", + "object_b": "orange", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a sandwich on the bottom of an orange, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "sandwich", + "object_b": "orange", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "an orange on the top of a carrot, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "orange", + "object_b": "carrot", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "an orange on the bottom of a carrot, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "orange", + "object_b": "carrot", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a carrot on the top of a hot dog, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "carrot", + "object_b": "hot dog", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a carrot on the bottom of a hot dog, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "carrot", + "object_b": "hot dog", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a hot dog on the top of a pizza, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "hot dog", + "object_b": "pizza", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a hot dog on the bottom of a pizza, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "hot dog", + "object_b": "pizza", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a pizza on the top of a donut, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "pizza", + "object_b": "donut", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a pizza on the bottom of a donut, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "pizza", + "object_b": "donut", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a donut on the top of broccoli, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "donut", + "object_b": "broccoli", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a donut on the bottom of broccoli, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "donut", + "object_b": "broccoli", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "broccoli on the top of a banana, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "broccoli", + "object_b": "banana", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "broccoli on the bottom of a banana, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "broccoli", + "object_b": "banana", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "skis on the top of a snowboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "skis", + "object_b": "snowboard", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "skis on the bottom of a snowboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "skis", + "object_b": "snowboard", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a snowboard on the top of a kite, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "snowboard", + "object_b": "kite", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a snowboard on the bottom of a kite, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "snowboard", + "object_b": "kite", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a kite on the top of a skateboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "kite", + "object_b": "skateboard", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a kite on the bottom of a skateboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "kite", + "object_b": "skateboard", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a skateboard on the top of a surfboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "skateboard", + "object_b": "surfboard", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a skateboard on the bottom of a surfboard, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "skateboard", + "object_b": "surfboard", + "relationship": "on the bottom of" + } + } + } + }, + { + "prompt_en": "a surfboard on the top of skis, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "surfboard", + "object_b": "skis", + "relationship": "on the top of" + } + } + } + }, + { + "prompt_en": "a surfboard on the bottom of skis, front view", + "dimension": [ + "spatial_relationship" + ], + "auxiliary_info": { + "spatial_relationship": { + "spatial_relationship": { + "object_a": "surfboard", + "object_b": "skis", + "relationship": "on the bottom of" + } + } + } + } +] \ No newline at end of file diff --git a/tools/mm_eval/vbench_metrics/evaluate.py b/tools/mm_eval/vbench_metrics/evaluate.py new file mode 100644 index 000000000..dbb35cca4 --- /dev/null +++ b/tools/mm_eval/vbench_metrics/evaluate.py @@ -0,0 +1,164 @@ +"""VBench from the paper +"VBench: Comprehensive Benchmark Suite for Video Generative Models". +Matches the original implementation at +https://github.com/Vchitect/VBench/blob/master/evaluate.py""" + +import torch +import os +from vbench import VBench +from datetime import datetime +import argparse +import json + +def parse_args(): + + CUR_DIR = os.path.dirname(os.path.abspath(__file__)) + parser = argparse.ArgumentParser(description='VBench', formatter_class=argparse.RawTextHelpFormatter) + parser.add_argument( + "--output_path", + type=str, + default='./evaluation_results/', + help="output path to save the evaluation results", + ) + parser.add_argument( + "--full_json_dir", + type=str, + default=f'{CUR_DIR}/VBench_full_info.json', + help="path to save the json file that contains the prompt and dimension information", + ) + parser.add_argument( + "--videos_path", + type=str, + required=True, + help="folder that contains the sampled videos", + ) + parser.add_argument( + "--dimension", + nargs='+', + required=True, + help="list of evaluation dimensions, usage: --dimension ", + ) + parser.add_argument( + "--load_ckpt_from_local", + type=bool, + required=False, + help="whether load checkpoints from local default paths (assuming you have downloaded the checkpoints locally", + ) + parser.add_argument( + "--read_frame", + type=bool, + required=False, + help="whether directly read frames, or directly read videos", + ) + parser.add_argument( + "--mode", + choices=['custom_input', 'vbench_standard', 'vbench_category'], + default='vbench_standard', + help="""This flags determine the mode of evaluations, choose one of the following: + 1. "custom_input": receive input prompt from either --prompt/--prompt_file flags or the filename + 2. "vbench_standard": evaluate on standard prompt suite of VBench + 3. "vbench_category": evaluate on specific category + """, + ) + parser.add_argument( + "--custom_input", + action="store_true", + required=False, + help="(deprecated) use --mode=\"custom_input\" instead", + ) + parser.add_argument( + "--prompt", + type=str, + default="", + help="""Specify the input prompt + If not specified, filenames will be used as input prompts + * Mutually exclusive to --prompt_file. + ** This option must be used with --custom_input flag + """ + ) + parser.add_argument( + "--prompt_file", + type=str, + required=False, + help="""Specify the path of the file that contains prompt lists + If not specified, filenames will be used as input prompts + * Mutually exclusive to --prompt. + ** This option must be used with --custom_input flag + """ + ) + parser.add_argument( + "--category", + type=str, + required=False, + help="""This is for mode=='vbench_category' + The category to evaluate on, usage: --category=animal. + """, + ) + + ## for dimension specific params ### + parser.add_argument( + "--imaging_quality_preprocessing_mode", + type=str, + required=False, + default='longer', + help="""This is for setting preprocessing in imaging_quality + 1. 'shorter': if the shorter side is more than 512, the image is resized so that the shorter side is 512. + 2. 'longer': if the longer side is more than 512, the image is resized so that the longer side is 512. + 3. 'shorter_centercrop': if the shorter side is more than 512, the image is resized so that the shorter side is 512. + Then the center 512 x 512 after resized is used for evaluation. + 4. 'None': no preprocessing + """, + ) + args = parser.parse_args() + return args + + +def main(): + args = parse_args() + print(f'args: {args}') + + device = torch.device("cuda") + my_VBench = VBench(device, args.full_json_dir, args.output_path) + + print(f'start evaluation') + + current_time = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') + + kwargs = {} + + prompt = [] + + assert args.custom_input == False, "(Deprecated) use --mode=custom_input instead" + + if (args.prompt_file is not None) and (args.prompt != ""): + raise Exception("--prompt_file and --prompt cannot be used together") + if (args.prompt_file is not None or args.prompt != "") and (not args.mode=='custom_input'): + raise Exception("must set --mode=custom_input for using external prompt") + + if args.prompt_file: + with open(args.prompt_file, 'r') as f: + prompt = json.load(f) + assert type(prompt) == dict, "Invalid prompt file format. The correct format is {\"video_path\": prompt, ... }" + elif args.prompt != "": + prompt = [args.prompt] + + if args.category != "": + kwargs['category'] = args.category + + kwargs['imaging_quality_preprocessing_mode'] = args.imaging_quality_preprocessing_mode + + my_VBench.evaluate( + videos_path = args.videos_path, + name = f'results_{current_time}', + prompt_list=prompt, # pass in [] to read prompt from filename + dimension_list = args.dimension, + local=args.load_ckpt_from_local, + read_frame=args.read_frame, + mode=args.mode, + **kwargs + ) + print('done') + + +if __name__ == "__main__": + main() \ No newline at end of file From 17d325a0561274819f9f32c57b62a00a132091da Mon Sep 17 00:00:00 2001 From: binke Date: Tue, 7 May 2024 14:31:54 +0800 Subject: [PATCH 02/13] merge main --- configs/demo/sandbox/vbench_eval_config.yaml | 13 +++++++------ data_juicer/core/sandbox/evaluators.py | 3 ++- environments/sandbox_requires.txt | 6 +++++- tools/sandbox_starter.py | 3 ++- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/configs/demo/sandbox/vbench_eval_config.yaml b/configs/demo/sandbox/vbench_eval_config.yaml index b53b45ea8..f760d210a 100644 --- a/configs/demo/sandbox/vbench_eval_config.yaml +++ b/configs/demo/sandbox/vbench_eval_config.yaml @@ -17,10 +17,11 @@ load_ckpt_from_local: false # The dimensions considered in this eval. # All dimensions include: ['subject_consistency', 'background_consistency', -# 'temporal_flickering', 'motion_smoothness', 'dynamic_degree', -# 'aesthetic_quality', 'imaging_quality', 'object_class', -# 'multiple_objects', 'human_action', 'color', 'spatial_relationship', -# 'scene', 'temporal_style', 'appearance_style', 'overall_consistency'] +# 'temporal_flickering', 'dynamic_degree', 'aesthetic_quality', +# 'object_class', 'multiple_objects', 'human_action', 'color', +# 'spatial_relationship', 'scene', 'temporal_style', +# 'appearance_style', 'overall_consistency'] +# NOTE: the evaluation of motion_smoothness and imaging_quality has bug in the pipy vbench repository. dimension_list: - -subject_consistency - -dynamic_degree + - subject_consistency + - dynamic_degree diff --git a/data_juicer/core/sandbox/evaluators.py b/data_juicer/core/sandbox/evaluators.py index a67e42d0f..c1c289e3e 100644 --- a/data_juicer/core/sandbox/evaluators.py +++ b/data_juicer/core/sandbox/evaluators.py @@ -1,5 +1,6 @@ import os import shutil +import torch from vbench import VBench from data_juicer import cuda_device_count @@ -101,7 +102,7 @@ def run(self, eval_type, eval_obj, **kwargs): else: device = torch.device("cpu") my_vbench = VBench(device, prompt_path, result_dir) - my_VBench.evaluate( + my_vbench.evaluate( videos_path = videos_path, name = name, dimension_list = dimension_list, diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt index c8dab43cf..cf0048038 100644 --- a/environments/sandbox_requires.txt +++ b/environments/sandbox_requires.txt @@ -1,2 +1,6 @@ torch -vbench \ No newline at end of file +vbench +wandb +fire +pyspark +detectron2@git+https://github.com/facebookresearch/detectron2.git@v0.6 \ No newline at end of file diff --git a/tools/sandbox_starter.py b/tools/sandbox_starter.py index 7b8298b50..8f2fe3771 100644 --- a/tools/sandbox_starter.py +++ b/tools/sandbox_starter.py @@ -2,8 +2,9 @@ import yaml from loguru import logger +from jsonargparse import dict_to_namespace -from data_juicer.config import dict_to_namespace, init_configs +from data_juicer.config import init_configs from data_juicer.core.sandbox.pipelines import SandBoxExecutor From 9a3e25b91fa9049feb7a83f424a7b1028e4e83af Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 14:22:10 +0800 Subject: [PATCH 03/13] vbench test done --- .github/workflows/unit-test.yml | 1 + Dockerfile | 4 + README.md | 18 +-- README_ZH.md | 18 +-- configs/data_juicer_recipes/README.md | 8 ++ configs/data_juicer_recipes/README_ZH.md | 9 ++ .../general-video-refine-example.yaml | 65 ++++++++++ configs/demo/sandbox/vbench_eval_config.yaml | 15 +-- data_juicer/config/config.py | 45 ++++++- data_juicer/core/executor.py | 3 + data_juicer/core/exporter.py | 12 ++ data_juicer/core/ray_executor.py | 3 + data_juicer/core/sandbox/evaluators.py | 50 ++++---- data_juicer/ops/base_op.py | 1 + .../ops/deduplicator/image_deduplicator.py | 27 ++-- .../deduplicator/ray_image_deduplicator.py | 27 ++-- data_juicer/utils/logger_utils.py | 14 ++- docs/Sandbox-ZH.md | 13 ++ docs/Sandbox.md | 13 ++ environments/minimal_requires.txt | 2 +- environments/sandbox_requires.txt | 11 +- environments/science_requires.txt | 4 +- setup.py | 3 +- tests/config/demo_4_test_bad_val.yaml | 19 +++ tests/config/test_config_funcs.py | 39 +++++- tools/mm_eval/README.md | 3 + tools/mm_eval/README_ZH.md | 3 + .../vbench_metrics/VBench_full_info.json | 2 +- tools/mm_eval/vbench_metrics/evaluate.py | 118 ++++++++++-------- tools/sandbox_starter.py | 3 +- 30 files changed, 416 insertions(+), 137 deletions(-) create mode 100644 configs/data_juicer_recipes/general-video-refine-example.yaml create mode 100644 tests/config/demo_4_test_bad_val.yaml create mode 100644 tools/mm_eval/README.md create mode 100644 tools/mm_eval/README_ZH.md diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 3eb21202d..4962d78dd 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -30,6 +30,7 @@ jobs: sudo apt-get install ffmpeg python -m pip install --upgrade pip pip install -v -e .[all] + pip install -v -e .[sandbox] - name: Increase swapfile run: | df -h diff --git a/Dockerfile b/Dockerfile index 03aa89a5b..3849c4e7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,9 @@ ENV JAVA_HOME=/opt/jdk WORKDIR /data-juicer +# install requirements which need to be installed from source +RUN pip install git+https://github.com/xinyu1205/recognize-anything.git --default-timeout 1000 + # install requirements first to better reuse installed library cache COPY environments/ environments/ RUN cat environments/* | xargs pip install --default-timeout 1000 @@ -23,6 +26,7 @@ RUN cat environments/* | xargs pip install --default-timeout 1000 # install data-juicer then COPY . . RUN pip install -v -e .[all] +RUN pip install -v -e .[sandbox] # install 3rd-party system dependencies RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y diff --git a/README.md b/README.md index b7a155275..59fddbd32 100644 --- a/README.md +++ b/README.md @@ -175,15 +175,15 @@ pip install -v -e .[tools] # install a subset of tools dependencies The dependency options are listed below: -| Tag | Description | -|--------------|----------------------------------------------------------------------------------------------| +| Tag | Description | +|------------------|----------------------------------------------------------------------------------------------| | `.` or `.[mini]` | Install minimal dependencies for basic Data-Juicer. | -| `.[all]` | Install all optional dependencies (including minimal dependencies and all of the following). | -| `.[sci]` | Install all dependencies for all OPs. | -| `.[dist]` | Install dependencies for distributed data processing. (Experimental) | -| `.[dev]` | Install dependencies for developing the package as contributors. | -| `.[tools]` | Install dependencies for dedicated tools, such as quality classifiers. | -| `.[sandbox]` | Install dependencies for sandbox, such as VBench for video evaluation. | +| `.[all]` | Install all dependencies except sandbox. | +| `.[sci]` | Install all dependencies for all OPs. | +| `.[dist]` | Install dependencies for distributed data processing. (Experimental) | +| `.[dev]` | Install dependencies for developing the package as contributors. | +| `.[tools]` | Install dependencies for dedicated tools, such as quality classifiers. | +| `.[sandbox]` | Install all dependencies for sandbox. | ### Using pip @@ -214,6 +214,8 @@ pip install py-data-juicer ```shell docker build -t datajuicer/data-juicer: . ``` + + - The format of `` is like `v0.2.0`, which is the same as release version tag. ### Installation check diff --git a/README_ZH.md b/README_ZH.md index 2f8068c02..3842e044c 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -158,15 +158,15 @@ pip install -v -e .[tools] # 安装部分工具库的依赖 依赖选项如下表所示: -| 标签 | 描述 | -|--------------|------------------------------| +| 标签 | 描述 | +|------------------|------------------------------| | `.` 或者 `.[mini]` | 安装支持 Data-Juicer 基础功能的最小依赖项 | -| `.[all]` | 安装所有可选依赖项(包括最小依赖项以及下面所有依赖项) | -| `.[sci]` | 安装所有算子的全量依赖 | -| `.[dist]` | 安装以分布式方式进行数据处理的依赖(实验性功能) | -| `.[dev]` | 安装作为贡献者开发 Data-Juicer 所需的依赖项 | -| `.[tools]` | 安装专用工具库(如质量分类器)所需的依赖项 | -| `.[sandbox]` | 安装沙河实验需要的依赖库,如用于视频评测的VBench | +| `.[all]` | 安装除了sandbox以外的所有依赖项 | +| `.[sci]` | 安装所有算子的全量依赖 | +| `.[dist]` | 安装以分布式方式进行数据处理的依赖(实验性功能) | +| `.[dev]` | 安装作为贡献者开发 Data-Juicer 所需的依赖项 | +| `.[tools]` | 安装专用工具库(如质量分类器)所需的依赖项 | +| `.[sandbox]` | 安装沙盒实验室的基础依赖 | ### 使用 pip 安装 @@ -193,6 +193,8 @@ pip install py-data-juicer ```shell docker build -t datajuicer/data-juicer: . ``` + + - ``的格式类似于`v0.2.0`,与发布(Release)的版本号相同。 ### 安装校验 diff --git a/configs/data_juicer_recipes/README.md b/configs/data_juicer_recipes/README.md index 1f6ad757c..57073fb2a 100644 --- a/configs/data_juicer_recipes/README.md +++ b/configs/data_juicer_recipes/README.md @@ -49,3 +49,11 @@ We use simple 3-σ rule to set the hyperparameters for ops in each recipe. |-------------------------------|-------| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | LLaVA-1.5-13B
(baseline) | **80.0** | 63.3 | 53.6 | 71.6 | **61.3** | 85.9 | 1531.3 | 67.7 | 63.6 | 61.6 | 72.5 | 36.1 | | LLaVA-1.5-13B
(refined pretrain dataset) | 79.94 | **63.5** | **54.09** | **74.20** | 60.82 | **86.67** | **1565.53** | **68.2** | **63.9** | **61.8** | **75.9** | **37.4** | + +## For Video Dataset + +We provide a video dataset processing recipe example for users to better utilize video-related OPs in [general-video-refine-example.yaml](general-video-refine-example.yaml). Here we apply three types of OPs: +- Text-Only: to improve the dataset quality according to the video captions. +- Video-Only: to improve the dataset quality according to the video features. +- Text-Video: to improve the dataset quality according to the alignment between text and videos. +Users can start to process their video datasets based on this recipe. diff --git a/configs/data_juicer_recipes/README_ZH.md b/configs/data_juicer_recipes/README_ZH.md index d7dd848d7..855e433d6 100644 --- a/configs/data_juicer_recipes/README_ZH.md +++ b/configs/data_juicer_recipes/README_ZH.md @@ -49,3 +49,12 @@ |---------------------------------|-------| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | LLaVA-1.5-13B
(基线) | **80.0** | 63.3 | 53.6 | 71.6 | **61.3** | 85.9 | 1531.3 | 67.7 | 63.6 | 61.6 | 72.5 | 36.1 | | LLaVA-1.5-13B
(完善后的预训练数据集) | 79.94 | **63.5** | **54.09** | **74.20** | 60.82 | **86.67** | **1565.53** | **68.2** | **63.9** | **61.8** | **75.9** | **37.4** | + +## 视频数据集 + +我们为用户提供了一个视频数据集处理菜谱样例以协助更好地使用视频相关的算子: [general-video-refine-example.yaml](general-video-refine-example.yaml) 。这里我们应用了三种类型的算子: +- 仅文本:根据视频描述提高数据集质量 +- 仅视频:根据视频性质提高数据集质量 +- 文本-视频:根据文本和视频间的对齐提高数据集质量 +用户可以基于这个菜谱开始他们的视频数据集处理流程。 +- \ No newline at end of file diff --git a/configs/data_juicer_recipes/general-video-refine-example.yaml b/configs/data_juicer_recipes/general-video-refine-example.yaml new file mode 100644 index 000000000..892c22ecb --- /dev/null +++ b/configs/data_juicer_recipes/general-video-refine-example.yaml @@ -0,0 +1,65 @@ +# Process config example including: +# - all global arguments +# - all ops and their arguments + +# global parameters +project_name: 'all' # project name for distinguish your configs +dataset_path: '/path/to/a/video-text/dataset.jsonl' + # accepted format: 'weight1(optional) dataset1-path weight2(optional) dataset2-path' +export_path: '/path/to/store/refined/dataset.jsonl' +np: 48 # number of subprocess to process your dataset + # Note: currently, we support specify only ONE key for each op, for cases requiring multiple keys, users can specify the op multiple times. We will only use the first key of `text_keys` when you set multiple keys. +open_tracer: true # whether to open the tracer to trace the changes during process. It might take more time when opening tracer + +# for multimodal data processing +video_key: 'videos' # key name of field to store the list of sample video paths. +video_special_token: '<__dj__video>' # the special token that represents a video in the text. In default, it's "<__dj__video>". You can specify your own special token according to your input dataset. + +eoc_special_token: '<|__dj__eoc|>' # the special token that represents the end of a chunk in the text. In default, it's "<|__dj__eoc|>". You can specify your own special token according to your input dataset. + +# process schedule: a list of several process operators with their arguments +# hyperparameters are set according to the 3-sigma stats on MSR-VTT dataset +process: + - language_id_score_filter: # filter text in specific language with language scores larger than a specific max value + lang: en # keep text in what language + min_score: 0.26311219 # the min language scores to filter text + - perplexity_filter: # filter text with perplexity score out of specific range + lang: en # compute perplexity in what language + max_ppl: 7376.81378 # the max perplexity score to filter text + - video_aesthetics_filter: # filter samples according to the aesthetics score of frame images extracted from videos. + hf_scorer_model: shunk031/aesthetics-predictor-v2-sac-logos-ava1-l14-linearMSE # Huggingface model name for the aesthetics predictor + min_score: 0.31767486 # the min aesthetics score of filter range + max_score: 1.0 # the max aesthetics score of filter range + frame_sampling_method: 'uniform' # sampling method of extracting frame images from the videos. Should be one of ["all_keyframe", "uniform"]. The former one extracts all key frames and the latter one extract specified number of frames uniformly from the video. Default: "uniform" with frame_num=3, considering that the number of keyframes can be large while their difference is usually small in terms of their aesthetics. + frame_num: 3 # the number of frames to be extracted uniformly from the video. Only works when frame_sampling_method is "uniform". If it's 1, only the middle frame will be extracted. If it's 2, only the first and the last frames will be extracted. If it's larger than 2, in addition to the first and the last frames, other frames will be extracted uniformly within the video duration. + reduce_mode: avg # reduce mode to the all frames extracted from videos, must be one of ['avg','max', 'min']. + any_or_all: any # keep this sample when any/all images meet the filter condition + - video_frames_text_similarity_filter: # keep samples those similarities between sampled video frame images and text within a specific range. + hf_clip: openai/clip-vit-base-patch32 # clip model name on huggingface to compute the similarity between frame image and text. It's kind of language-related. For example, for Chinese datasets, ChineseCLIP might be a better choice. + min_score: 0.16571071 # the min similarity to keep samples. + max_score: 1.0 # the max similarity to keep samples. + frame_sampling_method: all_keyframes # sampling method of extracting frame images from the videos. Should be one of ["all_keyframes", "uniform"]. The former one extracts all key frames and the latter one extract specified number of frames uniformly from the video. Default: "all_keyframes". + frame_num: 3 # the number of frames to be extracted uniformly from the video. Only works when frame_sampling_method is "uniform". If it's 1, only the middle frame will be extracted. If it's 2, only the first and the last frames will be extracted. If it's larger than 2, in addition to the first and the last frames, other frames will be extracted uniformly within the video duration. + horizontal_flip: false # flip frame image horizontally (left to right). + vertical_flip: false # flip frame image vertically (top to bottom). + reduce_mode: avg # reduce mode when one text corresponds to multiple videos in a chunk, must be one of ['avg','max', 'min']. + any_or_all: any # keep this sample when any/all videos meet the filter condition + - video_motion_score_filter: # Keep samples with video motion scores within a specific range. + min_score: 0.25 # the minimum motion score to keep samples + max_score: 10000.0 # the maximum motion score to keep samples + sampling_fps: 2 # the samplig rate of frames_per_second to compute optical flow + any_or_all: any # keep this sample when any/all videos meet the filter condition + - video_nsfw_filter: # filter samples according to the nsfw scores of videos in them + hf_nsfw_model: Falconsai/nsfw_image_detection # Huggingface model name for nsfw classification + score_threshold: 0.34847191 # the nsfw score threshold for samples, range from 0 to 1 + frame_sampling_method: all_keyframes # sampling method of extracting frame images from the videos. Should be one of ["all_keyframes", "uniform"]. The former one extracts all key frames and the latter one extract specified number of frames uniformly from the video. Default: "all_keyframes". + frame_num: 3 # the number of frames to be extracted uniformly from the video. Only works when frame_sampling_method is "uniform". If it's 1, only the middle frame will be extracted. If it's 2, only the first and the last frames will be extracted. If it's larger than 2, in addition to the first and the last frames, other frames will be extracted uniformly within the video duration. + reduce_mode: avg # reduce mode for multiple sampled video frames to compute nsfw scores of videos, must be one of ['avg','max', 'min']. + any_or_all: any # keep this sample when any/all images meet the filter condition + - video_watermark_filter: # filter samples according to the predicted watermark probabilities of videos in them + hf_watermark_model: amrul-hzz/watermark_detector # Huggingface model name for watermark classification + prob_threshold: 0.96510297 # the predicted watermark probability threshold for samples, range from 0 to 1 + frame_sampling_method: all_keyframes # sampling method of extracting frame images from the videos. Should be one of ["all_keyframes", "uniform"]. The former one extracts all key frames and the latter one extract specified number of frames uniformly from the video. Default: "all_keyframes". + frame_num: 3 # the number of frames to be extracted uniformly from the video. Only works when frame_sampling_method is "uniform". If it's 1, only the middle frame will be extracted. If it's 2, only the first and the last frames will be extracted. If it's larger than 2, in addition to the first and the last frames, other frames will be extracted uniformly within the video duration. + reduce_mode: avg # reduce mode for multiple sampled video frames to compute final predicted watermark probabilities of videos, must be one of ['avg','max', 'min']. + any_or_all: any # keep this sample when any/all images meet the filter condition diff --git a/configs/demo/sandbox/vbench_eval_config.yaml b/configs/demo/sandbox/vbench_eval_config.yaml index b53b45ea8..1ac40361f 100644 --- a/configs/demo/sandbox/vbench_eval_config.yaml +++ b/configs/demo/sandbox/vbench_eval_config.yaml @@ -16,11 +16,12 @@ eval_name: load_ckpt_from_local: false # The dimensions considered in this eval. -# All dimensions include: ['subject_consistency', 'background_consistency', -# 'temporal_flickering', 'motion_smoothness', 'dynamic_degree', -# 'aesthetic_quality', 'imaging_quality', 'object_class', -# 'multiple_objects', 'human_action', 'color', 'spatial_relationship', -# 'scene', 'temporal_style', 'appearance_style', 'overall_consistency'] +# All dimensions include: ['subject_consistency', 'background_consistency', 'temporal_flickering', +# 'motion_smoothness', 'dynamic_degree', 'aesthetic_quality', 'imaging_quality', 'object_class', +# 'multiple_objects', 'human_action', 'color', 'spatial_relationship', 'scene', 'temporal_style', +# 'appearance_style', 'overall_consistency'] +# NOTE: Current version of vbench in pypi lacks of a third party code for motion_smoothness. +# NOTE: Besides, the evaluation for appearance_style requires torch < 2.0. dimension_list: - -subject_consistency - -dynamic_degree + - subject_consistency + - dynamic_degree diff --git a/data_juicer/config/config.py b/data_juicer/config/config.py index b9bdefaeb..330ac82c8 100644 --- a/data_juicer/config/config.py +++ b/data_juicer/config/config.py @@ -1,11 +1,13 @@ +import copy import os import shutil import time -from argparse import ArgumentError +from argparse import ArgumentError, Namespace from typing import Dict, List, Tuple, Union from jsonargparse import (ActionConfigFile, ArgumentParser, dict_to_namespace, namespace_to_dict) +from jsonargparse.typehints import ActionTypeHint from jsonargparse.typing import ClosedUnitInterval, NonNegativeInt, PositiveInt from loguru import logger @@ -370,8 +372,8 @@ def init_setup_from_cfg(cfg): 2. update cache directory 3. update checkpoint and `temp_dir` of tempfile - :param cfg: a original cfg - :param cfg: a updated cfg + :param cfg: an original cfg + :param cfg: an updated cfg """ cfg.export_path = os.path.abspath(cfg.export_path) @@ -552,16 +554,16 @@ def update_op_process(cfg, parser): # e.g. # `python demo.py --config demo.yaml # --language_id_score_filter.lang en` + temp_cfg = cfg for i, op_in_process in enumerate(cfg.process): op_in_process_name = list(op_in_process.keys())[0] - temp_cfg = cfg if op_in_process_name not in option_in_commands: # update op params to temp cfg if set if op_in_process[op_in_process_name]: temp_cfg = parser.merge_config( - dict_to_namespace(op_in_process), cfg) + dict_to_namespace(op_in_process), temp_cfg) else: # args in the command line override the ones in `cfg.process` @@ -584,9 +586,42 @@ def update_op_process(cfg, parser): None if internal_op_para is None else namespace_to_dict(internal_op_para) } + + # check the op params via type hint + temp_parser = copy.deepcopy(parser) + recognized_args = set([ + action.dest for action in parser._actions + if hasattr(action, 'dest') and isinstance(action, ActionTypeHint) + ]) + + temp_args = namespace_to_arg_list(temp_cfg, + includes=recognized_args, + excludes=['config']) + temp_args = ['--config', temp_cfg.config[0].absolute] + temp_args + temp_parser.parse_args(temp_args) return cfg +def namespace_to_arg_list(namespace, prefix='', includes=None, excludes=None): + arg_list = [] + + for key, value in vars(namespace).items(): + + if issubclass(type(value), Namespace): + nested_args = namespace_to_arg_list(value, f'{prefix}{key}.') + arg_list.extend(nested_args) + elif value is not None: + concat_key = f'{prefix}{key}' + if includes is not None and concat_key not in includes: + continue + if excludes is not None and concat_key in excludes: + continue + arg_list.append(f'--{concat_key}') + arg_list.append(f'{value}') + + return arg_list + + def config_backup(cfg): cfg_path = cfg.config[0].absolute work_dir = cfg.work_dir diff --git a/data_juicer/core/executor.py b/data_juicer/core/executor.py index 5ffa6eb90..9ec12a35e 100644 --- a/data_juicer/core/executor.py +++ b/data_juicer/core/executor.py @@ -209,6 +209,9 @@ def run(self, load_data_np=None): desc=op_name + '_compute_stats') if self.cfg.use_checkpoint: prev = dataset + if op.stats_export_path is not None: + self.exporter.export_compute_stats( + dataset, op.stats_export_path) tmp = dataset.filter(op.process, num_proc=self.cfg.np, desc=op_name + '_process') diff --git a/data_juicer/core/exporter.py b/data_juicer/core/exporter.py index a8c7c35f9..fe74aacc5 100644 --- a/data_juicer/core/exporter.py +++ b/data_juicer/core/exporter.py @@ -195,6 +195,18 @@ def export(self, dataset): self._export_impl(dataset, self.export_path, self.suffix, self.export_stats) + def export_compute_stats(self, dataset, export_path): + """ + Export method for saving compute status in filters + """ + keep_stats_in_res_ds = self.keep_stats_in_res_ds + self.keep_stats_in_res_ds = True + self._export_impl(dataset, + export_path, + self.suffix, + export_stats=False) + self.keep_stats_in_res_ds = keep_stats_in_res_ds + @staticmethod def to_jsonl(dataset, export_path, num_proc=1, **kwargs): """ diff --git a/data_juicer/core/ray_executor.py b/data_juicer/core/ray_executor.py index a9ef0b908..d42d72f95 100644 --- a/data_juicer/core/ray_executor.py +++ b/data_juicer/core/ray_executor.py @@ -188,6 +188,9 @@ def process_batch_arrow(table: pa.Table) -> pa.Table: else: dataset = dataset.map(op.compute_stats, num_gpus=num_gpus) + if op.stats_export_path is not None: + dataset.write_json(op.stats_export_path, + force_ascii=False) dataset = dataset.filter(op.process) else: logger.error( diff --git a/data_juicer/core/sandbox/evaluators.py b/data_juicer/core/sandbox/evaluators.py index a67e42d0f..48fc93f64 100644 --- a/data_juicer/core/sandbox/evaluators.py +++ b/data_juicer/core/sandbox/evaluators.py @@ -1,5 +1,9 @@ +import json import os import shutil + +import torch +from loguru import logger from vbench import VBench from data_juicer import cuda_device_count @@ -75,18 +79,12 @@ def run(self, eval_type, eval_obj, **kwargs): raise NotImplementedError( 'To be refactored from gpt4v related operators/tools.') + class VBenchEvaluator(BaseEvaluator): - def merge_results(self, result_path): - result_dict = {'mean_score': 0, 'detail': {}} - scores = [] + def get_score(self, result_path, dimension): cur_result = json.load(open(result_path)) - for dimension in cur_result: - score = cur_result[dimension][0] - result_dict['detail'][dimension] = score - scores.append(score) - result_dict['mean_score'] = sum(scores) / len(scores) - return result_dict + return cur_result[dimension][0] def run(self, eval_type, eval_obj, **kwargs): if eval_type == 'data': @@ -97,25 +95,33 @@ def run(self, eval_type, eval_obj, **kwargs): dimension_list = self.eval_config.dimension_list local = self.eval_config.load_ckpt_from_local if cuda_device_count() > 0: - device = torch.device("cuda") + device = torch.device('cuda') else: - device = torch.device("cpu") + device = torch.device('cpu') my_vbench = VBench(device, prompt_path, result_dir) - my_VBench.evaluate( - videos_path = videos_path, - name = name, - dimension_list = dimension_list, - local = local - ) - result_dict = self.merge_results(os.path.join(result_dir, - name+'_eval_results.json')) - + result_dict = {'mean_score': 0, 'detail': {}} + scores = [] + for dimension in dimension_list: + logger.info(f'Evaluating for {dimension}') + my_vbench.evaluate(videos_path=videos_path, + name=f'{name}-{dimension}', + dimension_list=[dimension], + local=local) + score = self.get_score(result_path=os.path.join( + result_dir, f'{name}-{dimension}_eval_results.json'), + dimension=dimension) + result_dict['detail'][dimension] = score + scores.append(score) + result_dict['mean_score'] = sum(scores) / len(scores) + + with open(os.path.join(result_dir, name + '_merged_results.json'), + 'w') as f: + json.dump(result_dict, f) + return float(result_dict['mean_score']) else: raise NotImplementedError( 'Unsupported evaluation type: {}'.format(eval_type)) - - class LmHarnessEvaluator(BaseEvaluator): diff --git a/data_juicer/ops/base_op.py b/data_juicer/ops/base_op.py index e5464619a..b5b2e79d9 100644 --- a/data_juicer/ops/base_op.py +++ b/data_juicer/ops/base_op.py @@ -153,6 +153,7 @@ def __init__(self, *args, **kwargs): from data_juicer.core.data import wrap_func_with_nested_access self.compute_stats = wrap_func_with_nested_access(self.compute_stats) + self.stats_export_path = kwargs.get('stats_export_path', None) def compute_stats(self, sample, context=False): """ diff --git a/data_juicer/ops/deduplicator/image_deduplicator.py b/data_juicer/ops/deduplicator/image_deduplicator.py index 2ca191c66..50ccc1014 100644 --- a/data_juicer/ops/deduplicator/image_deduplicator.py +++ b/data_juicer/ops/deduplicator/image_deduplicator.py @@ -13,14 +13,21 @@ OP_NAME = 'image_deduplicator' with AvailabilityChecking(['imagededup'], OP_NAME): - from imagededup.methods import AHash, DHash, PHash, WHash + import imagededup # noqa: F401 - HASH_METHOD = { - 'phash': PHash, - 'dhash': DHash, - 'whash': WHash, - 'ahash': AHash - } + HASH_METHOD = {'phash', 'dhash', 'whash', 'ahash'} + + def get_hash_method(method_name): + from imagededup.methods import AHash, DHash, PHash, WHash + + mapping = { + 'phash': PHash, + 'dhash': DHash, + 'whash': WHash, + 'ahash': AHash + } + + return mapping[method_name] @OPERATORS.register_module(OP_NAME) @@ -40,10 +47,10 @@ def __init__(self, method: str = 'phash', *args, **kwargs): :param kwargs: extra args """ super().__init__(*args, **kwargs) - if method not in HASH_METHOD.keys(): + if method not in HASH_METHOD: raise ValueError(f'Keep strategy [{method}] is not supported. ' - f'Can only be one of {HASH_METHOD.keys()}.') - self.hasher = HASH_METHOD[method]() + f'Can only be one of {HASH_METHOD}.') + self.hasher = get_hash_method(method)() def compute_hash(self, sample, context=False): # check if it's computed already diff --git a/data_juicer/ops/deduplicator/ray_image_deduplicator.py b/data_juicer/ops/deduplicator/ray_image_deduplicator.py index a95cd3baa..10530c48b 100644 --- a/data_juicer/ops/deduplicator/ray_image_deduplicator.py +++ b/data_juicer/ops/deduplicator/ray_image_deduplicator.py @@ -11,14 +11,21 @@ OP_NAME = 'ray_image_deduplicator' with AvailabilityChecking(['imagededup'], OP_NAME): - from imagededup.methods import AHash, DHash, PHash, WHash + import imagededup # noqa: F401 - HASH_METHOD = { - 'phash': PHash, - 'dhash': DHash, - 'whash': WHash, - 'ahash': AHash - } + HASH_METHOD = {'phash', 'dhash', 'whash', 'ahash'} + + def get_hash_method(method_name): + from imagededup.methods import AHash, DHash, PHash, WHash + + mapping = { + 'phash': PHash, + 'dhash': DHash, + 'whash': WHash, + 'ahash': AHash + } + + return mapping[method_name] @OPERATORS.register_module(OP_NAME) @@ -46,10 +53,10 @@ def __init__(self, redis_port=redis_port, *args, **kwargs) - if method not in HASH_METHOD.keys(): + if method not in HASH_METHOD: raise ValueError(f'Keep strategy [{method}] is not supported. ' - f'Can only be one of {HASH_METHOD.keys()}.') - self.hasher = HASH_METHOD[method]() + f'Can only be one of {HASH_METHOD}.') + self.hasher = get_hash_method(method)() def calculate_hash(self, sample, context=False): if self.image_key not in sample or not sample[self.image_key]: diff --git a/data_juicer/utils/logger_utils.py b/data_juicer/utils/logger_utils.py index 392dddac2..a91f610fe 100644 --- a/data_juicer/utils/logger_utils.py +++ b/data_juicer/utils/logger_utils.py @@ -18,6 +18,7 @@ import inspect import os import sys +from io import StringIO from loguru import logger from loguru._file_sink import FileSink @@ -52,12 +53,14 @@ def __init__(self, level='INFO', caller_names=('datasets', 'logging')): Default value: (apex, pycocotools). """ self.level = level - self.linebuf = '' self.caller_names = caller_names + self.buffer = StringIO() + self.BUFFER_SIZE = 1024 * 1024 def write(self, buf): full_name = get_caller_name(depth=1) module_name = full_name.rsplit('.', maxsplit=-1)[0] + self.buffer.write(buf) if module_name in self.caller_names: for line in buf.rstrip().splitlines(): # use caller level log @@ -66,8 +69,13 @@ def write(self, buf): # sys.__stdout__.write(buf) logger.opt(raw=True).info(buf) + self.buffer.truncate(self.BUFFER_SIZE) + + def getvalue(self): + return self.buffer.getvalue() + def flush(self): - pass + self.buffer.flush() def redirect_sys_output(log_level='INFO'): @@ -76,7 +84,7 @@ def redirect_sys_output(log_level='INFO'): :param log_level: log level string of loguru. Default value: "INFO". """ - redirect_logger = StreamToLoguru(log_level) + redirect_logger = StreamToLoguru(level=log_level) sys.stderr = redirect_logger sys.stdout = redirect_logger diff --git a/docs/Sandbox-ZH.md b/docs/Sandbox-ZH.md index accab8bd1..e26f53aef 100644 --- a/docs/Sandbox-ZH.md +++ b/docs/Sandbox-ZH.md @@ -4,6 +4,19 @@ 用户在沙盒中,除了Data-Juicer基础的数据优化与数据菜谱微调功能外,还可以便捷地使用数据洞察与分析、沙盒模型训练与评测、基于数据和模型反馈优化数据菜谱等可配置组件,共同组成完整的一站式数据-模型研发流水线。 ## 快速上手 +### 依赖准备 +在使用沙盒实验室前,你可能需要使用如下命令安装沙盒相关的第三方依赖: +```shell +pip install -v -e .[sandbox] + +# 或者直接安装全量依赖 +pip install -v -e .[all] +``` + +**注意**:一些沙盒的依赖还需要额外的领域依赖。例如,如果用户想要在沙盒中训练一个 ModelScope 平台的NLP模型,那可能需要为 `modelscope` 库 +安装额外的 `nlp` 领域依赖(参考其[安装文档](https://modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85) )。 +因此如果使用沙盒过程中,这些第三方依赖抛出了一些"未找到模块(Module-Not-Found)"的报错时,用户需要先检查这些库的文档以寻求帮助。 + ### 准备沙盒配置文件 沙盒的主配置文件除了Data-Juicer的配置文件外,还包括了若干额外的参数用于指定沙盒流水线中可能会运行的模型训练、推理、评测等步骤的配置信息,完整的额外参数可参考 [config_all.yaml](https://github.com/modelscope/data-juicer/blob/main/configs/config_all.yaml) 中的“for sandbox or hpo”部分参数。一个sandbox的配置文件示例可参考`configs/demo/sandbox/sandbox.yaml`: ```yaml diff --git a/docs/Sandbox.md b/docs/Sandbox.md index 4004f3460..480819806 100644 --- a/docs/Sandbox.md +++ b/docs/Sandbox.md @@ -4,6 +4,19 @@ In Data-Juicer, the data sandbox laboratory provides users with the best practic In addition to the basic data optimization and recipe refinement features offered by Data-Juicer, users can seamlessly use configurable components such as data probe and analysis, model training and evaluation, and data and model feedback-based recipe refinement to form a complete one-stop data-model research and development pipeline. ## Quick Start +### Requirements +Before using sandbox, you might need to install sandbox-related third-party dependencies by running the command below: +```shell +pip install -v -e .[sandbox] + +# or install all dependencies +pip install -v -e .[all] +``` + +**NOTICE**: some sandbox-related dependencies require extra domain dependencies. For example, if users want to train an NLP model from ModelScope +in the sandbox, you might need to install extra `nlp` dependencies for `modelscope` library (see the [installation docs](https://modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85)). +So if some Module-Not-Found errors are raised by these third-party libraries when running the sandbox, users need to check their docs first. + ### Prepare Configuration Files for Sandbox The configuration file of the sandbox includes several additional parameters in addition to the configuration of Data-Juicer. These parameters are used to specify the configuration information for model training, inference, evaluation, and other steps that may run in the sandbox pipeline. For the complete set of additional parameters, please refer to the "for sandbox or hpo" section in the [config_all.yaml](https://github.com/modelscope/data-juicer/blob/main/configs/config_all.yaml). An example of a sandbox configuration file can be found in `configs/demo/sandbox/sandbox.yaml`: ```yaml diff --git a/environments/minimal_requires.txt b/environments/minimal_requires.txt index b273872b0..c162fb21d 100644 --- a/environments/minimal_requires.txt +++ b/environments/minimal_requires.txt @@ -1,7 +1,7 @@ fsspec==2023.5.0 pyarrow<=12.0.0 pandas==2.0.3 -datasets==2.11.0 +datasets==2.18.0 av soundfile librosa diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt index c8dab43cf..9bad08e39 100644 --- a/environments/sandbox_requires.txt +++ b/environments/sandbox_requires.txt @@ -1,2 +1,9 @@ -torch -vbench \ No newline at end of file +torch>=1.11.0,<2.0.0 +wandb +fire +pyspark +# vbench-related +detectron2@git+https://github.com/facebookresearch/detectron2.git@b7c7f4ba82192ff06f2bbb162b9f67b00ea55867 +vbench +# modelscope-related +modelscope diff --git a/environments/science_requires.txt b/environments/science_requires.txt index 4faa330c8..0060ffeeb 100644 --- a/environments/science_requires.txt +++ b/environments/science_requires.txt @@ -1,3 +1,5 @@ +torch>=1.11.0,<2.0.0 +torchaudio easyocr fasttext-wheel kenlm @@ -16,8 +18,6 @@ accelerate tiktoken opencc==1.1.6 imagededup -torch -torchaudio dlib spacy-pkuseg==0.0.32 diffusers diff --git a/setup.py b/setup.py index 000bfe901..3df3d0170 100644 --- a/setup.py +++ b/setup.py @@ -41,10 +41,9 @@ def get_install_requirements(require_f_paths, env_dir='environments'): 'tools': get_install_requirements( ['preprocess_requires.txt', 'quality_classifier_requires.txt']), - 'sandbox': - get_install_requirements(['sandbox_requires.txt']) } extra_requires['all'] = [v for v in extra_requires.values()] +extra_requires['sandbox'] = get_install_requirements(['sandbox_requires.txt']) with open('data_juicer/__init__.py', 'r') as f: version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), diff --git a/tests/config/demo_4_test_bad_val.yaml b/tests/config/demo_4_test_bad_val.yaml new file mode 100644 index 000000000..3f1b4dbd2 --- /dev/null +++ b/tests/config/demo_4_test_bad_val.yaml @@ -0,0 +1,19 @@ +# Process config example for Arxiv dataset + +# global parameters +project_name: 'test_demo' +dataset_path: './demos/data/demo-dataset.jsonl' # path to your dataset directory or file +np: 4 # number of subprocess to process your dataset + +export_path: './outputs/demo/demo-processed.parquet' + +# process schedule +# a list of several process operators with their arguments +process: + - whitespace_normalization_mapper: + - language_id_score_filter: + lang: 'zh' + min_score: 1.1 # !! a bad value !! + - document_deduplicator: # deduplicate text samples using md5 hashing exact matching method + lowercase: false # whether to convert text to lower case + ignore_non_character: false diff --git a/tests/config/test_config_funcs.py b/tests/config/test_config_funcs.py index bd2d6e7d8..741d7d9a1 100644 --- a/tests/config/test_config_funcs.py +++ b/tests/config/test_config_funcs.py @@ -1,6 +1,6 @@ import os import unittest -from contextlib import redirect_stdout +from contextlib import redirect_stdout, redirect_stderr from io import StringIO from jsonargparse import Namespace @@ -12,6 +12,9 @@ test_yaml_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'demo_4_test.yaml') +test_bad_yaml_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'demo_4_test_bad_val.yaml') + class ConfigTest(DataJuicerTestCaseBase): @@ -61,6 +64,7 @@ def test_yaml_cfg_file(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, @@ -70,6 +74,34 @@ def test_yaml_cfg_file(self): _, op_from_cfg = load_ops(cfg.process) self.assertTrue(len(op_from_cfg) == 3) + def test_val_range_check_cmd(self): + out = StringIO() + err_msg_head = ("language_id_score_filter.min_score") + err_msg = ("Not of type ClosedUnitInterval: 1.1 does not conform to " + "restriction v>=0 and v<=1") + with redirect_stdout(out), redirect_stderr(out): + with self.assertRaises(SystemExit) as cm: + init_configs( + args=f'--config {test_yaml_path} ' + '--language_id_score_filter.min_score 1.1'.split()) + self.assertEqual(cm.exception.code, 2) + out_str = out.getvalue() + self.assertIn(err_msg_head, out_str) + self.assertIn(err_msg, out_str) + + def test_val_range_check_yaml(self): + out = StringIO() + err_msg_head = ("language_id_score_filter.min_score") + err_msg = ("Not of type ClosedUnitInterval: 1.1 does not conform to " + "restriction v>=0 and v<=1") + with redirect_stdout(out), redirect_stderr(out): + with self.assertRaises(SystemExit) as cm: + init_configs(args=f'--config {test_bad_yaml_path}'.split()) + self.assertEqual(cm.exception.code, 2) + out_str = out.getvalue() + self.assertIn(err_msg_head, out_str) + self.assertIn(err_msg, out_str) + def test_mixture_cfg(self): out = StringIO() with redirect_stdout(out): @@ -99,6 +131,7 @@ def test_mixture_cfg(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, @@ -115,6 +148,7 @@ def test_mixture_cfg(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, @@ -131,6 +165,7 @@ def test_mixture_cfg(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, @@ -147,6 +182,7 @@ def test_mixture_cfg(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, @@ -163,6 +199,7 @@ def test_mixture_cfg(self): 'video_key': 'videos', 'accelerator': 'cpu', 'spec_numprocs': 0, + 'stats_export_path': None, 'cpu_required': 1, 'mem_required': 0, 'use_actor': False, diff --git a/tools/mm_eval/README.md b/tools/mm_eval/README.md new file mode 100644 index 000000000..cedacb7c0 --- /dev/null +++ b/tools/mm_eval/README.md @@ -0,0 +1,3 @@ +VBench from the paper "VBench: Comprehensive Benchmark Suite for Video Generative Models". + +Please refer to [GitHub](https://github.com/Vchitect/VBench) for more detail. diff --git a/tools/mm_eval/README_ZH.md b/tools/mm_eval/README_ZH.md new file mode 100644 index 000000000..85c7e75a7 --- /dev/null +++ b/tools/mm_eval/README_ZH.md @@ -0,0 +1,3 @@ +VBench来自paper:"VBench: Comprehensive Benchmark Suite for Video Generative Models"。 + +请跳转[GitHub](https://github.com/Vchitect/VBench)查看更多信息。 diff --git a/tools/mm_eval/vbench_metrics/VBench_full_info.json b/tools/mm_eval/vbench_metrics/VBench_full_info.json index a3a4f0968..e60c40eb0 100644 --- a/tools/mm_eval/vbench_metrics/VBench_full_info.json +++ b/tools/mm_eval/vbench_metrics/VBench_full_info.json @@ -9129,4 +9129,4 @@ } } } -] \ No newline at end of file +] diff --git a/tools/mm_eval/vbench_metrics/evaluate.py b/tools/mm_eval/vbench_metrics/evaluate.py index dbb35cca4..4e3c62552 100644 --- a/tools/mm_eval/vbench_metrics/evaluate.py +++ b/tools/mm_eval/vbench_metrics/evaluate.py @@ -3,91 +3,97 @@ Matches the original implementation at https://github.com/Vchitect/VBench/blob/master/evaluate.py""" -import torch -import os -from vbench import VBench -from datetime import datetime +# flake8: noqa: E501 + import argparse import json +import os +from datetime import datetime + +import torch +from vbench import VBench + def parse_args(): CUR_DIR = os.path.dirname(os.path.abspath(__file__)) - parser = argparse.ArgumentParser(description='VBench', formatter_class=argparse.RawTextHelpFormatter) + parser = argparse.ArgumentParser( + description='VBench', formatter_class=argparse.RawTextHelpFormatter) parser.add_argument( - "--output_path", + '--output_path', type=str, default='./evaluation_results/', - help="output path to save the evaluation results", + help='output path to save the evaluation results', ) parser.add_argument( - "--full_json_dir", + '--full_json_dir', type=str, default=f'{CUR_DIR}/VBench_full_info.json', - help="path to save the json file that contains the prompt and dimension information", + help= + 'path to save the json file that contains the prompt and dimension information', ) parser.add_argument( - "--videos_path", + '--videos_path', type=str, required=True, - help="folder that contains the sampled videos", + help='folder that contains the sampled videos', ) parser.add_argument( - "--dimension", + '--dimension', nargs='+', required=True, - help="list of evaluation dimensions, usage: --dimension ", + help= + 'list of evaluation dimensions, usage: --dimension ', ) parser.add_argument( - "--load_ckpt_from_local", + '--load_ckpt_from_local', type=bool, required=False, - help="whether load checkpoints from local default paths (assuming you have downloaded the checkpoints locally", + help= + 'whether load checkpoints from local default paths (assuming you have downloaded the checkpoints locally', ) parser.add_argument( - "--read_frame", + '--read_frame', type=bool, required=False, - help="whether directly read frames, or directly read videos", + help='whether directly read frames, or directly read videos', ) parser.add_argument( - "--mode", + '--mode', choices=['custom_input', 'vbench_standard', 'vbench_category'], default='vbench_standard', - help="""This flags determine the mode of evaluations, choose one of the following: + help= + """This flags determine the mode of evaluations, choose one of the following: 1. "custom_input": receive input prompt from either --prompt/--prompt_file flags or the filename 2. "vbench_standard": evaluate on standard prompt suite of VBench 3. "vbench_category": evaluate on specific category """, ) parser.add_argument( - "--custom_input", - action="store_true", + '--custom_input', + action='store_true', required=False, help="(deprecated) use --mode=\"custom_input\" instead", ) - parser.add_argument( - "--prompt", - type=str, - default="", - help="""Specify the input prompt + parser.add_argument('--prompt', + type=str, + default='', + help="""Specify the input prompt If not specified, filenames will be used as input prompts * Mutually exclusive to --prompt_file. ** This option must be used with --custom_input flag - """ - ) + """) parser.add_argument( - "--prompt_file", + '--prompt_file', type=str, required=False, help="""Specify the path of the file that contains prompt lists If not specified, filenames will be used as input prompts * Mutually exclusive to --prompt. ** This option must be used with --custom_input flag - """ - ) + """) parser.add_argument( - "--category", + '--category', type=str, required=False, help="""This is for mode=='vbench_category' @@ -97,14 +103,14 @@ def parse_args(): ## for dimension specific params ### parser.add_argument( - "--imaging_quality_preprocessing_mode", + '--imaging_quality_preprocessing_mode', type=str, required=False, default='longer', help="""This is for setting preprocessing in imaging_quality 1. 'shorter': if the shorter side is more than 512, the image is resized so that the shorter side is 512. 2. 'longer': if the longer side is more than 512, the image is resized so that the longer side is 512. - 3. 'shorter_centercrop': if the shorter side is more than 512, the image is resized so that the shorter side is 512. + 3. 'shorter_centercrop': if the shorter side is more than 512, the image is resized so that the shorter side is 512. Then the center 512 x 512 after resized is used for evaluation. 4. 'None': no preprocessing """, @@ -117,9 +123,9 @@ def main(): args = parse_args() print(f'args: {args}') - device = torch.device("cuda") + device = torch.device('cuda') my_VBench = VBench(device, args.full_json_dir, args.output_path) - + print(f'start evaluation') current_time = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') @@ -128,37 +134,41 @@ def main(): prompt = [] - assert args.custom_input == False, "(Deprecated) use --mode=custom_input instead" - - if (args.prompt_file is not None) and (args.prompt != ""): - raise Exception("--prompt_file and --prompt cannot be used together") - if (args.prompt_file is not None or args.prompt != "") and (not args.mode=='custom_input'): - raise Exception("must set --mode=custom_input for using external prompt") + assert args.custom_input == False, '(Deprecated) use --mode=custom_input instead' + + if (args.prompt_file is not None) and (args.prompt != ''): + raise Exception('--prompt_file and --prompt cannot be used together') + if (args.prompt_file is not None + or args.prompt != '') and (not args.mode == 'custom_input'): + raise Exception( + 'must set --mode=custom_input for using external prompt') if args.prompt_file: with open(args.prompt_file, 'r') as f: prompt = json.load(f) - assert type(prompt) == dict, "Invalid prompt file format. The correct format is {\"video_path\": prompt, ... }" - elif args.prompt != "": + assert type( + prompt + ) == dict, "Invalid prompt file format. The correct format is {\"video_path\": prompt, ... }" + elif args.prompt != '': prompt = [args.prompt] - if args.category != "": + if args.category != '': kwargs['category'] = args.category - kwargs['imaging_quality_preprocessing_mode'] = args.imaging_quality_preprocessing_mode + kwargs[ + 'imaging_quality_preprocessing_mode'] = args.imaging_quality_preprocessing_mode my_VBench.evaluate( - videos_path = args.videos_path, - name = f'results_{current_time}', - prompt_list=prompt, # pass in [] to read prompt from filename - dimension_list = args.dimension, + videos_path=args.videos_path, + name=f'results_{current_time}', + prompt_list=prompt, # pass in [] to read prompt from filename + dimension_list=args.dimension, local=args.load_ckpt_from_local, read_frame=args.read_frame, mode=args.mode, - **kwargs - ) + **kwargs) print('done') -if __name__ == "__main__": - main() \ No newline at end of file +if __name__ == '__main__': + main() diff --git a/tools/sandbox_starter.py b/tools/sandbox_starter.py index 7b8298b50..e1f8d91a4 100644 --- a/tools/sandbox_starter.py +++ b/tools/sandbox_starter.py @@ -1,9 +1,10 @@ import json import yaml +from jsonargparse import dict_to_namespace from loguru import logger -from data_juicer.config import dict_to_namespace, init_configs +from data_juicer.config import init_configs from data_juicer.core.sandbox.pipelines import SandBoxExecutor From d9043354a1e70004cde6e12cfa07f8cecd0806f0 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 14:37:47 +0800 Subject: [PATCH 04/13] not install sandbox --- .github/workflows/unit-test.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 4962d78dd..3eb21202d 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -30,7 +30,6 @@ jobs: sudo apt-get install ffmpeg python -m pip install --upgrade pip pip install -v -e .[all] - pip install -v -e .[sandbox] - name: Increase swapfile run: | df -h From baaec067135fdecd380ccd3aa9a10482375b029e Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 14:44:33 +0800 Subject: [PATCH 05/13] torch not limit --- environments/science_requires.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/environments/science_requires.txt b/environments/science_requires.txt index 858c71a61..e848ea5ba 100644 --- a/environments/science_requires.txt +++ b/environments/science_requires.txt @@ -1,8 +1,4 @@ -<<<<<<< HEAD -torch>=1.11.0,<2.0.0 -======= torch>=1.11.0 ->>>>>>> 17c2c763572058d43197a8af19595398bd6eee17 torchaudio easyocr fasttext-wheel From 019eee5886167b83f3e23938d9e157e1fcc3b3b4 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 14:53:58 +0800 Subject: [PATCH 06/13] rm sandbox from all --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index 5d17a938c..3df3d0170 100644 --- a/setup.py +++ b/setup.py @@ -41,8 +41,6 @@ def get_install_requirements(require_f_paths, env_dir='environments'): 'tools': get_install_requirements( ['preprocess_requires.txt', 'quality_classifier_requires.txt']), - 'sandbox': - get_install_requirements(['sandbox_requires.txt']), } extra_requires['all'] = [v for v in extra_requires.values()] extra_requires['sandbox'] = get_install_requirements(['sandbox_requires.txt']) From 7acde08e6de5a3a64b150d24715250f387d11c36 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 14:59:41 +0800 Subject: [PATCH 07/13] add torch limit back --- environments/science_requires.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/environments/science_requires.txt b/environments/science_requires.txt index e848ea5ba..0060ffeeb 100644 --- a/environments/science_requires.txt +++ b/environments/science_requires.txt @@ -1,4 +1,4 @@ -torch>=1.11.0 +torch>=1.11.0,<2.0.0 torchaudio easyocr fasttext-wheel From ec10488b6cefd2b60dbab38d7b7f6919ad856849 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 15:01:49 +0800 Subject: [PATCH 08/13] install sandbox --- .github/workflows/unit-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 3eb21202d..4962d78dd 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -30,6 +30,7 @@ jobs: sudo apt-get install ffmpeg python -m pip install --upgrade pip pip install -v -e .[all] + pip install -v -e .[sandbox] - name: Increase swapfile run: | df -h From 5d914a16c0f8c0982ce0e4eb35ecdcb7bb0f69c5 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 15:10:36 +0800 Subject: [PATCH 09/13] fix readme --- README_ZH.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README_ZH.md b/README_ZH.md index 3842e044c..56398e0c7 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -161,7 +161,7 @@ pip install -v -e .[tools] # 安装部分工具库的依赖 | 标签 | 描述 | |------------------|------------------------------| | `.` 或者 `.[mini]` | 安装支持 Data-Juicer 基础功能的最小依赖项 | -| `.[all]` | 安装除了sandbox以外的所有依赖项 | +| `.[all]` | 安装除了沙河实验以外的所有依赖项 | | `.[sci]` | 安装所有算子的全量依赖 | | `.[dist]` | 安装以分布式方式进行数据处理的依赖(实验性功能) | | `.[dev]` | 安装作为贡献者开发 Data-Juicer 所需的依赖项 | From 608d48eb3f0af76176c74d1582f6d784648df264 Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 16:17:56 +0800 Subject: [PATCH 10/13] rm torch upper limit --- environments/sandbox_requires.txt | 2 +- environments/science_requires.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt index 9bad08e39..ab04496ce 100644 --- a/environments/sandbox_requires.txt +++ b/environments/sandbox_requires.txt @@ -1,4 +1,4 @@ -torch>=1.11.0,<2.0.0 +torch>=1.11.0 wandb fire pyspark diff --git a/environments/science_requires.txt b/environments/science_requires.txt index 0060ffeeb..e848ea5ba 100644 --- a/environments/science_requires.txt +++ b/environments/science_requires.txt @@ -1,4 +1,4 @@ -torch>=1.11.0,<2.0.0 +torch>=1.11.0 torchaudio easyocr fasttext-wheel From bd9797c19333ae2f6f628174841a4877a5b5d6ea Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Wed, 8 May 2024 19:04:38 +0800 Subject: [PATCH 11/13] add torch upper limit --- configs/demo/sandbox/vbench_eval_config.yaml | 2 +- environments/sandbox_requires.txt | 2 +- environments/science_requires.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configs/demo/sandbox/vbench_eval_config.yaml b/configs/demo/sandbox/vbench_eval_config.yaml index 1ac40361f..1e4989ca7 100644 --- a/configs/demo/sandbox/vbench_eval_config.yaml +++ b/configs/demo/sandbox/vbench_eval_config.yaml @@ -21,7 +21,7 @@ load_ckpt_from_local: false # 'multiple_objects', 'human_action', 'color', 'spatial_relationship', 'scene', 'temporal_style', # 'appearance_style', 'overall_consistency'] # NOTE: Current version of vbench in pypi lacks of a third party code for motion_smoothness. -# NOTE: Besides, the evaluation for appearance_style requires torch < 2.0. +# NOTE: Besides, when len(dimension_list) > 1, it would occur an error in video loading. dimension_list: - subject_consistency - dynamic_degree diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt index ab04496ce..9bad08e39 100644 --- a/environments/sandbox_requires.txt +++ b/environments/sandbox_requires.txt @@ -1,4 +1,4 @@ -torch>=1.11.0 +torch>=1.11.0,<2.0.0 wandb fire pyspark diff --git a/environments/science_requires.txt b/environments/science_requires.txt index e848ea5ba..0060ffeeb 100644 --- a/environments/science_requires.txt +++ b/environments/science_requires.txt @@ -1,4 +1,4 @@ -torch>=1.11.0 +torch>=1.11.0,<2.0.0 torchaudio easyocr fasttext-wheel From 3b2bd154464f80cfb955d91970080983db7e4bee Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Mon, 13 May 2024 19:08:20 +0800 Subject: [PATCH 12/13] mv detectron2 to doc --- README_ZH.md | 2 +- docs/Sandbox-ZH.md | 3 +-- docs/Sandbox.md | 3 +-- environments/sandbox_requires.txt | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README_ZH.md b/README_ZH.md index 56398e0c7..1a19fd5c9 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -161,7 +161,7 @@ pip install -v -e .[tools] # 安装部分工具库的依赖 | 标签 | 描述 | |------------------|------------------------------| | `.` 或者 `.[mini]` | 安装支持 Data-Juicer 基础功能的最小依赖项 | -| `.[all]` | 安装除了沙河实验以外的所有依赖项 | +| `.[all]` | 安装除了沙盒实验以外的所有依赖项 | | `.[sci]` | 安装所有算子的全量依赖 | | `.[dist]` | 安装以分布式方式进行数据处理的依赖(实验性功能) | | `.[dev]` | 安装作为贡献者开发 Data-Juicer 所需的依赖项 | diff --git a/docs/Sandbox-ZH.md b/docs/Sandbox-ZH.md index e26f53aef..b71673989 100644 --- a/docs/Sandbox-ZH.md +++ b/docs/Sandbox-ZH.md @@ -9,8 +9,7 @@ ```shell pip install -v -e .[sandbox] -# 或者直接安装全量依赖 -pip install -v -e .[all] +pip install detectron2@git+https://github.com/facebookresearch/detectron2.git@b7c7f4ba82192ff06f2bbb162b9f67b00ea55867 ``` **注意**:一些沙盒的依赖还需要额外的领域依赖。例如,如果用户想要在沙盒中训练一个 ModelScope 平台的NLP模型,那可能需要为 `modelscope` 库 diff --git a/docs/Sandbox.md b/docs/Sandbox.md index 480819806..9f842593f 100644 --- a/docs/Sandbox.md +++ b/docs/Sandbox.md @@ -9,8 +9,7 @@ Before using sandbox, you might need to install sandbox-related third-party depe ```shell pip install -v -e .[sandbox] -# or install all dependencies -pip install -v -e .[all] +pip install detectron2@git+https://github.com/facebookresearch/detectron2.git@b7c7f4ba82192ff06f2bbb162b9f67b00ea55867 ``` **NOTICE**: some sandbox-related dependencies require extra domain dependencies. For example, if users want to train an NLP model from ModelScope diff --git a/environments/sandbox_requires.txt b/environments/sandbox_requires.txt index 9bad08e39..4c60fe9e3 100644 --- a/environments/sandbox_requires.txt +++ b/environments/sandbox_requires.txt @@ -3,7 +3,6 @@ wandb fire pyspark # vbench-related -detectron2@git+https://github.com/facebookresearch/detectron2.git@b7c7f4ba82192ff06f2bbb162b9f67b00ea55867 vbench # modelscope-related modelscope From d64cca6ccde244fd72fa31e619646f08479941ca Mon Sep 17 00:00:00 2001 From: BeachWang <1400012807@pku.edu.cn> Date: Mon, 13 May 2024 19:22:22 +0800 Subject: [PATCH 13/13] pre-commit done --- data_juicer/core/sandbox/factories.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_juicer/core/sandbox/factories.py b/data_juicer/core/sandbox/factories.py index 402f6d870..1fda9f2b9 100644 --- a/data_juicer/core/sandbox/factories.py +++ b/data_juicer/core/sandbox/factories.py @@ -1,6 +1,6 @@ from data_juicer.core.sandbox.evaluators import (Gpt3QualityEvaluator, - VBenchEvaluator, - InceptionEvaluator) + InceptionEvaluator, + VBenchEvaluator) from data_juicer.core.sandbox.model_executors import (ModelscopeInferExecutor, ModelscopeTrainExecutor)