paddlex 3.0.0rc0__py3-none-any.whl → 3.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- paddlex/.version +1 -1
- paddlex/__init__.py +17 -34
- paddlex/__main__.py +1 -1
- paddlex/configs/modules/chart_parsing/PP-Chart2Table.yaml +13 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee-2B.yaml +14 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee-7B.yaml +14 -0
- paddlex/configs/modules/doc_vlm/PP-DocBee2-3B.yaml +14 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-L.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-M.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-S.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocBlockLayout.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocLayout-L.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout-M.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout-S.yaml +2 -2
- paddlex/configs/modules/layout_detection/PP-DocLayout_plus-L.yaml +40 -0
- paddlex/configs/modules/open_vocabulary_detection/YOLO-Worldv2-L.yaml +13 -0
- paddlex/configs/modules/text_detection/PP-OCRv5_mobile_det.yaml +40 -0
- paddlex/configs/modules/text_detection/PP-OCRv5_server_det.yaml +40 -0
- paddlex/configs/modules/text_recognition/PP-OCRv5_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/PP-OCRv5_server_rec.yaml +39 -0
- paddlex/configs/modules/textline_orientation/PP-LCNet_x1_0_textline_ori.yaml +41 -0
- paddlex/configs/pipelines/OCR.yaml +7 -6
- paddlex/configs/pipelines/PP-ChatOCRv3-doc.yaml +3 -1
- paddlex/configs/pipelines/PP-ChatOCRv4-doc.yaml +91 -34
- paddlex/configs/pipelines/PP-StructureV3.yaml +72 -72
- paddlex/configs/pipelines/anomaly_detection.yaml +1 -1
- paddlex/configs/pipelines/doc_understanding.yaml +9 -0
- paddlex/configs/pipelines/formula_recognition.yaml +2 -2
- paddlex/configs/pipelines/layout_parsing.yaml +3 -2
- paddlex/configs/pipelines/seal_recognition.yaml +1 -0
- paddlex/configs/pipelines/table_recognition.yaml +2 -1
- paddlex/configs/pipelines/table_recognition_v2.yaml +7 -1
- paddlex/configs/pipelines/ts_anomaly_detection.yaml +1 -1
- paddlex/configs/pipelines/ts_classification.yaml +1 -1
- paddlex/configs/pipelines/ts_forecast.yaml +1 -1
- paddlex/constants.py +17 -0
- paddlex/engine.py +7 -5
- paddlex/hpip_links.html +23 -11
- paddlex/inference/__init__.py +3 -3
- paddlex/inference/common/__init__.py +1 -1
- paddlex/inference/common/batch_sampler/__init__.py +5 -4
- paddlex/inference/common/batch_sampler/audio_batch_sampler.py +5 -6
- paddlex/inference/common/batch_sampler/base_batch_sampler.py +20 -16
- paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +4 -7
- paddlex/inference/common/batch_sampler/doc_vlm_batch_sampler.py +87 -0
- paddlex/inference/common/batch_sampler/image_batch_sampler.py +45 -60
- paddlex/inference/common/batch_sampler/ts_batch_sampler.py +9 -10
- paddlex/inference/common/batch_sampler/video_batch_sampler.py +2 -22
- paddlex/inference/common/reader/__init__.py +4 -4
- paddlex/inference/common/reader/audio_reader.py +3 -3
- paddlex/inference/common/reader/det_3d_reader.py +7 -5
- paddlex/inference/common/reader/image_reader.py +16 -12
- paddlex/inference/common/reader/ts_reader.py +3 -2
- paddlex/inference/common/reader/video_reader.py +3 -3
- paddlex/inference/common/result/__init__.py +7 -7
- paddlex/inference/common/result/base_cv_result.py +12 -2
- paddlex/inference/common/result/base_result.py +7 -5
- paddlex/inference/common/result/base_ts_result.py +1 -2
- paddlex/inference/common/result/base_video_result.py +2 -2
- paddlex/inference/common/result/mixin.py +31 -25
- paddlex/inference/models/__init__.py +41 -85
- paddlex/inference/models/anomaly_detection/__init__.py +1 -1
- paddlex/inference/models/anomaly_detection/predictor.py +9 -19
- paddlex/inference/models/anomaly_detection/processors.py +9 -2
- paddlex/inference/models/anomaly_detection/result.py +3 -2
- paddlex/inference/models/base/__init__.py +2 -2
- paddlex/inference/models/base/predictor/__init__.py +1 -2
- paddlex/inference/models/base/predictor/base_predictor.py +278 -39
- paddlex/inference/models/common/__init__.py +6 -15
- paddlex/inference/models/common/static_infer.py +724 -251
- paddlex/inference/models/common/tokenizer/__init__.py +7 -3
- paddlex/inference/models/common/tokenizer/bert_tokenizer.py +1 -1
- paddlex/inference/models/common/tokenizer/clip_tokenizer.py +609 -0
- paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +9 -7
- paddlex/inference/models/common/tokenizer/qwen2_5_tokenizer.py +112 -0
- paddlex/inference/models/common/tokenizer/qwen2_tokenizer.py +438 -0
- paddlex/inference/models/common/tokenizer/qwen_tokenizer.py +288 -0
- paddlex/inference/models/common/tokenizer/tokenizer_utils.py +85 -77
- paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +339 -123
- paddlex/inference/models/common/tokenizer/utils.py +1 -1
- paddlex/inference/models/common/tokenizer/vocab.py +8 -8
- paddlex/inference/models/common/ts/__init__.py +1 -1
- paddlex/inference/models/common/ts/funcs.py +13 -6
- paddlex/inference/models/common/ts/processors.py +14 -5
- paddlex/inference/models/common/vision/__init__.py +3 -3
- paddlex/inference/models/common/vision/funcs.py +17 -12
- paddlex/inference/models/common/vision/processors.py +61 -46
- paddlex/inference/models/common/vlm/__init__.py +13 -0
- paddlex/inference/models/common/vlm/activations.py +189 -0
- paddlex/inference/models/common/vlm/bert_padding.py +127 -0
- paddlex/inference/models/common/vlm/conversion_utils.py +99 -0
- paddlex/inference/models/common/vlm/distributed.py +229 -0
- paddlex/inference/models/common/vlm/flash_attn_utils.py +119 -0
- paddlex/inference/models/common/vlm/fusion_ops.py +205 -0
- paddlex/inference/models/common/vlm/generation/__init__.py +34 -0
- paddlex/inference/models/common/vlm/generation/configuration_utils.py +533 -0
- paddlex/inference/models/common/vlm/generation/logits_process.py +730 -0
- paddlex/inference/models/common/vlm/generation/stopping_criteria.py +106 -0
- paddlex/inference/models/common/vlm/generation/utils.py +2162 -0
- paddlex/inference/models/common/vlm/transformers/__init__.py +16 -0
- paddlex/inference/models/common/vlm/transformers/configuration_utils.py +1037 -0
- paddlex/inference/models/common/vlm/transformers/conversion_utils.py +408 -0
- paddlex/inference/models/common/vlm/transformers/model_outputs.py +1612 -0
- paddlex/inference/models/common/vlm/transformers/model_utils.py +2014 -0
- paddlex/inference/models/common/vlm/transformers/utils.py +178 -0
- paddlex/inference/models/common/vlm/utils.py +109 -0
- paddlex/inference/models/doc_vlm/__init__.py +15 -0
- paddlex/inference/models/doc_vlm/modeling/GOT_ocr_2_0.py +830 -0
- paddlex/inference/models/doc_vlm/modeling/__init__.py +17 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2.py +1606 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2_5_vl.py +3006 -0
- paddlex/inference/models/doc_vlm/modeling/qwen2_vl.py +2495 -0
- paddlex/inference/models/doc_vlm/predictor.py +253 -0
- paddlex/inference/models/doc_vlm/processors/GOT_ocr_2_0.py +97 -0
- paddlex/inference/models/doc_vlm/processors/__init__.py +17 -0
- paddlex/inference/models/doc_vlm/processors/common.py +561 -0
- paddlex/inference/models/doc_vlm/processors/qwen2_5_vl.py +548 -0
- paddlex/inference/models/doc_vlm/processors/qwen2_vl.py +543 -0
- paddlex/inference/models/doc_vlm/result.py +21 -0
- paddlex/inference/models/face_feature/__init__.py +1 -1
- paddlex/inference/models/face_feature/predictor.py +2 -1
- paddlex/inference/models/formula_recognition/__init__.py +1 -1
- paddlex/inference/models/formula_recognition/predictor.py +18 -28
- paddlex/inference/models/formula_recognition/processors.py +126 -97
- paddlex/inference/models/formula_recognition/result.py +43 -35
- paddlex/inference/models/image_classification/__init__.py +1 -1
- paddlex/inference/models/image_classification/predictor.py +9 -19
- paddlex/inference/models/image_classification/processors.py +4 -2
- paddlex/inference/models/image_classification/result.py +4 -3
- paddlex/inference/models/image_feature/__init__.py +1 -1
- paddlex/inference/models/image_feature/predictor.py +9 -19
- paddlex/inference/models/image_feature/processors.py +7 -5
- paddlex/inference/models/image_feature/result.py +2 -3
- paddlex/inference/models/image_multilabel_classification/__init__.py +1 -1
- paddlex/inference/models/image_multilabel_classification/predictor.py +7 -6
- paddlex/inference/models/image_multilabel_classification/processors.py +6 -2
- paddlex/inference/models/image_multilabel_classification/result.py +4 -3
- paddlex/inference/models/image_unwarping/__init__.py +1 -1
- paddlex/inference/models/image_unwarping/predictor.py +8 -16
- paddlex/inference/models/image_unwarping/processors.py +6 -2
- paddlex/inference/models/image_unwarping/result.py +4 -2
- paddlex/inference/models/instance_segmentation/__init__.py +1 -1
- paddlex/inference/models/instance_segmentation/predictor.py +7 -15
- paddlex/inference/models/instance_segmentation/processors.py +4 -7
- paddlex/inference/models/instance_segmentation/result.py +11 -10
- paddlex/inference/models/keypoint_detection/__init__.py +1 -1
- paddlex/inference/models/keypoint_detection/predictor.py +5 -3
- paddlex/inference/models/keypoint_detection/processors.py +11 -3
- paddlex/inference/models/keypoint_detection/result.py +9 -4
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/predictor.py +15 -26
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/processors.py +26 -14
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/result.py +15 -12
- paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/visualizer_3d.py +77 -39
- paddlex/inference/models/multilingual_speech_recognition/__init__.py +1 -1
- paddlex/inference/models/multilingual_speech_recognition/predictor.py +11 -15
- paddlex/inference/models/multilingual_speech_recognition/processors.py +45 -53
- paddlex/inference/models/multilingual_speech_recognition/result.py +1 -1
- paddlex/inference/models/object_detection/__init__.py +1 -1
- paddlex/inference/models/object_detection/predictor.py +8 -12
- paddlex/inference/models/object_detection/processors.py +63 -33
- paddlex/inference/models/object_detection/result.py +5 -4
- paddlex/inference/models/object_detection/utils.py +3 -1
- paddlex/inference/models/open_vocabulary_detection/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_detection/predictor.py +31 -14
- paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +3 -2
- paddlex/inference/models/open_vocabulary_detection/processors/common.py +114 -0
- paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +19 -8
- paddlex/inference/models/open_vocabulary_detection/processors/yoloworld_processors.py +209 -0
- paddlex/inference/models/open_vocabulary_segmentation/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/predictor.py +6 -13
- paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +12 -12
- paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +1 -1
- paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +11 -9
- paddlex/inference/models/semantic_segmentation/__init__.py +1 -1
- paddlex/inference/models/semantic_segmentation/predictor.py +9 -18
- paddlex/inference/models/semantic_segmentation/processors.py +11 -8
- paddlex/inference/models/semantic_segmentation/result.py +4 -3
- paddlex/inference/models/table_structure_recognition/__init__.py +1 -1
- paddlex/inference/models/table_structure_recognition/predictor.py +8 -18
- paddlex/inference/models/table_structure_recognition/processors.py +23 -29
- paddlex/inference/models/table_structure_recognition/result.py +8 -15
- paddlex/inference/models/text_detection/__init__.py +1 -1
- paddlex/inference/models/text_detection/predictor.py +24 -24
- paddlex/inference/models/text_detection/processors.py +116 -44
- paddlex/inference/models/text_detection/result.py +8 -13
- paddlex/inference/models/text_recognition/__init__.py +1 -1
- paddlex/inference/models/text_recognition/predictor.py +11 -19
- paddlex/inference/models/text_recognition/processors.py +27 -13
- paddlex/inference/models/text_recognition/result.py +3 -2
- paddlex/inference/models/ts_anomaly_detection/__init__.py +1 -1
- paddlex/inference/models/ts_anomaly_detection/predictor.py +12 -17
- paddlex/inference/models/ts_anomaly_detection/processors.py +6 -2
- paddlex/inference/models/ts_anomaly_detection/result.py +21 -10
- paddlex/inference/models/ts_classification/__init__.py +1 -1
- paddlex/inference/models/ts_classification/predictor.py +14 -27
- paddlex/inference/models/ts_classification/processors.py +7 -2
- paddlex/inference/models/ts_classification/result.py +21 -12
- paddlex/inference/models/ts_forecasting/__init__.py +1 -1
- paddlex/inference/models/ts_forecasting/predictor.py +13 -18
- paddlex/inference/models/ts_forecasting/processors.py +12 -3
- paddlex/inference/models/ts_forecasting/result.py +24 -11
- paddlex/inference/models/video_classification/__init__.py +1 -1
- paddlex/inference/models/video_classification/predictor.py +9 -15
- paddlex/inference/models/video_classification/processors.py +24 -24
- paddlex/inference/models/video_classification/result.py +7 -3
- paddlex/inference/models/video_detection/__init__.py +1 -1
- paddlex/inference/models/video_detection/predictor.py +8 -15
- paddlex/inference/models/video_detection/processors.py +24 -11
- paddlex/inference/models/video_detection/result.py +10 -5
- paddlex/inference/pipelines/__init__.py +48 -37
- paddlex/inference/pipelines/_parallel.py +172 -0
- paddlex/inference/pipelines/anomaly_detection/__init__.py +1 -1
- paddlex/inference/pipelines/anomaly_detection/pipeline.py +29 -9
- paddlex/inference/pipelines/attribute_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/attribute_recognition/pipeline.py +24 -9
- paddlex/inference/pipelines/attribute_recognition/result.py +10 -8
- paddlex/inference/pipelines/base.py +43 -13
- paddlex/inference/pipelines/components/__init__.py +14 -8
- paddlex/inference/pipelines/components/chat_server/__init__.py +1 -1
- paddlex/inference/pipelines/components/chat_server/base.py +2 -2
- paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +8 -8
- paddlex/inference/pipelines/components/common/__init__.py +5 -4
- paddlex/inference/pipelines/components/common/base_operator.py +2 -1
- paddlex/inference/pipelines/components/common/base_result.py +3 -2
- paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +1 -2
- paddlex/inference/pipelines/components/common/crop_image_regions.py +11 -5
- paddlex/inference/pipelines/components/common/seal_det_warp.py +44 -13
- paddlex/inference/pipelines/components/common/sort_boxes.py +4 -2
- paddlex/inference/pipelines/components/common/warp_image.py +50 -0
- paddlex/inference/pipelines/components/faisser.py +10 -5
- paddlex/inference/pipelines/components/prompt_engineering/__init__.py +2 -2
- paddlex/inference/pipelines/components/prompt_engineering/base.py +2 -2
- paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +2 -1
- paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +2 -2
- paddlex/inference/pipelines/components/retriever/__init__.py +2 -2
- paddlex/inference/pipelines/components/retriever/base.py +18 -16
- paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +2 -2
- paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +87 -84
- paddlex/inference/pipelines/components/utils/__init__.py +1 -1
- paddlex/inference/pipelines/components/utils/mixin.py +7 -7
- paddlex/inference/pipelines/doc_preprocessor/__init__.py +1 -1
- paddlex/inference/pipelines/doc_preprocessor/pipeline.py +70 -51
- paddlex/inference/pipelines/doc_preprocessor/result.py +5 -10
- paddlex/inference/pipelines/doc_understanding/__init__.py +15 -0
- paddlex/inference/pipelines/doc_understanding/pipeline.py +71 -0
- paddlex/inference/pipelines/face_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/face_recognition/pipeline.py +3 -1
- paddlex/inference/pipelines/face_recognition/result.py +3 -2
- paddlex/inference/pipelines/formula_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/formula_recognition/pipeline.py +137 -93
- paddlex/inference/pipelines/formula_recognition/result.py +20 -29
- paddlex/inference/pipelines/image_classification/__init__.py +1 -1
- paddlex/inference/pipelines/image_classification/pipeline.py +30 -11
- paddlex/inference/pipelines/image_multilabel_classification/__init__.py +1 -1
- paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +31 -12
- paddlex/inference/pipelines/instance_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/instance_segmentation/pipeline.py +30 -9
- paddlex/inference/pipelines/keypoint_detection/__init__.py +1 -1
- paddlex/inference/pipelines/keypoint_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/layout_parsing/__init__.py +1 -1
- paddlex/inference/pipelines/layout_parsing/pipeline.py +54 -56
- paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +904 -261
- paddlex/inference/pipelines/layout_parsing/result.py +9 -21
- paddlex/inference/pipelines/layout_parsing/result_v2.py +525 -250
- paddlex/inference/pipelines/layout_parsing/setting.py +87 -0
- paddlex/inference/pipelines/layout_parsing/utils.py +570 -2004
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/__init__.py +16 -0
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/utils.py +1144 -0
- paddlex/inference/pipelines/layout_parsing/xycut_enhanced/xycuts.py +563 -0
- paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
- paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/pipeline.py +17 -10
- paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +17 -6
- paddlex/inference/pipelines/object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/object_detection/pipeline.py +29 -9
- paddlex/inference/pipelines/ocr/__init__.py +1 -1
- paddlex/inference/pipelines/ocr/pipeline.py +151 -77
- paddlex/inference/pipelines/ocr/result.py +31 -24
- paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +1 -1
- paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +17 -6
- paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +17 -6
- paddlex/inference/pipelines/pp_chatocr/__init__.py +1 -1
- paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +14 -5
- paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +22 -14
- paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +34 -16
- paddlex/inference/pipelines/pp_shitu_v2/__init__.py +1 -1
- paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +12 -8
- paddlex/inference/pipelines/pp_shitu_v2/result.py +4 -4
- paddlex/inference/pipelines/rotated_object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/rotated_object_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/seal_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/seal_recognition/pipeline.py +127 -63
- paddlex/inference/pipelines/seal_recognition/result.py +4 -2
- paddlex/inference/pipelines/semantic_segmentation/__init__.py +1 -1
- paddlex/inference/pipelines/semantic_segmentation/pipeline.py +30 -9
- paddlex/inference/pipelines/small_object_detection/__init__.py +1 -1
- paddlex/inference/pipelines/small_object_detection/pipeline.py +30 -9
- paddlex/inference/pipelines/table_recognition/__init__.py +1 -1
- paddlex/inference/pipelines/table_recognition/pipeline.py +61 -37
- paddlex/inference/pipelines/table_recognition/pipeline_v2.py +668 -65
- paddlex/inference/pipelines/table_recognition/result.py +12 -10
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +12 -8
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +55 -37
- paddlex/inference/pipelines/table_recognition/utils.py +1 -1
- paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +1 -1
- paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +16 -6
- paddlex/inference/pipelines/ts_classification/__init__.py +1 -1
- paddlex/inference/pipelines/ts_classification/pipeline.py +16 -6
- paddlex/inference/pipelines/ts_forecasting/__init__.py +1 -1
- paddlex/inference/pipelines/ts_forecasting/pipeline.py +16 -6
- paddlex/inference/pipelines/video_classification/__init__.py +1 -1
- paddlex/inference/pipelines/video_classification/pipeline.py +17 -6
- paddlex/inference/pipelines/video_detection/__init__.py +1 -1
- paddlex/inference/pipelines/video_detection/pipeline.py +20 -7
- paddlex/inference/serving/__init__.py +5 -1
- paddlex/inference/serving/basic_serving/__init__.py +1 -1
- paddlex/inference/serving/basic_serving/_app.py +31 -19
- paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +7 -4
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +1 -1
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +12 -4
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +1 -1
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +7 -2
- paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/doc_understanding.py +153 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +16 -13
- paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +13 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +10 -8
- paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +13 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +14 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +17 -14
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +16 -13
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +16 -9
- paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +11 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +14 -12
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +10 -7
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +10 -7
- paddlex/inference/serving/basic_serving/_server.py +9 -4
- paddlex/inference/serving/infra/__init__.py +1 -1
- paddlex/inference/serving/infra/config.py +1 -1
- paddlex/inference/serving/infra/models.py +13 -6
- paddlex/inference/serving/infra/storage.py +9 -4
- paddlex/inference/serving/infra/utils.py +54 -28
- paddlex/inference/serving/schemas/__init__.py +1 -1
- paddlex/inference/serving/schemas/anomaly_detection.py +1 -1
- paddlex/inference/serving/schemas/doc_preprocessor.py +1 -1
- paddlex/inference/serving/schemas/doc_understanding.py +78 -0
- paddlex/inference/serving/schemas/face_recognition.py +1 -1
- paddlex/inference/serving/schemas/formula_recognition.py +2 -2
- paddlex/inference/serving/schemas/human_keypoint_detection.py +1 -1
- paddlex/inference/serving/schemas/image_classification.py +1 -1
- paddlex/inference/serving/schemas/image_multilabel_classification.py +1 -1
- paddlex/inference/serving/schemas/instance_segmentation.py +1 -1
- paddlex/inference/serving/schemas/layout_parsing.py +2 -3
- paddlex/inference/serving/schemas/m_3d_bev_detection.py +1 -1
- paddlex/inference/serving/schemas/multilingual_speech_recognition.py +1 -1
- paddlex/inference/serving/schemas/object_detection.py +1 -1
- paddlex/inference/serving/schemas/ocr.py +1 -1
- paddlex/inference/serving/schemas/open_vocabulary_detection.py +1 -1
- paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +1 -1
- paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +1 -1
- paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +2 -3
- paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +3 -3
- paddlex/inference/serving/schemas/pp_shituv2.py +1 -1
- paddlex/inference/serving/schemas/pp_structurev3.py +11 -7
- paddlex/inference/serving/schemas/rotated_object_detection.py +1 -1
- paddlex/inference/serving/schemas/seal_recognition.py +2 -2
- paddlex/inference/serving/schemas/semantic_segmentation.py +1 -1
- paddlex/inference/serving/schemas/shared/__init__.py +1 -1
- paddlex/inference/serving/schemas/shared/classification.py +1 -1
- paddlex/inference/serving/schemas/shared/image_segmentation.py +1 -1
- paddlex/inference/serving/schemas/shared/object_detection.py +1 -1
- paddlex/inference/serving/schemas/shared/ocr.py +1 -1
- paddlex/inference/serving/schemas/small_object_detection.py +1 -1
- paddlex/inference/serving/schemas/table_recognition.py +3 -7
- paddlex/inference/serving/schemas/table_recognition_v2.py +6 -7
- paddlex/inference/serving/schemas/ts_anomaly_detection.py +1 -1
- paddlex/inference/serving/schemas/ts_classification.py +1 -1
- paddlex/inference/serving/schemas/ts_forecast.py +1 -1
- paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +1 -1
- paddlex/inference/serving/schemas/video_classification.py +1 -1
- paddlex/inference/serving/schemas/video_detection.py +1 -1
- paddlex/inference/utils/__init__.py +1 -1
- paddlex/inference/utils/benchmark.py +332 -179
- paddlex/inference/utils/color_map.py +1 -1
- paddlex/inference/utils/get_pipeline_path.py +1 -1
- paddlex/inference/utils/hpi.py +258 -0
- paddlex/inference/utils/hpi_model_info_collection.json +2331 -0
- paddlex/inference/utils/io/__init__.py +11 -11
- paddlex/inference/utils/io/readers.py +31 -27
- paddlex/inference/utils/io/style.py +21 -14
- paddlex/inference/utils/io/tablepyxl.py +13 -5
- paddlex/inference/utils/io/writers.py +9 -10
- paddlex/inference/utils/mkldnn_blocklist.py +25 -0
- paddlex/inference/utils/model_paths.py +48 -0
- paddlex/inference/utils/{new_ir_blacklist.py → new_ir_blocklist.py} +1 -2
- paddlex/inference/utils/official_models.py +278 -262
- paddlex/inference/utils/pp_option.py +184 -92
- paddlex/inference/utils/trt_blocklist.py +43 -0
- paddlex/inference/utils/trt_config.py +420 -0
- paddlex/model.py +30 -12
- paddlex/modules/__init__.py +57 -80
- paddlex/modules/anomaly_detection/__init__.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/__init__.py +2 -3
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +6 -3
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +8 -4
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +7 -4
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +2 -2
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +7 -2
- paddlex/modules/anomaly_detection/evaluator.py +3 -3
- paddlex/modules/anomaly_detection/exportor.py +1 -1
- paddlex/modules/anomaly_detection/model_list.py +1 -1
- paddlex/modules/anomaly_detection/trainer.py +3 -4
- paddlex/modules/base/__init__.py +5 -5
- paddlex/modules/base/build_model.py +1 -2
- paddlex/modules/base/dataset_checker/__init__.py +2 -2
- paddlex/modules/base/dataset_checker/dataset_checker.py +4 -4
- paddlex/modules/base/dataset_checker/utils.py +1 -3
- paddlex/modules/base/evaluator.py +13 -13
- paddlex/modules/base/exportor.py +12 -13
- paddlex/modules/base/trainer.py +21 -11
- paddlex/modules/base/utils/__init__.py +13 -0
- paddlex/modules/base/utils/cinn_setting.py +89 -0
- paddlex/modules/base/utils/coco_eval.py +94 -0
- paddlex/modules/base/utils/topk_eval.py +118 -0
- paddlex/modules/doc_vlm/__init__.py +18 -0
- paddlex/modules/doc_vlm/dataset_checker.py +29 -0
- paddlex/modules/doc_vlm/evaluator.py +29 -0
- paddlex/modules/doc_vlm/exportor.py +29 -0
- paddlex/modules/doc_vlm/model_list.py +16 -0
- paddlex/modules/doc_vlm/trainer.py +41 -0
- paddlex/modules/face_recognition/__init__.py +2 -2
- paddlex/modules/face_recognition/dataset_checker/__init__.py +2 -2
- paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +1 -1
- paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +3 -5
- paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/face_recognition/evaluator.py +3 -3
- paddlex/modules/face_recognition/exportor.py +1 -1
- paddlex/modules/face_recognition/model_list.py +1 -1
- paddlex/modules/face_recognition/trainer.py +1 -1
- paddlex/modules/formula_recognition/__init__.py +2 -2
- paddlex/modules/formula_recognition/dataset_checker/__init__.py +3 -3
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +2 -6
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
- paddlex/modules/formula_recognition/evaluator.py +6 -3
- paddlex/modules/formula_recognition/exportor.py +1 -1
- paddlex/modules/formula_recognition/model_list.py +4 -1
- paddlex/modules/formula_recognition/trainer.py +5 -3
- paddlex/modules/general_recognition/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +7 -9
- paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +4 -5
- paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +6 -5
- paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/general_recognition/evaluator.py +2 -2
- paddlex/modules/general_recognition/exportor.py +1 -1
- paddlex/modules/general_recognition/model_list.py +1 -1
- paddlex/modules/general_recognition/trainer.py +1 -1
- paddlex/modules/image_classification/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
- paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +4 -4
- paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +2 -5
- paddlex/modules/image_classification/evaluator.py +3 -3
- paddlex/modules/image_classification/exportor.py +1 -1
- paddlex/modules/image_classification/model_list.py +2 -1
- paddlex/modules/image_classification/trainer.py +3 -3
- paddlex/modules/image_unwarping/__init__.py +1 -1
- paddlex/modules/image_unwarping/model_list.py +1 -1
- paddlex/modules/instance_segmentation/__init__.py +2 -2
- paddlex/modules/instance_segmentation/dataset_checker/__init__.py +2 -3
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +9 -5
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +8 -5
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +8 -8
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +7 -4
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +10 -8
- paddlex/modules/instance_segmentation/evaluator.py +2 -2
- paddlex/modules/instance_segmentation/exportor.py +1 -1
- paddlex/modules/instance_segmentation/model_list.py +1 -1
- paddlex/modules/instance_segmentation/trainer.py +1 -1
- paddlex/modules/keypoint_detection/__init__.py +2 -2
- paddlex/modules/keypoint_detection/dataset_checker/__init__.py +2 -2
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +1 -1
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +8 -3
- paddlex/modules/keypoint_detection/evaluator.py +2 -2
- paddlex/modules/keypoint_detection/exportor.py +1 -1
- paddlex/modules/keypoint_detection/model_list.py +1 -1
- paddlex/modules/keypoint_detection/trainer.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/__init__.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/__init__.py +3 -3
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/analyse_dataset.py +8 -8
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/check_dataset.py +1 -2
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/evaluator.py +3 -3
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/exportor.py +1 -1
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/model_list.py +1 -1
- paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/trainer.py +5 -7
- paddlex/modules/multilabel_classification/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +10 -7
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +1 -5
- paddlex/modules/multilabel_classification/evaluator.py +3 -3
- paddlex/modules/multilabel_classification/exportor.py +1 -1
- paddlex/modules/multilabel_classification/model_list.py +1 -1
- paddlex/modules/multilabel_classification/trainer.py +3 -3
- paddlex/modules/multilingual_speech_recognition/__init__.py +2 -2
- paddlex/modules/multilingual_speech_recognition/dataset_checker.py +3 -3
- paddlex/modules/multilingual_speech_recognition/evaluator.py +3 -3
- paddlex/modules/multilingual_speech_recognition/exportor.py +3 -3
- paddlex/modules/multilingual_speech_recognition/model_list.py +1 -1
- paddlex/modules/multilingual_speech_recognition/trainer.py +7 -5
- paddlex/modules/object_detection/__init__.py +2 -2
- paddlex/modules/object_detection/dataset_checker/__init__.py +2 -11
- paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +10 -8
- paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
- paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +17 -12
- paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +8 -4
- paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +9 -8
- paddlex/modules/object_detection/evaluator.py +11 -6
- paddlex/modules/object_detection/exportor.py +1 -1
- paddlex/modules/object_detection/model_list.py +3 -1
- paddlex/modules/object_detection/trainer.py +4 -5
- paddlex/modules/open_vocabulary_detection/__init__.py +2 -2
- paddlex/modules/open_vocabulary_detection/dataset_checker.py +3 -3
- paddlex/modules/open_vocabulary_detection/evaluator.py +3 -3
- paddlex/modules/open_vocabulary_detection/exportor.py +3 -3
- paddlex/modules/open_vocabulary_detection/model_list.py +2 -4
- paddlex/modules/open_vocabulary_detection/trainer.py +7 -5
- paddlex/modules/open_vocabulary_segmentation/__init__.py +2 -2
- paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/evaluator.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/exportor.py +3 -3
- paddlex/modules/open_vocabulary_segmentation/model_list.py +1 -1
- paddlex/modules/open_vocabulary_segmentation/trainer.py +7 -5
- paddlex/modules/semantic_segmentation/__init__.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +2 -3
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +6 -3
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +7 -4
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +2 -2
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
- paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +6 -2
- paddlex/modules/semantic_segmentation/evaluator.py +3 -3
- paddlex/modules/semantic_segmentation/exportor.py +1 -1
- paddlex/modules/semantic_segmentation/model_list.py +1 -1
- paddlex/modules/semantic_segmentation/trainer.py +3 -4
- paddlex/modules/table_recognition/__init__.py +2 -2
- paddlex/modules/table_recognition/dataset_checker/__init__.py +5 -5
- paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +3 -2
- paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +8 -7
- paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +2 -1
- paddlex/modules/table_recognition/evaluator.py +3 -3
- paddlex/modules/table_recognition/exportor.py +1 -1
- paddlex/modules/table_recognition/model_list.py +1 -1
- paddlex/modules/table_recognition/trainer.py +2 -5
- paddlex/modules/text_detection/__init__.py +2 -2
- paddlex/modules/text_detection/dataset_checker/__init__.py +4 -6
- paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +12 -9
- paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +3 -3
- paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +3 -3
- paddlex/modules/text_detection/evaluator.py +3 -3
- paddlex/modules/text_detection/exportor.py +1 -1
- paddlex/modules/text_detection/model_list.py +3 -1
- paddlex/modules/text_detection/trainer.py +2 -5
- paddlex/modules/text_recognition/__init__.py +2 -2
- paddlex/modules/text_recognition/dataset_checker/__init__.py +4 -5
- paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
- paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +2 -5
- paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
- paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
- paddlex/modules/text_recognition/evaluator.py +3 -3
- paddlex/modules/text_recognition/exportor.py +1 -1
- paddlex/modules/text_recognition/model_list.py +3 -1
- paddlex/modules/text_recognition/trainer.py +2 -3
- paddlex/modules/ts_anomaly_detection/__init__.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +1 -9
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +4 -4
- paddlex/modules/ts_anomaly_detection/evaluator.py +3 -3
- paddlex/modules/ts_anomaly_detection/exportor.py +2 -3
- paddlex/modules/ts_anomaly_detection/model_list.py +1 -1
- paddlex/modules/ts_anomaly_detection/trainer.py +8 -8
- paddlex/modules/ts_classification/__init__.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -5
- paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +5 -5
- paddlex/modules/ts_classification/evaluator.py +3 -3
- paddlex/modules/ts_classification/exportor.py +2 -3
- paddlex/modules/ts_classification/model_list.py +1 -1
- paddlex/modules/ts_classification/trainer.py +7 -7
- paddlex/modules/ts_forecast/__init__.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/__init__.py +4 -5
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +1 -9
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +2 -2
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +2 -6
- paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +4 -4
- paddlex/modules/ts_forecast/evaluator.py +3 -3
- paddlex/modules/ts_forecast/exportor.py +2 -3
- paddlex/modules/ts_forecast/model_list.py +1 -1
- paddlex/modules/ts_forecast/trainer.py +7 -7
- paddlex/modules/video_classification/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +9 -9
- paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +2 -3
- paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
- paddlex/modules/video_classification/evaluator.py +3 -3
- paddlex/modules/video_classification/exportor.py +1 -1
- paddlex/modules/video_classification/model_list.py +1 -1
- paddlex/modules/video_classification/trainer.py +3 -3
- paddlex/modules/video_detection/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +2 -2
- paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +8 -9
- paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +3 -5
- paddlex/modules/video_detection/evaluator.py +3 -3
- paddlex/modules/video_detection/exportor.py +1 -1
- paddlex/modules/video_detection/model_list.py +1 -1
- paddlex/modules/video_detection/trainer.py +3 -3
- paddlex/ops/__init__.py +7 -4
- paddlex/ops/iou3d_nms/iou3d_cpu.cpp +8 -6
- paddlex/ops/iou3d_nms/iou3d_cpu.h +3 -2
- paddlex/ops/iou3d_nms/iou3d_nms.cpp +8 -6
- paddlex/ops/iou3d_nms/iou3d_nms.h +6 -4
- paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +24 -18
- paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +9 -7
- paddlex/ops/setup.py +3 -3
- paddlex/ops/voxel/voxelize_op.cc +22 -19
- paddlex/ops/voxel/voxelize_op.cu +25 -25
- paddlex/paddlex_cli.py +104 -87
- paddlex/repo_apis/Paddle3D_api/__init__.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +1 -1
- paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +6 -6
- paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +2 -2
- paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +1 -1
- paddlex/repo_apis/Paddle3D_api/pp3d_config.py +3 -2
- paddlex/repo_apis/PaddleClas_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleClas_api/cls/__init__.py +3 -3
- paddlex/repo_apis/PaddleClas_api/cls/config.py +5 -4
- paddlex/repo_apis/PaddleClas_api/cls/model.py +4 -4
- paddlex/repo_apis/PaddleClas_api/cls/register.py +12 -3
- paddlex/repo_apis/PaddleClas_api/cls/runner.py +2 -3
- paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +1 -4
- paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +2 -2
- paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +1 -6
- paddlex/repo_apis/PaddleDetection_api/__init__.py +2 -2
- paddlex/repo_apis/PaddleDetection_api/config_helper.py +3 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +2 -2
- paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +4 -4
- paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +2 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +3 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/config.py +5 -4
- paddlex/repo_apis/PaddleDetection_api/object_det/model.py +6 -7
- paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +26 -1
- paddlex/repo_apis/PaddleDetection_api/object_det/register.py +32 -3
- paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +2 -3
- paddlex/repo_apis/PaddleNLP_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/__init__.py +4 -3
- paddlex/repo_apis/PaddleOCR_api/config_utils.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +7 -6
- paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +9 -13
- paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +29 -3
- paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +2 -3
- paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +4 -4
- paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +2 -3
- paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +3 -3
- paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_det/config.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_det/model.py +4 -4
- paddlex/repo_apis/PaddleOCR_api/text_det/register.py +20 -3
- paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +3 -3
- paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +1 -1
- paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +7 -6
- paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +9 -13
- paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +20 -3
- paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +2 -3
- paddlex/repo_apis/PaddleSeg_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +2 -2
- paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +1 -1
- paddlex/repo_apis/PaddleSeg_api/seg/config.py +3 -6
- paddlex/repo_apis/PaddleSeg_api/seg/model.py +6 -6
- paddlex/repo_apis/PaddleSeg_api/seg/register.py +2 -3
- paddlex/repo_apis/PaddleSeg_api/seg/runner.py +2 -3
- paddlex/repo_apis/PaddleTS_api/__init__.py +4 -3
- paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +5 -6
- paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_base/config.py +2 -4
- paddlex/repo_apis/PaddleTS_api/ts_base/model.py +4 -4
- paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +4 -5
- paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +2 -2
- paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +1 -1
- paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +6 -7
- paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/__init__.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/config_utils.py +1 -1
- paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +3 -3
- paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +5 -4
- paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +4 -4
- paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +3 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/config.py +5 -4
- paddlex/repo_apis/PaddleVideo_api/video_det/model.py +5 -5
- paddlex/repo_apis/PaddleVideo_api/video_det/register.py +2 -3
- paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +2 -3
- paddlex/repo_apis/__init__.py +1 -1
- paddlex/repo_apis/base/__init__.py +4 -5
- paddlex/repo_apis/base/config.py +3 -4
- paddlex/repo_apis/base/model.py +11 -19
- paddlex/repo_apis/base/register.py +1 -1
- paddlex/repo_apis/base/runner.py +11 -12
- paddlex/repo_apis/base/utils/__init__.py +1 -1
- paddlex/repo_apis/base/utils/arg.py +1 -1
- paddlex/repo_apis/base/utils/subprocess.py +1 -1
- paddlex/repo_manager/__init__.py +2 -9
- paddlex/repo_manager/core.py +12 -30
- paddlex/repo_manager/meta.py +41 -31
- paddlex/repo_manager/repo.py +171 -161
- paddlex/repo_manager/utils.py +13 -224
- paddlex/utils/__init__.py +1 -1
- paddlex/utils/cache.py +8 -10
- paddlex/utils/config.py +6 -5
- paddlex/utils/{custom_device_whitelist.py → custom_device_list.py} +53 -199
- paddlex/utils/deps.py +249 -0
- paddlex/utils/device.py +87 -36
- paddlex/utils/download.py +4 -4
- paddlex/utils/env.py +37 -7
- paddlex/utils/errors/__init__.py +1 -1
- paddlex/utils/errors/dataset_checker.py +1 -1
- paddlex/utils/errors/others.py +2 -16
- paddlex/utils/file_interface.py +4 -5
- paddlex/utils/flags.py +17 -12
- paddlex/utils/fonts/__init__.py +36 -5
- paddlex/utils/func_register.py +1 -1
- paddlex/utils/install.py +87 -0
- paddlex/utils/interactive_get_pipeline.py +3 -3
- paddlex/utils/lazy_loader.py +3 -3
- paddlex/utils/logging.py +10 -1
- paddlex/utils/misc.py +6 -6
- paddlex/utils/pipeline_arguments.py +15 -7
- paddlex/utils/result_saver.py +4 -5
- paddlex/utils/subclass_register.py +2 -4
- paddlex/version.py +2 -1
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/METADATA +237 -102
- paddlex-3.0.1.dist-info/RECORD +1095 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/WHEEL +1 -1
- paddlex/inference/models/base/predictor/basic_predictor.py +0 -139
- paddlex/paddle2onnx_requirements.txt +0 -1
- paddlex/repo_manager/requirements.txt +0 -21
- paddlex/serving_requirements.txt +0 -9
- paddlex-3.0.0rc0.dist-info/RECORD +0 -1015
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/entry_points.txt +0 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info/licenses}/LICENSE +0 -0
- {paddlex-3.0.0rc0.dist-info → paddlex-3.0.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -13,19 +13,27 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
# Modified from OpenAI Whisper 2022 (https://github.com/openai/whisper/whisper)
|
15
15
|
import os
|
16
|
-
import tqdm
|
17
16
|
import zlib
|
18
|
-
import
|
19
|
-
import numpy as np
|
20
|
-
import lazy_paddle as paddle
|
21
|
-
|
22
|
-
from dataclasses import dataclass
|
23
|
-
from dataclasses import field
|
17
|
+
from dataclasses import dataclass, field
|
24
18
|
from functools import lru_cache
|
25
19
|
from typing import Dict, Iterable, List, Optional, Sequence, Tuple, Union
|
26
20
|
|
21
|
+
import numpy as np
|
22
|
+
import paddle
|
23
|
+
|
24
|
+
from ....utils.deps import function_requires_deps, is_dep_available
|
25
|
+
from ...utils.benchmark import (
|
26
|
+
benchmark,
|
27
|
+
get_inference_operations,
|
28
|
+
set_inference_operations,
|
29
|
+
)
|
27
30
|
from ..common.tokenizer import GPTTokenizer
|
28
31
|
|
32
|
+
if is_dep_available("soundfile"):
|
33
|
+
import soundfile
|
34
|
+
if is_dep_available("tqdm"):
|
35
|
+
import tqdm
|
36
|
+
|
29
37
|
__all__ = [
|
30
38
|
"Whisper",
|
31
39
|
"Tokenizer",
|
@@ -336,11 +344,9 @@ class Tokenizer:
|
|
336
344
|
"""
|
337
345
|
Returns the list of tokens to suppress in order to avoid any speaker tags or non-speech
|
338
346
|
annotations, to prevent sampling texts that are not actually spoken in the audio, e.g.
|
339
|
-
|
340
347
|
- ♪♪♪
|
341
348
|
- ( SPEAKING FOREIGN LANGUAGE )
|
342
349
|
- [DAVID] Hey there,
|
343
|
-
|
344
350
|
keeping basic punctuations like commas, periods, question marks, exclamation points, etc.
|
345
351
|
"""
|
346
352
|
symbols = list('"#()*+/:;<=>@[\\]^_`{|}~「」『』')
|
@@ -706,7 +712,6 @@ class Inference:
|
|
706
712
|
|
707
713
|
def cleanup_caching(self) -> None:
|
708
714
|
"""Clean up any resources or hooks after decoding is finished"""
|
709
|
-
pass
|
710
715
|
|
711
716
|
|
712
717
|
class WhisperInference(Inference):
|
@@ -752,7 +757,6 @@ def detect_language(
|
|
752
757
|
Detect the spoken language in the audio, and return them as list of strings, along with the ids
|
753
758
|
of the most probable language tokens and the probability distribution over all language tokens.
|
754
759
|
This is performed outside the main decode loop in order to not interfere with kv-caching.
|
755
|
-
|
756
760
|
Returns
|
757
761
|
-------
|
758
762
|
language_tokens : Tensor, shape = (batch_size,)
|
@@ -804,6 +808,7 @@ def detect_language(
|
|
804
808
|
return language_tokens, language_probs
|
805
809
|
|
806
810
|
|
811
|
+
@function_requires_deps("tqdm")
|
807
812
|
def transcribe(
|
808
813
|
model: "Whisper",
|
809
814
|
mel: paddle.Tensor,
|
@@ -819,41 +824,31 @@ def transcribe(
|
|
819
824
|
):
|
820
825
|
"""
|
821
826
|
Transcribe an audio file using Whisper
|
822
|
-
|
823
827
|
Parameters
|
824
828
|
----------
|
825
829
|
model: Whisper
|
826
830
|
The Whisper model instance
|
827
|
-
|
828
831
|
mel: paddle.Tensor
|
829
832
|
The audio feature
|
830
|
-
|
831
833
|
verbose: bool
|
832
834
|
Whether to display the text being decoded to the console. If True, displays all the details,
|
833
835
|
If False, displays minimal details. If None, does not display anything
|
834
|
-
|
835
836
|
temperature: Union[float, Tuple[float, ...]]
|
836
837
|
Temperature for sampling. It can be a tuple of temperatures, which will be successfully used
|
837
838
|
upon failures according to either `compression_ratio_threshold` or `logprob_threshold`.
|
838
|
-
|
839
839
|
compression_ratio_threshold: float
|
840
840
|
If the gzip compression ratio is above this value, treat as failed
|
841
|
-
|
842
841
|
logprob_threshold: float
|
843
842
|
If the average log probability over sampled tokens is below this value, treat as failed
|
844
|
-
|
845
843
|
no_speech_threshold: float
|
846
844
|
If the no_speech probability is higher than this value AND the average log probability
|
847
845
|
over sampled tokens is below `logprob_threshold`, consider the segment as silent
|
848
|
-
|
849
846
|
condition_on_previous_text: bool
|
850
847
|
if True, the previous output of the model is provided as a prompt for the next window;
|
851
848
|
disabling may make the text inconsistent across windows, but the model becomes less prone to
|
852
849
|
getting stuck in a failure loop, such as repetition looping or timestamps going out of sync.
|
853
|
-
|
854
850
|
decode_options: dict
|
855
851
|
Keyword arguments to construct `DecodingOptions` instances
|
856
|
-
|
857
852
|
Returns
|
858
853
|
-------
|
859
854
|
A dictionary containing the resulting text ("text") and segment-level details ("segments"), and
|
@@ -886,7 +881,10 @@ def transcribe(
|
|
886
881
|
language = decode_options["language"]
|
887
882
|
task = decode_options.get("task", "transcribe")
|
888
883
|
tokenizer = get_tokenizer(
|
889
|
-
model.is_multilingual,
|
884
|
+
model.is_multilingual,
|
885
|
+
resource_path=resource_path,
|
886
|
+
language=language,
|
887
|
+
task=task,
|
890
888
|
)
|
891
889
|
|
892
890
|
def decode_with_fallback(segment: paddle.Tensor) -> DecodingResult:
|
@@ -944,7 +942,11 @@ def transcribe(
|
|
944
942
|
initial_prompt = []
|
945
943
|
|
946
944
|
def add_segment(
|
947
|
-
*,
|
945
|
+
*,
|
946
|
+
start: float,
|
947
|
+
end: float,
|
948
|
+
text_tokens: paddle.Tensor,
|
949
|
+
result: DecodingResult,
|
948
950
|
):
|
949
951
|
text = tokenizer.decode(
|
950
952
|
[token for token in text_tokens if token < tokenizer.eot]
|
@@ -1113,29 +1115,26 @@ class TokenDecoder:
|
|
1113
1115
|
"""Initialize any stateful variables for decoding a new sequence"""
|
1114
1116
|
|
1115
1117
|
def update(
|
1116
|
-
self,
|
1118
|
+
self,
|
1119
|
+
tokens: paddle.Tensor,
|
1120
|
+
logits: paddle.Tensor,
|
1121
|
+
sum_logprobs: paddle.Tensor,
|
1117
1122
|
) -> Tuple[paddle.Tensor, bool]:
|
1118
1123
|
"""Specify how to select the next token, based on the current trace and logits
|
1119
|
-
|
1120
1124
|
Parameters
|
1121
1125
|
----------
|
1122
1126
|
tokens : Tensor, shape = (n_batch, current_sequence_length)
|
1123
1127
|
all tokens in the context so far, including the prefix and sot_sequence tokens
|
1124
|
-
|
1125
1128
|
logits : Tensor, shape = (n_batch, vocab_size)
|
1126
1129
|
per-token logits of the probability distribution at the current step
|
1127
|
-
|
1128
1130
|
sum_logprobs : Tensor, shape = (n_batch)
|
1129
1131
|
cumulative log probabilities for each sequence
|
1130
|
-
|
1131
1132
|
Returns
|
1132
1133
|
-------
|
1133
1134
|
tokens : Tensor, shape = (n_batch, current_sequence_length + 1)
|
1134
1135
|
the tokens, appended with the selected next token
|
1135
|
-
|
1136
1136
|
completed : bool
|
1137
1137
|
True if all sequences has reached the end of text
|
1138
|
-
|
1139
1138
|
"""
|
1140
1139
|
raise NotImplementedError
|
1141
1140
|
|
@@ -1143,23 +1142,18 @@ class TokenDecoder:
|
|
1143
1142
|
self, tokens: paddle.Tensor, sum_logprobs: paddle.Tensor
|
1144
1143
|
) -> Tuple[Sequence[Sequence[paddle.Tensor]], List[List[float]]]:
|
1145
1144
|
"""Finalize search and return the final candidate sequences
|
1146
|
-
|
1147
1145
|
Parameters
|
1148
1146
|
----------
|
1149
1147
|
tokens : Tensor, shape = (batch_size, beam_size, current_sequence_length)
|
1150
1148
|
all tokens in the context so far, including the prefix and sot_sequence
|
1151
|
-
|
1152
1149
|
sum_logprobs : Tensor, shape = (batch_size, beam_size)
|
1153
1150
|
cumulative log probabilities for each sequence
|
1154
|
-
|
1155
1151
|
Returns
|
1156
1152
|
-------
|
1157
1153
|
tokens : Sequence[Sequence[Tensor]], length = batch_size
|
1158
1154
|
sequence of Tensors containing candidate token sequences, for each audio input
|
1159
|
-
|
1160
1155
|
sum_logprobs : List[List[float]], length = batch_size
|
1161
1156
|
sequence of cumulative log probabilities corresponding to the above
|
1162
|
-
|
1163
1157
|
"""
|
1164
1158
|
raise NotImplementedError
|
1165
1159
|
|
@@ -1170,7 +1164,10 @@ class GreedyDecoder(TokenDecoder):
|
|
1170
1164
|
self.eot = eot
|
1171
1165
|
|
1172
1166
|
def update(
|
1173
|
-
self,
|
1167
|
+
self,
|
1168
|
+
tokens: paddle.Tensor,
|
1169
|
+
logits: paddle.Tensor,
|
1170
|
+
sum_logprobs: paddle.Tensor,
|
1174
1171
|
) -> Tuple[paddle.Tensor, bool]:
|
1175
1172
|
temperature = self.temperature
|
1176
1173
|
if temperature == 0:
|
@@ -1235,7 +1232,10 @@ class BeamSearchDecoder(TokenDecoder):
|
|
1235
1232
|
self.finished_sequences = None
|
1236
1233
|
|
1237
1234
|
def update(
|
1238
|
-
self,
|
1235
|
+
self,
|
1236
|
+
tokens: paddle.Tensor,
|
1237
|
+
logits: paddle.Tensor,
|
1238
|
+
sum_logprobs: paddle.Tensor,
|
1239
1239
|
) -> Tuple[paddle.Tensor, bool]:
|
1240
1240
|
if tokens.shape[0] % self.beam_size != 0:
|
1241
1241
|
raise ValueError(f"{tokens.shape}[0] % {self.beam_size} != 0")
|
@@ -1564,7 +1564,10 @@ class DecodingTask:
|
|
1564
1564
|
return audio_features
|
1565
1565
|
|
1566
1566
|
def _detect_language(
|
1567
|
-
self,
|
1567
|
+
self,
|
1568
|
+
audio_features: paddle.Tensor,
|
1569
|
+
tokens: paddle.Tensor,
|
1570
|
+
resource_path: str,
|
1568
1571
|
):
|
1569
1572
|
languages = [self.options.language] * audio_features.shape[0]
|
1570
1573
|
lang_probs = None
|
@@ -1656,20 +1659,16 @@ class DecodingTask:
|
|
1656
1659
|
]
|
1657
1660
|
|
1658
1661
|
# repeat the audio & text tensors by the group size, for beam search or best-of-n sampling
|
1659
|
-
|
1660
1662
|
audio_features = paddle.repeat_interleave(
|
1661
1663
|
audio_features, self.beam_size, axis=0
|
1662
1664
|
)
|
1663
1665
|
tokens = paddle.repeat_interleave(tokens, self.beam_size, axis=0)
|
1664
|
-
|
1665
1666
|
# call the main sampling loop
|
1666
1667
|
tokens, sum_logprobs, no_speech_probs = self._main_loop(audio_features, tokens)
|
1667
|
-
|
1668
1668
|
# reshape the tensors to have (batch_size, beam_size) as the first two dimensions
|
1669
1669
|
audio_features = audio_features[:: self.beam_size]
|
1670
1670
|
no_speech_probs = no_speech_probs[:: self.beam_size]
|
1671
1671
|
assert audio_features.shape[0] == len(no_speech_probs) == batch_size
|
1672
|
-
|
1673
1672
|
tokens = tokens.reshape([batch_size, self.beam_size, -1])
|
1674
1673
|
sum_logprobs = sum_logprobs.reshape([batch_size, self.beam_size])
|
1675
1674
|
|
@@ -1727,18 +1726,14 @@ def decode(
|
|
1727
1726
|
) -> Union[DecodingResult, List[DecodingResult]]:
|
1728
1727
|
"""
|
1729
1728
|
Performs decoding of 30-second audio segment(s), provided as Mel spectrogram(s).
|
1730
|
-
|
1731
1729
|
Parameters
|
1732
1730
|
----------
|
1733
1731
|
model: Whisper
|
1734
1732
|
the Whisper model instance
|
1735
|
-
|
1736
1733
|
mel: paddle.Tensor, shape = (80, 3000) or (*, 80, 3000)
|
1737
1734
|
A tensor containing the Mel spectrogram(s)
|
1738
|
-
|
1739
1735
|
options: DecodingOptions
|
1740
1736
|
A dataclass that contains all necessary options for decoding 30-second segments
|
1741
|
-
|
1742
1737
|
Returns
|
1743
1738
|
-------
|
1744
1739
|
result: Union[DecodingResult, List[DecodingResult]]
|
@@ -1804,7 +1799,6 @@ class Whisper(paddle.nn.Layer):
|
|
1804
1799
|
tensors calculated for the previous positions. This method returns a dictionary that stores
|
1805
1800
|
all caches, and the necessary hooks for the key and value projection modules that save the
|
1806
1801
|
intermediate tensors to be reused during later calculations.
|
1807
|
-
|
1808
1802
|
Returns
|
1809
1803
|
-------
|
1810
1804
|
cache : Dict[nn.Layer, paddle.Tensor]
|
@@ -1836,7 +1830,8 @@ class Whisper(paddle.nn.Layer):
|
|
1836
1830
|
return cache, hooks
|
1837
1831
|
|
1838
1832
|
detect_language = detect_language
|
1839
|
-
|
1833
|
+
set_inference_operations(get_inference_operations() + ["speech_transcribe"])
|
1834
|
+
transcribe = benchmark.timeit_with_options(name="speech_transcribe")(transcribe)
|
1840
1835
|
decode = decode
|
1841
1836
|
|
1842
1837
|
|
@@ -1888,7 +1883,6 @@ def mel_filters(resource_path: str, n_mels: int = N_MELS) -> paddle.Tensor:
|
|
1888
1883
|
"""
|
1889
1884
|
load the mel filterbank matrix for projecting STFT into a Mel spectrogram.
|
1890
1885
|
Allows decoupling librosa dependency; saved using:
|
1891
|
-
|
1892
1886
|
np.savez_compressed(
|
1893
1887
|
"mel_filters.npz",
|
1894
1888
|
mel_80=librosa.filters.mel(sr=16000, n_fft=400, n_mels=80),
|
@@ -1899,6 +1893,7 @@ def mel_filters(resource_path: str, n_mels: int = N_MELS) -> paddle.Tensor:
|
|
1899
1893
|
return paddle.to_tensor(f[f"mel_{n_mels}"])
|
1900
1894
|
|
1901
1895
|
|
1896
|
+
@function_requires_deps("soundfile")
|
1902
1897
|
def log_mel_spectrogram(
|
1903
1898
|
audio: Union[str, np.ndarray, paddle.Tensor],
|
1904
1899
|
n_mels: int = N_MELS,
|
@@ -1906,15 +1901,12 @@ def log_mel_spectrogram(
|
|
1906
1901
|
):
|
1907
1902
|
"""
|
1908
1903
|
Compute the log-Mel spectrogram of
|
1909
|
-
|
1910
1904
|
Parameters
|
1911
1905
|
----------
|
1912
1906
|
audio: Union[str, np.ndarray, paddle.Tensor], shape = (*)
|
1913
1907
|
The path to audio or either a NumPy array or Tensor containing the audio waveform in 16 kHz
|
1914
|
-
|
1915
1908
|
n_mels: int
|
1916
1909
|
The number of Mel-frequency filters, only 80 is supported
|
1917
|
-
|
1918
1910
|
Returns
|
1919
1911
|
-------
|
1920
1912
|
paddle.Tensor, shape = (80, n_frames)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -12,16 +12,14 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
from typing import Any, List, Sequence,
|
15
|
+
from typing import Any, List, Optional, Sequence, Tuple, Union
|
16
16
|
|
17
17
|
import numpy as np
|
18
18
|
|
19
|
-
from ....utils.func_register import FuncRegister
|
20
19
|
from ....modules.object_detection.model_list import MODELS
|
20
|
+
from ....utils.func_register import FuncRegister
|
21
21
|
from ...common.batch_sampler import ImageBatchSampler
|
22
|
-
|
23
|
-
from ..common import StaticInfer
|
24
|
-
from ..base import BasicPredictor
|
22
|
+
from ..base import BasePredictor
|
25
23
|
from .processors import (
|
26
24
|
DetPad,
|
27
25
|
DetPostProcess,
|
@@ -37,7 +35,7 @@ from .result import DetResult
|
|
37
35
|
from .utils import STATIC_SHAPE_MODEL_LIST
|
38
36
|
|
39
37
|
|
40
|
-
class DetPredictor(
|
38
|
+
class DetPredictor(BasePredictor):
|
41
39
|
|
42
40
|
entities = MODELS
|
43
41
|
|
@@ -142,11 +140,7 @@ class DetPredictor(BasicPredictor):
|
|
142
140
|
pre_ops.insert(1, self.build_resize(self.img_size, False, 2))
|
143
141
|
|
144
142
|
# build infer
|
145
|
-
infer =
|
146
|
-
model_dir=self.model_dir,
|
147
|
-
model_prefix=self.MODEL_FILE_PREFIX,
|
148
|
-
option=self.pp_option,
|
149
|
-
)
|
143
|
+
infer = self.create_static_infer()
|
150
144
|
|
151
145
|
# build postprocess op
|
152
146
|
post_op = self.build_postprocess()
|
@@ -322,6 +316,8 @@ class DetPredictor(BasicPredictor):
|
|
322
316
|
"BlazeFace",
|
323
317
|
"BlazeFace-FPN-SSH",
|
324
318
|
"PP-DocLayout-L",
|
319
|
+
"PP-DocLayout_plus-L",
|
320
|
+
"PP-DocBlockLayout",
|
325
321
|
]
|
326
322
|
if any(name in self.model_name for name in models_required_imgsize):
|
327
323
|
ordered_required_keys = (
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -12,20 +12,26 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
from typing import List, Sequence, Tuple, Union
|
15
|
+
from typing import List, Optional, Sequence, Tuple, Union
|
16
16
|
|
17
|
-
import cv2
|
18
17
|
import numpy as np
|
19
18
|
from numpy import ndarray
|
20
19
|
|
21
|
-
from
|
22
|
-
from ..common import Normalize as CommonNormalize
|
20
|
+
from ....utils.deps import class_requires_deps, function_requires_deps, is_dep_available
|
23
21
|
from ...common.reader import ReadImage as CommonReadImage
|
22
|
+
from ...utils.benchmark import benchmark
|
23
|
+
from ..common import Normalize as CommonNormalize
|
24
|
+
from ..common import Resize as CommonResize
|
25
|
+
|
26
|
+
if is_dep_available("opencv-contrib-python"):
|
27
|
+
import cv2
|
24
28
|
|
25
29
|
Boxes = List[dict]
|
26
30
|
Number = Union[int, float]
|
27
31
|
|
28
32
|
|
33
|
+
@benchmark.timeit_with_options(name=None, is_read_operation=True)
|
34
|
+
@class_requires_deps("opencv-contrib-python")
|
29
35
|
class ReadImage(CommonReadImage):
|
30
36
|
"""Reads images from a list of raw image data or file paths."""
|
31
37
|
|
@@ -69,7 +75,7 @@ class ReadImage(CommonReadImage):
|
|
69
75
|
if isinstance(img, np.ndarray):
|
70
76
|
ori_img = img
|
71
77
|
if self.format == "RGB":
|
72
|
-
img =
|
78
|
+
img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
|
73
79
|
return img, ori_img
|
74
80
|
elif isinstance(img, str):
|
75
81
|
blob = self._img_reader.read(img)
|
@@ -81,7 +87,7 @@ class ReadImage(CommonReadImage):
|
|
81
87
|
if blob.ndim != 3:
|
82
88
|
raise RuntimeError("Array is not 3-dimensional.")
|
83
89
|
# BGR to RGB
|
84
|
-
blob = blob
|
90
|
+
blob = cv2.cvtColor(blob, cv2.COLOR_BGR2RGB)
|
85
91
|
return blob, ori_img
|
86
92
|
else:
|
87
93
|
raise TypeError(
|
@@ -92,6 +98,7 @@ class ReadImage(CommonReadImage):
|
|
92
98
|
)
|
93
99
|
|
94
100
|
|
101
|
+
@benchmark.timeit
|
95
102
|
class Resize(CommonResize):
|
96
103
|
def __call__(self, datas: List[dict]) -> List[dict]:
|
97
104
|
"""
|
@@ -122,31 +129,18 @@ class Resize(CommonResize):
|
|
122
129
|
return datas
|
123
130
|
|
124
131
|
|
132
|
+
@benchmark.timeit
|
125
133
|
class Normalize(CommonNormalize):
|
126
|
-
"""Normalizes images in a list of dictionaries containing image data"""
|
127
|
-
|
128
|
-
def apply(self, img: ndarray) -> ndarray:
|
129
|
-
"""Applies normalization to a single image."""
|
130
|
-
old_type = img.dtype
|
131
|
-
# XXX: If `old_type` has higher precision than float32,
|
132
|
-
# we will lose some precision.
|
133
|
-
img = img.astype("float32", copy=False)
|
134
|
-
img *= self.scale
|
135
|
-
img -= self.mean
|
136
|
-
img /= self.std
|
137
|
-
if self.preserve_dtype:
|
138
|
-
img = img.astype(old_type, copy=False)
|
139
|
-
return img
|
140
|
-
|
141
134
|
def __call__(self, datas: List[dict]) -> List[dict]:
|
142
135
|
"""Normalizes images in a list of dictionaries. Iterates over each dictionary,
|
143
136
|
applies normalization to the 'img' key, and returns the modified list.
|
144
137
|
"""
|
145
138
|
for data in datas:
|
146
|
-
data["img"] = self.
|
139
|
+
data["img"] = self.norm(data["img"])
|
147
140
|
return datas
|
148
141
|
|
149
142
|
|
143
|
+
@benchmark.timeit
|
150
144
|
class ToCHWImage:
|
151
145
|
"""Converts images in a list of dictionaries from HWC to CHW format."""
|
152
146
|
|
@@ -164,6 +158,7 @@ class ToCHWImage:
|
|
164
158
|
return datas
|
165
159
|
|
166
160
|
|
161
|
+
@benchmark.timeit
|
167
162
|
class ToBatch:
|
168
163
|
"""
|
169
164
|
Class for batch processing of data dictionaries.
|
@@ -211,6 +206,7 @@ class ToBatch:
|
|
211
206
|
return [self.apply(datas, key) for key in self.ordered_required_keys]
|
212
207
|
|
213
208
|
|
209
|
+
@benchmark.timeit
|
214
210
|
class DetPad:
|
215
211
|
"""
|
216
212
|
Pad image to a specified size.
|
@@ -248,6 +244,7 @@ class DetPad:
|
|
248
244
|
return datas
|
249
245
|
|
250
246
|
|
247
|
+
@benchmark.timeit
|
251
248
|
class PadStride:
|
252
249
|
"""padding image for model with FPN , instead PadBatch(pad_to_stride, pad_gt) in original config
|
253
250
|
Args:
|
@@ -318,6 +315,7 @@ def _get_3rd_point(a: ndarray, b: ndarray) -> ndarray:
|
|
318
315
|
return third_pt
|
319
316
|
|
320
317
|
|
318
|
+
@function_requires_deps("opencv-contrib-python")
|
321
319
|
def get_affine_transform(
|
322
320
|
center: ndarray,
|
323
321
|
input_size: Union[Number, Tuple[Number, Number], ndarray],
|
@@ -374,6 +372,8 @@ def get_affine_transform(
|
|
374
372
|
return trans
|
375
373
|
|
376
374
|
|
375
|
+
@benchmark.timeit
|
376
|
+
@class_requires_deps("opencv-contrib-python")
|
377
377
|
class WarpAffine:
|
378
378
|
"""Apply warp affine transformation to the image based on the given parameters.
|
379
379
|
|
@@ -434,7 +434,7 @@ class WarpAffine:
|
|
434
434
|
if not self.keep_res:
|
435
435
|
out_h = input_h // self.down_ratio
|
436
436
|
out_w = input_w // self.down_ratio
|
437
|
-
|
437
|
+
get_affine_transform(c, s, 0, [out_w, out_h])
|
438
438
|
|
439
439
|
return inp
|
440
440
|
|
@@ -474,6 +474,8 @@ def restructured_boxes(
|
|
474
474
|
ymin = max(0, ymin)
|
475
475
|
xmax = min(w, xmax)
|
476
476
|
ymax = min(h, ymax)
|
477
|
+
if xmax <= xmin or ymax <= ymin:
|
478
|
+
continue
|
477
479
|
box_list.append(
|
478
480
|
{
|
479
481
|
"cls_id": int(box[0]),
|
@@ -621,7 +623,7 @@ def nms(boxes, iou_same=0.6, iou_diff=0.95):
|
|
621
623
|
current = indices[0]
|
622
624
|
current_box = boxes[current]
|
623
625
|
current_class = current_box[0]
|
624
|
-
|
626
|
+
current_box[1]
|
625
627
|
current_coords = current_box[2:]
|
626
628
|
|
627
629
|
selected_boxes.append(current)
|
@@ -675,7 +677,7 @@ def check_containment(boxes, formula_index=None, category_index=None, mode=None)
|
|
675
677
|
if mode == "large" and boxes[j][0] == category_index:
|
676
678
|
if is_contained(boxes[i], boxes[j]):
|
677
679
|
contained_by_other[i] = 1
|
678
|
-
contains_other[j] = 1
|
680
|
+
contains_other[j] = 1
|
679
681
|
if mode == "small" and boxes[i][0] == category_index:
|
680
682
|
if is_contained(boxes[i], boxes[j]):
|
681
683
|
contained_by_other[i] = 1
|
@@ -687,6 +689,7 @@ def check_containment(boxes, formula_index=None, category_index=None, mode=None)
|
|
687
689
|
return contains_other, contained_by_other
|
688
690
|
|
689
691
|
|
692
|
+
@benchmark.timeit
|
690
693
|
class DetPostProcess:
|
691
694
|
"""Save Result Transform
|
692
695
|
|
@@ -743,14 +746,39 @@ class DetPostProcess:
|
|
743
746
|
)
|
744
747
|
|
745
748
|
if layout_nms:
|
746
|
-
filtered_boxes = []
|
747
|
-
### Layout postprocess for NMS
|
748
749
|
selected_indices = nms(boxes, iou_same=0.6, iou_diff=0.98)
|
749
750
|
boxes = np.array(boxes[selected_indices])
|
750
751
|
|
752
|
+
filter_large_image = True
|
753
|
+
if filter_large_image and len(boxes) > 1 and boxes.shape[1] == 6:
|
754
|
+
if img_size[0] > img_size[1]:
|
755
|
+
area_thres = 0.82
|
756
|
+
else:
|
757
|
+
area_thres = 0.93
|
758
|
+
image_index = self.labels.index("image") if "image" in self.labels else None
|
759
|
+
img_area = img_size[0] * img_size[1]
|
760
|
+
filtered_boxes = []
|
761
|
+
for box in boxes:
|
762
|
+
label_index, score, xmin, ymin, xmax, ymax = box
|
763
|
+
if label_index == image_index:
|
764
|
+
xmin = max(0, xmin)
|
765
|
+
ymin = max(0, ymin)
|
766
|
+
xmax = min(img_size[0], xmax)
|
767
|
+
ymax = min(img_size[1], ymax)
|
768
|
+
box_area = (xmax - xmin) * (ymax - ymin)
|
769
|
+
if box_area <= area_thres * img_area:
|
770
|
+
filtered_boxes.append(box)
|
771
|
+
else:
|
772
|
+
filtered_boxes.append(box)
|
773
|
+
if len(filtered_boxes) == 0:
|
774
|
+
filtered_boxes = boxes
|
775
|
+
boxes = np.array(filtered_boxes)
|
776
|
+
|
751
777
|
if layout_merge_bboxes_mode:
|
752
|
-
formula_index = (
|
753
|
-
|
778
|
+
formula_index = (
|
779
|
+
self.labels.index("formula") if "formula" in self.labels else None
|
780
|
+
)
|
781
|
+
if isinstance(layout_merge_bboxes_mode, str):
|
754
782
|
assert layout_merge_bboxes_mode in [
|
755
783
|
"union",
|
756
784
|
"large",
|
@@ -783,17 +811,19 @@ class DetPostProcess:
|
|
783
811
|
boxes, formula_index, category_index, mode=layout_mode
|
784
812
|
)
|
785
813
|
# Remove boxes that are contained by other boxes
|
786
|
-
keep_mask &=
|
814
|
+
keep_mask &= contained_by_other == 0
|
787
815
|
elif layout_mode == "small":
|
788
816
|
contains_other, contained_by_other = check_containment(
|
789
817
|
boxes, formula_index, category_index, mode=layout_mode
|
790
818
|
)
|
791
819
|
# Keep boxes that do not contain others or are contained by others
|
792
|
-
keep_mask &= (contains_other == 0) | (
|
820
|
+
keep_mask &= (contains_other == 0) | (
|
821
|
+
contained_by_other == 1
|
822
|
+
)
|
793
823
|
boxes = boxes[keep_mask]
|
794
824
|
|
795
825
|
if boxes.size == 0:
|
796
|
-
return
|
826
|
+
return []
|
797
827
|
|
798
828
|
if layout_unclip_ratio:
|
799
829
|
if isinstance(layout_unclip_ratio, float):
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -12,14 +12,15 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
from typing import List
|
16
15
|
import copy
|
16
|
+
from typing import List
|
17
|
+
|
17
18
|
import PIL
|
18
19
|
from PIL import Image, ImageDraw, ImageFont
|
19
20
|
|
20
21
|
from ....utils.fonts import PINGFANG_FONT_FILE_PATH
|
21
|
-
from ...
|
22
|
-
from ...
|
22
|
+
from ...common.result import BaseCVResult, JsonMixin
|
23
|
+
from ...utils.color_map import font_colormap, get_colormap
|
23
24
|
|
24
25
|
|
25
26
|
def draw_box(img: Image.Image, boxes: List[dict]) -> Image.Image:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -65,4 +65,6 @@ STATIC_SHAPE_MODEL_LIST = [
|
|
65
65
|
"PP-DocLayout-L",
|
66
66
|
"PP-DocLayout-M",
|
67
67
|
"PP-DocLayout-S",
|
68
|
+
"PP-DocLayout_plus-L",
|
69
|
+
"PP-DocBlockLayout",
|
68
70
|
]
|