paddlex 3.0.0b2__py3-none-any.whl → 3.0.0rc0__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 +1 -0
- paddlex/__main__.py +3 -4
- paddlex/configs/modules/3d_bev_detection/BEVFusion.yaml +38 -0
- paddlex/configs/modules/face_feature/MobileFaceNet.yaml +41 -0
- paddlex/configs/modules/face_feature/ResNet50_face.yaml +41 -0
- paddlex/configs/modules/formula_recognition/LaTeX_OCR_rec.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet-L.yaml +40 -0
- paddlex/configs/modules/formula_recognition/PP-FormulaNet-S.yaml +40 -0
- paddlex/configs/modules/formula_recognition/UniMERNet.yaml +40 -0
- paddlex/configs/modules/image_classification/CLIP_vit_base_patch16_224.yaml +41 -0
- paddlex/configs/modules/image_classification/CLIP_vit_large_patch14_224.yaml +41 -0
- paddlex/configs/modules/image_classification/ConvNeXt_large_384.yaml +41 -0
- paddlex/configs/modules/keypoint_detection/PP-TinyPose_128x96.yaml +40 -0
- paddlex/configs/modules/keypoint_detection/PP-TinyPose_256x192.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocLayout-L.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocLayout-M.yaml +40 -0
- paddlex/configs/modules/layout_detection/PP-DocLayout-S.yaml +40 -0
- paddlex/configs/modules/multilingual_speech_recognition/whisper_base.yaml +12 -0
- paddlex/configs/modules/multilingual_speech_recognition/whisper_large.yaml +12 -0
- paddlex/configs/modules/multilingual_speech_recognition/whisper_medium.yaml +12 -0
- paddlex/configs/modules/multilingual_speech_recognition/whisper_small.yaml +12 -0
- paddlex/configs/modules/multilingual_speech_recognition/whisper_tiny.yaml +12 -0
- paddlex/configs/modules/object_detection/Co-DINO-R50.yaml +40 -0
- paddlex/configs/modules/object_detection/Co-DINO-Swin-L.yaml +40 -0
- paddlex/configs/modules/object_detection/Co-Deformable-DETR-R50.yaml +40 -0
- paddlex/configs/modules/object_detection/Co-Deformable-DETR-Swin-T.yaml +40 -0
- paddlex/configs/modules/object_detection/YOLOX-X.yaml +40 -0
- paddlex/configs/modules/open_vocabulary_detection/GroundingDINO-T.yaml +13 -0
- paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_box.yaml +17 -0
- paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_point.yaml +15 -0
- paddlex/configs/modules/rotated_object_detection/PP-YOLOE-R-L.yaml +40 -0
- paddlex/configs/modules/semantic_segmentation/MaskFormer_small.yaml +42 -0
- paddlex/configs/modules/semantic_segmentation/MaskFormer_tiny.yaml +42 -0
- paddlex/configs/modules/semantic_segmentation/SeaFormer_base.yaml +40 -0
- paddlex/configs/modules/semantic_segmentation/SeaFormer_large.yaml +40 -0
- paddlex/configs/modules/semantic_segmentation/SeaFormer_small.yaml +40 -0
- paddlex/configs/modules/semantic_segmentation/SeaFormer_tiny.yaml +40 -0
- paddlex/configs/modules/table_cells_detection/RT-DETR-L_wired_table_cell_det.yaml +40 -0
- paddlex/configs/modules/table_cells_detection/RT-DETR-L_wireless_table_cell_det.yaml +40 -0
- paddlex/configs/modules/table_classification/PP-LCNet_x1_0_table_cls.yaml +41 -0
- paddlex/configs/modules/table_structure_recognition/SLANeXt_wired.yaml +39 -0
- paddlex/configs/modules/table_structure_recognition/SLANeXt_wireless.yaml +39 -0
- paddlex/configs/modules/text_detection/PP-OCRv3_mobile_det.yaml +40 -0
- paddlex/configs/modules/text_detection/PP-OCRv3_server_det.yaml +40 -0
- paddlex/configs/modules/text_recognition/PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/PP-OCRv4_server_rec_doc.yaml +39 -0
- paddlex/configs/modules/text_recognition/arabic_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/chinese_cht_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/cyrillic_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/devanagari_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/en_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/en_PP-OCRv4_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/japan_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/ka_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/korean_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/latin_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/ta_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/text_recognition/te_PP-OCRv3_mobile_rec.yaml +39 -0
- paddlex/configs/modules/textline_orientation/PP-LCNet_x0_25_textline_ori.yaml +41 -0
- paddlex/configs/modules/video_classification/PP-TSM-R50_8frames_uniform.yaml +42 -0
- paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_16frames_uniform.yaml +42 -0
- paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_8frames_uniform.yaml +42 -0
- paddlex/configs/modules/video_detection/YOWO.yaml +40 -0
- paddlex/configs/pipelines/3d_bev_detection.yaml +9 -0
- paddlex/configs/pipelines/OCR.yaml +44 -0
- paddlex/configs/pipelines/PP-ChatOCRv3-doc.yaml +149 -0
- paddlex/configs/pipelines/PP-ChatOCRv4-doc.yaml +184 -0
- paddlex/configs/pipelines/PP-ShiTuV2.yaml +18 -0
- paddlex/configs/pipelines/PP-StructureV3.yaml +226 -0
- paddlex/configs/pipelines/anomaly_detection.yaml +8 -0
- paddlex/configs/pipelines/doc_preprocessor.yaml +15 -0
- paddlex/configs/pipelines/face_recognition.yaml +18 -0
- paddlex/configs/pipelines/formula_recognition.yaml +39 -0
- paddlex/configs/pipelines/human_keypoint_detection.yaml +17 -0
- paddlex/configs/pipelines/image_classification.yaml +10 -0
- paddlex/configs/pipelines/image_multilabel_classification.yaml +9 -0
- paddlex/configs/pipelines/instance_segmentation.yaml +10 -0
- paddlex/configs/pipelines/layout_parsing.yaml +101 -0
- paddlex/configs/pipelines/multilingual_speech_recognition.yaml +9 -0
- paddlex/configs/pipelines/object_detection.yaml +10 -0
- paddlex/configs/pipelines/open_vocabulary_detection.yaml +12 -0
- paddlex/configs/pipelines/open_vocabulary_segmentation.yaml +13 -0
- paddlex/configs/pipelines/pedestrian_attribute_recognition.yaml +15 -0
- paddlex/configs/pipelines/rotated_object_detection.yaml +10 -0
- paddlex/configs/pipelines/seal_recognition.yaml +51 -0
- paddlex/configs/pipelines/semantic_segmentation.yaml +10 -0
- paddlex/configs/pipelines/small_object_detection.yaml +10 -0
- paddlex/configs/pipelines/table_recognition.yaml +56 -0
- paddlex/configs/pipelines/table_recognition_v2.yaml +76 -0
- paddlex/configs/pipelines/ts_anomaly_detection.yaml +8 -0
- paddlex/configs/pipelines/ts_classification.yaml +8 -0
- paddlex/configs/pipelines/ts_forecast.yaml +8 -0
- paddlex/configs/pipelines/vehicle_attribute_recognition.yaml +15 -0
- paddlex/configs/pipelines/video_classification.yaml +9 -0
- paddlex/configs/pipelines/video_detection.yaml +10 -0
- paddlex/engine.py +1 -1
- paddlex/hpip_links.html +19 -0
- paddlex/inference/__init__.py +3 -1
- paddlex/inference/common/batch_sampler/__init__.py +20 -0
- paddlex/inference/common/batch_sampler/audio_batch_sampler.py +84 -0
- paddlex/inference/common/batch_sampler/base_batch_sampler.py +90 -0
- paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +147 -0
- paddlex/inference/common/batch_sampler/image_batch_sampler.py +136 -0
- paddlex/inference/common/batch_sampler/ts_batch_sampler.py +110 -0
- paddlex/inference/common/batch_sampler/video_batch_sampler.py +94 -0
- paddlex/inference/common/reader/__init__.py +19 -0
- paddlex/inference/common/reader/audio_reader.py +46 -0
- paddlex/inference/common/reader/det_3d_reader.py +239 -0
- paddlex/inference/common/reader/image_reader.py +69 -0
- paddlex/inference/common/reader/ts_reader.py +45 -0
- paddlex/inference/common/reader/video_reader.py +42 -0
- paddlex/inference/common/result/__init__.py +29 -0
- paddlex/inference/common/result/base_cv_result.py +31 -0
- paddlex/inference/common/result/base_result.py +70 -0
- paddlex/inference/common/result/base_ts_result.py +42 -0
- paddlex/inference/common/result/base_video_result.py +36 -0
- paddlex/inference/common/result/mixin.py +703 -0
- paddlex/inference/models/3d_bev_detection/__init__.py +15 -0
- paddlex/inference/models/3d_bev_detection/predictor.py +314 -0
- paddlex/inference/models/3d_bev_detection/processors.py +978 -0
- paddlex/inference/models/3d_bev_detection/result.py +65 -0
- paddlex/inference/models/3d_bev_detection/visualizer_3d.py +131 -0
- paddlex/inference/models/__init__.py +37 -13
- paddlex/inference/models/anomaly_detection/__init__.py +15 -0
- paddlex/inference/models/anomaly_detection/predictor.py +145 -0
- paddlex/inference/models/anomaly_detection/processors.py +46 -0
- paddlex/inference/models/anomaly_detection/result.py +70 -0
- paddlex/inference/models/base/__init__.py +1 -2
- paddlex/inference/models/base/predictor/__init__.py +16 -0
- paddlex/inference/models/base/predictor/base_predictor.py +175 -0
- paddlex/inference/models/base/predictor/basic_predictor.py +139 -0
- paddlex/inference/models/common/__init__.py +35 -0
- paddlex/inference/models/common/static_infer.py +329 -0
- paddlex/inference/models/common/tokenizer/__init__.py +17 -0
- paddlex/inference/models/common/tokenizer/bert_tokenizer.py +655 -0
- paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +451 -0
- paddlex/inference/models/common/tokenizer/tokenizer_utils.py +2141 -0
- paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +3504 -0
- paddlex/inference/models/common/tokenizer/utils.py +66 -0
- paddlex/inference/models/common/tokenizer/vocab.py +647 -0
- paddlex/inference/models/common/ts/__init__.py +15 -0
- paddlex/inference/models/common/ts/funcs.py +533 -0
- paddlex/inference/models/common/ts/processors.py +313 -0
- paddlex/inference/models/common/vision/__init__.py +23 -0
- paddlex/inference/models/common/vision/funcs.py +93 -0
- paddlex/inference/models/common/vision/processors.py +270 -0
- paddlex/inference/models/face_feature/__init__.py +15 -0
- paddlex/inference/models/face_feature/predictor.py +65 -0
- paddlex/inference/models/formula_recognition/__init__.py +15 -0
- paddlex/inference/models/formula_recognition/predictor.py +203 -0
- paddlex/inference/models/formula_recognition/processors.py +986 -0
- paddlex/inference/models/formula_recognition/result.py +403 -0
- paddlex/inference/models/image_classification/__init__.py +15 -0
- paddlex/inference/models/image_classification/predictor.py +182 -0
- paddlex/inference/models/image_classification/processors.py +87 -0
- paddlex/inference/models/image_classification/result.py +92 -0
- paddlex/inference/models/image_feature/__init__.py +15 -0
- paddlex/inference/models/image_feature/predictor.py +156 -0
- paddlex/inference/models/image_feature/processors.py +29 -0
- paddlex/inference/models/image_feature/result.py +33 -0
- paddlex/inference/models/image_multilabel_classification/__init__.py +15 -0
- paddlex/inference/models/image_multilabel_classification/predictor.py +94 -0
- paddlex/inference/models/image_multilabel_classification/processors.py +85 -0
- paddlex/inference/models/image_multilabel_classification/result.py +95 -0
- paddlex/inference/models/image_unwarping/__init__.py +15 -0
- paddlex/inference/models/image_unwarping/predictor.py +105 -0
- paddlex/inference/models/image_unwarping/processors.py +88 -0
- paddlex/inference/models/image_unwarping/result.py +45 -0
- paddlex/inference/models/instance_segmentation/__init__.py +15 -0
- paddlex/inference/models/instance_segmentation/predictor.py +210 -0
- paddlex/inference/models/instance_segmentation/processors.py +105 -0
- paddlex/inference/models/instance_segmentation/result.py +161 -0
- paddlex/inference/models/keypoint_detection/__init__.py +15 -0
- paddlex/inference/models/keypoint_detection/predictor.py +188 -0
- paddlex/inference/models/keypoint_detection/processors.py +359 -0
- paddlex/inference/models/keypoint_detection/result.py +192 -0
- paddlex/inference/models/multilingual_speech_recognition/__init__.py +15 -0
- paddlex/inference/models/multilingual_speech_recognition/predictor.py +141 -0
- paddlex/inference/models/multilingual_speech_recognition/processors.py +1941 -0
- paddlex/inference/models/multilingual_speech_recognition/result.py +21 -0
- paddlex/inference/models/object_detection/__init__.py +15 -0
- paddlex/inference/models/object_detection/predictor.py +348 -0
- paddlex/inference/models/object_detection/processors.py +855 -0
- paddlex/inference/models/object_detection/result.py +113 -0
- paddlex/inference/models/object_detection/utils.py +68 -0
- paddlex/inference/models/open_vocabulary_detection/__init__.py +15 -0
- paddlex/inference/models/open_vocabulary_detection/predictor.py +155 -0
- paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +15 -0
- paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +485 -0
- paddlex/inference/models/open_vocabulary_segmentation/__init__.py +15 -0
- paddlex/inference/models/open_vocabulary_segmentation/predictor.py +120 -0
- paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +15 -0
- paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +249 -0
- paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +15 -0
- paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +147 -0
- paddlex/inference/models/semantic_segmentation/__init__.py +15 -0
- paddlex/inference/models/semantic_segmentation/predictor.py +167 -0
- paddlex/inference/models/semantic_segmentation/processors.py +114 -0
- paddlex/inference/models/semantic_segmentation/result.py +72 -0
- paddlex/inference/models/table_structure_recognition/__init__.py +15 -0
- paddlex/inference/models/table_structure_recognition/predictor.py +171 -0
- paddlex/inference/models/table_structure_recognition/processors.py +235 -0
- paddlex/inference/models/table_structure_recognition/result.py +70 -0
- paddlex/inference/models/text_detection/__init__.py +15 -0
- paddlex/inference/models/text_detection/predictor.py +191 -0
- paddlex/inference/models/text_detection/processors.py +466 -0
- paddlex/inference/models/text_detection/result.py +51 -0
- paddlex/inference/models/text_recognition/__init__.py +15 -0
- paddlex/inference/models/text_recognition/predictor.py +106 -0
- paddlex/inference/models/text_recognition/processors.py +231 -0
- paddlex/inference/models/text_recognition/result.py +75 -0
- paddlex/inference/models/ts_anomaly_detection/__init__.py +15 -0
- paddlex/inference/models/ts_anomaly_detection/predictor.py +146 -0
- paddlex/inference/models/ts_anomaly_detection/processors.py +94 -0
- paddlex/inference/models/ts_anomaly_detection/result.py +72 -0
- paddlex/inference/models/ts_classification/__init__.py +15 -0
- paddlex/inference/models/ts_classification/predictor.py +135 -0
- paddlex/inference/models/ts_classification/processors.py +117 -0
- paddlex/inference/models/ts_classification/result.py +78 -0
- paddlex/inference/models/ts_forecasting/__init__.py +15 -0
- paddlex/inference/models/ts_forecasting/predictor.py +159 -0
- paddlex/inference/models/ts_forecasting/processors.py +149 -0
- paddlex/inference/models/ts_forecasting/result.py +83 -0
- paddlex/inference/models/video_classification/__init__.py +15 -0
- paddlex/inference/models/video_classification/predictor.py +147 -0
- paddlex/inference/models/video_classification/processors.py +409 -0
- paddlex/inference/models/video_classification/result.py +92 -0
- paddlex/inference/models/video_detection/__init__.py +15 -0
- paddlex/inference/models/video_detection/predictor.py +136 -0
- paddlex/inference/models/video_detection/processors.py +450 -0
- paddlex/inference/models/video_detection/result.py +104 -0
- paddlex/inference/pipelines/3d_bev_detection/__init__.py +15 -0
- paddlex/inference/pipelines/3d_bev_detection/pipeline.py +67 -0
- paddlex/inference/pipelines/__init__.py +174 -73
- paddlex/inference/pipelines/anomaly_detection/__init__.py +15 -0
- paddlex/inference/pipelines/anomaly_detection/pipeline.py +62 -0
- paddlex/inference/pipelines/attribute_recognition/__init__.py +15 -0
- paddlex/inference/pipelines/attribute_recognition/pipeline.py +105 -0
- paddlex/inference/pipelines/attribute_recognition/result.py +100 -0
- paddlex/inference/pipelines/base.py +103 -57
- paddlex/inference/pipelines/components/__init__.py +23 -0
- paddlex/inference/pipelines/components/chat_server/__init__.py +16 -0
- paddlex/inference/pipelines/components/chat_server/base.py +39 -0
- paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +236 -0
- paddlex/inference/pipelines/components/common/__init__.py +18 -0
- paddlex/inference/pipelines/components/common/base_operator.py +36 -0
- paddlex/inference/pipelines/components/common/base_result.py +65 -0
- paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +46 -0
- paddlex/inference/pipelines/components/common/crop_image_regions.py +550 -0
- paddlex/inference/pipelines/components/common/seal_det_warp.py +941 -0
- paddlex/inference/pipelines/components/common/sort_boxes.py +83 -0
- paddlex/inference/pipelines/components/faisser.py +352 -0
- paddlex/inference/pipelines/components/prompt_engineering/__init__.py +16 -0
- paddlex/inference/pipelines/components/prompt_engineering/base.py +35 -0
- paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +127 -0
- paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +148 -0
- paddlex/inference/pipelines/components/retriever/__init__.py +16 -0
- paddlex/inference/pipelines/components/retriever/base.py +226 -0
- paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +70 -0
- paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +163 -0
- paddlex/inference/pipelines/components/utils/__init__.py +13 -0
- paddlex/inference/pipelines/components/utils/mixin.py +206 -0
- paddlex/inference/pipelines/doc_preprocessor/__init__.py +15 -0
- paddlex/inference/pipelines/doc_preprocessor/pipeline.py +190 -0
- paddlex/inference/pipelines/doc_preprocessor/result.py +103 -0
- paddlex/inference/pipelines/face_recognition/__init__.py +15 -0
- paddlex/inference/pipelines/face_recognition/pipeline.py +61 -0
- paddlex/inference/pipelines/face_recognition/result.py +43 -0
- paddlex/inference/pipelines/formula_recognition/__init__.py +15 -0
- paddlex/inference/pipelines/formula_recognition/pipeline.py +303 -0
- paddlex/inference/pipelines/formula_recognition/result.py +291 -0
- paddlex/inference/pipelines/image_classification/__init__.py +15 -0
- paddlex/inference/pipelines/image_classification/pipeline.py +71 -0
- paddlex/inference/pipelines/image_multilabel_classification/__init__.py +15 -0
- paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +78 -0
- paddlex/inference/pipelines/instance_segmentation/__init__.py +15 -0
- paddlex/inference/pipelines/instance_segmentation/pipeline.py +70 -0
- paddlex/inference/pipelines/keypoint_detection/__init__.py +15 -0
- paddlex/inference/pipelines/keypoint_detection/pipeline.py +137 -0
- paddlex/inference/pipelines/layout_parsing/__init__.py +2 -1
- paddlex/inference/pipelines/layout_parsing/pipeline.py +570 -0
- paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +739 -0
- paddlex/inference/pipelines/layout_parsing/result.py +203 -0
- paddlex/inference/pipelines/layout_parsing/result_v2.py +470 -0
- paddlex/inference/pipelines/layout_parsing/utils.py +2385 -0
- paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +15 -0
- paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +67 -0
- paddlex/inference/pipelines/object_detection/__init__.py +15 -0
- paddlex/inference/pipelines/object_detection/pipeline.py +95 -0
- paddlex/inference/pipelines/ocr/__init__.py +15 -0
- paddlex/inference/pipelines/ocr/pipeline.py +389 -0
- paddlex/inference/pipelines/ocr/result.py +248 -0
- paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +15 -0
- paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +75 -0
- paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +15 -0
- paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +89 -0
- paddlex/inference/pipelines/pp_chatocr/__init__.py +16 -0
- paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +102 -0
- paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +773 -0
- paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +977 -0
- paddlex/inference/pipelines/pp_shitu_v2/__init__.py +15 -0
- paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +152 -0
- paddlex/inference/pipelines/pp_shitu_v2/result.py +126 -0
- paddlex/inference/pipelines/rotated_object_detection/__init__.py +15 -0
- paddlex/inference/pipelines/rotated_object_detection/pipeline.py +74 -0
- paddlex/inference/pipelines/seal_recognition/__init__.py +15 -0
- paddlex/inference/pipelines/seal_recognition/pipeline.py +271 -0
- paddlex/inference/pipelines/seal_recognition/result.py +87 -0
- paddlex/inference/pipelines/semantic_segmentation/__init__.py +15 -0
- paddlex/inference/pipelines/semantic_segmentation/pipeline.py +74 -0
- paddlex/inference/pipelines/small_object_detection/__init__.py +15 -0
- paddlex/inference/pipelines/small_object_detection/pipeline.py +74 -0
- paddlex/inference/pipelines/table_recognition/__init__.py +2 -1
- paddlex/inference/pipelines/table_recognition/pipeline.py +462 -0
- paddlex/inference/pipelines/table_recognition/pipeline_v2.py +792 -0
- paddlex/inference/pipelines/table_recognition/result.py +216 -0
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +362 -0
- paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +470 -0
- paddlex/inference/pipelines/table_recognition/utils.py +23 -436
- paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +15 -0
- paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +62 -0
- paddlex/inference/pipelines/ts_classification/__init__.py +15 -0
- paddlex/inference/pipelines/ts_classification/pipeline.py +62 -0
- paddlex/inference/pipelines/ts_forecasting/__init__.py +15 -0
- paddlex/inference/pipelines/ts_forecasting/pipeline.py +62 -0
- paddlex/inference/pipelines/video_classification/__init__.py +15 -0
- paddlex/inference/pipelines/video_classification/pipeline.py +68 -0
- paddlex/inference/pipelines/video_detection/__init__.py +15 -0
- paddlex/inference/pipelines/video_detection/pipeline.py +73 -0
- paddlex/inference/serving/__init__.py +13 -0
- paddlex/inference/serving/basic_serving/__init__.py +18 -0
- paddlex/inference/serving/basic_serving/_app.py +209 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +41 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +13 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +96 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +36 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +90 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +64 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +97 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +223 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +97 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +78 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +66 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +70 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +81 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +115 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +76 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +89 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +74 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +99 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +78 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +85 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +81 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +191 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +221 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +218 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +136 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +78 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +103 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +64 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +69 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +105 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +107 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +62 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +61 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +62 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +81 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +73 -0
- paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +89 -0
- paddlex/inference/serving/basic_serving/_server.py +35 -0
- paddlex/inference/serving/infra/__init__.py +13 -0
- paddlex/inference/serving/infra/config.py +36 -0
- paddlex/inference/serving/infra/models.py +72 -0
- paddlex/inference/serving/infra/storage.py +175 -0
- paddlex/inference/serving/infra/utils.py +259 -0
- paddlex/inference/serving/schemas/__init__.py +13 -0
- paddlex/inference/serving/schemas/anomaly_detection.py +39 -0
- paddlex/inference/serving/schemas/doc_preprocessor.py +54 -0
- paddlex/inference/serving/schemas/face_recognition.py +124 -0
- paddlex/inference/serving/schemas/formula_recognition.py +56 -0
- paddlex/inference/serving/schemas/human_keypoint_detection.py +55 -0
- paddlex/inference/serving/schemas/image_classification.py +45 -0
- paddlex/inference/serving/schemas/image_multilabel_classification.py +47 -0
- paddlex/inference/serving/schemas/instance_segmentation.py +53 -0
- paddlex/inference/serving/schemas/layout_parsing.py +72 -0
- paddlex/inference/serving/schemas/m_3d_bev_detection.py +48 -0
- paddlex/inference/serving/schemas/multilingual_speech_recognition.py +57 -0
- paddlex/inference/serving/schemas/object_detection.py +52 -0
- paddlex/inference/serving/schemas/ocr.py +60 -0
- paddlex/inference/serving/schemas/open_vocabulary_detection.py +52 -0
- paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +52 -0
- paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +61 -0
- paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +134 -0
- paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +151 -0
- paddlex/inference/serving/schemas/pp_shituv2.py +124 -0
- paddlex/inference/serving/schemas/pp_structurev3.py +84 -0
- paddlex/inference/serving/schemas/rotated_object_detection.py +52 -0
- paddlex/inference/serving/schemas/seal_recognition.py +62 -0
- paddlex/inference/serving/schemas/semantic_segmentation.py +45 -0
- paddlex/inference/serving/schemas/shared/__init__.py +13 -0
- paddlex/inference/serving/schemas/shared/classification.py +23 -0
- paddlex/inference/serving/schemas/shared/image_segmentation.py +28 -0
- paddlex/inference/serving/schemas/shared/object_detection.py +24 -0
- paddlex/inference/serving/schemas/shared/ocr.py +25 -0
- paddlex/inference/serving/schemas/small_object_detection.py +52 -0
- paddlex/inference/serving/schemas/table_recognition.py +64 -0
- paddlex/inference/serving/schemas/table_recognition_v2.py +66 -0
- paddlex/inference/serving/schemas/ts_anomaly_detection.py +37 -0
- paddlex/inference/serving/schemas/ts_classification.py +38 -0
- paddlex/inference/serving/schemas/ts_forecast.py +37 -0
- paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +61 -0
- paddlex/inference/serving/schemas/video_classification.py +44 -0
- paddlex/inference/serving/schemas/video_detection.py +56 -0
- paddlex/inference/utils/benchmark.py +23 -11
- paddlex/inference/utils/get_pipeline_path.py +2 -1
- paddlex/inference/utils/io/__init__.py +3 -0
- paddlex/inference/utils/io/readers.py +164 -17
- paddlex/inference/utils/io/writers.py +85 -2
- paddlex/inference/utils/new_ir_blacklist.py +6 -0
- paddlex/inference/utils/official_models.py +277 -211
- paddlex/inference/utils/pp_option.py +24 -4
- paddlex/model.py +12 -5
- paddlex/modules/3d_bev_detection/__init__.py +18 -0
- paddlex/modules/3d_bev_detection/dataset_checker/__init__.py +95 -0
- paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/__init__.py +17 -0
- paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/analyse_dataset.py +106 -0
- paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/check_dataset.py +102 -0
- paddlex/modules/3d_bev_detection/evaluator.py +46 -0
- paddlex/modules/3d_bev_detection/exportor.py +22 -0
- paddlex/modules/3d_bev_detection/model_list.py +18 -0
- paddlex/modules/3d_bev_detection/trainer.py +70 -0
- paddlex/modules/__init__.py +34 -1
- paddlex/modules/base/build_model.py +1 -1
- paddlex/modules/base/dataset_checker/dataset_checker.py +6 -1
- paddlex/modules/base/evaluator.py +20 -4
- paddlex/modules/base/exportor.py +30 -5
- paddlex/modules/base/trainer.py +29 -6
- paddlex/modules/face_recognition/trainer.py +1 -23
- paddlex/modules/formula_recognition/__init__.py +5 -0
- paddlex/modules/formula_recognition/dataset_checker/__init__.py +113 -0
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +19 -0
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +157 -0
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +80 -0
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +94 -0
- paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +81 -0
- paddlex/modules/formula_recognition/evaluator.py +77 -0
- paddlex/modules/formula_recognition/exportor.py +22 -0
- paddlex/modules/formula_recognition/model_list.py +3 -0
- paddlex/modules/formula_recognition/trainer.py +121 -0
- paddlex/modules/image_classification/model_list.py +2 -0
- paddlex/modules/instance_segmentation/dataset_checker/__init__.py +15 -0
- paddlex/modules/keypoint_detection/__init__.py +18 -0
- paddlex/modules/keypoint_detection/dataset_checker/__init__.py +56 -0
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +15 -0
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +86 -0
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
- paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +119 -0
- paddlex/modules/keypoint_detection/evaluator.py +41 -0
- paddlex/modules/keypoint_detection/exportor.py +22 -0
- paddlex/modules/keypoint_detection/model_list.py +16 -0
- paddlex/modules/keypoint_detection/trainer.py +39 -0
- paddlex/modules/multilingual_speech_recognition/__init__.py +18 -0
- paddlex/modules/multilingual_speech_recognition/dataset_checker.py +27 -0
- paddlex/modules/multilingual_speech_recognition/evaluator.py +27 -0
- paddlex/modules/multilingual_speech_recognition/exportor.py +27 -0
- paddlex/modules/multilingual_speech_recognition/model_list.py +22 -0
- paddlex/modules/multilingual_speech_recognition/trainer.py +40 -0
- paddlex/modules/object_detection/evaluator.py +12 -1
- paddlex/modules/object_detection/model_list.py +10 -0
- paddlex/modules/object_detection/trainer.py +15 -1
- paddlex/modules/open_vocabulary_detection/__init__.py +18 -0
- paddlex/modules/open_vocabulary_detection/dataset_checker.py +29 -0
- paddlex/modules/open_vocabulary_detection/evaluator.py +29 -0
- paddlex/modules/open_vocabulary_detection/exportor.py +29 -0
- paddlex/modules/open_vocabulary_detection/model_list.py +18 -0
- paddlex/modules/open_vocabulary_detection/trainer.py +42 -0
- paddlex/modules/open_vocabulary_segmentation/__init__.py +18 -0
- paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +29 -0
- paddlex/modules/open_vocabulary_segmentation/evaluator.py +29 -0
- paddlex/modules/open_vocabulary_segmentation/exportor.py +29 -0
- paddlex/modules/open_vocabulary_segmentation/model_list.py +19 -0
- paddlex/modules/open_vocabulary_segmentation/trainer.py +42 -0
- paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +15 -0
- paddlex/modules/semantic_segmentation/exportor.py +9 -0
- paddlex/modules/semantic_segmentation/model_list.py +2 -0
- paddlex/modules/semantic_segmentation/trainer.py +2 -0
- paddlex/modules/table_recognition/dataset_checker/__init__.py +16 -1
- paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +13 -14
- paddlex/modules/table_recognition/model_list.py +2 -0
- paddlex/modules/text_detection/dataset_checker/__init__.py +16 -1
- paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +13 -3
- paddlex/modules/text_detection/model_list.py +2 -0
- paddlex/modules/text_recognition/dataset_checker/__init__.py +16 -4
- paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +13 -3
- paddlex/modules/text_recognition/evaluator.py +4 -3
- paddlex/modules/text_recognition/exportor.py +0 -3
- paddlex/modules/text_recognition/model_list.py +14 -0
- paddlex/modules/text_recognition/trainer.py +4 -3
- paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +15 -0
- paddlex/modules/ts_anomaly_detection/trainer.py +17 -1
- paddlex/modules/ts_classification/dataset_checker/__init__.py +15 -0
- paddlex/modules/ts_classification/trainer.py +17 -1
- paddlex/modules/ts_forecast/dataset_checker/__init__.py +15 -0
- paddlex/modules/ts_forecast/trainer.py +17 -1
- paddlex/modules/video_classification/__init__.py +18 -0
- paddlex/modules/video_classification/dataset_checker/__init__.py +93 -0
- paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +18 -0
- paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +93 -0
- paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +121 -0
- paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +82 -0
- paddlex/modules/video_classification/evaluator.py +44 -0
- paddlex/modules/video_classification/exportor.py +22 -0
- paddlex/modules/video_classification/model_list.py +19 -0
- paddlex/modules/video_classification/trainer.py +88 -0
- paddlex/modules/video_detection/__init__.py +18 -0
- paddlex/modules/video_detection/dataset_checker/__init__.py +86 -0
- paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +17 -0
- paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +101 -0
- paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +134 -0
- paddlex/modules/video_detection/evaluator.py +42 -0
- paddlex/modules/video_detection/exportor.py +22 -0
- paddlex/modules/video_detection/model_list.py +15 -0
- paddlex/modules/video_detection/trainer.py +82 -0
- paddlex/ops/__init__.py +149 -0
- paddlex/ops/iou3d_nms/iou3d_cpu.cpp +264 -0
- paddlex/ops/iou3d_nms/iou3d_cpu.h +27 -0
- paddlex/ops/iou3d_nms/iou3d_nms.cpp +204 -0
- paddlex/ops/iou3d_nms/iou3d_nms.h +33 -0
- paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +108 -0
- paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +482 -0
- paddlex/ops/setup.py +37 -0
- paddlex/ops/voxel/voxelize_op.cc +191 -0
- paddlex/ops/voxel/voxelize_op.cu +346 -0
- paddlex/paddle2onnx_requirements.txt +1 -0
- paddlex/paddlex_cli.py +339 -72
- paddlex/repo_apis/Paddle3D_api/__init__.py +17 -0
- paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +18 -0
- paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +118 -0
- paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +238 -0
- paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +55 -0
- paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +104 -0
- paddlex/repo_apis/Paddle3D_api/pp3d_config.py +144 -0
- paddlex/repo_apis/PaddleClas_api/cls/model.py +6 -0
- paddlex/repo_apis/PaddleClas_api/cls/register.py +20 -2
- paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +8 -4
- paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +6 -0
- paddlex/repo_apis/PaddleDetection_api/object_det/config.py +27 -5
- paddlex/repo_apis/PaddleDetection_api/object_det/model.py +6 -0
- paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +81 -0
- paddlex/repo_apis/PaddleDetection_api/object_det/register.py +182 -3
- paddlex/repo_apis/PaddleOCR_api/__init__.py +1 -0
- paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +16 -0
- paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +570 -0
- paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +402 -0
- paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +73 -0
- paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +240 -0
- paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +18 -0
- paddlex/repo_apis/PaddleOCR_api/text_det/register.py +18 -0
- paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +21 -0
- paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +6 -0
- paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +126 -7
- paddlex/repo_apis/PaddleSeg_api/seg/config.py +9 -0
- paddlex/repo_apis/PaddleSeg_api/seg/model.py +10 -0
- paddlex/repo_apis/PaddleSeg_api/seg/register.py +20 -0
- paddlex/repo_apis/PaddleTS_api/ts_base/config.py +24 -0
- paddlex/repo_apis/PaddleTS_api/ts_base/model.py +11 -7
- paddlex/repo_apis/PaddleVideo_api/__init__.py +17 -0
- paddlex/repo_apis/PaddleVideo_api/config_utils.py +51 -0
- paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +19 -0
- paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +547 -0
- paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +346 -0
- paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +71 -0
- paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +205 -0
- paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +19 -0
- paddlex/repo_apis/PaddleVideo_api/video_det/config.py +548 -0
- paddlex/repo_apis/PaddleVideo_api/video_det/model.py +298 -0
- paddlex/repo_apis/PaddleVideo_api/video_det/register.py +45 -0
- paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +200 -0
- paddlex/repo_apis/base/runner.py +2 -1
- paddlex/repo_manager/meta.py +29 -2
- paddlex/repo_manager/repo.py +24 -5
- paddlex/repo_manager/requirements.txt +10 -7
- paddlex/repo_manager/utils.py +62 -1
- paddlex/serving_requirements.txt +9 -0
- paddlex/utils/config.py +4 -3
- paddlex/utils/custom_device_whitelist.py +457 -0
- paddlex/utils/device.py +74 -26
- paddlex/utils/env.py +28 -0
- paddlex/utils/flags.py +4 -0
- paddlex/utils/fonts/__init__.py +48 -5
- paddlex/utils/lazy_loader.py +2 -0
- paddlex/utils/logging.py +1 -2
- paddlex/utils/pipeline_arguments.py +711 -0
- paddlex-3.0.0rc0.dist-info/METADATA +1035 -0
- paddlex-3.0.0rc0.dist-info/RECORD +1015 -0
- paddlex-3.0.0rc0.dist-info/WHEEL +5 -0
- paddlex/configs/face_recognition/MobileFaceNet.yaml +0 -44
- paddlex/configs/face_recognition/ResNet50_face.yaml +0 -44
- paddlex/configs/formula_recognition/LaTeX_OCR_rec.yaml +0 -40
- paddlex/configs/image_classification/CLIP_vit_base_patch16_224.yaml +0 -41
- paddlex/configs/image_classification/CLIP_vit_large_patch14_224.yaml +0 -41
- paddlex/configs/image_classification/ConvNeXt_large_384.yaml +0 -41
- paddlex/configs/object_detection/YOLOX-X.yaml +0 -40
- paddlex/configs/semantic_segmentation/SeaFormer_base.yaml +0 -40
- paddlex/configs/semantic_segmentation/SeaFormer_large.yaml +0 -40
- paddlex/configs/semantic_segmentation/SeaFormer_small.yaml +0 -40
- paddlex/configs/semantic_segmentation/SeaFormer_tiny.yaml +0 -40
- paddlex/inference/components/__init__.py +0 -18
- paddlex/inference/components/base.py +0 -292
- paddlex/inference/components/llm/__init__.py +0 -25
- paddlex/inference/components/llm/base.py +0 -65
- paddlex/inference/components/llm/erniebot.py +0 -212
- paddlex/inference/components/paddle_predictor/__init__.py +0 -20
- paddlex/inference/components/paddle_predictor/predictor.py +0 -332
- paddlex/inference/components/retrieval/__init__.py +0 -15
- paddlex/inference/components/retrieval/faiss.py +0 -359
- paddlex/inference/components/task_related/__init__.py +0 -33
- paddlex/inference/components/task_related/clas.py +0 -124
- paddlex/inference/components/task_related/det.py +0 -284
- paddlex/inference/components/task_related/instance_seg.py +0 -89
- paddlex/inference/components/task_related/seal_det_warp.py +0 -940
- paddlex/inference/components/task_related/seg.py +0 -40
- paddlex/inference/components/task_related/table_rec.py +0 -191
- paddlex/inference/components/task_related/text_det.py +0 -895
- paddlex/inference/components/task_related/text_rec.py +0 -353
- paddlex/inference/components/task_related/warp.py +0 -43
- paddlex/inference/components/transforms/__init__.py +0 -16
- paddlex/inference/components/transforms/image/__init__.py +0 -15
- paddlex/inference/components/transforms/image/common.py +0 -598
- paddlex/inference/components/transforms/image/funcs.py +0 -58
- paddlex/inference/components/transforms/read_data.py +0 -67
- paddlex/inference/components/transforms/ts/__init__.py +0 -15
- paddlex/inference/components/transforms/ts/common.py +0 -393
- paddlex/inference/components/transforms/ts/funcs.py +0 -424
- paddlex/inference/models/anomaly_detection.py +0 -87
- paddlex/inference/models/base/base_predictor.py +0 -76
- paddlex/inference/models/base/basic_predictor.py +0 -122
- paddlex/inference/models/face_recognition.py +0 -21
- paddlex/inference/models/formula_recognition.py +0 -55
- paddlex/inference/models/general_recognition.py +0 -99
- paddlex/inference/models/image_classification.py +0 -101
- paddlex/inference/models/image_unwarping.py +0 -43
- paddlex/inference/models/instance_segmentation.py +0 -66
- paddlex/inference/models/multilabel_classification.py +0 -33
- paddlex/inference/models/object_detection.py +0 -129
- paddlex/inference/models/semantic_segmentation.py +0 -86
- paddlex/inference/models/table_recognition.py +0 -106
- paddlex/inference/models/text_detection.py +0 -105
- paddlex/inference/models/text_recognition.py +0 -78
- paddlex/inference/models/ts_ad.py +0 -68
- paddlex/inference/models/ts_cls.py +0 -57
- paddlex/inference/models/ts_fc.py +0 -73
- paddlex/inference/pipelines/attribute_recognition.py +0 -92
- paddlex/inference/pipelines/face_recognition.py +0 -49
- paddlex/inference/pipelines/formula_recognition.py +0 -102
- paddlex/inference/pipelines/layout_parsing/layout_parsing.py +0 -362
- paddlex/inference/pipelines/ocr.py +0 -80
- paddlex/inference/pipelines/pp_shitu_v2.py +0 -152
- paddlex/inference/pipelines/ppchatocrv3/__init__.py +0 -15
- paddlex/inference/pipelines/ppchatocrv3/ch_prompt.yaml +0 -14
- paddlex/inference/pipelines/ppchatocrv3/ppchatocrv3.py +0 -717
- paddlex/inference/pipelines/ppchatocrv3/utils.py +0 -168
- paddlex/inference/pipelines/seal_recognition.py +0 -152
- paddlex/inference/pipelines/serving/__init__.py +0 -17
- paddlex/inference/pipelines/serving/_pipeline_apps/__init__.py +0 -205
- paddlex/inference/pipelines/serving/_pipeline_apps/anomaly_detection.py +0 -80
- paddlex/inference/pipelines/serving/_pipeline_apps/face_recognition.py +0 -317
- paddlex/inference/pipelines/serving/_pipeline_apps/formula_recognition.py +0 -119
- paddlex/inference/pipelines/serving/_pipeline_apps/image_classification.py +0 -101
- paddlex/inference/pipelines/serving/_pipeline_apps/instance_segmentation.py +0 -112
- paddlex/inference/pipelines/serving/_pipeline_apps/layout_parsing.py +0 -205
- paddlex/inference/pipelines/serving/_pipeline_apps/multi_label_image_classification.py +0 -90
- paddlex/inference/pipelines/serving/_pipeline_apps/object_detection.py +0 -90
- paddlex/inference/pipelines/serving/_pipeline_apps/ocr.py +0 -98
- paddlex/inference/pipelines/serving/_pipeline_apps/pedestrian_attribute_recognition.py +0 -102
- paddlex/inference/pipelines/serving/_pipeline_apps/pp_shitu_v2.py +0 -319
- paddlex/inference/pipelines/serving/_pipeline_apps/ppchatocrv3.py +0 -445
- paddlex/inference/pipelines/serving/_pipeline_apps/seal_recognition.py +0 -110
- paddlex/inference/pipelines/serving/_pipeline_apps/semantic_segmentation.py +0 -82
- paddlex/inference/pipelines/serving/_pipeline_apps/small_object_detection.py +0 -92
- paddlex/inference/pipelines/serving/_pipeline_apps/table_recognition.py +0 -110
- paddlex/inference/pipelines/serving/_pipeline_apps/ts_ad.py +0 -68
- paddlex/inference/pipelines/serving/_pipeline_apps/ts_cls.py +0 -68
- paddlex/inference/pipelines/serving/_pipeline_apps/ts_fc.py +0 -68
- paddlex/inference/pipelines/serving/_pipeline_apps/vehicle_attribute_recognition.py +0 -102
- paddlex/inference/pipelines/serving/app.py +0 -164
- paddlex/inference/pipelines/serving/models.py +0 -30
- paddlex/inference/pipelines/serving/server.py +0 -25
- paddlex/inference/pipelines/serving/storage.py +0 -161
- paddlex/inference/pipelines/serving/utils.py +0 -190
- paddlex/inference/pipelines/single_model_pipeline.py +0 -76
- paddlex/inference/pipelines/table_recognition/table_recognition.py +0 -193
- paddlex/inference/results/__init__.py +0 -31
- paddlex/inference/results/attribute_rec.py +0 -89
- paddlex/inference/results/base.py +0 -43
- paddlex/inference/results/chat_ocr.py +0 -158
- paddlex/inference/results/clas.py +0 -133
- paddlex/inference/results/det.py +0 -86
- paddlex/inference/results/face_rec.py +0 -34
- paddlex/inference/results/formula_rec.py +0 -363
- paddlex/inference/results/instance_seg.py +0 -152
- paddlex/inference/results/ocr.py +0 -157
- paddlex/inference/results/seal_rec.py +0 -50
- paddlex/inference/results/seg.py +0 -72
- paddlex/inference/results/shitu.py +0 -35
- paddlex/inference/results/table_rec.py +0 -109
- paddlex/inference/results/text_det.py +0 -33
- paddlex/inference/results/text_rec.py +0 -66
- paddlex/inference/results/ts.py +0 -37
- paddlex/inference/results/utils/mixin.py +0 -204
- paddlex/inference/results/warp.py +0 -31
- paddlex/inference/utils/process_hook.py +0 -54
- paddlex/pipelines/OCR.yaml +0 -8
- paddlex/pipelines/PP-ChatOCRv3-doc.yaml +0 -27
- paddlex/pipelines/PP-ShiTuV2.yaml +0 -13
- paddlex/pipelines/anomaly_detection.yaml +0 -7
- paddlex/pipelines/face_recognition.yaml +0 -13
- paddlex/pipelines/formula_recognition.yaml +0 -8
- paddlex/pipelines/image_classification.yaml +0 -7
- paddlex/pipelines/instance_segmentation.yaml +0 -7
- paddlex/pipelines/layout_parsing.yaml +0 -14
- paddlex/pipelines/multi_label_image_classification.yaml +0 -7
- paddlex/pipelines/object_detection.yaml +0 -7
- paddlex/pipelines/pedestrian_attribute_recognition.yaml +0 -7
- paddlex/pipelines/seal_recognition.yaml +0 -10
- paddlex/pipelines/semantic_segmentation.yaml +0 -7
- paddlex/pipelines/small_object_detection.yaml +0 -7
- paddlex/pipelines/table_recognition.yaml +0 -12
- paddlex/pipelines/ts_ad.yaml +0 -7
- paddlex/pipelines/ts_cls.yaml +0 -7
- paddlex/pipelines/ts_fc.yaml +0 -7
- paddlex/pipelines/vehicle_attribute_recognition.yaml +0 -7
- paddlex/utils/fonts/PingFang-SC-Regular.ttf +0 -0
- paddlex-3.0.0b2.dist-info/METADATA +0 -760
- paddlex-3.0.0b2.dist-info/RECORD +0 -646
- paddlex-3.0.0b2.dist-info/WHEEL +0 -5
- /paddlex/configs/{doc_text_orientation → modules/doc_text_orientation}/PP-LCNet_x1_0_doc_ori.yaml +0 -0
- /paddlex/configs/{face_detection → modules/face_detection}/BlazeFace-FPN-SSH.yaml +0 -0
- /paddlex/configs/{face_detection → modules/face_detection}/BlazeFace.yaml +0 -0
- /paddlex/configs/{face_detection → modules/face_detection}/PP-YOLOE_plus-S_face.yaml +0 -0
- /paddlex/configs/{face_detection → modules/face_detection}/PicoDet_LCNet_x2_5_face.yaml +0 -0
- /paddlex/configs/{human_detection → modules/human_detection}/PP-YOLOE-L_human.yaml +0 -0
- /paddlex/configs/{human_detection → modules/human_detection}/PP-YOLOE-S_human.yaml +0 -0
- /paddlex/configs/{anomaly_detection → modules/image_anomaly_detection}/STFPM.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ConvNeXt_base_224.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ConvNeXt_base_384.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ConvNeXt_large_224.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ConvNeXt_small.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ConvNeXt_tiny.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-L.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-M.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-S.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-T0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-T1.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/FasterNet-T2.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV1_x0_25.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV1_x0_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV1_x0_75.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV1_x1_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV2_x0_25.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV2_x0_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV2_x1_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV2_x1_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV2_x2_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_large_x0_35.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_large_x0_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_large_x0_75.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_large_x1_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_large_x1_25.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_small_x0_35.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_small_x0_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_small_x0_75.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_small_x1_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV3_small_x1_25.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV4_conv_large.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV4_conv_medium.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV4_conv_small.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV4_hybrid_large.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/MobileNetV4_hybrid_medium.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B1.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B2.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B3.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B4.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNetV2-B6.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNet_base.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNet_small.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-HGNet_tiny.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNetV2_base.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNetV2_large.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNetV2_small.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x0_25.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x0_35.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x0_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x0_75.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x1_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x1_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x2_0.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/PP-LCNet_x2_5.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet101.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet101_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet152.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet152_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet18.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet18_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet200_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet34.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet34_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet50.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/ResNet50_vd.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/StarNet-S1.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/StarNet-S2.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/StarNet-S3.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/StarNet-S4.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_base_patch4_window12_384.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_base_patch4_window7_224.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_large_patch4_window12_384.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_large_patch4_window7_224.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_small_patch4_window7_224.yaml +0 -0
- /paddlex/configs/{image_classification → modules/image_classification}/SwinTransformer_tiny_patch4_window7_224.yaml +0 -0
- /paddlex/configs/{general_recognition → modules/image_feature}/PP-ShiTuV2_rec.yaml +0 -0
- /paddlex/configs/{general_recognition → modules/image_feature}/PP-ShiTuV2_rec_CLIP_vit_base.yaml +0 -0
- /paddlex/configs/{general_recognition → modules/image_feature}/PP-ShiTuV2_rec_CLIP_vit_large.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/CLIP_vit_base_patch16_448_ML.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/PP-HGNetV2-B0_ML.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/PP-HGNetV2-B4_ML.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/PP-HGNetV2-B6_ML.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/PP-LCNet_x1_0_ML.yaml +0 -0
- /paddlex/configs/{multilabel_classification → modules/image_multilabel_classification}/ResNet50_ML.yaml +0 -0
- /paddlex/configs/{image_unwarping → modules/image_unwarping}/UVDoc.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Cascade-MaskRCNN-ResNet50-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Cascade-MaskRCNN-ResNet50-vd-SSLDv2-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Mask-RT-DETR-H.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Mask-RT-DETR-L.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Mask-RT-DETR-M.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Mask-RT-DETR-S.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/Mask-RT-DETR-X.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNeXt101-vd-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNet101-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNet101-vd-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNet50-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNet50-vd-FPN.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/MaskRCNN-ResNet50.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/PP-YOLOE_seg-S.yaml +0 -0
- /paddlex/configs/{instance_segmentation → modules/instance_segmentation}/SOLOv2.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet-L_layout_17cls.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet-L_layout_3cls.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet-S_layout_17cls.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet-S_layout_3cls.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet_layout_1x.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/PicoDet_layout_1x_table.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/RT-DETR-H_layout_17cls.yaml +0 -0
- /paddlex/configs/{structure_analysis → modules/layout_detection}/RT-DETR-H_layout_3cls.yaml +0 -0
- /paddlex/configs/{mainbody_detection → modules/mainbody_detection}/PP-ShiTuV2_det.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/Cascade-FasterRCNN-ResNet50-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/Cascade-FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/CenterNet-DLA-34.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/CenterNet-ResNet50.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/DETR-R50.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FCOS-ResNet50.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNeXt101-vd-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet101-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet101.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet34-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet50-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet50-vd-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-ResNet50.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/FasterRCNN-Swin-Tiny-FPN.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PP-YOLOE_plus-L.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PP-YOLOE_plus-M.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PP-YOLOE_plus-S.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PP-YOLOE_plus-X.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PicoDet-L.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PicoDet-M.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PicoDet-S.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/PicoDet-XS.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/RT-DETR-H.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/RT-DETR-L.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/RT-DETR-R18.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/RT-DETR-R50.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/RT-DETR-X.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOX-L.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOX-M.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOX-N.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOX-S.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOX-T.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOv3-DarkNet53.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOv3-MobileNetV3.yaml +0 -0
- /paddlex/configs/{object_detection → modules/object_detection}/YOLOv3-ResNet50_vd_DCN.yaml +0 -0
- /paddlex/configs/{pedestrian_attribute → modules/pedestrian_attribute_recognition}/PP-LCNet_x1_0_pedestrian_attribute.yaml +0 -0
- /paddlex/configs/{text_detection_seal → modules/seal_text_detection}/PP-OCRv4_mobile_seal_det.yaml +0 -0
- /paddlex/configs/{text_detection_seal → modules/seal_text_detection}/PP-OCRv4_server_seal_det.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/Deeplabv3-R101.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/Deeplabv3-R50.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/Deeplabv3_Plus-R101.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/Deeplabv3_Plus-R50.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/OCRNet_HRNet-W18.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/OCRNet_HRNet-W48.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/PP-LiteSeg-B.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/PP-LiteSeg-T.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B0.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B1.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B2.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B3.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B4.yaml +0 -0
- /paddlex/configs/{semantic_segmentation → modules/semantic_segmentation}/SegFormer-B5.yaml +0 -0
- /paddlex/configs/{small_object_detection → modules/small_object_detection}/PP-YOLOE_plus_SOD-L.yaml +0 -0
- /paddlex/configs/{small_object_detection → modules/small_object_detection}/PP-YOLOE_plus_SOD-S.yaml +0 -0
- /paddlex/configs/{small_object_detection → modules/small_object_detection}/PP-YOLOE_plus_SOD-largesize-L.yaml +0 -0
- /paddlex/configs/{table_recognition → modules/table_structure_recognition}/SLANet.yaml +0 -0
- /paddlex/configs/{table_recognition → modules/table_structure_recognition}/SLANet_plus.yaml +0 -0
- /paddlex/configs/{text_detection → modules/text_detection}/PP-OCRv4_mobile_det.yaml +0 -0
- /paddlex/configs/{text_detection → modules/text_detection}/PP-OCRv4_server_det.yaml +0 -0
- /paddlex/configs/{text_recognition → modules/text_recognition}/PP-OCRv4_mobile_rec.yaml +0 -0
- /paddlex/configs/{text_recognition → modules/text_recognition}/PP-OCRv4_server_rec.yaml +0 -0
- /paddlex/configs/{text_recognition → modules/text_recognition}/ch_RepSVTR_rec.yaml +0 -0
- /paddlex/configs/{text_recognition → modules/text_recognition}/ch_SVTRv2_rec.yaml +0 -0
- /paddlex/configs/{ts_anomaly_detection → modules/ts_anomaly_detection}/AutoEncoder_ad.yaml +0 -0
- /paddlex/configs/{ts_anomaly_detection → modules/ts_anomaly_detection}/DLinear_ad.yaml +0 -0
- /paddlex/configs/{ts_anomaly_detection → modules/ts_anomaly_detection}/Nonstationary_ad.yaml +0 -0
- /paddlex/configs/{ts_anomaly_detection → modules/ts_anomaly_detection}/PatchTST_ad.yaml +0 -0
- /paddlex/configs/{ts_anomaly_detection → modules/ts_anomaly_detection}/TimesNet_ad.yaml +0 -0
- /paddlex/configs/{ts_classification → modules/ts_classification}/TimesNet_cls.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/DLinear.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/NLinear.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/Nonstationary.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/PatchTST.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/RLinear.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/TiDE.yaml +0 -0
- /paddlex/configs/{ts_forecast → modules/ts_forecast}/TimesNet.yaml +0 -0
- /paddlex/configs/{vehicle_attribute → modules/vehicle_attribute_recognition}/PP-LCNet_x1_0_vehicle_attribute.yaml +0 -0
- /paddlex/configs/{vehicle_detection → modules/vehicle_detection}/PP-YOLOE-L_vehicle.yaml +0 -0
- /paddlex/configs/{vehicle_detection → modules/vehicle_detection}/PP-YOLOE-S_vehicle.yaml +0 -0
- /paddlex/inference/{results/utils → common}/__init__.py +0 -0
- {paddlex-3.0.0b2.dist-info → paddlex-3.0.0rc0.dist-info}/LICENSE +0 -0
- {paddlex-3.0.0b2.dist-info → paddlex-3.0.0rc0.dist-info}/entry_points.txt +0 -0
- {paddlex-3.0.0b2.dist-info → paddlex-3.0.0rc0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,978 @@
|
|
1
|
+
# copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
|
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
|
+
|
16
|
+
import numbers
|
17
|
+
import cv2
|
18
|
+
import numpy as np
|
19
|
+
from typing import Generic, List, Optional
|
20
|
+
import lazy_paddle as paddle
|
21
|
+
|
22
|
+
from ...utils.io import ImageReader
|
23
|
+
from ....utils import logging
|
24
|
+
from ...common.reader.det_3d_reader import Sample
|
25
|
+
|
26
|
+
|
27
|
+
cv2_interp_codes = {
|
28
|
+
"nearest": cv2.INTER_NEAREST,
|
29
|
+
"bilinear": cv2.INTER_LINEAR,
|
30
|
+
"bicubic": cv2.INTER_CUBIC,
|
31
|
+
"area": cv2.INTER_AREA,
|
32
|
+
"lanczos": cv2.INTER_LANCZOS4,
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
class LoadPointsFromFile:
|
37
|
+
"""Load points from a file and process them according to specified parameters."""
|
38
|
+
|
39
|
+
def __init__(
|
40
|
+
self, load_dim=6, use_dim=[0, 1, 2], shift_height=False, use_color=False
|
41
|
+
):
|
42
|
+
"""Initializes the LoadPointsFromFile object.
|
43
|
+
|
44
|
+
Args:
|
45
|
+
load_dim (int): Dimensions loaded in points.
|
46
|
+
use_dim (list or int): Dimensions used in points. If int, will use a range from 0 to use_dim (exclusive).
|
47
|
+
shift_height (bool): Whether to shift height values.
|
48
|
+
use_color (bool): Whether to include color attributes in the loaded points.
|
49
|
+
"""
|
50
|
+
self.shift_height = shift_height
|
51
|
+
self.use_color = use_color
|
52
|
+
if isinstance(use_dim, int):
|
53
|
+
use_dim = list(range(use_dim))
|
54
|
+
assert (
|
55
|
+
max(use_dim) < load_dim
|
56
|
+
), f"Expect all used dimensions < {load_dim}, got {use_dim}"
|
57
|
+
|
58
|
+
self.load_dim = load_dim
|
59
|
+
self.use_dim = use_dim
|
60
|
+
|
61
|
+
def _load_points(self, pts_filename):
|
62
|
+
"""Private function to load point clouds data from a file.
|
63
|
+
|
64
|
+
Args:
|
65
|
+
pts_filename (str): Path to the point cloud file.
|
66
|
+
|
67
|
+
Returns:
|
68
|
+
numpy.ndarray: Loaded point cloud data.
|
69
|
+
"""
|
70
|
+
points = np.fromfile(pts_filename, dtype=np.float32)
|
71
|
+
return points
|
72
|
+
|
73
|
+
def __call__(self, results):
|
74
|
+
"""Call function to load points data from file and process it.
|
75
|
+
|
76
|
+
Args:
|
77
|
+
results (dict): Dictionary containing the 'pts_filename' key with the path to the point cloud file.
|
78
|
+
|
79
|
+
Returns:
|
80
|
+
dict: Updated results dictionary with 'points' key added.
|
81
|
+
"""
|
82
|
+
pts_filename = results["pts_filename"]
|
83
|
+
points = self._load_points(pts_filename)
|
84
|
+
points = points.reshape(-1, self.load_dim)
|
85
|
+
points = points[:, self.use_dim]
|
86
|
+
attribute_dims = None
|
87
|
+
|
88
|
+
if self.shift_height:
|
89
|
+
floor_height = np.percentile(points[:, 2], 0.99)
|
90
|
+
height = points[:, 2] - floor_height
|
91
|
+
points = np.concatenate(
|
92
|
+
[points[:, :3], np.expand_dims(height, 1), points[:, 3:]], 1
|
93
|
+
)
|
94
|
+
attribute_dims = dict(height=3)
|
95
|
+
|
96
|
+
if self.use_color:
|
97
|
+
assert len(self.use_dim) >= 6
|
98
|
+
if attribute_dims is None:
|
99
|
+
attribute_dims = dict()
|
100
|
+
attribute_dims.update(
|
101
|
+
dict(
|
102
|
+
color=[
|
103
|
+
points.shape[1] - 3,
|
104
|
+
points.shape[1] - 2,
|
105
|
+
points.shape[1] - 1,
|
106
|
+
]
|
107
|
+
)
|
108
|
+
)
|
109
|
+
|
110
|
+
results["points"] = points
|
111
|
+
|
112
|
+
return results
|
113
|
+
|
114
|
+
|
115
|
+
class LoadPointsFromMultiSweeps(object):
|
116
|
+
"""Load points from multiple sweeps.This is usually used for nuScenes dataset to utilize previous sweeps."""
|
117
|
+
|
118
|
+
def __init__(
|
119
|
+
self,
|
120
|
+
sweeps_num=10,
|
121
|
+
load_dim=5,
|
122
|
+
use_dim=[0, 1, 2, 4],
|
123
|
+
pad_empty_sweeps=False,
|
124
|
+
remove_close=False,
|
125
|
+
test_mode=False,
|
126
|
+
point_cloud_angle_range=None,
|
127
|
+
):
|
128
|
+
"""Initializes the LoadPointsFromMultiSweeps object
|
129
|
+
Args:
|
130
|
+
sweeps_num (int): Number of sweeps. Defaults to 10.
|
131
|
+
load_dim (int): Dimension number of the loaded points. Defaults to 5.
|
132
|
+
use_dim (list[int]): Which dimension to use. Defaults to [0, 1, 2, 4].
|
133
|
+
for more details. Defaults to dict(backend='disk').
|
134
|
+
pad_empty_sweeps (bool): Whether to repeat keyframe when
|
135
|
+
sweeps is empty. Defaults to False.
|
136
|
+
remove_close (bool): Whether to remove close points.
|
137
|
+
Defaults to False.
|
138
|
+
test_mode (bool): If test_model=True used for testing, it will not
|
139
|
+
randomly sample sweeps but select the nearest N frames.
|
140
|
+
Defaults to False.
|
141
|
+
"""
|
142
|
+
self.load_dim = load_dim
|
143
|
+
self.sweeps_num = sweeps_num
|
144
|
+
self.use_dim = use_dim
|
145
|
+
self.pad_empty_sweeps = pad_empty_sweeps
|
146
|
+
self.remove_close = remove_close
|
147
|
+
self.test_mode = test_mode
|
148
|
+
|
149
|
+
if point_cloud_angle_range is not None:
|
150
|
+
self.filter_by_angle = True
|
151
|
+
self.point_cloud_angle_range = point_cloud_angle_range
|
152
|
+
print(point_cloud_angle_range)
|
153
|
+
else:
|
154
|
+
self.filter_by_angle = False
|
155
|
+
# self.point_cloud_angle_range = point_cloud_angle_range
|
156
|
+
|
157
|
+
def _load_points(self, pts_filename):
|
158
|
+
"""Private function to load point clouds data.
|
159
|
+
|
160
|
+
Args:
|
161
|
+
pts_filename (str): Filename of point clouds data.
|
162
|
+
|
163
|
+
Returns:
|
164
|
+
np.ndarray: An array containing point clouds data.
|
165
|
+
"""
|
166
|
+
points = np.fromfile(pts_filename, dtype=np.float32)
|
167
|
+
return points
|
168
|
+
|
169
|
+
def _remove_close(self, points, radius=1.0):
|
170
|
+
"""Removes point too close within a certain radius from origin.
|
171
|
+
|
172
|
+
Args:
|
173
|
+
points (np.ndarray): Sweep points.
|
174
|
+
radius (float): Radius below which points are removed.
|
175
|
+
Defaults to 1.0.
|
176
|
+
|
177
|
+
Returns:
|
178
|
+
np.ndarray: Points after removing.
|
179
|
+
"""
|
180
|
+
if isinstance(points, np.ndarray):
|
181
|
+
points_numpy = points
|
182
|
+
else:
|
183
|
+
raise NotImplementedError
|
184
|
+
x_filt = np.abs(points_numpy[:, 0]) < radius
|
185
|
+
y_filt = np.abs(points_numpy[:, 1]) < radius
|
186
|
+
not_close = np.logical_not(np.logical_and(x_filt, y_filt))
|
187
|
+
return points[not_close]
|
188
|
+
|
189
|
+
def filter_point_by_angle(self, points):
|
190
|
+
"""
|
191
|
+
Filters points based on their angle in relation to the origin.
|
192
|
+
|
193
|
+
Args:
|
194
|
+
points (np.ndarray): An array of points with shape (N, 2), where each row
|
195
|
+
is a point in 2D space.
|
196
|
+
|
197
|
+
Returns:
|
198
|
+
np.ndarray: A filtered array of points that fall within the specified
|
199
|
+
angle range.
|
200
|
+
"""
|
201
|
+
if isinstance(points, np.ndarray):
|
202
|
+
points_numpy = points
|
203
|
+
else:
|
204
|
+
raise NotImplementedError
|
205
|
+
pts_phi = (
|
206
|
+
np.arctan(points_numpy[:, 0] / points_numpy[:, 1])
|
207
|
+
+ (points_numpy[:, 1] < 0) * np.pi
|
208
|
+
+ np.pi * 2
|
209
|
+
) % (np.pi * 2)
|
210
|
+
|
211
|
+
pts_phi[pts_phi > np.pi] -= np.pi * 2
|
212
|
+
pts_phi = pts_phi / np.pi * 180
|
213
|
+
|
214
|
+
assert np.all(-180 <= pts_phi) and np.all(pts_phi <= 180)
|
215
|
+
|
216
|
+
filt = np.logical_and(
|
217
|
+
pts_phi >= self.point_cloud_angle_range[0],
|
218
|
+
pts_phi <= self.point_cloud_angle_range[1],
|
219
|
+
)
|
220
|
+
return points[filt]
|
221
|
+
|
222
|
+
def __call__(self, results):
|
223
|
+
"""Call function to load multi-sweep point clouds from files.
|
224
|
+
|
225
|
+
Args:
|
226
|
+
results (dict): Result dict containing multi-sweep point cloud \
|
227
|
+
filenames.
|
228
|
+
|
229
|
+
Returns:
|
230
|
+
dict: The result dict containing the multi-sweep points data. \
|
231
|
+
Added key and value are described below.
|
232
|
+
|
233
|
+
- points (np.ndarray): Multi-sweep point cloud arrays.
|
234
|
+
"""
|
235
|
+
points = results["points"]
|
236
|
+
points[:, 4] = 0
|
237
|
+
sweep_points_list = [points]
|
238
|
+
ts = results["timestamp"]
|
239
|
+
if self.pad_empty_sweeps and len(results["sweeps"]) == 0:
|
240
|
+
for i in range(self.sweeps_num):
|
241
|
+
if self.remove_close:
|
242
|
+
sweep_points_list.append(self._remove_close(points))
|
243
|
+
else:
|
244
|
+
sweep_points_list.append(points)
|
245
|
+
else:
|
246
|
+
if len(results["sweeps"]) <= self.sweeps_num:
|
247
|
+
choices = np.arange(len(results["sweeps"]))
|
248
|
+
elif self.test_mode:
|
249
|
+
choices = np.arange(self.sweeps_num)
|
250
|
+
else:
|
251
|
+
choices = np.random.choice(
|
252
|
+
len(results["sweeps"]), self.sweeps_num, replace=False
|
253
|
+
)
|
254
|
+
for idx in choices:
|
255
|
+
sweep = results["sweeps"][idx]
|
256
|
+
points_sweep = self._load_points(sweep["data_path"])
|
257
|
+
points_sweep = np.copy(points_sweep).reshape(-1, self.load_dim)
|
258
|
+
if self.remove_close:
|
259
|
+
points_sweep = self._remove_close(points_sweep)
|
260
|
+
sweep_ts = sweep["timestamp"] / 1e6
|
261
|
+
points_sweep[:, :3] = (
|
262
|
+
points_sweep[:, :3] @ sweep["sensor2lidar_rotation"].T
|
263
|
+
)
|
264
|
+
points_sweep[:, :3] += sweep["sensor2lidar_translation"]
|
265
|
+
points_sweep[:, 4] = ts - sweep_ts
|
266
|
+
# points_sweep = points.new_point(points_sweep)
|
267
|
+
sweep_points_list.append(points_sweep)
|
268
|
+
|
269
|
+
points = np.concatenate(sweep_points_list, axis=0)
|
270
|
+
if self.filter_by_angle:
|
271
|
+
points = self.filter_point_by_angle(points)
|
272
|
+
|
273
|
+
points = points[:, self.use_dim]
|
274
|
+
results["points"] = points
|
275
|
+
return results
|
276
|
+
|
277
|
+
|
278
|
+
class LoadMultiViewImageFromFiles:
|
279
|
+
"""Load multi-view images from files."""
|
280
|
+
|
281
|
+
def __init__(
|
282
|
+
self,
|
283
|
+
to_float32=False,
|
284
|
+
project_pts_to_img_depth=False,
|
285
|
+
cam_depth_range=[4.0, 45.0, 1.0],
|
286
|
+
constant_std=0.5,
|
287
|
+
imread_flag=-1,
|
288
|
+
):
|
289
|
+
"""
|
290
|
+
Initializes the LoadMultiViewImageFromFiles object.
|
291
|
+
Args:
|
292
|
+
to_float32 (bool): Whether to convert the loaded images to float32. Default: False.
|
293
|
+
project_pts_to_img_depth (bool): Whether to project points to image depth. Default: False.
|
294
|
+
cam_depth_range (list): Camera depth range in the format [min, max, focal]. Default: [4.0, 45.0, 1.0].
|
295
|
+
constant_std (float): Constant standard deviation for normalization. Default: 0.5.
|
296
|
+
imread_flag (int): Flag determining the color type of the loaded image.
|
297
|
+
- -1: cv2.IMREAD_UNCHANGED
|
298
|
+
- 0: cv2.IMREAD_GRAYSCALE
|
299
|
+
- 1: cv2.IMREAD_COLOR
|
300
|
+
Default: -1.
|
301
|
+
"""
|
302
|
+
self.to_float32 = to_float32
|
303
|
+
self.project_pts_to_img_depth = project_pts_to_img_depth
|
304
|
+
self.cam_depth_range = cam_depth_range
|
305
|
+
self.constant_std = constant_std
|
306
|
+
self.imread_flag = imread_flag
|
307
|
+
|
308
|
+
def __call__(self, sample):
|
309
|
+
"""
|
310
|
+
Call method to load multi-view image from files and update the sample dictionary.
|
311
|
+
|
312
|
+
Args:
|
313
|
+
sample (dict): Dictionary containing the image filename key.
|
314
|
+
|
315
|
+
Returns:
|
316
|
+
dict: Updated sample dictionary with loaded images and additional information.
|
317
|
+
"""
|
318
|
+
filename = sample["img_filename"]
|
319
|
+
|
320
|
+
img = np.stack(
|
321
|
+
[cv2.imread(name, self.imread_flag) for name in filename], axis=-1
|
322
|
+
)
|
323
|
+
if self.to_float32:
|
324
|
+
img = img.astype(np.float32)
|
325
|
+
sample["filename"] = filename
|
326
|
+
|
327
|
+
sample["img"] = [img[..., i] for i in range(img.shape[-1])]
|
328
|
+
sample["img_shape"] = img.shape
|
329
|
+
sample["ori_shape"] = img.shape
|
330
|
+
|
331
|
+
sample["pad_shape"] = img.shape
|
332
|
+
# sample['scale_factor'] = 1.0
|
333
|
+
num_channels = 1 if len(img.shape) < 3 else img.shape[2]
|
334
|
+
|
335
|
+
sample["img_norm_cfg"] = dict(
|
336
|
+
mean=np.zeros(num_channels, dtype=np.float32),
|
337
|
+
std=np.ones(num_channels, dtype=np.float32),
|
338
|
+
to_rgb=False,
|
339
|
+
)
|
340
|
+
sample["img_fields"] = ["img"]
|
341
|
+
return sample
|
342
|
+
|
343
|
+
|
344
|
+
class ResizeImage:
|
345
|
+
"""Resize images & bbox & mask."""
|
346
|
+
|
347
|
+
def __init__(
|
348
|
+
self,
|
349
|
+
img_scale=None,
|
350
|
+
multiscale_mode="range",
|
351
|
+
ratio_range=None,
|
352
|
+
keep_ratio=True,
|
353
|
+
bbox_clip_border=True,
|
354
|
+
backend="cv2",
|
355
|
+
override=False,
|
356
|
+
):
|
357
|
+
"""Initializes the ResizeImage object.
|
358
|
+
|
359
|
+
Args:
|
360
|
+
img_scale (list or int, optional): The scale of the image. If a single integer is provided, it will be converted to a list. Defaults to None.
|
361
|
+
multiscale_mode (str): The mode for multiscale resizing. Can be "value" or "range". Defaults to "range".
|
362
|
+
ratio_range (list, optional): The range of image aspect ratios. Only used when img_scale is a single value. Defaults to None.
|
363
|
+
keep_ratio (bool): Whether to keep the aspect ratio when resizing. Defaults to True.
|
364
|
+
bbox_clip_border (bool): Whether to clip the bounding box to the image border. Defaults to True.
|
365
|
+
backend (str): The backend to use for image resizing. Can be "cv2". Defaults to "cv2".
|
366
|
+
override (bool): Whether to override certain resize parameters. Note: This option needs refactoring. Defaults to False.
|
367
|
+
"""
|
368
|
+
if img_scale is None:
|
369
|
+
self.img_scale = None
|
370
|
+
else:
|
371
|
+
if isinstance(img_scale, list):
|
372
|
+
self.img_scale = img_scale
|
373
|
+
else:
|
374
|
+
self.img_scale = [img_scale]
|
375
|
+
|
376
|
+
if ratio_range is not None:
|
377
|
+
# mode 1: given a scale and a range of image ratio
|
378
|
+
assert len(self.img_scale) == 1
|
379
|
+
else:
|
380
|
+
# mode 2: given multiple scales or a range of scales
|
381
|
+
assert multiscale_mode in ["value", "range"]
|
382
|
+
|
383
|
+
self.backend = backend
|
384
|
+
self.multiscale_mode = multiscale_mode
|
385
|
+
self.ratio_range = ratio_range
|
386
|
+
self.keep_ratio = keep_ratio
|
387
|
+
# TODO: refactor the override option in Resize
|
388
|
+
self.override = override
|
389
|
+
self.bbox_clip_border = bbox_clip_border
|
390
|
+
|
391
|
+
@staticmethod
|
392
|
+
def random_select(img_scales):
|
393
|
+
"""Randomly select an img_scale from the given list of candidates.
|
394
|
+
|
395
|
+
Args:
|
396
|
+
img_scales (list): A list of image scales to choose from.
|
397
|
+
|
398
|
+
Returns:
|
399
|
+
tuple: A tuple containing the selected image scale and its index in the list.
|
400
|
+
"""
|
401
|
+
scale_idx = np.random.randint(len(img_scales))
|
402
|
+
img_scale = img_scales[scale_idx]
|
403
|
+
return img_scale, scale_idx
|
404
|
+
|
405
|
+
@staticmethod
|
406
|
+
def random_sample(img_scales):
|
407
|
+
"""
|
408
|
+
Randomly sample an img_scale when `multiscale_mode` is set to 'range'.
|
409
|
+
|
410
|
+
Args:
|
411
|
+
img_scales (list of tuples): A list of tuples, where each tuple contains
|
412
|
+
the minimum and maximum scale dimensions for an image.
|
413
|
+
|
414
|
+
Returns:
|
415
|
+
tuple: A tuple containing the randomly sampled img_scale (long_edge, short_edge)
|
416
|
+
and None (to maintain function signature compatibility).
|
417
|
+
"""
|
418
|
+
img_scale_long = [max(s) for s in img_scales]
|
419
|
+
img_scale_short = [min(s) for s in img_scales]
|
420
|
+
long_edge = np.random.randint(min(img_scale_long), max(img_scale_long) + 1)
|
421
|
+
short_edge = np.random.randint(min(img_scale_short), max(img_scale_short) + 1)
|
422
|
+
img_scale = (long_edge, short_edge)
|
423
|
+
return img_scale, None
|
424
|
+
|
425
|
+
@staticmethod
|
426
|
+
def random_sample_ratio(img_scale, ratio_range):
|
427
|
+
"""
|
428
|
+
Randomly sample an img_scale based on the specified ratio_range.
|
429
|
+
|
430
|
+
Args:
|
431
|
+
img_scale (list): A list of two integers representing the minimum and maximum
|
432
|
+
scale for the image.
|
433
|
+
ratio_range (tuple): A tuple of two floats representing the minimum and maximum
|
434
|
+
ratio for sampling the img_scale.
|
435
|
+
|
436
|
+
Returns:
|
437
|
+
tuple: A tuple containing the sampled scale (as a tuple of two integers)
|
438
|
+
and None.
|
439
|
+
"""
|
440
|
+
|
441
|
+
assert isinstance(img_scale, list) and len(img_scale) == 2
|
442
|
+
min_ratio, max_ratio = ratio_range
|
443
|
+
assert min_ratio <= max_ratio
|
444
|
+
ratio = np.random.random_sample() * (max_ratio - min_ratio) + min_ratio
|
445
|
+
scale = int(img_scale[0] * ratio), int(img_scale[1] * ratio)
|
446
|
+
return scale, None
|
447
|
+
|
448
|
+
def _random_scale(self, results):
|
449
|
+
"""Randomly sample an img_scale according to `ratio_range` and `multiscale_mode`.
|
450
|
+
|
451
|
+
Args:
|
452
|
+
results (dict): A dictionary to store the sampled scale and its index.
|
453
|
+
|
454
|
+
Returns:
|
455
|
+
None. The sampled scale and its index are stored in `results` dictionary.
|
456
|
+
"""
|
457
|
+
|
458
|
+
if self.ratio_range is not None:
|
459
|
+
scale, scale_idx = self.random_sample_ratio(
|
460
|
+
self.img_scale[0], self.ratio_range
|
461
|
+
)
|
462
|
+
elif len(self.img_scale) == 1:
|
463
|
+
scale, scale_idx = self.img_scale[0], 0
|
464
|
+
elif self.multiscale_mode == "range":
|
465
|
+
scale, scale_idx = self.random_sample(self.img_scale)
|
466
|
+
elif self.multiscale_mode == "value":
|
467
|
+
scale, scale_idx = self.random_select(self.img_scale)
|
468
|
+
else:
|
469
|
+
raise NotImplementedError
|
470
|
+
|
471
|
+
results["scale"] = scale
|
472
|
+
results["scale_idx"] = scale_idx
|
473
|
+
|
474
|
+
def _resize_img(self, results):
|
475
|
+
"""Resize images based on the scale factor provided in ``results['scale']`` while maintaining the aspect ratio if ``self.keep_ratio`` is True.
|
476
|
+
|
477
|
+
Args:
|
478
|
+
results (dict): A dictionary containing image fields and their corresponding scales.
|
479
|
+
|
480
|
+
Returns:
|
481
|
+
None. The ``results`` dictionary is modified in place with resized images and additional fields like `img_shape`, `pad_shape`, `scale_factor`, and `keep_ratio`.
|
482
|
+
"""
|
483
|
+
for key in results.get("img_fields", ["img"]):
|
484
|
+
for idx in range(len(results["img"])):
|
485
|
+
if self.keep_ratio:
|
486
|
+
img, scale_factor = self.imrescale(
|
487
|
+
results[key][idx],
|
488
|
+
results["scale"],
|
489
|
+
interpolation="bilinear" if key == "img" else "nearest",
|
490
|
+
return_scale=True,
|
491
|
+
backend=self.backend,
|
492
|
+
)
|
493
|
+
new_h, new_w = img.shape[:2]
|
494
|
+
h, w = results[key][idx].shape[:2]
|
495
|
+
w_scale = new_w / w
|
496
|
+
h_scale = new_h / h
|
497
|
+
else:
|
498
|
+
raise NotImplementedError
|
499
|
+
results[key][idx] = img
|
500
|
+
|
501
|
+
scale_factor = np.array(
|
502
|
+
[w_scale, h_scale, w_scale, h_scale], dtype=np.float32
|
503
|
+
)
|
504
|
+
results["img_shape"] = img.shape
|
505
|
+
# in case that there is no padding
|
506
|
+
results["pad_shape"] = img.shape
|
507
|
+
results["scale_factor"] = scale_factor
|
508
|
+
results["keep_ratio"] = self.keep_ratio
|
509
|
+
|
510
|
+
def rescale_size(self, old_size, scale, return_scale=False):
|
511
|
+
"""
|
512
|
+
Calculate the new size to be rescaled to based on the given scale.
|
513
|
+
|
514
|
+
Args:
|
515
|
+
old_size (tuple): A tuple containing the width and height of the original size.
|
516
|
+
scale (float, int, or list of int): The scale factor or a list of integers representing the maximum and minimum allowed size.
|
517
|
+
return_scale (bool): Whether to return the scale factor along with the new size.
|
518
|
+
|
519
|
+
Returns:
|
520
|
+
tuple: A tuple containing the new size and optionally the scale factor if return_scale is True.
|
521
|
+
|
522
|
+
"""
|
523
|
+
w, h = old_size
|
524
|
+
if isinstance(scale, (float, int)):
|
525
|
+
if scale <= 0:
|
526
|
+
raise ValueError(f"Invalid scale {scale}, must be positive.")
|
527
|
+
scale_factor = scale
|
528
|
+
elif isinstance(scale, list):
|
529
|
+
max_long_edge = max(scale)
|
530
|
+
max_short_edge = min(scale)
|
531
|
+
scale_factor = min(max_long_edge / max(h, w), max_short_edge / min(h, w))
|
532
|
+
else:
|
533
|
+
raise TypeError(
|
534
|
+
f"Scale must be a number or list of int, but got {type(scale)}"
|
535
|
+
)
|
536
|
+
|
537
|
+
def _scale_size(size, scale):
|
538
|
+
if isinstance(scale, (float, int)):
|
539
|
+
scale = (scale, scale)
|
540
|
+
w, h = size
|
541
|
+
return int(w * float(scale[0]) + 0.5), int(h * float(scale[1]) + 0.5)
|
542
|
+
|
543
|
+
new_size = _scale_size((w, h), scale_factor)
|
544
|
+
|
545
|
+
if return_scale:
|
546
|
+
return new_size, scale_factor
|
547
|
+
else:
|
548
|
+
return new_size
|
549
|
+
|
550
|
+
def imrescale(
|
551
|
+
self, img, scale, return_scale=False, interpolation="bilinear", backend=None
|
552
|
+
):
|
553
|
+
"""Resize image while keeping the aspect ratio.
|
554
|
+
|
555
|
+
Args:
|
556
|
+
img (numpy.ndarray): The input image.
|
557
|
+
scale (float): The scaling factor.
|
558
|
+
return_scale (bool): Whether to return the scaling factor along with the resized image.
|
559
|
+
interpolation (str): The interpolation method to use. Defaults to 'bilinear'.
|
560
|
+
backend (str): The backend to use for resizing. Defaults to None.
|
561
|
+
|
562
|
+
Returns:
|
563
|
+
tuple or numpy.ndarray: The resized image, and optionally the scaling factor.
|
564
|
+
"""
|
565
|
+
h, w = img.shape[:2]
|
566
|
+
new_size, scale_factor = self.rescale_size((w, h), scale, return_scale=True)
|
567
|
+
rescaled_img = self.imresize(
|
568
|
+
img, new_size, interpolation=interpolation, backend=backend
|
569
|
+
)
|
570
|
+
if return_scale:
|
571
|
+
return rescaled_img, scale_factor
|
572
|
+
else:
|
573
|
+
return rescaled_img
|
574
|
+
|
575
|
+
def imresize(
|
576
|
+
self,
|
577
|
+
img,
|
578
|
+
size,
|
579
|
+
return_scale=False,
|
580
|
+
interpolation="bilinear",
|
581
|
+
out=None,
|
582
|
+
backend=None,
|
583
|
+
):
|
584
|
+
"""Resize an image to a given size.
|
585
|
+
|
586
|
+
Args:
|
587
|
+
img (numpy.ndarray): The input image to be resized.
|
588
|
+
size (tuple): The new size for the image as (height, width).
|
589
|
+
return_scale (bool): Whether to return the scaling factors along with the resized image.
|
590
|
+
interpolation (str): The interpolation method to use. Default is 'bilinear'.
|
591
|
+
out (numpy.ndarray, optional): Output array. If provided, it must have the same shape and dtype as the output array.
|
592
|
+
backend (str, optional): The backend to use for resizing. Supported backends are 'cv2' and 'pillow'.
|
593
|
+
|
594
|
+
Returns:
|
595
|
+
numpy.ndarray or tuple: The resized image. If return_scale is True, returns a tuple containing the resized image and the scaling factors (w_scale, h_scale).
|
596
|
+
"""
|
597
|
+
h, w = img.shape[:2]
|
598
|
+
if backend not in ["cv2", "pillow"]:
|
599
|
+
raise ValueError(
|
600
|
+
f"backend: {backend} is not supported for resize."
|
601
|
+
f"Supported backends are 'cv2', 'pillow'"
|
602
|
+
)
|
603
|
+
|
604
|
+
if backend == "pillow":
|
605
|
+
raise NotImplementedError
|
606
|
+
else:
|
607
|
+
resized_img = cv2.resize(
|
608
|
+
img, size, dst=out, interpolation=cv2_interp_codes[interpolation]
|
609
|
+
)
|
610
|
+
if not return_scale:
|
611
|
+
return resized_img
|
612
|
+
else:
|
613
|
+
w_scale = size[0] / w
|
614
|
+
h_scale = size[1] / h
|
615
|
+
return resized_img, w_scale, h_scale
|
616
|
+
|
617
|
+
def _resize_bboxes(self, results):
|
618
|
+
"""Resize bounding boxes with `results['scale_factor']`.
|
619
|
+
|
620
|
+
Args:
|
621
|
+
results (dict): A dictionary containing the bounding boxes and other related information.
|
622
|
+
"""
|
623
|
+
for key in results.get("bbox_fields", []):
|
624
|
+
bboxes = results[key] * results["scale_factor"]
|
625
|
+
if self.bbox_clip_border:
|
626
|
+
img_shape = results["img_shape"]
|
627
|
+
bboxes[:, 0::2] = np.clip(bboxes[:, 0::2], 0, img_shape[1])
|
628
|
+
bboxes[:, 1::2] = np.clip(bboxes[:, 1::2], 0, img_shape[0])
|
629
|
+
results[key] = bboxes
|
630
|
+
|
631
|
+
def _resize_masks(self, results):
|
632
|
+
"""Resize masks with ``results['scale']``"""
|
633
|
+
raise NotImplementedError
|
634
|
+
|
635
|
+
def _resize_seg(self, results):
|
636
|
+
"""Resize semantic segmentation map with ``results['scale']``."""
|
637
|
+
raise NotImplementedError
|
638
|
+
|
639
|
+
def __call__(self, results):
|
640
|
+
"""Call function to resize images, bounding boxes, masks, and semantic segmentation maps according to the provided scale or scale factor.
|
641
|
+
|
642
|
+
Args:
|
643
|
+
results (dict): A dictionary containing the input data, including 'img', 'scale', and optionally 'scale_factor'.
|
644
|
+
|
645
|
+
Returns:
|
646
|
+
dict: A dictionary with the resized data.
|
647
|
+
"""
|
648
|
+
if "scale" not in results:
|
649
|
+
if "scale_factor" in results:
|
650
|
+
img_shape = results["img"][0].shape[:2]
|
651
|
+
scale_factor = results["scale_factor"]
|
652
|
+
assert isinstance(scale_factor, float)
|
653
|
+
results["scale"] = list(
|
654
|
+
[int(x * scale_factor) for x in img_shape][::-1]
|
655
|
+
)
|
656
|
+
else:
|
657
|
+
self._random_scale(results)
|
658
|
+
else:
|
659
|
+
if not self.override:
|
660
|
+
assert (
|
661
|
+
"scale_factor" not in results
|
662
|
+
), "scale and scale_factor cannot be both set."
|
663
|
+
else:
|
664
|
+
results.pop("scale")
|
665
|
+
if "scale_factor" in results:
|
666
|
+
results.pop("scale_factor")
|
667
|
+
self._random_scale(results)
|
668
|
+
|
669
|
+
self._resize_img(results)
|
670
|
+
self._resize_bboxes(results)
|
671
|
+
return results
|
672
|
+
|
673
|
+
|
674
|
+
class NormalizeImage:
|
675
|
+
"""Normalize the image."""
|
676
|
+
|
677
|
+
"""Normalize an image by subtracting the mean and dividing by the standard deviation.
|
678
|
+
|
679
|
+
Args:
|
680
|
+
mean (list or tuple): Mean values for each channel.
|
681
|
+
std (list or tuple): Standard deviation values for each channel.
|
682
|
+
to_rgb (bool): Whether to convert the image from BGR to RGB.
|
683
|
+
"""
|
684
|
+
|
685
|
+
def __init__(self, mean, std, to_rgb=True):
|
686
|
+
"""Initializes the NormalizeImage class with mean, std, and to_rgb parameters."""
|
687
|
+
self.mean = np.array(mean, dtype=np.float32)
|
688
|
+
self.std = np.array(std, dtype=np.float32)
|
689
|
+
self.to_rgb = to_rgb
|
690
|
+
|
691
|
+
def _imnormalize(self, img, mean, std, to_rgb=True):
|
692
|
+
"""Normalize the given image inplace.
|
693
|
+
|
694
|
+
Args:
|
695
|
+
img (numpy.ndarray): The image to normalize.
|
696
|
+
mean (numpy.ndarray): Mean values for normalization.
|
697
|
+
std (numpy.ndarray): Standard deviation values for normalization.
|
698
|
+
to_rgb (bool): Whether to convert the image from BGR to RGB.
|
699
|
+
|
700
|
+
Returns:
|
701
|
+
numpy.ndarray: The normalized image.
|
702
|
+
"""
|
703
|
+
img = img.copy().astype(np.float32)
|
704
|
+
mean = np.float64(mean.reshape(1, -1))
|
705
|
+
stdinv = 1 / np.float64(std.reshape(1, -1))
|
706
|
+
if to_rgb:
|
707
|
+
cv2.cvtColor(img, cv2.COLOR_BGR2RGB, img) # inplace
|
708
|
+
cv2.subtract(img, mean, img) # inplace
|
709
|
+
cv2.multiply(img, stdinv, img) # inplace
|
710
|
+
return img
|
711
|
+
|
712
|
+
def __call__(self, results):
|
713
|
+
"""Call method to normalize images in the results dictionary.
|
714
|
+
|
715
|
+
Args:
|
716
|
+
results (dict): A dictionary containing image fields to normalize.
|
717
|
+
|
718
|
+
Returns:
|
719
|
+
dict: The results dictionary with normalized images.
|
720
|
+
"""
|
721
|
+
for key in results.get("img_fields", ["img"]):
|
722
|
+
if key == "img_depth":
|
723
|
+
continue
|
724
|
+
for idx in range(len(results["img"])):
|
725
|
+
results[key][idx] = self._imnormalize(
|
726
|
+
results[key][idx], self.mean, self.std, self.to_rgb
|
727
|
+
)
|
728
|
+
results["img_norm_cfg"] = dict(mean=self.mean, std=self.std, to_rgb=self.to_rgb)
|
729
|
+
return results
|
730
|
+
|
731
|
+
|
732
|
+
class PadImage(object):
|
733
|
+
"""Pad the image & mask."""
|
734
|
+
|
735
|
+
def __init__(self, size=None, size_divisor=None, pad_val=0):
|
736
|
+
self.size = size
|
737
|
+
self.size_divisor = size_divisor
|
738
|
+
self.pad_val = pad_val
|
739
|
+
# only one of size and size_divisor should be valid
|
740
|
+
assert size is not None or size_divisor is not None
|
741
|
+
assert size is None or size_divisor is None
|
742
|
+
|
743
|
+
def impad(
|
744
|
+
self, img, *, shape=None, padding=None, pad_val=0, padding_mode="constant"
|
745
|
+
):
|
746
|
+
"""Pad the given image to a certain shape or pad on all sides
|
747
|
+
|
748
|
+
Args:
|
749
|
+
img (numpy.ndarray): The input image to be padded.
|
750
|
+
shape (tuple, optional): Desired output shape in the form (height, width). One of shape or padding must be specified.
|
751
|
+
padding (int, tuple, optional): Number of pixels to pad on each side of the image. If a single int is provided this
|
752
|
+
is used to pad all sides with this value. If a tuple of length 2 is provided this is interpreted as (top_bottom, left_right).
|
753
|
+
If a tuple of length 4 is provided this is interpreted as (top, right, bottom, left).
|
754
|
+
pad_val (int, list, optional): Pixel value used for padding. If a list is provided, it must have the same length as the
|
755
|
+
last dimension of the input image. Defaults to 0.
|
756
|
+
padding_mode (str, optional): Padding mode to use. One of 'constant', 'edge', 'reflect', 'symmetric'.
|
757
|
+
Defaults to 'constant'.
|
758
|
+
|
759
|
+
Returns:
|
760
|
+
numpy.ndarray: The padded image.
|
761
|
+
|
762
|
+
"""
|
763
|
+
|
764
|
+
assert (shape is not None) ^ (padding is not None)
|
765
|
+
if shape is not None:
|
766
|
+
padding = [0, 0, shape[1] - img.shape[1], shape[0] - img.shape[0]]
|
767
|
+
|
768
|
+
# check pad_val
|
769
|
+
if isinstance(pad_val, list):
|
770
|
+
assert len(pad_val) == img.shape[-1]
|
771
|
+
elif not isinstance(pad_val, numbers.Number):
|
772
|
+
raise TypeError(
|
773
|
+
"pad_val must be a int or a list. " f"But received {type(pad_val)}"
|
774
|
+
)
|
775
|
+
|
776
|
+
# check padding
|
777
|
+
if isinstance(padding, list) and len(padding) in [2, 4]:
|
778
|
+
if len(padding) == 2:
|
779
|
+
padding = [padding[0], padding[1], padding[0], padding[1]]
|
780
|
+
elif isinstance(padding, numbers.Number):
|
781
|
+
padding = [padding, padding, padding, padding]
|
782
|
+
else:
|
783
|
+
raise ValueError(
|
784
|
+
"Padding must be a int or a 2, or 4 element list."
|
785
|
+
f"But received {padding}"
|
786
|
+
)
|
787
|
+
|
788
|
+
# check padding mode
|
789
|
+
assert padding_mode in ["constant", "edge", "reflect", "symmetric"]
|
790
|
+
|
791
|
+
border_type = {
|
792
|
+
"constant": cv2.BORDER_CONSTANT,
|
793
|
+
"edge": cv2.BORDER_REPLICATE,
|
794
|
+
"reflect": cv2.BORDER_REFLECT_101,
|
795
|
+
"symmetric": cv2.BORDER_REFLECT,
|
796
|
+
}
|
797
|
+
img = cv2.copyMakeBorder(
|
798
|
+
img,
|
799
|
+
padding[1],
|
800
|
+
padding[3],
|
801
|
+
padding[0],
|
802
|
+
padding[2],
|
803
|
+
border_type[padding_mode],
|
804
|
+
value=pad_val,
|
805
|
+
)
|
806
|
+
|
807
|
+
return img
|
808
|
+
|
809
|
+
def impad_to_multiple(self, img, divisor, pad_val=0):
|
810
|
+
"""
|
811
|
+
Pad an image to ensure each edge length is a multiple of a given number.
|
812
|
+
|
813
|
+
Args:
|
814
|
+
img (numpy.ndarray): The input image.
|
815
|
+
divisor (int): The number to which each edge length should be a multiple.
|
816
|
+
pad_val (int, optional): The value to pad the image with. Defaults to 0.
|
817
|
+
|
818
|
+
Returns:
|
819
|
+
numpy.ndarray: The padded image.
|
820
|
+
"""
|
821
|
+
pad_h = int(np.ceil(img.shape[0] / divisor)) * divisor
|
822
|
+
pad_w = int(np.ceil(img.shape[1] / divisor)) * divisor
|
823
|
+
return self.impad(img, shape=(pad_h, pad_w), pad_val=pad_val)
|
824
|
+
|
825
|
+
def _pad_img(self, results):
|
826
|
+
"""
|
827
|
+
Pad images according to ``self.size`` or adjust their shapes to be multiples of ``self.size_divisor``.
|
828
|
+
|
829
|
+
Args:
|
830
|
+
results (dict): A dictionary containing image data, with 'img_fields' as an optional key
|
831
|
+
pointing to a list of image field names.
|
832
|
+
"""
|
833
|
+
for key in results.get("img_fields", ["img"]):
|
834
|
+
if self.size is not None:
|
835
|
+
padded_img = self.impad(
|
836
|
+
results[key], shape=self.size, pad_val=self.pad_val
|
837
|
+
)
|
838
|
+
elif self.size_divisor is not None:
|
839
|
+
for idx in range(len(results[key])):
|
840
|
+
padded_img = self.impad_to_multiple(
|
841
|
+
results[key][idx], self.size_divisor, pad_val=self.pad_val
|
842
|
+
)
|
843
|
+
results[key][idx] = padded_img
|
844
|
+
results["pad_shape"] = padded_img.shape
|
845
|
+
results["pad_fixed_size"] = self.size
|
846
|
+
results["pad_size_divisor"] = self.size_divisor
|
847
|
+
|
848
|
+
def _pad_masks(self, results):
|
849
|
+
"""Pad masks according to ``results['pad_shape']``."""
|
850
|
+
raise NotImplementedError
|
851
|
+
|
852
|
+
def _pad_seg(self, results):
|
853
|
+
"""Pad semantic segmentation map according to ``results['pad_shape']``."""
|
854
|
+
raise NotImplementedError
|
855
|
+
|
856
|
+
def __call__(self, results):
|
857
|
+
"""Call function to pad images, masks, semantic segmentation maps."""
|
858
|
+
self._pad_img(results)
|
859
|
+
return results
|
860
|
+
|
861
|
+
|
862
|
+
class SampleFilterByKey:
|
863
|
+
"""Collect data from the loader relevant to the specific task."""
|
864
|
+
|
865
|
+
def __init__(
|
866
|
+
self,
|
867
|
+
keys,
|
868
|
+
meta_keys=(
|
869
|
+
"filename",
|
870
|
+
"ori_shape",
|
871
|
+
"img_shape",
|
872
|
+
"lidar2img",
|
873
|
+
"depth2img",
|
874
|
+
"cam2img",
|
875
|
+
"pad_shape",
|
876
|
+
"scale_factor",
|
877
|
+
"flip",
|
878
|
+
"pcd_horizontal_flip",
|
879
|
+
"pcd_vertical_flip",
|
880
|
+
"box_type_3d",
|
881
|
+
"img_norm_cfg",
|
882
|
+
"pcd_trans",
|
883
|
+
"sample_idx",
|
884
|
+
"pcd_scale_factor",
|
885
|
+
"pcd_rotation",
|
886
|
+
"pts_filename",
|
887
|
+
"transformation_3d_flow",
|
888
|
+
),
|
889
|
+
):
|
890
|
+
self.keys = keys
|
891
|
+
self.meta_keys = meta_keys
|
892
|
+
|
893
|
+
def __call__(self, sample):
|
894
|
+
"""Call function to filter sample by keys. The keys in `meta_keys` are used to filter metadata from the input sample.
|
895
|
+
|
896
|
+
Args:
|
897
|
+
sample (Sample): The input sample to be filtered.
|
898
|
+
|
899
|
+
Returns:
|
900
|
+
Sample: A new Sample object containing only the filtered metadata and specified keys.
|
901
|
+
"""
|
902
|
+
filtered_sample = Sample(path=sample.path, modality=sample.modality)
|
903
|
+
filtered_sample.meta.id = sample.meta.id
|
904
|
+
img_metas = {}
|
905
|
+
|
906
|
+
for key in self.meta_keys:
|
907
|
+
if key in sample:
|
908
|
+
img_metas[key] = sample[key]
|
909
|
+
|
910
|
+
filtered_sample["img_metas"] = img_metas
|
911
|
+
for key in self.keys:
|
912
|
+
filtered_sample[key] = sample[key]
|
913
|
+
|
914
|
+
return filtered_sample
|
915
|
+
|
916
|
+
|
917
|
+
class GetInferInput:
|
918
|
+
"""Collect infer input data from transformed sample"""
|
919
|
+
|
920
|
+
def collate_fn(self, batch):
|
921
|
+
sample = batch[0]
|
922
|
+
collated_batch = {}
|
923
|
+
collated_fields = [
|
924
|
+
"img",
|
925
|
+
"points",
|
926
|
+
"img_metas",
|
927
|
+
"gt_bboxes_3d",
|
928
|
+
"gt_labels_3d",
|
929
|
+
"modality",
|
930
|
+
"meta",
|
931
|
+
"idx",
|
932
|
+
"img_depth",
|
933
|
+
]
|
934
|
+
for k in list(sample.keys()):
|
935
|
+
if k not in collated_fields:
|
936
|
+
continue
|
937
|
+
if k == "img":
|
938
|
+
collated_batch[k] = np.stack([elem[k] for elem in batch], axis=0)
|
939
|
+
elif k == "img_depth":
|
940
|
+
collated_batch[k] = np.stack(
|
941
|
+
[np.stack(elem[k], axis=0) for elem in batch], axis=0
|
942
|
+
)
|
943
|
+
else:
|
944
|
+
collated_batch[k] = [elem[k] for elem in batch]
|
945
|
+
return collated_batch
|
946
|
+
|
947
|
+
def __call__(self, sample):
|
948
|
+
"""Call function to infer input data from transformed sample
|
949
|
+
|
950
|
+
Args:
|
951
|
+
sample (Sample): The input sample data.
|
952
|
+
|
953
|
+
Returns:
|
954
|
+
infer_input (list): A list containing all the input data for inference.
|
955
|
+
sample_id (str): token id of the input sample.
|
956
|
+
"""
|
957
|
+
if sample.modality == "multimodal" or sample.modality == "multiview":
|
958
|
+
if "img" in sample.keys():
|
959
|
+
sample.img = np.stack(
|
960
|
+
[img.transpose(2, 0, 1) for img in sample.img], axis=0
|
961
|
+
)
|
962
|
+
|
963
|
+
sample = self.collate_fn([sample])
|
964
|
+
infer_input = []
|
965
|
+
|
966
|
+
img = sample.get("img", None)[0]
|
967
|
+
infer_input.append(img.astype(np.float32))
|
968
|
+
lidar2img = np.stack(sample["img_metas"][0]["lidar2img"]).astype(np.float32)
|
969
|
+
infer_input.append(lidar2img)
|
970
|
+
points = sample.get("points", None)[0]
|
971
|
+
infer_input.append(points.astype(np.float32))
|
972
|
+
img_metas = {
|
973
|
+
"input_lidar_path": sample["img_metas"][0]["pts_filename"],
|
974
|
+
"input_img_paths": sample["img_metas"][0]["filename"],
|
975
|
+
"sample_id": sample["img_metas"][0]["sample_idx"],
|
976
|
+
}
|
977
|
+
|
978
|
+
return infer_input, img_metas
|