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
@@ -0,0 +1,543 @@
|
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from typing import Dict, List, Optional, Union
|
16
|
+
|
17
|
+
import numpy as np
|
18
|
+
|
19
|
+
from .....utils import logging
|
20
|
+
from ....utils.benchmark import benchmark
|
21
|
+
from ...common.vision.funcs import resize
|
22
|
+
from .common import (
|
23
|
+
BatchFeature,
|
24
|
+
ChannelDimension,
|
25
|
+
ImageInput,
|
26
|
+
PILImageResampling,
|
27
|
+
TensorType,
|
28
|
+
TextInput,
|
29
|
+
convert_to_rgb,
|
30
|
+
fetch_image,
|
31
|
+
get_image_size,
|
32
|
+
infer_channel_dimension_format,
|
33
|
+
make_batched_images,
|
34
|
+
make_list_of_images,
|
35
|
+
smart_resize,
|
36
|
+
to_channel_dimension_format,
|
37
|
+
to_numpy_array,
|
38
|
+
valid_images,
|
39
|
+
)
|
40
|
+
|
41
|
+
OPENAI_CLIP_MEAN = [0.48145466, 0.4578275, 0.40821073]
|
42
|
+
OPENAI_CLIP_STD = [0.26862954, 0.26130258, 0.27577711]
|
43
|
+
|
44
|
+
IMAGE_FACTOR = 28
|
45
|
+
MIN_PIXELS = 4 * 28 * 28
|
46
|
+
MAX_PIXELS = 16384 * 28 * 28
|
47
|
+
MAX_RATIO = 200
|
48
|
+
|
49
|
+
|
50
|
+
def is_scaled_image(image: np.ndarray) -> bool:
|
51
|
+
"""
|
52
|
+
Checks to see whether the pixel values have already been rescaled to [0, 1].
|
53
|
+
"""
|
54
|
+
if image.dtype == np.uint8:
|
55
|
+
return False
|
56
|
+
|
57
|
+
# It's possible the image has pixel values in [0, 255] but is of floating type
|
58
|
+
return np.min(image) >= 0 and np.max(image) <= 1
|
59
|
+
|
60
|
+
|
61
|
+
class Qwen2VLProcessor(object):
|
62
|
+
r"""
|
63
|
+
Constructs a Qwen2-VL processor which wraps a Qwen2-VL image processor and a Qwen2 tokenizer into a single processor.
|
64
|
+
|
65
|
+
[`Qwen2VLProcessor`] offers all the functionalities of [`Qwen2VLImageProcessor`] and [`Qwen2TokenizerFast`]. See the
|
66
|
+
[`~Qwen2VLProcessor.__call__`] and [`~Qwen2VLProcessor.decode`] for more information.
|
67
|
+
|
68
|
+
Args:
|
69
|
+
image_processor ([`Qwen2VLImageProcessor`], *optional*):
|
70
|
+
The image processor is a required input.
|
71
|
+
tokenizer ([`MIXQwen2Tokenizer`], *optional*):
|
72
|
+
The tokenizer is a required input.
|
73
|
+
"""
|
74
|
+
|
75
|
+
def __init__(self, image_processor, tokenizer, **kwargs):
|
76
|
+
self.image_processor = image_processor
|
77
|
+
self.tokenizer = tokenizer
|
78
|
+
self.image_processor.min_pixels = kwargs.get("min_pixels", 3136)
|
79
|
+
self.image_processor.max_pixels = kwargs.get("max_pixels", 12845056)
|
80
|
+
|
81
|
+
def preprocess(
|
82
|
+
self,
|
83
|
+
images: ImageInput = None,
|
84
|
+
text: Union[TextInput, List[TextInput]] = None,
|
85
|
+
padding: bool = False,
|
86
|
+
truncation: Union[bool, str] = None,
|
87
|
+
max_length: int = None,
|
88
|
+
return_tensors: Optional[Union[str, TensorType]] = TensorType.PADDLE,
|
89
|
+
):
|
90
|
+
"""
|
91
|
+
Main method to prepare for the model one or several sequences(s) and image(s). This method forwards the `text`
|
92
|
+
and `kwargs` arguments to Qwen2TokenizerFast's [`~Qwen2TokenizerFast.__call__`] if `text` is not `None` to encode
|
93
|
+
the text. To prepare the vision inputs, this method forwards the `vision_infos` and `kwrags` arguments to
|
94
|
+
Qwen2VLImageProcessor's [`~Qwen2VLImageProcessor.__call__`] if `vision_infos` is not `None`.
|
95
|
+
|
96
|
+
Args:
|
97
|
+
images (`PIL.Image.Image`, `np.ndarray`, `paddle.Tensor`, `List[PIL.Image.Image]`, `List[np.ndarray]`, `List[paddle.Tensor]`):
|
98
|
+
The image or batch of images to be prepared. Each image can be a PIL image, NumPy array or Paddle
|
99
|
+
tensor. Both channels-first and channels-last formats are supported.
|
100
|
+
text (`str`, `List[str]`, `List[List[str]]`):
|
101
|
+
The sequence or batch of sequences to be encoded. Each sequence can be a string or a list of strings
|
102
|
+
(pretokenized string). If the sequences are provided as list of strings (pretokenized), you must set
|
103
|
+
`is_split_into_words=True` (to lift the ambiguity with a batch of sequences).
|
104
|
+
padding (`bool`, *optional*, defaults to `False`):
|
105
|
+
Select a strategy to pad the returned sequences (according to the model's padding side and padding
|
106
|
+
index) among:
|
107
|
+
- `True` or `'longest'`: Pad to the longest sequence in the batch (or no padding if only a single
|
108
|
+
sequence if provided).
|
109
|
+
- `'max_length'`: Pad to a maximum length specified with the argument `max_length` or to the maximum
|
110
|
+
acceptable input length for the model if that argument is not provided.
|
111
|
+
- `False` or `'do_not_pad'` (default): No padding (i.e., can output a batch with sequences of different
|
112
|
+
lengths).
|
113
|
+
max_length (`int`, *optional*):
|
114
|
+
Maximum length of the returned list and optionally padding length (see above).
|
115
|
+
truncation (`bool`, *optional*):
|
116
|
+
Activates truncation to cut input sequences longer than `max_length` to `max_length`.
|
117
|
+
return_tensors (`str` or [`~utils.TensorType`], *optional*):
|
118
|
+
If set, will return tensors of a particular framework. Acceptable values are:
|
119
|
+
|
120
|
+
- `'pd'`: Return Paddle `paddle.Tensor` objects.
|
121
|
+
- `'np'`: Return NumPy `np.ndarray` objects.
|
122
|
+
|
123
|
+
Returns:
|
124
|
+
- **input_ids** -- List of token ids to be fed to a model. Returned when `text` is not `None`.
|
125
|
+
- **attention_mask** -- List of indices specifying which tokens should be attended to by the model (when
|
126
|
+
`return_attention_mask=True` or if *"attention_mask"* is in `self.model_input_names` and if `text` is not
|
127
|
+
`None`).
|
128
|
+
- **pixel_values** -- Pixel values to be fed to a model. Returned when `images` is not `None`.
|
129
|
+
- **image_grid_thw** -- List of image 3D grid in LLM. Returned when `images` is not `None`.
|
130
|
+
"""
|
131
|
+
if images is not None:
|
132
|
+
image_inputs = self.image_processor(
|
133
|
+
images=images, return_tensors=return_tensors
|
134
|
+
)
|
135
|
+
image_grid_thw = image_inputs["image_grid_thw"]
|
136
|
+
else:
|
137
|
+
image_inputs = {}
|
138
|
+
image_grid_thw = None
|
139
|
+
|
140
|
+
if not isinstance(text, list):
|
141
|
+
text = [text]
|
142
|
+
|
143
|
+
if image_grid_thw is not None:
|
144
|
+
merge_length = self.image_processor.merge_size**2
|
145
|
+
index = 0
|
146
|
+
for i in range(len(text)):
|
147
|
+
while "<|image_pad|>" in text[i]:
|
148
|
+
text[i] = text[i].replace(
|
149
|
+
"<|image_pad|>",
|
150
|
+
"<|placeholder|>"
|
151
|
+
* int(image_grid_thw[index].prod() // merge_length),
|
152
|
+
1, # 单个<|image_pad|>替换成对应的视觉token数量的<|placeholder|>
|
153
|
+
)
|
154
|
+
index += 1
|
155
|
+
text[i] = text[i].replace("<|placeholder|>", "<|image_pad|>")
|
156
|
+
text_inputs = self.tokenizer(
|
157
|
+
text,
|
158
|
+
return_tensors=return_tensors,
|
159
|
+
padding=padding,
|
160
|
+
truncation=truncation,
|
161
|
+
max_length=max_length,
|
162
|
+
)
|
163
|
+
|
164
|
+
return BatchFeature(data={**text_inputs, **image_inputs}).data
|
165
|
+
|
166
|
+
def batch_decode(self, *args, **kwargs):
|
167
|
+
"""
|
168
|
+
This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.batch_decode`]. Please
|
169
|
+
refer to the docstring of this method for more information.
|
170
|
+
"""
|
171
|
+
return self.tokenizer.batch_decode(*args, **kwargs)
|
172
|
+
|
173
|
+
def decode(self, *args, **kwargs):
|
174
|
+
"""
|
175
|
+
This method forwards all its arguments to Qwen2TokenizerFast's [`~PreTrainedTokenizer.decode`]. Please refer to
|
176
|
+
the docstring of this method for more information.
|
177
|
+
"""
|
178
|
+
return self.tokenizer.decode(*args, **kwargs)
|
179
|
+
|
180
|
+
|
181
|
+
class Qwen2VLImageProcessor(object):
|
182
|
+
r"""
|
183
|
+
Constructs a Qwen2-VL image processor that dynamically resizes images based on the original images.
|
184
|
+
|
185
|
+
Args:
|
186
|
+
do_resize (`bool`, *optional*, defaults to `True`):
|
187
|
+
Whether to resize the image's (height, width) dimensions.
|
188
|
+
resample (`PILImageResampling`, *optional*, defaults to `Resampling.BICUBIC`):
|
189
|
+
Resampling filter to use when resizing the image.
|
190
|
+
do_rescale (`bool`, *optional*, defaults to `True`):
|
191
|
+
Whether to rescale the image by the specified scale `rescale_factor`.
|
192
|
+
rescale_factor (`int` or `float`, *optional*, defaults to `1/255`):
|
193
|
+
Scale factor to use if rescaling the image.
|
194
|
+
do_normalize (`bool`, *optional*, defaults to `True`):
|
195
|
+
Whether to normalize the image.
|
196
|
+
image_mean (`float` or `List[float]`, *optional*, defaults to `[0.48145466, 0.4578275, 0.40821073]`):
|
197
|
+
Mean to use if normalizing the image. This is a float or list of floats for each channel in the image.
|
198
|
+
image_std (`float` or `List[float]`, *optional*, defaults to `[0.26862954, 0.26130258, 0.27577711]`):
|
199
|
+
Standard deviation to use if normalizing the image. This is a float or list of floats for each channel in the image.
|
200
|
+
do_convert_rgb (`bool`, *optional*, defaults to `True`):
|
201
|
+
Whether to convert the image to RGB.
|
202
|
+
min_pixels (`int`, *optional*, defaults to `56 * 56`):
|
203
|
+
The min pixels of the image to resize the image.
|
204
|
+
max_pixels (`int`, *optional*, defaults to `28 * 28 * 1280`):
|
205
|
+
The max pixels of the image to resize the image.
|
206
|
+
patch_size (`int`, *optional*, defaults to 14):
|
207
|
+
The spatial patch size of the vision encoder.
|
208
|
+
temporal_patch_size (`int`, *optional*, defaults to 2):
|
209
|
+
The temporal patch size of the vision encoder.
|
210
|
+
merge_size (`int`, *optional*, defaults to 2):
|
211
|
+
The merge size of the vision encoder to llm encoder.
|
212
|
+
"""
|
213
|
+
|
214
|
+
def __init__(
|
215
|
+
self,
|
216
|
+
do_resize: bool = True,
|
217
|
+
resample=None,
|
218
|
+
do_rescale: bool = True,
|
219
|
+
rescale_factor: float = 1 / 255.0,
|
220
|
+
do_normalize: bool = True,
|
221
|
+
image_mean: Optional[Union[float, List[float]]] = None,
|
222
|
+
image_std: Optional[Union[float, List[float]]] = None,
|
223
|
+
do_convert_rgb: bool = True,
|
224
|
+
min_pixels: int = 56 * 56,
|
225
|
+
max_pixels: int = 28 * 28 * 1280,
|
226
|
+
patch_size: int = 14,
|
227
|
+
temporal_patch_size: int = 2,
|
228
|
+
merge_size: int = 2,
|
229
|
+
**kwargs,
|
230
|
+
) -> None:
|
231
|
+
super().__init__(**kwargs)
|
232
|
+
import cv2
|
233
|
+
|
234
|
+
resample = cv2.INTER_CUBIC if resample is None else resample
|
235
|
+
self.do_resize = do_resize
|
236
|
+
self.resample = resample
|
237
|
+
self.do_rescale = do_rescale
|
238
|
+
self.rescale_factor = rescale_factor
|
239
|
+
self.do_normalize = do_normalize
|
240
|
+
image_mean_ = image_mean if image_mean is not None else OPENAI_CLIP_MEAN
|
241
|
+
image_std_ = image_std if image_std is not None else OPENAI_CLIP_STD
|
242
|
+
self.min_pixels = min_pixels
|
243
|
+
self.max_pixels = max_pixels
|
244
|
+
self.patch_size = patch_size
|
245
|
+
self.temporal_patch_size = temporal_patch_size
|
246
|
+
self.merge_size = merge_size
|
247
|
+
self.size = {"min_pixels": min_pixels, "max_pixels": max_pixels}
|
248
|
+
self.do_convert_rgb = do_convert_rgb
|
249
|
+
|
250
|
+
self.image_mean = np.array(image_mean_)[None, None, ...]
|
251
|
+
self.image_std = np.array(image_std_)[None, None, ...]
|
252
|
+
|
253
|
+
def _preprocess(
|
254
|
+
self,
|
255
|
+
images,
|
256
|
+
do_resize: bool = None,
|
257
|
+
resample: PILImageResampling = None,
|
258
|
+
do_rescale: bool = None,
|
259
|
+
rescale_factor: float = None,
|
260
|
+
do_normalize: bool = None,
|
261
|
+
image_mean: Optional[Union[float, List[float]]] = None,
|
262
|
+
image_std: Optional[Union[float, List[float]]] = None,
|
263
|
+
do_convert_rgb: bool = None,
|
264
|
+
data_format: Optional[ChannelDimension] = ChannelDimension.FIRST,
|
265
|
+
input_data_format: Optional[Union[str, ChannelDimension]] = None,
|
266
|
+
):
|
267
|
+
"""
|
268
|
+
Preprocess an image or batch of images. Copy of the `preprocess` method from `CLIPImageProcessor`.
|
269
|
+
|
270
|
+
Args:
|
271
|
+
images (`ImageInput`):
|
272
|
+
Image or batch of images to preprocess. Expects pixel values ranging from 0 to 255. If pixel values range from 0 to 1, set `do_rescale=False`.
|
273
|
+
vision_info (`List[Dict]`, *optional*):
|
274
|
+
Optional list of dictionaries containing additional information about vision inputs.
|
275
|
+
do_resize (`bool`, *optional*, defaults to `self.do_resize`):
|
276
|
+
Whether to resize the image.
|
277
|
+
resample (`PILImageResampling`, *optional*, defaults to `self.resample`):
|
278
|
+
Resampling filter to use if resizing the image. This can be one of the `PILImageResampling` enums.
|
279
|
+
do_rescale (`bool`, *optional*, defaults to `self.do_rescale`):
|
280
|
+
Whether to rescale the image.
|
281
|
+
rescale_factor (`float`, *optional*, defaults to `self.rescale_factor`):
|
282
|
+
Scale factor to use if rescaling the image.
|
283
|
+
do_normalize (`bool`, *optional*, defaults to `self.do_normalize`):
|
284
|
+
Whether to normalize the image.
|
285
|
+
image_mean (`float` or `List[float]`, *optional*, defaults to `self.image_mean`):
|
286
|
+
Mean to use if normalizing the image. Can be a float or a list of floats corresponding to the number of channels in the image.
|
287
|
+
image_std (`float` or `List[float]`, *optional*, defaults to `self.image_std`):
|
288
|
+
Standard deviation to use if normalizing the image. Can be a float or a list of floats corresponding to the number of channels in the image.
|
289
|
+
do_convert_rgb (`bool`, *optional*, defaults to `self.do_convert_rgb`):
|
290
|
+
Whether to convert the image to RGB.
|
291
|
+
data_format (`ChannelDimension`, *optional*, defaults to `ChannelDimension.FIRST`):
|
292
|
+
The channel dimension format for the output image. Can be one of:
|
293
|
+
- `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
|
294
|
+
- `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
|
295
|
+
- Unset: Use the channel dimension format of the input image.
|
296
|
+
input_data_format (`ChannelDimension` or `str`, *optional*):
|
297
|
+
The channel dimension format for the input image. Can be one of:
|
298
|
+
- `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
|
299
|
+
- `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
|
300
|
+
- `"none"` or `ChannelDimension.NONE`: image in (height, width) format. - `"none"` or `ChannelDimension.NONE`: image in (height, width) format.
|
301
|
+
"""
|
302
|
+
images = make_list_of_images(images)
|
303
|
+
|
304
|
+
if do_convert_rgb:
|
305
|
+
images = [convert_to_rgb(image) for image in images]
|
306
|
+
|
307
|
+
# All transformations expect numpy arrays.
|
308
|
+
images = [to_numpy_array(image) for image in images]
|
309
|
+
|
310
|
+
if is_scaled_image(images[0]) and do_rescale:
|
311
|
+
logging.warning(
|
312
|
+
"It looks like you are trying to rescale already rescaled images. If the input"
|
313
|
+
" images have pixel values between 0 and 1, set `do_rescale=False` to avoid rescaling them again."
|
314
|
+
)
|
315
|
+
if input_data_format is None:
|
316
|
+
# We assume that all images have the same channel dimension format.
|
317
|
+
input_data_format = infer_channel_dimension_format(images[0])
|
318
|
+
|
319
|
+
height, width = get_image_size(images[0], channel_dim=input_data_format)
|
320
|
+
resized_height, resized_width = height, width
|
321
|
+
processed_images = []
|
322
|
+
|
323
|
+
for image in images:
|
324
|
+
|
325
|
+
if do_resize:
|
326
|
+
resized_height, resized_width = smart_resize(
|
327
|
+
height,
|
328
|
+
width,
|
329
|
+
factor=self.patch_size * self.merge_size,
|
330
|
+
min_pixels=self.min_pixels,
|
331
|
+
max_pixels=self.max_pixels,
|
332
|
+
max_ratio=MAX_RATIO,
|
333
|
+
)
|
334
|
+
image = image.astype("uint8")
|
335
|
+
image = resize(
|
336
|
+
image,
|
337
|
+
(resized_width, resized_height),
|
338
|
+
interp=None,
|
339
|
+
backend="cv2",
|
340
|
+
)
|
341
|
+
|
342
|
+
if do_rescale:
|
343
|
+
image = image.astype("float32")
|
344
|
+
image *= rescale_factor
|
345
|
+
|
346
|
+
if do_normalize:
|
347
|
+
assert input_data_format == ChannelDimension.LAST
|
348
|
+
image = (image - self.image_mean) / self.image_std
|
349
|
+
|
350
|
+
image = to_channel_dimension_format(
|
351
|
+
image, data_format, input_channel_dim=input_data_format
|
352
|
+
)
|
353
|
+
processed_images.append(image)
|
354
|
+
|
355
|
+
patches = np.array(processed_images)
|
356
|
+
if data_format == ChannelDimension.LAST:
|
357
|
+
patches = patches.transpose([0, 3, 1, 2])
|
358
|
+
if patches.shape[0] == 1:
|
359
|
+
patches = np.tile(patches, (self.temporal_patch_size, 1, 1, 1))
|
360
|
+
channel = patches.shape[1]
|
361
|
+
grid_t = patches.shape[0] // self.temporal_patch_size
|
362
|
+
grid_h, grid_w = (
|
363
|
+
resized_height // self.patch_size,
|
364
|
+
resized_width // self.patch_size,
|
365
|
+
)
|
366
|
+
patches = patches.reshape(
|
367
|
+
[
|
368
|
+
grid_t,
|
369
|
+
self.temporal_patch_size,
|
370
|
+
channel,
|
371
|
+
grid_h // self.merge_size,
|
372
|
+
self.merge_size,
|
373
|
+
self.patch_size,
|
374
|
+
grid_w // self.merge_size,
|
375
|
+
self.merge_size,
|
376
|
+
self.patch_size,
|
377
|
+
]
|
378
|
+
)
|
379
|
+
patches = patches.transpose([0, 3, 6, 4, 7, 2, 1, 5, 8])
|
380
|
+
flatten_patches = patches.reshape(
|
381
|
+
[
|
382
|
+
grid_t * grid_h * grid_w,
|
383
|
+
channel * self.temporal_patch_size * self.patch_size * self.patch_size,
|
384
|
+
]
|
385
|
+
)
|
386
|
+
|
387
|
+
return flatten_patches, (grid_t, grid_h, grid_w)
|
388
|
+
|
389
|
+
def preprocess(
|
390
|
+
self,
|
391
|
+
images: ImageInput,
|
392
|
+
do_resize: bool = None,
|
393
|
+
size: Dict[str, int] = None,
|
394
|
+
resample: PILImageResampling = None,
|
395
|
+
do_rescale: bool = None,
|
396
|
+
rescale_factor: float = None,
|
397
|
+
do_normalize: bool = None,
|
398
|
+
image_mean: Optional[Union[float, List[float]]] = None,
|
399
|
+
image_std: Optional[Union[float, List[float]]] = None,
|
400
|
+
do_convert_rgb: bool = None,
|
401
|
+
return_tensors: Optional[Union[str, TensorType]] = None,
|
402
|
+
data_format: Optional[ChannelDimension] = ChannelDimension.FIRST,
|
403
|
+
input_data_format: Optional[Union[str, ChannelDimension]] = None,
|
404
|
+
):
|
405
|
+
"""
|
406
|
+
Args:
|
407
|
+
images (`ImageInput`):
|
408
|
+
Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If
|
409
|
+
passing in images with pixel values between 0 and 1, set `do_rescale=False`.
|
410
|
+
do_resize (`bool`, *optional*, defaults to `self.do_resize`):
|
411
|
+
Whether to resize the image.
|
412
|
+
size (`Dict[str, int]`, *optional*, defaults to `self.size`):
|
413
|
+
Size of the image after resizing. Shortest edge of the image is resized to size["shortest_edge"], with
|
414
|
+
the longest edge resized to keep the input aspect ratio.
|
415
|
+
resample (`int`, *optional*, defaults to `self.resample`):
|
416
|
+
Resampling filter to use if resizing the image. This can be one of the enum `PILImageResampling`. Only
|
417
|
+
has an effect if `do_resize` is set to `True`.
|
418
|
+
do_rescale (`bool`, *optional*, defaults to `self.do_rescale`):
|
419
|
+
Whether to rescale the image.
|
420
|
+
rescale_factor (`float`, *optional*, defaults to `self.rescale_factor`):
|
421
|
+
Rescale factor to rescale the image by if `do_rescale` is set to `True`.
|
422
|
+
do_normalize (`bool`, *optional*, defaults to `self.do_normalize`):
|
423
|
+
Whether to normalize the image.
|
424
|
+
image_mean (`float` or `List[float]`, *optional*, defaults to `self.image_mean`):
|
425
|
+
Image mean to use for normalization. Only has an effect if `do_normalize` is set to `True`.
|
426
|
+
image_std (`float` or `List[float]`, *optional*, defaults to `self.image_std`):
|
427
|
+
Image standard deviation to use for normalization. Only has an effect if `do_normalize` is set to
|
428
|
+
`True`.
|
429
|
+
do_convert_rgb (`bool`, *optional*, defaults to `self.do_convert_rgb`):
|
430
|
+
Whether to convert the image to RGB.
|
431
|
+
return_tensors (`str` or `TensorType`, *optional*):
|
432
|
+
The type of tensors to return. Can be one of:
|
433
|
+
- Unset: Return a list of `np.ndarray`.
|
434
|
+
- `TensorType.PADDLE` or `'pt'`: Return a batch of type `paddle.Tensor`.
|
435
|
+
- `TensorType.NUMPY` or `'np'`: Return a batch of type `np.ndarray`.
|
436
|
+
data_format (`ChannelDimension` or `str`, *optional*, defaults to `ChannelDimension.FIRST`):
|
437
|
+
The channel dimension format for the output image. Can be one of:
|
438
|
+
- `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
|
439
|
+
- `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
|
440
|
+
- Unset: Use the channel dimension format of the input image.
|
441
|
+
input_data_format (`ChannelDimension` or `str`, *optional*):
|
442
|
+
The channel dimension format for the input image. If unset, the channel dimension format is inferred
|
443
|
+
from the input image. Can be one of:
|
444
|
+
- `"channels_first"` or `ChannelDimension.FIRST`: image in (num_channels, height, width) format.
|
445
|
+
- `"channels_last"` or `ChannelDimension.LAST`: image in (height, width, num_channels) format.
|
446
|
+
- `"none"` or `ChannelDimension.NONE`: image in (height, width) format.
|
447
|
+
|
448
|
+
"""
|
449
|
+
do_resize = do_resize if do_resize is not None else self.do_resize
|
450
|
+
size = size if size is not None else self.size
|
451
|
+
resample = resample if resample is not None else self.resample
|
452
|
+
do_rescale = do_rescale if do_rescale is not None else self.do_rescale
|
453
|
+
rescale_factor = (
|
454
|
+
rescale_factor if rescale_factor is not None else self.rescale_factor
|
455
|
+
)
|
456
|
+
do_normalize = do_normalize if do_normalize is not None else self.do_normalize
|
457
|
+
image_mean = image_mean if image_mean is not None else self.image_mean
|
458
|
+
image_std = image_std if image_std is not None else self.image_std
|
459
|
+
do_convert_rgb = (
|
460
|
+
do_convert_rgb if do_convert_rgb is not None else self.do_convert_rgb
|
461
|
+
)
|
462
|
+
|
463
|
+
if images is not None:
|
464
|
+
images = make_batched_images(images)
|
465
|
+
|
466
|
+
if images is not None and not valid_images(images):
|
467
|
+
raise ValueError(
|
468
|
+
"Invalid image type. Must be of type PIL.Image.Image, numpy.ndarray, "
|
469
|
+
"paddle.Tensor."
|
470
|
+
)
|
471
|
+
|
472
|
+
if images is not None:
|
473
|
+
pixel_values, vision_grid_thws = [], []
|
474
|
+
for image in images:
|
475
|
+
patches, image_grid_thw = self._preprocess(
|
476
|
+
image,
|
477
|
+
do_resize=do_resize,
|
478
|
+
resample=resample,
|
479
|
+
do_rescale=do_rescale,
|
480
|
+
rescale_factor=rescale_factor,
|
481
|
+
do_normalize=do_normalize,
|
482
|
+
image_mean=image_mean,
|
483
|
+
image_std=image_std,
|
484
|
+
data_format=data_format,
|
485
|
+
do_convert_rgb=do_convert_rgb,
|
486
|
+
input_data_format=input_data_format,
|
487
|
+
)
|
488
|
+
pixel_values.extend(patches)
|
489
|
+
vision_grid_thws.append(image_grid_thw)
|
490
|
+
pixel_values = np.array(pixel_values)
|
491
|
+
vision_grid_thws = np.array(vision_grid_thws)
|
492
|
+
data = {"pixel_values": pixel_values, "image_grid_thw": vision_grid_thws}
|
493
|
+
|
494
|
+
return BatchFeature(data=data, tensor_type=return_tensors)
|
495
|
+
|
496
|
+
def __call__(self, images, **kwargs):
|
497
|
+
return self.preprocess(images, **kwargs)
|
498
|
+
|
499
|
+
|
500
|
+
class PPDocBeeProcessor(Qwen2VLProcessor):
|
501
|
+
"""
|
502
|
+
PP-DocBee processor, based on Qwen2VLProcessor
|
503
|
+
"""
|
504
|
+
|
505
|
+
@benchmark.timeit
|
506
|
+
def preprocess(self, input_dicts):
|
507
|
+
"""
|
508
|
+
PreProcess for PP-DocBee Series
|
509
|
+
"""
|
510
|
+
assert (
|
511
|
+
isinstance(input_dicts, list) and len(input_dicts) == 1
|
512
|
+
), f"PP-DocBee series only supports batchsize of one, but received {len(input_dicts)} samples."
|
513
|
+
input_dict = input_dicts[0]
|
514
|
+
image = input_dict["image"]
|
515
|
+
query = input_dict["query"]
|
516
|
+
image_inputs = fetch_image(
|
517
|
+
image,
|
518
|
+
size_factor=IMAGE_FACTOR,
|
519
|
+
min_pixels=MIN_PIXELS,
|
520
|
+
max_pixels=MAX_PIXELS,
|
521
|
+
max_ratio=MAX_RATIO,
|
522
|
+
)
|
523
|
+
image_pad_token = "<|vision_start|><|image_pad|><|vision_end|>"
|
524
|
+
text = f"<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n<|im_start|>user\n{image_pad_token}{query}<|im_end|>\n<|im_start|>assistant\n"
|
525
|
+
text = [text]
|
526
|
+
|
527
|
+
rst_inputs = super().preprocess(
|
528
|
+
text=text,
|
529
|
+
images=[image_inputs],
|
530
|
+
padding=False,
|
531
|
+
return_tensors="pd",
|
532
|
+
)
|
533
|
+
|
534
|
+
return rst_inputs
|
535
|
+
|
536
|
+
@benchmark.timeit
|
537
|
+
def postprocess(self, model_pred, *args, **kwargs):
|
538
|
+
"""
|
539
|
+
Post process adapt for PaddleX
|
540
|
+
"""
|
541
|
+
return self.tokenizer.batch_decode(
|
542
|
+
model_pred[0], skip_special_tokens=True, clean_up_tokenization_spaces=False
|
543
|
+
)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
from ...common.result import BaseResult
|
16
|
+
|
17
|
+
|
18
|
+
class DocVLMResult(BaseResult):
|
19
|
+
|
20
|
+
def __init__(self, data: dict) -> None:
|
21
|
+
super().__init__(data)
|
@@ -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.
|
@@ -15,6 +15,7 @@
|
|
15
15
|
from typing import Any, Dict, List, Union
|
16
16
|
|
17
17
|
import numpy as np
|
18
|
+
|
18
19
|
from ....modules.face_recognition.model_list import MODELS
|
19
20
|
from ..image_feature import ImageFeaturePredictor
|
20
21
|
|
@@ -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,33 +13,30 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
import numpy as np
|
16
|
+
|
17
|
+
from ....modules.formula_recognition.model_list import MODELS
|
16
18
|
from ....utils import logging
|
17
19
|
from ....utils.func_register import FuncRegister
|
18
|
-
from ....modules.formula_recognition.model_list import MODELS
|
19
20
|
from ...common.batch_sampler import ImageBatchSampler
|
20
21
|
from ...common.reader import ReadImage
|
21
|
-
from ..
|
22
|
-
StaticInfer,
|
23
|
-
)
|
24
|
-
from ..base import BasicPredictor
|
22
|
+
from ..base import BasePredictor
|
25
23
|
from .processors import (
|
26
|
-
MinMaxResize,
|
27
|
-
LatexTestTransform,
|
28
24
|
LatexImageFormat,
|
29
25
|
LaTeXOCRDecode,
|
26
|
+
LatexTestTransform,
|
27
|
+
MinMaxResize,
|
30
28
|
NormalizeImage,
|
31
29
|
ToBatch,
|
32
|
-
UniMERNetImgDecode,
|
33
30
|
UniMERNetDecode,
|
34
|
-
UniMERNetTestTransform,
|
35
31
|
UniMERNetImageFormat,
|
32
|
+
UniMERNetImgDecode,
|
33
|
+
UniMERNetTestTransform,
|
36
34
|
)
|
37
|
-
|
38
35
|
from .result import FormulaRecResult
|
39
36
|
|
40
37
|
|
41
|
-
class FormulaRecPredictor(
|
42
|
-
"""FormulaRecPredictor that inherits from
|
38
|
+
class FormulaRecPredictor(BasePredictor):
|
39
|
+
"""FormulaRecPredictor that inherits from BasePredictor."""
|
43
40
|
|
44
41
|
entities = MODELS
|
45
42
|
|
@@ -84,20 +81,7 @@ class FormulaRecPredictor(BasicPredictor):
|
|
84
81
|
pre_tfs[name] = op
|
85
82
|
pre_tfs["ToBatch"] = ToBatch()
|
86
83
|
|
87
|
-
|
88
|
-
import cpuinfo
|
89
|
-
|
90
|
-
if "GenuineIntel" in cpuinfo.get_cpu_info().get("vendor_id_raw", ""):
|
91
|
-
self.pp_option.run_mode = "mkldnn"
|
92
|
-
logging.warning(
|
93
|
-
"Now, the `LaTeX_OCR_rec` model only support `mkldnn` mode when running on Intel CPU devices. So using `mkldnn` instead."
|
94
|
-
)
|
95
|
-
|
96
|
-
infer = StaticInfer(
|
97
|
-
model_dir=self.model_dir,
|
98
|
-
model_prefix=self.MODEL_FILE_PREFIX,
|
99
|
-
option=self.pp_option,
|
100
|
-
)
|
84
|
+
infer = self.create_static_infer()
|
101
85
|
|
102
86
|
post_op = self.build_postprocess(**self.config["PostProcess"])
|
103
87
|
return pre_tfs, infer, post_op
|
@@ -113,7 +97,13 @@ class FormulaRecPredictor(BasicPredictor):
|
|
113
97
|
batch_imgs = self.pre_tfs["UniMERNetImgDecode"](imgs=batch_raw_imgs)
|
114
98
|
batch_imgs = self.pre_tfs["UniMERNetTestTransform"](imgs=batch_imgs)
|
115
99
|
batch_imgs = self.pre_tfs["UniMERNetImageFormat"](imgs=batch_imgs)
|
116
|
-
elif self.model_name in (
|
100
|
+
elif self.model_name in (
|
101
|
+
"PP-FormulaNet-S",
|
102
|
+
"PP-FormulaNet-L",
|
103
|
+
"PP-FormulaNet_plus-S",
|
104
|
+
"PP-FormulaNet_plus-M",
|
105
|
+
"PP-FormulaNet_plus-L",
|
106
|
+
):
|
117
107
|
batch_imgs = self.pre_tfs["UniMERNetImgDecode"](imgs=batch_raw_imgs)
|
118
108
|
batch_imgs = self.pre_tfs["UniMERNetTestTransform"](imgs=batch_imgs)
|
119
109
|
batch_imgs = self.pre_tfs["LatexImageFormat"](imgs=batch_imgs)
|