paddlex 3.0.0rc0__py3-none-any.whl → 3.0.0rc1__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.
Files changed (785) hide show
  1. paddlex/.version +1 -1
  2. paddlex/__init__.py +17 -34
  3. paddlex/__main__.py +1 -1
  4. paddlex/configs/modules/doc_vlm/PP-DocBee-2B.yaml +14 -0
  5. paddlex/configs/modules/doc_vlm/PP-DocBee-7B.yaml +14 -0
  6. paddlex/configs/modules/open_vocabulary_detection/YOLO-Worldv2-L.yaml +13 -0
  7. paddlex/configs/pipelines/anomaly_detection.yaml +1 -1
  8. paddlex/configs/pipelines/doc_understanding.yaml +9 -0
  9. paddlex/configs/pipelines/ts_anomaly_detection.yaml +1 -1
  10. paddlex/configs/pipelines/ts_classification.yaml +1 -1
  11. paddlex/configs/pipelines/ts_forecast.yaml +1 -1
  12. paddlex/constants.py +17 -0
  13. paddlex/engine.py +7 -5
  14. paddlex/hpip_links.html +23 -11
  15. paddlex/inference/__init__.py +3 -3
  16. paddlex/inference/common/__init__.py +1 -1
  17. paddlex/inference/common/batch_sampler/__init__.py +5 -4
  18. paddlex/inference/common/batch_sampler/audio_batch_sampler.py +5 -6
  19. paddlex/inference/common/batch_sampler/base_batch_sampler.py +20 -16
  20. paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +4 -7
  21. paddlex/inference/common/batch_sampler/doc_vlm_batch_sampler.py +64 -0
  22. paddlex/inference/common/batch_sampler/image_batch_sampler.py +12 -36
  23. paddlex/inference/common/batch_sampler/ts_batch_sampler.py +9 -10
  24. paddlex/inference/common/batch_sampler/video_batch_sampler.py +2 -22
  25. paddlex/inference/common/reader/__init__.py +4 -4
  26. paddlex/inference/common/reader/audio_reader.py +3 -3
  27. paddlex/inference/common/reader/det_3d_reader.py +7 -5
  28. paddlex/inference/common/reader/image_reader.py +16 -12
  29. paddlex/inference/common/reader/ts_reader.py +3 -2
  30. paddlex/inference/common/reader/video_reader.py +3 -3
  31. paddlex/inference/common/result/__init__.py +7 -7
  32. paddlex/inference/common/result/base_cv_result.py +12 -2
  33. paddlex/inference/common/result/base_result.py +7 -5
  34. paddlex/inference/common/result/base_ts_result.py +1 -2
  35. paddlex/inference/common/result/base_video_result.py +2 -2
  36. paddlex/inference/common/result/mixin.py +12 -13
  37. paddlex/inference/models/__init__.py +41 -85
  38. paddlex/inference/models/anomaly_detection/__init__.py +1 -1
  39. paddlex/inference/models/anomaly_detection/predictor.py +9 -19
  40. paddlex/inference/models/anomaly_detection/processors.py +9 -2
  41. paddlex/inference/models/anomaly_detection/result.py +3 -2
  42. paddlex/inference/models/base/__init__.py +2 -2
  43. paddlex/inference/models/base/predictor/__init__.py +1 -2
  44. paddlex/inference/models/base/predictor/base_predictor.py +284 -39
  45. paddlex/inference/models/common/__init__.py +6 -15
  46. paddlex/inference/models/common/static_infer.py +764 -243
  47. paddlex/inference/models/common/tokenizer/__init__.py +5 -3
  48. paddlex/inference/models/common/tokenizer/bert_tokenizer.py +1 -1
  49. paddlex/inference/models/common/tokenizer/clip_tokenizer.py +609 -0
  50. paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +7 -5
  51. paddlex/inference/models/common/tokenizer/qwen2_tokenizer.py +432 -0
  52. paddlex/inference/models/common/tokenizer/tokenizer_utils.py +72 -64
  53. paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +337 -121
  54. paddlex/inference/models/common/tokenizer/utils.py +1 -1
  55. paddlex/inference/models/common/tokenizer/vocab.py +1 -1
  56. paddlex/inference/models/common/ts/__init__.py +1 -1
  57. paddlex/inference/models/common/ts/funcs.py +13 -6
  58. paddlex/inference/models/common/ts/processors.py +14 -5
  59. paddlex/inference/models/common/vision/__init__.py +3 -3
  60. paddlex/inference/models/common/vision/funcs.py +17 -12
  61. paddlex/inference/models/common/vision/processors.py +61 -46
  62. paddlex/inference/models/common/vlm/__init__.py +13 -0
  63. paddlex/inference/models/common/vlm/activations.py +189 -0
  64. paddlex/inference/models/common/vlm/bert_padding.py +127 -0
  65. paddlex/inference/models/common/vlm/distributed.py +229 -0
  66. paddlex/inference/models/common/vlm/flash_attn_utils.py +119 -0
  67. paddlex/inference/models/common/vlm/generation/__init__.py +34 -0
  68. paddlex/inference/models/common/vlm/generation/configuration_utils.py +533 -0
  69. paddlex/inference/models/common/vlm/generation/logits_process.py +730 -0
  70. paddlex/inference/models/common/vlm/generation/stopping_criteria.py +106 -0
  71. paddlex/inference/models/common/vlm/generation/utils.py +2162 -0
  72. paddlex/inference/models/common/vlm/transformers/__init__.py +16 -0
  73. paddlex/inference/models/common/vlm/transformers/configuration_utils.py +1037 -0
  74. paddlex/inference/models/common/vlm/transformers/conversion_utils.py +408 -0
  75. paddlex/inference/models/common/vlm/transformers/model_outputs.py +1612 -0
  76. paddlex/inference/models/common/vlm/transformers/model_utils.py +2038 -0
  77. paddlex/inference/models/common/vlm/transformers/utils.py +178 -0
  78. paddlex/inference/models/common/vlm/utils.py +109 -0
  79. paddlex/inference/models/doc_vlm/__init__.py +15 -0
  80. paddlex/inference/models/doc_vlm/modeling/__init__.py +15 -0
  81. paddlex/inference/models/doc_vlm/modeling/qwen2_vl.py +2600 -0
  82. paddlex/inference/models/doc_vlm/predictor.py +198 -0
  83. paddlex/inference/models/doc_vlm/processors/__init__.py +15 -0
  84. paddlex/inference/models/doc_vlm/processors/common.py +372 -0
  85. paddlex/inference/models/doc_vlm/processors/qwen2_vl.py +698 -0
  86. paddlex/inference/models/doc_vlm/result.py +21 -0
  87. paddlex/inference/models/face_feature/__init__.py +1 -1
  88. paddlex/inference/models/face_feature/predictor.py +2 -1
  89. paddlex/inference/models/formula_recognition/__init__.py +1 -1
  90. paddlex/inference/models/formula_recognition/predictor.py +11 -27
  91. paddlex/inference/models/formula_recognition/processors.py +35 -19
  92. paddlex/inference/models/formula_recognition/result.py +19 -12
  93. paddlex/inference/models/image_classification/__init__.py +1 -1
  94. paddlex/inference/models/image_classification/predictor.py +9 -19
  95. paddlex/inference/models/image_classification/processors.py +4 -2
  96. paddlex/inference/models/image_classification/result.py +4 -3
  97. paddlex/inference/models/image_feature/__init__.py +1 -1
  98. paddlex/inference/models/image_feature/predictor.py +9 -19
  99. paddlex/inference/models/image_feature/processors.py +4 -1
  100. paddlex/inference/models/image_feature/result.py +2 -3
  101. paddlex/inference/models/image_multilabel_classification/__init__.py +1 -1
  102. paddlex/inference/models/image_multilabel_classification/predictor.py +7 -6
  103. paddlex/inference/models/image_multilabel_classification/processors.py +6 -2
  104. paddlex/inference/models/image_multilabel_classification/result.py +4 -3
  105. paddlex/inference/models/image_unwarping/__init__.py +1 -1
  106. paddlex/inference/models/image_unwarping/predictor.py +8 -16
  107. paddlex/inference/models/image_unwarping/processors.py +6 -2
  108. paddlex/inference/models/image_unwarping/result.py +4 -2
  109. paddlex/inference/models/instance_segmentation/__init__.py +1 -1
  110. paddlex/inference/models/instance_segmentation/predictor.py +7 -15
  111. paddlex/inference/models/instance_segmentation/processors.py +4 -7
  112. paddlex/inference/models/instance_segmentation/result.py +11 -10
  113. paddlex/inference/models/keypoint_detection/__init__.py +1 -1
  114. paddlex/inference/models/keypoint_detection/predictor.py +2 -3
  115. paddlex/inference/models/keypoint_detection/processors.py +11 -3
  116. paddlex/inference/models/keypoint_detection/result.py +9 -4
  117. paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
  118. paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/predictor.py +15 -26
  119. paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/processors.py +26 -14
  120. paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/result.py +15 -12
  121. paddlex/inference/models/{3d_bev_detection → m_3d_bev_detection}/visualizer_3d.py +77 -39
  122. paddlex/inference/models/multilingual_speech_recognition/__init__.py +1 -1
  123. paddlex/inference/models/multilingual_speech_recognition/predictor.py +11 -15
  124. paddlex/inference/models/multilingual_speech_recognition/processors.py +45 -53
  125. paddlex/inference/models/multilingual_speech_recognition/result.py +1 -1
  126. paddlex/inference/models/object_detection/__init__.py +1 -1
  127. paddlex/inference/models/object_detection/predictor.py +6 -12
  128. paddlex/inference/models/object_detection/processors.py +36 -31
  129. paddlex/inference/models/object_detection/result.py +5 -4
  130. paddlex/inference/models/object_detection/utils.py +1 -1
  131. paddlex/inference/models/open_vocabulary_detection/__init__.py +1 -1
  132. paddlex/inference/models/open_vocabulary_detection/predictor.py +31 -14
  133. paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +3 -2
  134. paddlex/inference/models/open_vocabulary_detection/processors/common.py +114 -0
  135. paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +19 -8
  136. paddlex/inference/models/open_vocabulary_detection/processors/yoloworld_processors.py +209 -0
  137. paddlex/inference/models/open_vocabulary_segmentation/__init__.py +1 -1
  138. paddlex/inference/models/open_vocabulary_segmentation/predictor.py +6 -13
  139. paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +1 -1
  140. paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +12 -12
  141. paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +1 -1
  142. paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +11 -9
  143. paddlex/inference/models/semantic_segmentation/__init__.py +1 -1
  144. paddlex/inference/models/semantic_segmentation/predictor.py +9 -18
  145. paddlex/inference/models/semantic_segmentation/processors.py +11 -8
  146. paddlex/inference/models/semantic_segmentation/result.py +4 -3
  147. paddlex/inference/models/table_structure_recognition/__init__.py +1 -1
  148. paddlex/inference/models/table_structure_recognition/predictor.py +8 -18
  149. paddlex/inference/models/table_structure_recognition/processors.py +23 -29
  150. paddlex/inference/models/table_structure_recognition/result.py +9 -6
  151. paddlex/inference/models/text_detection/__init__.py +1 -1
  152. paddlex/inference/models/text_detection/predictor.py +16 -24
  153. paddlex/inference/models/text_detection/processors.py +74 -36
  154. paddlex/inference/models/text_detection/result.py +9 -4
  155. paddlex/inference/models/text_recognition/__init__.py +1 -1
  156. paddlex/inference/models/text_recognition/predictor.py +11 -19
  157. paddlex/inference/models/text_recognition/processors.py +27 -13
  158. paddlex/inference/models/text_recognition/result.py +3 -2
  159. paddlex/inference/models/ts_anomaly_detection/__init__.py +1 -1
  160. paddlex/inference/models/ts_anomaly_detection/predictor.py +12 -17
  161. paddlex/inference/models/ts_anomaly_detection/processors.py +6 -2
  162. paddlex/inference/models/ts_anomaly_detection/result.py +21 -10
  163. paddlex/inference/models/ts_classification/__init__.py +1 -1
  164. paddlex/inference/models/ts_classification/predictor.py +14 -27
  165. paddlex/inference/models/ts_classification/processors.py +7 -2
  166. paddlex/inference/models/ts_classification/result.py +21 -12
  167. paddlex/inference/models/ts_forecasting/__init__.py +1 -1
  168. paddlex/inference/models/ts_forecasting/predictor.py +13 -18
  169. paddlex/inference/models/ts_forecasting/processors.py +12 -3
  170. paddlex/inference/models/ts_forecasting/result.py +24 -11
  171. paddlex/inference/models/video_classification/__init__.py +1 -1
  172. paddlex/inference/models/video_classification/predictor.py +9 -15
  173. paddlex/inference/models/video_classification/processors.py +24 -24
  174. paddlex/inference/models/video_classification/result.py +7 -3
  175. paddlex/inference/models/video_detection/__init__.py +1 -1
  176. paddlex/inference/models/video_detection/predictor.py +8 -15
  177. paddlex/inference/models/video_detection/processors.py +24 -11
  178. paddlex/inference/models/video_detection/result.py +10 -5
  179. paddlex/inference/pipelines/__init__.py +44 -37
  180. paddlex/inference/pipelines/anomaly_detection/__init__.py +1 -1
  181. paddlex/inference/pipelines/anomaly_detection/pipeline.py +16 -6
  182. paddlex/inference/pipelines/attribute_recognition/__init__.py +1 -1
  183. paddlex/inference/pipelines/attribute_recognition/pipeline.py +13 -8
  184. paddlex/inference/pipelines/attribute_recognition/result.py +10 -8
  185. paddlex/inference/pipelines/base.py +31 -11
  186. paddlex/inference/pipelines/components/__init__.py +14 -8
  187. paddlex/inference/pipelines/components/chat_server/__init__.py +1 -1
  188. paddlex/inference/pipelines/components/chat_server/base.py +2 -2
  189. paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +8 -8
  190. paddlex/inference/pipelines/components/common/__init__.py +5 -4
  191. paddlex/inference/pipelines/components/common/base_operator.py +2 -1
  192. paddlex/inference/pipelines/components/common/base_result.py +3 -2
  193. paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +1 -2
  194. paddlex/inference/pipelines/components/common/crop_image_regions.py +11 -5
  195. paddlex/inference/pipelines/components/common/seal_det_warp.py +44 -13
  196. paddlex/inference/pipelines/components/common/sort_boxes.py +4 -2
  197. paddlex/inference/pipelines/components/common/warp_image.py +50 -0
  198. paddlex/inference/pipelines/components/faisser.py +9 -4
  199. paddlex/inference/pipelines/components/prompt_engineering/__init__.py +2 -2
  200. paddlex/inference/pipelines/components/prompt_engineering/base.py +2 -2
  201. paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +2 -1
  202. paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +2 -2
  203. paddlex/inference/pipelines/components/retriever/__init__.py +2 -2
  204. paddlex/inference/pipelines/components/retriever/base.py +18 -16
  205. paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +2 -2
  206. paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +87 -84
  207. paddlex/inference/pipelines/components/utils/__init__.py +1 -1
  208. paddlex/inference/pipelines/components/utils/mixin.py +7 -7
  209. paddlex/inference/pipelines/doc_preprocessor/__init__.py +1 -1
  210. paddlex/inference/pipelines/doc_preprocessor/pipeline.py +21 -28
  211. paddlex/inference/pipelines/doc_preprocessor/result.py +5 -10
  212. paddlex/inference/pipelines/doc_understanding/__init__.py +15 -0
  213. paddlex/inference/pipelines/doc_understanding/pipeline.py +71 -0
  214. paddlex/inference/pipelines/face_recognition/__init__.py +1 -1
  215. paddlex/inference/pipelines/face_recognition/pipeline.py +3 -1
  216. paddlex/inference/pipelines/face_recognition/result.py +3 -2
  217. paddlex/inference/pipelines/formula_recognition/__init__.py +1 -1
  218. paddlex/inference/pipelines/formula_recognition/pipeline.py +22 -16
  219. paddlex/inference/pipelines/formula_recognition/result.py +20 -19
  220. paddlex/inference/pipelines/image_classification/__init__.py +1 -1
  221. paddlex/inference/pipelines/image_classification/pipeline.py +17 -8
  222. paddlex/inference/pipelines/image_multilabel_classification/__init__.py +1 -1
  223. paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +18 -9
  224. paddlex/inference/pipelines/instance_segmentation/__init__.py +1 -1
  225. paddlex/inference/pipelines/instance_segmentation/pipeline.py +17 -6
  226. paddlex/inference/pipelines/keypoint_detection/__init__.py +1 -1
  227. paddlex/inference/pipelines/keypoint_detection/pipeline.py +17 -6
  228. paddlex/inference/pipelines/layout_parsing/__init__.py +1 -1
  229. paddlex/inference/pipelines/layout_parsing/pipeline.py +23 -12
  230. paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +16 -6
  231. paddlex/inference/pipelines/layout_parsing/result.py +5 -4
  232. paddlex/inference/pipelines/layout_parsing/result_v2.py +5 -8
  233. paddlex/inference/pipelines/layout_parsing/utils.py +7 -8
  234. paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/__init__.py +1 -1
  235. paddlex/inference/pipelines/{3d_bev_detection → m_3d_bev_detection}/pipeline.py +17 -10
  236. paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +1 -1
  237. paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +17 -6
  238. paddlex/inference/pipelines/object_detection/__init__.py +1 -1
  239. paddlex/inference/pipelines/object_detection/pipeline.py +16 -6
  240. paddlex/inference/pipelines/ocr/__init__.py +1 -1
  241. paddlex/inference/pipelines/ocr/pipeline.py +28 -11
  242. paddlex/inference/pipelines/ocr/result.py +13 -9
  243. paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +1 -1
  244. paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +17 -6
  245. paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +1 -1
  246. paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +17 -6
  247. paddlex/inference/pipelines/pp_chatocr/__init__.py +1 -1
  248. paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +14 -5
  249. paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +22 -11
  250. paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +31 -13
  251. paddlex/inference/pipelines/pp_shitu_v2/__init__.py +1 -1
  252. paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +12 -8
  253. paddlex/inference/pipelines/pp_shitu_v2/result.py +4 -4
  254. paddlex/inference/pipelines/rotated_object_detection/__init__.py +1 -1
  255. paddlex/inference/pipelines/rotated_object_detection/pipeline.py +17 -6
  256. paddlex/inference/pipelines/seal_recognition/__init__.py +1 -1
  257. paddlex/inference/pipelines/seal_recognition/pipeline.py +21 -13
  258. paddlex/inference/pipelines/seal_recognition/result.py +4 -2
  259. paddlex/inference/pipelines/semantic_segmentation/__init__.py +1 -1
  260. paddlex/inference/pipelines/semantic_segmentation/pipeline.py +17 -6
  261. paddlex/inference/pipelines/small_object_detection/__init__.py +1 -1
  262. paddlex/inference/pipelines/small_object_detection/pipeline.py +17 -6
  263. paddlex/inference/pipelines/table_recognition/__init__.py +1 -1
  264. paddlex/inference/pipelines/table_recognition/pipeline.py +41 -25
  265. paddlex/inference/pipelines/table_recognition/pipeline_v2.py +65 -33
  266. paddlex/inference/pipelines/table_recognition/result.py +11 -9
  267. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +12 -8
  268. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +46 -32
  269. paddlex/inference/pipelines/table_recognition/utils.py +1 -1
  270. paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +1 -1
  271. paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +16 -6
  272. paddlex/inference/pipelines/ts_classification/__init__.py +1 -1
  273. paddlex/inference/pipelines/ts_classification/pipeline.py +16 -6
  274. paddlex/inference/pipelines/ts_forecasting/__init__.py +1 -1
  275. paddlex/inference/pipelines/ts_forecasting/pipeline.py +16 -6
  276. paddlex/inference/pipelines/video_classification/__init__.py +1 -1
  277. paddlex/inference/pipelines/video_classification/pipeline.py +17 -6
  278. paddlex/inference/pipelines/video_detection/__init__.py +1 -1
  279. paddlex/inference/pipelines/video_detection/pipeline.py +20 -7
  280. paddlex/inference/serving/__init__.py +5 -1
  281. paddlex/inference/serving/basic_serving/__init__.py +1 -1
  282. paddlex/inference/serving/basic_serving/_app.py +31 -19
  283. paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +7 -4
  284. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +1 -1
  285. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +7 -3
  286. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +1 -1
  287. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +7 -2
  288. paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +10 -7
  289. paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +10 -7
  290. paddlex/inference/serving/basic_serving/_pipeline_apps/doc_understanding.py +153 -0
  291. paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +16 -13
  292. paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +10 -7
  293. paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +10 -7
  294. paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +10 -7
  295. paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +10 -7
  296. paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +13 -7
  297. paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +10 -7
  298. paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +10 -7
  299. paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +10 -7
  300. paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +10 -7
  301. paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +10 -7
  302. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +10 -7
  303. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +13 -7
  304. paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +10 -7
  305. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +14 -11
  306. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +16 -13
  307. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +16 -13
  308. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +10 -7
  309. paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +10 -7
  310. paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +10 -7
  311. paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +10 -7
  312. paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +10 -7
  313. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +10 -7
  314. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +10 -7
  315. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +10 -7
  316. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +10 -7
  317. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +10 -7
  318. paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +10 -7
  319. paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +10 -7
  320. paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +10 -7
  321. paddlex/inference/serving/basic_serving/_server.py +9 -4
  322. paddlex/inference/serving/infra/__init__.py +1 -1
  323. paddlex/inference/serving/infra/config.py +1 -1
  324. paddlex/inference/serving/infra/models.py +13 -6
  325. paddlex/inference/serving/infra/storage.py +9 -4
  326. paddlex/inference/serving/infra/utils.py +37 -9
  327. paddlex/inference/serving/schemas/__init__.py +1 -1
  328. paddlex/inference/serving/schemas/anomaly_detection.py +1 -1
  329. paddlex/inference/serving/schemas/doc_preprocessor.py +1 -1
  330. paddlex/inference/serving/schemas/doc_understanding.py +78 -0
  331. paddlex/inference/serving/schemas/face_recognition.py +1 -1
  332. paddlex/inference/serving/schemas/formula_recognition.py +1 -1
  333. paddlex/inference/serving/schemas/human_keypoint_detection.py +1 -1
  334. paddlex/inference/serving/schemas/image_classification.py +1 -1
  335. paddlex/inference/serving/schemas/image_multilabel_classification.py +1 -1
  336. paddlex/inference/serving/schemas/instance_segmentation.py +1 -1
  337. paddlex/inference/serving/schemas/layout_parsing.py +1 -1
  338. paddlex/inference/serving/schemas/m_3d_bev_detection.py +1 -1
  339. paddlex/inference/serving/schemas/multilingual_speech_recognition.py +1 -1
  340. paddlex/inference/serving/schemas/object_detection.py +1 -1
  341. paddlex/inference/serving/schemas/ocr.py +1 -1
  342. paddlex/inference/serving/schemas/open_vocabulary_detection.py +1 -1
  343. paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +1 -1
  344. paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +1 -1
  345. paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +1 -1
  346. paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +1 -1
  347. paddlex/inference/serving/schemas/pp_shituv2.py +1 -1
  348. paddlex/inference/serving/schemas/pp_structurev3.py +1 -1
  349. paddlex/inference/serving/schemas/rotated_object_detection.py +1 -1
  350. paddlex/inference/serving/schemas/seal_recognition.py +1 -1
  351. paddlex/inference/serving/schemas/semantic_segmentation.py +1 -1
  352. paddlex/inference/serving/schemas/shared/__init__.py +1 -1
  353. paddlex/inference/serving/schemas/shared/classification.py +1 -1
  354. paddlex/inference/serving/schemas/shared/image_segmentation.py +1 -1
  355. paddlex/inference/serving/schemas/shared/object_detection.py +1 -1
  356. paddlex/inference/serving/schemas/shared/ocr.py +1 -1
  357. paddlex/inference/serving/schemas/small_object_detection.py +1 -1
  358. paddlex/inference/serving/schemas/table_recognition.py +1 -1
  359. paddlex/inference/serving/schemas/table_recognition_v2.py +1 -1
  360. paddlex/inference/serving/schemas/ts_anomaly_detection.py +1 -1
  361. paddlex/inference/serving/schemas/ts_classification.py +1 -1
  362. paddlex/inference/serving/schemas/ts_forecast.py +1 -1
  363. paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +1 -1
  364. paddlex/inference/serving/schemas/video_classification.py +1 -1
  365. paddlex/inference/serving/schemas/video_detection.py +1 -1
  366. paddlex/inference/utils/__init__.py +1 -1
  367. paddlex/inference/utils/benchmark.py +332 -179
  368. paddlex/inference/utils/color_map.py +1 -1
  369. paddlex/inference/utils/get_pipeline_path.py +1 -1
  370. paddlex/inference/utils/hpi.py +251 -0
  371. paddlex/inference/utils/hpi_model_info_collection.json +2252 -0
  372. paddlex/inference/utils/io/__init__.py +11 -11
  373. paddlex/inference/utils/io/readers.py +22 -18
  374. paddlex/inference/utils/io/style.py +21 -14
  375. paddlex/inference/utils/io/tablepyxl.py +13 -5
  376. paddlex/inference/utils/io/writers.py +9 -10
  377. paddlex/inference/utils/model_paths.py +48 -0
  378. paddlex/inference/utils/{new_ir_blacklist.py → new_ir_blocklist.py} +1 -2
  379. paddlex/inference/utils/official_models.py +264 -262
  380. paddlex/inference/utils/pp_option.py +164 -93
  381. paddlex/inference/utils/trt_blocklist.py +43 -0
  382. paddlex/inference/utils/trt_config.py +420 -0
  383. paddlex/model.py +28 -10
  384. paddlex/modules/__init__.py +57 -80
  385. paddlex/modules/anomaly_detection/__init__.py +2 -2
  386. paddlex/modules/anomaly_detection/dataset_checker/__init__.py +2 -3
  387. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
  388. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +6 -3
  389. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +8 -4
  390. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +7 -4
  391. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +2 -2
  392. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
  393. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +7 -2
  394. paddlex/modules/anomaly_detection/evaluator.py +1 -1
  395. paddlex/modules/anomaly_detection/exportor.py +1 -1
  396. paddlex/modules/anomaly_detection/model_list.py +1 -1
  397. paddlex/modules/anomaly_detection/trainer.py +3 -4
  398. paddlex/modules/base/__init__.py +5 -5
  399. paddlex/modules/base/build_model.py +1 -2
  400. paddlex/modules/base/dataset_checker/__init__.py +2 -2
  401. paddlex/modules/base/dataset_checker/dataset_checker.py +4 -4
  402. paddlex/modules/base/dataset_checker/utils.py +1 -3
  403. paddlex/modules/base/evaluator.py +8 -8
  404. paddlex/modules/base/exportor.py +12 -13
  405. paddlex/modules/base/trainer.py +21 -11
  406. paddlex/modules/base/utils/__init__.py +13 -0
  407. paddlex/modules/base/utils/cinn_setting.py +89 -0
  408. paddlex/modules/base/utils/coco_eval.py +94 -0
  409. paddlex/modules/base/utils/topk_eval.py +118 -0
  410. paddlex/modules/doc_vlm/__init__.py +18 -0
  411. paddlex/modules/doc_vlm/dataset_checker.py +29 -0
  412. paddlex/modules/doc_vlm/evaluator.py +29 -0
  413. paddlex/modules/doc_vlm/exportor.py +29 -0
  414. paddlex/modules/doc_vlm/model_list.py +16 -0
  415. paddlex/modules/doc_vlm/trainer.py +41 -0
  416. paddlex/modules/face_recognition/__init__.py +2 -2
  417. paddlex/modules/face_recognition/dataset_checker/__init__.py +2 -2
  418. paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +1 -1
  419. paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +3 -5
  420. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
  421. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
  422. paddlex/modules/face_recognition/evaluator.py +1 -1
  423. paddlex/modules/face_recognition/exportor.py +1 -1
  424. paddlex/modules/face_recognition/model_list.py +1 -1
  425. paddlex/modules/face_recognition/trainer.py +1 -1
  426. paddlex/modules/formula_recognition/__init__.py +2 -2
  427. paddlex/modules/formula_recognition/dataset_checker/__init__.py +3 -3
  428. paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +2 -2
  429. paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
  430. paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +2 -6
  431. paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
  432. paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
  433. paddlex/modules/formula_recognition/evaluator.py +1 -1
  434. paddlex/modules/formula_recognition/exportor.py +1 -1
  435. paddlex/modules/formula_recognition/model_list.py +1 -1
  436. paddlex/modules/formula_recognition/trainer.py +2 -3
  437. paddlex/modules/general_recognition/__init__.py +2 -2
  438. paddlex/modules/general_recognition/dataset_checker/__init__.py +2 -2
  439. paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +2 -2
  440. paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +7 -9
  441. paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +4 -5
  442. paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +6 -5
  443. paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +1 -1
  444. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +1 -1
  445. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +2 -5
  446. paddlex/modules/general_recognition/evaluator.py +1 -1
  447. paddlex/modules/general_recognition/exportor.py +1 -1
  448. paddlex/modules/general_recognition/model_list.py +1 -1
  449. paddlex/modules/general_recognition/trainer.py +1 -1
  450. paddlex/modules/image_classification/__init__.py +2 -2
  451. paddlex/modules/image_classification/dataset_checker/__init__.py +2 -2
  452. paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +2 -2
  453. paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
  454. paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
  455. paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +4 -4
  456. paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
  457. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
  458. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +2 -5
  459. paddlex/modules/image_classification/evaluator.py +1 -1
  460. paddlex/modules/image_classification/exportor.py +1 -1
  461. paddlex/modules/image_classification/model_list.py +1 -1
  462. paddlex/modules/image_classification/trainer.py +3 -3
  463. paddlex/modules/image_unwarping/__init__.py +1 -1
  464. paddlex/modules/image_unwarping/model_list.py +1 -1
  465. paddlex/modules/instance_segmentation/__init__.py +2 -2
  466. paddlex/modules/instance_segmentation/dataset_checker/__init__.py +2 -3
  467. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
  468. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +9 -5
  469. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +8 -5
  470. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +8 -8
  471. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +7 -4
  472. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
  473. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +10 -8
  474. paddlex/modules/instance_segmentation/evaluator.py +1 -1
  475. paddlex/modules/instance_segmentation/exportor.py +1 -1
  476. paddlex/modules/instance_segmentation/model_list.py +1 -1
  477. paddlex/modules/instance_segmentation/trainer.py +1 -1
  478. paddlex/modules/keypoint_detection/__init__.py +2 -2
  479. paddlex/modules/keypoint_detection/dataset_checker/__init__.py +2 -2
  480. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +1 -1
  481. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
  482. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
  483. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +8 -3
  484. paddlex/modules/keypoint_detection/evaluator.py +1 -1
  485. paddlex/modules/keypoint_detection/exportor.py +1 -1
  486. paddlex/modules/keypoint_detection/model_list.py +1 -1
  487. paddlex/modules/keypoint_detection/trainer.py +2 -2
  488. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/__init__.py +2 -2
  489. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/__init__.py +3 -3
  490. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/__init__.py +2 -2
  491. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/analyse_dataset.py +8 -8
  492. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/dataset_checker/dataset_src/check_dataset.py +1 -2
  493. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/evaluator.py +1 -1
  494. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/exportor.py +1 -1
  495. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/model_list.py +1 -1
  496. paddlex/modules/{3d_bev_detection → m_3d_bev_detection}/trainer.py +5 -7
  497. paddlex/modules/multilabel_classification/__init__.py +2 -2
  498. paddlex/modules/multilabel_classification/dataset_checker/__init__.py +2 -2
  499. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +2 -2
  500. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -9
  501. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +4 -3
  502. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +10 -7
  503. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
  504. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +1 -1
  505. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +1 -5
  506. paddlex/modules/multilabel_classification/evaluator.py +1 -1
  507. paddlex/modules/multilabel_classification/exportor.py +1 -1
  508. paddlex/modules/multilabel_classification/model_list.py +1 -1
  509. paddlex/modules/multilabel_classification/trainer.py +3 -3
  510. paddlex/modules/multilingual_speech_recognition/__init__.py +2 -2
  511. paddlex/modules/multilingual_speech_recognition/dataset_checker.py +3 -3
  512. paddlex/modules/multilingual_speech_recognition/evaluator.py +3 -3
  513. paddlex/modules/multilingual_speech_recognition/exportor.py +3 -3
  514. paddlex/modules/multilingual_speech_recognition/model_list.py +1 -1
  515. paddlex/modules/multilingual_speech_recognition/trainer.py +7 -5
  516. paddlex/modules/object_detection/__init__.py +2 -2
  517. paddlex/modules/object_detection/dataset_checker/__init__.py +2 -11
  518. paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +2 -2
  519. paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +10 -8
  520. paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +10 -5
  521. paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +13 -8
  522. paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +8 -4
  523. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +1 -1
  524. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +9 -8
  525. paddlex/modules/object_detection/evaluator.py +9 -4
  526. paddlex/modules/object_detection/exportor.py +1 -1
  527. paddlex/modules/object_detection/model_list.py +1 -1
  528. paddlex/modules/object_detection/trainer.py +4 -5
  529. paddlex/modules/open_vocabulary_detection/__init__.py +2 -2
  530. paddlex/modules/open_vocabulary_detection/dataset_checker.py +3 -3
  531. paddlex/modules/open_vocabulary_detection/evaluator.py +3 -3
  532. paddlex/modules/open_vocabulary_detection/exportor.py +3 -3
  533. paddlex/modules/open_vocabulary_detection/model_list.py +2 -4
  534. paddlex/modules/open_vocabulary_detection/trainer.py +7 -5
  535. paddlex/modules/open_vocabulary_segmentation/__init__.py +2 -2
  536. paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +3 -3
  537. paddlex/modules/open_vocabulary_segmentation/evaluator.py +3 -3
  538. paddlex/modules/open_vocabulary_segmentation/exportor.py +3 -3
  539. paddlex/modules/open_vocabulary_segmentation/model_list.py +1 -1
  540. paddlex/modules/open_vocabulary_segmentation/trainer.py +7 -5
  541. paddlex/modules/semantic_segmentation/__init__.py +2 -2
  542. paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +2 -3
  543. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +2 -2
  544. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +6 -3
  545. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +2 -2
  546. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +7 -4
  547. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +2 -2
  548. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +1 -1
  549. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +6 -2
  550. paddlex/modules/semantic_segmentation/evaluator.py +1 -1
  551. paddlex/modules/semantic_segmentation/exportor.py +1 -1
  552. paddlex/modules/semantic_segmentation/model_list.py +1 -1
  553. paddlex/modules/semantic_segmentation/trainer.py +3 -4
  554. paddlex/modules/table_recognition/__init__.py +2 -2
  555. paddlex/modules/table_recognition/dataset_checker/__init__.py +5 -5
  556. paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +2 -2
  557. paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +3 -2
  558. paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +8 -7
  559. paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +2 -1
  560. paddlex/modules/table_recognition/evaluator.py +1 -1
  561. paddlex/modules/table_recognition/exportor.py +1 -1
  562. paddlex/modules/table_recognition/model_list.py +1 -1
  563. paddlex/modules/table_recognition/trainer.py +2 -5
  564. paddlex/modules/text_detection/__init__.py +2 -2
  565. paddlex/modules/text_detection/dataset_checker/__init__.py +4 -6
  566. paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +2 -2
  567. paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +12 -9
  568. paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +3 -3
  569. paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +3 -3
  570. paddlex/modules/text_detection/evaluator.py +1 -1
  571. paddlex/modules/text_detection/exportor.py +1 -1
  572. paddlex/modules/text_detection/model_list.py +1 -1
  573. paddlex/modules/text_detection/trainer.py +2 -5
  574. paddlex/modules/text_recognition/__init__.py +2 -2
  575. paddlex/modules/text_recognition/dataset_checker/__init__.py +4 -5
  576. paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +2 -2
  577. paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +13 -12
  578. paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +2 -5
  579. paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +11 -10
  580. paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +1 -2
  581. paddlex/modules/text_recognition/evaluator.py +1 -1
  582. paddlex/modules/text_recognition/exportor.py +1 -1
  583. paddlex/modules/text_recognition/model_list.py +1 -1
  584. paddlex/modules/text_recognition/trainer.py +2 -3
  585. paddlex/modules/ts_anomaly_detection/__init__.py +2 -2
  586. paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +4 -5
  587. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +2 -2
  588. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +1 -9
  589. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +2 -2
  590. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +2 -6
  591. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +4 -4
  592. paddlex/modules/ts_anomaly_detection/evaluator.py +1 -1
  593. paddlex/modules/ts_anomaly_detection/exportor.py +2 -3
  594. paddlex/modules/ts_anomaly_detection/model_list.py +1 -1
  595. paddlex/modules/ts_anomaly_detection/trainer.py +8 -8
  596. paddlex/modules/ts_classification/__init__.py +2 -2
  597. paddlex/modules/ts_classification/dataset_checker/__init__.py +4 -5
  598. paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +2 -2
  599. paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +8 -5
  600. paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +2 -2
  601. paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +2 -6
  602. paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +4 -4
  603. paddlex/modules/ts_classification/evaluator.py +1 -1
  604. paddlex/modules/ts_classification/exportor.py +2 -3
  605. paddlex/modules/ts_classification/model_list.py +1 -1
  606. paddlex/modules/ts_classification/trainer.py +7 -7
  607. paddlex/modules/ts_forecast/__init__.py +2 -2
  608. paddlex/modules/ts_forecast/dataset_checker/__init__.py +4 -5
  609. paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +2 -2
  610. paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +1 -9
  611. paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +2 -2
  612. paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +2 -6
  613. paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +4 -4
  614. paddlex/modules/ts_forecast/evaluator.py +1 -1
  615. paddlex/modules/ts_forecast/exportor.py +2 -3
  616. paddlex/modules/ts_forecast/model_list.py +1 -1
  617. paddlex/modules/ts_forecast/trainer.py +7 -7
  618. paddlex/modules/video_classification/__init__.py +2 -2
  619. paddlex/modules/video_classification/dataset_checker/__init__.py +2 -2
  620. paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +2 -2
  621. paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +9 -9
  622. paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +2 -3
  623. paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +1 -1
  624. paddlex/modules/video_classification/evaluator.py +1 -1
  625. paddlex/modules/video_classification/exportor.py +1 -1
  626. paddlex/modules/video_classification/model_list.py +1 -1
  627. paddlex/modules/video_classification/trainer.py +3 -3
  628. paddlex/modules/video_detection/__init__.py +2 -2
  629. paddlex/modules/video_detection/dataset_checker/__init__.py +2 -2
  630. paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +2 -2
  631. paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +8 -9
  632. paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +3 -5
  633. paddlex/modules/video_detection/evaluator.py +1 -1
  634. paddlex/modules/video_detection/exportor.py +1 -1
  635. paddlex/modules/video_detection/model_list.py +1 -1
  636. paddlex/modules/video_detection/trainer.py +3 -3
  637. paddlex/ops/__init__.py +5 -2
  638. paddlex/ops/iou3d_nms/iou3d_cpu.cpp +8 -6
  639. paddlex/ops/iou3d_nms/iou3d_cpu.h +3 -2
  640. paddlex/ops/iou3d_nms/iou3d_nms.cpp +8 -6
  641. paddlex/ops/iou3d_nms/iou3d_nms.h +6 -4
  642. paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +24 -18
  643. paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +9 -7
  644. paddlex/ops/setup.py +3 -3
  645. paddlex/ops/voxel/voxelize_op.cc +22 -19
  646. paddlex/ops/voxel/voxelize_op.cu +25 -25
  647. paddlex/paddlex_cli.py +86 -75
  648. paddlex/repo_apis/Paddle3D_api/__init__.py +1 -1
  649. paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +1 -1
  650. paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +1 -1
  651. paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +4 -4
  652. paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +2 -2
  653. paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +1 -1
  654. paddlex/repo_apis/Paddle3D_api/pp3d_config.py +3 -2
  655. paddlex/repo_apis/PaddleClas_api/__init__.py +1 -1
  656. paddlex/repo_apis/PaddleClas_api/cls/__init__.py +3 -3
  657. paddlex/repo_apis/PaddleClas_api/cls/config.py +4 -3
  658. paddlex/repo_apis/PaddleClas_api/cls/model.py +3 -3
  659. paddlex/repo_apis/PaddleClas_api/cls/register.py +2 -3
  660. paddlex/repo_apis/PaddleClas_api/cls/runner.py +1 -2
  661. paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +2 -2
  662. paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +2 -2
  663. paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +1 -4
  664. paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +2 -2
  665. paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +1 -6
  666. paddlex/repo_apis/PaddleDetection_api/__init__.py +2 -2
  667. paddlex/repo_apis/PaddleDetection_api/config_helper.py +3 -3
  668. paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +2 -2
  669. paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +2 -3
  670. paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +3 -3
  671. paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +2 -3
  672. paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +1 -2
  673. paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +3 -3
  674. paddlex/repo_apis/PaddleDetection_api/object_det/config.py +4 -3
  675. paddlex/repo_apis/PaddleDetection_api/object_det/model.py +5 -6
  676. paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +1 -1
  677. paddlex/repo_apis/PaddleDetection_api/object_det/register.py +2 -3
  678. paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +1 -2
  679. paddlex/repo_apis/PaddleNLP_api/__init__.py +1 -1
  680. paddlex/repo_apis/PaddleOCR_api/__init__.py +4 -3
  681. paddlex/repo_apis/PaddleOCR_api/config_utils.py +1 -1
  682. paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +1 -1
  683. paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +4 -3
  684. paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +4 -4
  685. paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +2 -3
  686. paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +1 -2
  687. paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +1 -1
  688. paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +1 -1
  689. paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +3 -3
  690. paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +2 -3
  691. paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +2 -2
  692. paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +1 -1
  693. paddlex/repo_apis/PaddleOCR_api/text_det/config.py +1 -1
  694. paddlex/repo_apis/PaddleOCR_api/text_det/model.py +3 -3
  695. paddlex/repo_apis/PaddleOCR_api/text_det/register.py +2 -3
  696. paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +2 -2
  697. paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +1 -1
  698. paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +4 -3
  699. paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +4 -4
  700. paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +2 -3
  701. paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +1 -2
  702. paddlex/repo_apis/PaddleSeg_api/__init__.py +1 -1
  703. paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +2 -2
  704. paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +1 -1
  705. paddlex/repo_apis/PaddleSeg_api/seg/config.py +3 -6
  706. paddlex/repo_apis/PaddleSeg_api/seg/model.py +5 -5
  707. paddlex/repo_apis/PaddleSeg_api/seg/register.py +2 -3
  708. paddlex/repo_apis/PaddleSeg_api/seg/runner.py +1 -2
  709. paddlex/repo_apis/PaddleTS_api/__init__.py +4 -3
  710. paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +1 -1
  711. paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +2 -3
  712. paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +2 -2
  713. paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +2 -2
  714. paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +1 -1
  715. paddlex/repo_apis/PaddleTS_api/ts_base/config.py +2 -4
  716. paddlex/repo_apis/PaddleTS_api/ts_base/model.py +4 -4
  717. paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +2 -2
  718. paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +1 -1
  719. paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +2 -3
  720. paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +2 -2
  721. paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +2 -2
  722. paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +1 -1
  723. paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +2 -3
  724. paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +1 -1
  725. paddlex/repo_apis/PaddleVideo_api/__init__.py +1 -1
  726. paddlex/repo_apis/PaddleVideo_api/config_utils.py +1 -1
  727. paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +3 -3
  728. paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +4 -3
  729. paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +3 -3
  730. paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +2 -3
  731. paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +1 -2
  732. paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +3 -3
  733. paddlex/repo_apis/PaddleVideo_api/video_det/config.py +4 -3
  734. paddlex/repo_apis/PaddleVideo_api/video_det/model.py +4 -4
  735. paddlex/repo_apis/PaddleVideo_api/video_det/register.py +2 -3
  736. paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +1 -2
  737. paddlex/repo_apis/__init__.py +1 -1
  738. paddlex/repo_apis/base/__init__.py +4 -5
  739. paddlex/repo_apis/base/config.py +2 -3
  740. paddlex/repo_apis/base/model.py +11 -19
  741. paddlex/repo_apis/base/register.py +1 -1
  742. paddlex/repo_apis/base/runner.py +11 -12
  743. paddlex/repo_apis/base/utils/__init__.py +1 -1
  744. paddlex/repo_apis/base/utils/arg.py +1 -1
  745. paddlex/repo_apis/base/utils/subprocess.py +1 -1
  746. paddlex/repo_manager/__init__.py +2 -9
  747. paddlex/repo_manager/core.py +9 -27
  748. paddlex/repo_manager/meta.py +37 -31
  749. paddlex/repo_manager/repo.py +169 -160
  750. paddlex/repo_manager/utils.py +13 -224
  751. paddlex/utils/__init__.py +1 -1
  752. paddlex/utils/cache.py +8 -10
  753. paddlex/utils/config.py +6 -5
  754. paddlex/utils/{custom_device_whitelist.py → custom_device_list.py} +29 -199
  755. paddlex/utils/deps.py +249 -0
  756. paddlex/utils/device.py +73 -29
  757. paddlex/utils/download.py +4 -4
  758. paddlex/utils/env.py +33 -7
  759. paddlex/utils/errors/__init__.py +1 -1
  760. paddlex/utils/errors/dataset_checker.py +1 -1
  761. paddlex/utils/errors/others.py +2 -16
  762. paddlex/utils/file_interface.py +4 -5
  763. paddlex/utils/flags.py +19 -12
  764. paddlex/utils/fonts/__init__.py +2 -1
  765. paddlex/utils/func_register.py +1 -1
  766. paddlex/utils/install.py +87 -0
  767. paddlex/utils/interactive_get_pipeline.py +3 -3
  768. paddlex/utils/lazy_loader.py +3 -3
  769. paddlex/utils/logging.py +10 -1
  770. paddlex/utils/misc.py +5 -5
  771. paddlex/utils/pipeline_arguments.py +15 -7
  772. paddlex/utils/result_saver.py +4 -5
  773. paddlex/utils/subclass_register.py +2 -4
  774. paddlex/version.py +2 -1
  775. {paddlex-3.0.0rc0.dist-info → paddlex-3.0.0rc1.dist-info}/METADATA +212 -73
  776. paddlex-3.0.0rc1.dist-info/RECORD +1068 -0
  777. {paddlex-3.0.0rc0.dist-info → paddlex-3.0.0rc1.dist-info}/WHEEL +1 -1
  778. paddlex/inference/models/base/predictor/basic_predictor.py +0 -139
  779. paddlex/paddle2onnx_requirements.txt +0 -1
  780. paddlex/repo_manager/requirements.txt +0 -21
  781. paddlex/serving_requirements.txt +0 -9
  782. paddlex-3.0.0rc0.dist-info/RECORD +0 -1015
  783. {paddlex-3.0.0rc0.dist-info → paddlex-3.0.0rc1.dist-info}/entry_points.txt +0 -0
  784. {paddlex-3.0.0rc0.dist-info → paddlex-3.0.0rc1.dist-info/licenses}/LICENSE +0 -0
  785. {paddlex-3.0.0rc0.dist-info → paddlex-3.0.0rc1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,209 @@
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import os
16
+ from typing import List, Tuple, Union
17
+
18
+ import numpy as np
19
+
20
+ from ...common.tokenizer.clip_tokenizer import CLIPTokenizer
21
+ from .common import LetterResize
22
+
23
+
24
+ class YOLOWorldProcessor(object):
25
+ """Image and Text Processors for YOLO-World"""
26
+
27
+ def __init__(
28
+ self,
29
+ model_dir,
30
+ image_target_size: Union[Tuple[int], int] = (640, 640),
31
+ image_mean: Union[float, List[float]] = [0.0, 0.0, 0.0],
32
+ image_std: Union[float, List[float]] = [1.0, 1.0, 1.0],
33
+ **kwargs,
34
+ ):
35
+
36
+ if isinstance(image_target_size, int):
37
+ image_target_size = (image_target_size, image_target_size)
38
+ if isinstance(image_mean, float):
39
+ image_mean = [image_mean, image_mean, image_mean]
40
+ if isinstance(image_std, float):
41
+ image_std = [image_std, image_std, image_std]
42
+
43
+ self.image_target_size = image_target_size
44
+ self.image_mean = image_mean
45
+ self.image_std = image_std
46
+
47
+ tokenizer_dir = os.path.join(model_dir, "tokenizer")
48
+ assert os.path.isdir(tokenizer_dir), f"{tokenizer_dir} not exists."
49
+ self.tokenizer = CLIPTokenizer.from_pretrained(tokenizer_dir)
50
+
51
+ self.resize_op = LetterResize(self.image_target_size, allow_scale_up=True)
52
+
53
+ if isinstance(image_mean, (tuple, list)):
54
+ self.image_mean = np.array(image_mean)
55
+ if self.image_mean.ndim < 4:
56
+ self.image_mean = self.image_mean.reshape(1, -1, 1, 1)
57
+
58
+ if isinstance(image_std, (tuple, list)):
59
+ self.image_std = np.array(image_std)
60
+ if self.image_std.ndim < 4:
61
+ self.image_std = self.image_std.reshape(1, -1, 1, 1)
62
+
63
+ def __call__(
64
+ self,
65
+ images: List[np.ndarray],
66
+ text: str,
67
+ **kwargs,
68
+ ):
69
+ preprocess_results = self.process_image(images)
70
+ preprocess_results.update(self.process_text(text))
71
+ static_input_orders = [
72
+ "attention_mask",
73
+ "image",
74
+ "input_ids",
75
+ "pad_param",
76
+ "scale_factor",
77
+ ]
78
+ result = [preprocess_results[k] for k in static_input_orders]
79
+
80
+ return result
81
+
82
+ def process_image(self, images):
83
+ """Image preprocess for YOLO-World"""
84
+ rescaled_images = self.resize_op(images)
85
+
86
+ images = np.stack(
87
+ [rescaled_image["image"] for rescaled_image in rescaled_images], axis=0
88
+ )
89
+ scale_factors = np.stack(
90
+ [rescaled_image["scale_factor"] for rescaled_image in rescaled_images],
91
+ axis=0,
92
+ )
93
+ pad_params = np.stack(
94
+ [rescaled_image["pad_param"] for rescaled_image in rescaled_images], axis=0
95
+ )
96
+
97
+ images = np.transpose(images, (0, 3, 1, 2)).astype(np.float32) / 255.0
98
+ images -= self.image_mean
99
+ images /= self.image_std
100
+
101
+ image_results = {
102
+ "image": images,
103
+ "scale_factor": scale_factors,
104
+ "pad_param": pad_params[:, [3, 0]],
105
+ }
106
+
107
+ return image_results
108
+
109
+ def process_text(self, text):
110
+
111
+ text = text.strip().lower()
112
+ words = [word.strip() for word in text.split(",")]
113
+ words += [" "]
114
+ tokenized_text = self.tokenizer(text=words, return_tensors="pd", padding=True)
115
+
116
+ text_results = {
117
+ "input_ids": tokenized_text["input_ids"].numpy(),
118
+ "attention_mask": tokenized_text["attention_mask"].numpy(),
119
+ }
120
+
121
+ return text_results
122
+
123
+
124
+ class YOLOWorldPostProcessor(object):
125
+ """PostProcessors for YOLO-World"""
126
+
127
+ def __init__(
128
+ self,
129
+ threshold: float = 0.05,
130
+ **kwargs,
131
+ ):
132
+ """Init Function for YOLO-World PostProcessor
133
+
134
+ Args:
135
+ threshold (float): threshold for low confidence bbox filtering.
136
+ """
137
+ self.threshold = threshold
138
+
139
+ def __call__(
140
+ self,
141
+ pred_boxes,
142
+ pred_nums,
143
+ prompt,
144
+ src_images,
145
+ threshold=None,
146
+ **kwargs,
147
+ ):
148
+
149
+ threshold = self.threshold if threshold is None else threshold
150
+
151
+ split_index = np.cumsum(pred_nums)[:-1]
152
+ pred_boxes = np.split(pred_boxes, split_index, axis=0)
153
+ assert len(pred_boxes) == len(src_images)
154
+
155
+ classnames = self.prompt_to_classnames(prompt)
156
+
157
+ rst_boxes = []
158
+ for pred_box, src_image in zip(pred_boxes, src_images):
159
+ rst_boxes.append(
160
+ self.postprocess(
161
+ pred_box,
162
+ classnames,
163
+ src_image,
164
+ threshold,
165
+ )
166
+ )
167
+
168
+ return rst_boxes
169
+
170
+ def postprocess(
171
+ self,
172
+ pred_boxes,
173
+ classnames,
174
+ src_image,
175
+ threshold,
176
+ ):
177
+ """Post Process for prediction result of single image."""
178
+
179
+ pred_boxes = pred_boxes[pred_boxes[:, 1] > threshold]
180
+ H, W, *_ = src_image.shape
181
+
182
+ pred_labels = pred_boxes[:, 0].astype(np.int32)
183
+ pred_scores = pred_boxes[:, 1]
184
+ pred_bboxes = pred_boxes[:, 2:]
185
+
186
+ pred_bboxes[:, ::2] = np.clip(pred_bboxes[:, ::2], a_min=0, a_max=W)
187
+ pred_bboxes[:, 1::2] = np.clip(pred_bboxes[:, 1::2], a_min=0, a_max=H)
188
+
189
+ rst_bboxes = []
190
+ for pred_label, pred_score, pred_bbox in zip(
191
+ pred_labels, pred_scores, pred_bboxes
192
+ ):
193
+ rst_bboxes.append(
194
+ {
195
+ "coordinate": pred_bbox.tolist(),
196
+ "label": classnames[pred_label],
197
+ "score": pred_score,
198
+ }
199
+ )
200
+
201
+ return rst_bboxes
202
+
203
+ def prompt_to_classnames(self, text):
204
+
205
+ text = text.strip().lower()
206
+ words = [word.strip() for word in text.split(",")]
207
+ words += [" "]
208
+
209
+ return words
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -13,21 +13,18 @@
13
13
  # limitations under the License.
14
14
 
15
15
 
16
- from typing import Any, Union, Dict, List, Tuple, Optional, Callable
17
- import numpy as np
18
- import inspect
16
+ from typing import Any, Dict, List
19
17
 
20
- from ....utils.func_register import FuncRegister
21
18
  from ....modules.open_vocabulary_segmentation.model_list import MODELS
19
+ from ....utils.func_register import FuncRegister
22
20
  from ...common.batch_sampler import ImageBatchSampler
23
21
  from ...common.reader import ReadImage
22
+ from ..base import BasePredictor
24
23
  from .processors import SAMProcessor
25
- from ..common import StaticInfer
26
- from ..base import BasicPredictor
27
24
  from .results import SAMSegResult
28
25
 
29
26
 
30
- class OVSegPredictor(BasicPredictor):
27
+ class OVSegPredictor(BasePredictor):
31
28
 
32
29
  entities = MODELS
33
30
 
@@ -62,11 +59,7 @@ class OVSegPredictor(BasicPredictor):
62
59
  pre_ops.append(op)
63
60
 
64
61
  # build infer
65
- infer = StaticInfer(
66
- model_dir=self.model_dir,
67
- model_prefix=self.MODEL_FILE_PREFIX,
68
- option=self.pp_option,
69
- )
62
+ infer = self.create_static_infer()
70
63
 
71
64
  # build model specific processor, it's required for a OV model.
72
65
  processor_cfg = self.config["Processor"]
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,19 +12,13 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- import os
16
- from typing import Dict, List, Optional, Union, Tuple
15
+ from copy import deepcopy
16
+ from typing import List, Optional, Tuple, Union
17
17
 
18
18
  import numpy as np
19
19
  import PIL
20
- from copy import deepcopy
21
-
22
- from .....utils.lazy_loader import LazyLoader
23
20
 
24
- # NOTE: LazyLoader is used to avoid conflicts between ultra-infer and Paddle
25
- paddle = LazyLoader("lazy_paddle", globals(), "paddle")
26
- T = LazyLoader("T", globals(), "paddle.vision.transforms")
27
- F = LazyLoader("F", globals(), "paddle.nn.functional")
21
+ from ....utils.benchmark import benchmark
28
22
 
29
23
 
30
24
  def _get_preprocess_shape(
@@ -106,6 +100,8 @@ class SAMProcessor(object):
106
100
  return image_seg, prompt
107
101
 
108
102
  def postprocess(self, low_res_masks, mask_threshold: float = 0.0):
103
+ import paddle
104
+ import paddle.nn.functional as F
109
105
 
110
106
  if isinstance(low_res_masks, list):
111
107
  assert len(low_res_masks) == 1
@@ -126,6 +122,7 @@ class SAMProcessor(object):
126
122
  return [masks]
127
123
 
128
124
 
125
+ @benchmark.timeit
129
126
  class SamPromptProcessor(object):
130
127
  """Constructs a Sam prompt processor."""
131
128
 
@@ -180,6 +177,7 @@ class SamPromptProcessor(object):
180
177
  return box.astype(np.float32)
181
178
 
182
179
 
180
+ @benchmark.timeit
183
181
  class SamImageProcessor(object):
184
182
  """Constructs a Sam image processor."""
185
183
 
@@ -207,6 +205,8 @@ class SamImageProcessor(object):
207
205
 
208
206
  def apply_image(self, image: np.ndarray) -> np.ndarray:
209
207
  """Expects a numpy array with shape HxWxC in uint8 format."""
208
+ import paddle.vision.transforms as T
209
+
210
210
  target_size = _get_preprocess_shape(image.shape[0], image.shape[1], self.size)
211
211
  if isinstance(image, np.ndarray):
212
212
  image = PIL.Image.fromarray(image)
@@ -223,8 +223,8 @@ class SamImageProcessor(object):
223
223
  images,
224
224
  ):
225
225
  """Preprocess an image or a batch of images with a same shape."""
226
-
227
- size = self.size
226
+ import paddle
227
+ import paddle.nn.functional as F
228
228
 
229
229
  input_image = [self.apply_image(image) for image in images]
230
230
 
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,23 +12,25 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- import os
16
- import cv2
15
+ import copy
16
+ import random
17
+
17
18
  import numpy as np
18
- import copy, random
19
- import PIL
20
- from PIL import Image, ImageDraw, ImageFont
21
- from ....common.result import BaseCVResult, StrMixin, JsonMixin
19
+ from PIL import Image
22
20
 
21
+ from .....utils.deps import function_requires_deps, is_dep_available
22
+ from ....common.result import BaseCVResult, JsonMixin
23
23
  from ....utils.color_map import get_colormap
24
- from ....common.result import BaseCVResult
24
+
25
+ if is_dep_available("opencv-contrib-python"):
26
+ import cv2
25
27
 
26
28
 
29
+ @function_requires_deps("opencv-contrib-python")
27
30
  def draw_segm(im, masks, mask_info, alpha=0.7):
28
31
  """
29
32
  Draw segmentation on image
30
33
  """
31
- mask_color_id = 0
32
34
  w_ratio = 0.4
33
35
  color_list = get_colormap(rgb=True)
34
36
  im = np.array(im).astype("float32")
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,27 +12,22 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Any, Union, Dict, List, Tuple
15
+ from typing import Any, Dict, List, Tuple, Union
16
+
16
17
  import numpy as np
17
18
 
18
- from ....utils.func_register import FuncRegister
19
19
  from ....modules.semantic_segmentation.model_list import MODELS
20
+ from ....utils.func_register import FuncRegister
20
21
  from ...common.batch_sampler import ImageBatchSampler
21
22
  from ...common.reader import ReadImage
22
- from ..common import (
23
- ResizeByShort,
24
- Normalize,
25
- ToCHWImage,
26
- ToBatch,
27
- StaticInfer,
28
- )
23
+ from ..base import BasePredictor
24
+ from ..common import Normalize, ToBatch, ToCHWImage
29
25
  from .processors import Resize, SegPostProcess
30
- from ..base import BasicPredictor
31
26
  from .result import SegResult
32
27
 
33
28
 
34
- class SegPredictor(BasicPredictor):
35
- """SegPredictor that inherits from BasicPredictor."""
29
+ class SegPredictor(BasePredictor):
30
+ """SegPredictor that inherits from BasePredictor."""
36
31
 
37
32
  entities = MODELS
38
33
 
@@ -95,11 +90,7 @@ class SegPredictor(BasicPredictor):
95
90
  _, op = self._FUNC_MAP["Resize"](self, target_size=self.target_size)
96
91
  preprocessors["Resize"] = op
97
92
 
98
- infer = StaticInfer(
99
- model_dir=self.model_dir,
100
- model_prefix=self.MODEL_FILE_PREFIX,
101
- option=self.pp_option,
102
- )
93
+ infer = self.create_static_infer()
103
94
 
104
95
  postprocessers = SegPostProcess()
105
96
 
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,19 +12,20 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import List, Tuple, Union
16
- import os
17
- import sys
18
- import cv2
19
- import copy
20
15
  import math
21
- import pyclipper
16
+
22
17
  import numpy as np
23
- from ..common.vision.processors import _BaseResize
24
18
 
19
+ from ....utils.deps import class_requires_deps, is_dep_available
20
+ from ...utils.benchmark import benchmark
25
21
  from ..common.vision import funcs as F
22
+ from ..common.vision.processors import _BaseResize
23
+
24
+ if is_dep_available("opencv-contrib-python"):
25
+ import cv2
26
26
 
27
27
 
28
+ @benchmark.timeit
28
29
  class Resize(_BaseResize):
29
30
  """Resize the image."""
30
31
 
@@ -81,6 +82,8 @@ class Resize(_BaseResize):
81
82
  return img
82
83
 
83
84
 
85
+ @benchmark.timeit
86
+ @class_requires_deps("opencv-contrib-python")
84
87
  class SegPostProcess:
85
88
  """Semantic Segmentation PostProcess
86
89
 
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,11 +12,12 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ import copy
16
+
15
17
  import numpy as np
16
18
  from PIL import Image
17
- import copy
18
19
 
19
- from ...common.result import BaseCVResult, StrMixin, JsonMixin
20
+ from ...common.result import BaseCVResult, JsonMixin
20
21
 
21
22
 
22
23
  class SegResult(BaseCVResult):
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -12,27 +12,21 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- from typing import Any, Union, Dict, List, Tuple
15
+ from typing import Any, Dict, List, Tuple, Union
16
+
16
17
  import numpy as np
17
18
 
18
- from ....utils.func_register import FuncRegister
19
19
  from ....modules.table_recognition.model_list import MODELS
20
+ from ....utils.func_register import FuncRegister
20
21
  from ...common.batch_sampler import ImageBatchSampler
21
22
  from ...common.reader import ReadImage
22
- from ..common import (
23
- Resize,
24
- ResizeByLong,
25
- Normalize,
26
- ToCHWImage,
27
- ToBatch,
28
- StaticInfer,
29
- )
30
- from ..base import BasicPredictor
23
+ from ..base import BasePredictor
24
+ from ..common import Normalize, ResizeByLong, ToBatch, ToCHWImage
31
25
  from .processors import Pad, TableLabelDecode
32
26
  from .result import TableRecResult
33
27
 
34
28
 
35
- class TablePredictor(BasicPredictor):
29
+ class TablePredictor(BasePredictor):
36
30
  entities = MODELS
37
31
 
38
32
  _FUNC_MAP = {}
@@ -59,11 +53,7 @@ class TablePredictor(BasicPredictor):
59
53
  preprocessors.append(op)
60
54
  preprocessors.append(ToBatch())
61
55
 
62
- infer = StaticInfer(
63
- model_dir=self.model_dir,
64
- model_prefix=self.MODEL_FILE_PREFIX,
65
- option=self.pp_option,
66
- )
56
+ infer = self.create_static_infer()
67
57
 
68
58
  postprocessors = TableLabelDecode(
69
59
  model_name=self.config["Global"]["model_name"],
@@ -1,4 +1,4 @@
1
- # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
1
+ # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -13,12 +13,13 @@
13
13
  # limitations under the License.
14
14
 
15
15
 
16
- import cv2
17
16
  import numpy as np
18
- from numpy import ndarray
17
+
18
+ from ...utils.benchmark import benchmark
19
19
  from ..common.vision import funcs as F
20
20
 
21
21
 
22
+ @benchmark.timeit
22
23
  class Pad:
23
24
  """Pad the image."""
24
25
 
@@ -60,6 +61,7 @@ class Pad:
60
61
  return [self.apply(img) for img in imgs]
61
62
 
62
63
 
64
+ @benchmark.timeit
63
65
  class TableLabelDecode:
64
66
  """decode the table model outputs(probs) to character str"""
65
67
 
@@ -121,16 +123,8 @@ class TableLabelDecode:
121
123
 
122
124
  def __call__(self, pred, img_size, ori_img_size):
123
125
  """apply"""
124
- bbox_preds, structure_probs = [], []
125
-
126
- for i in range(len(pred[0][0])):
127
- bbox_preds.append(pred[0][0][i])
128
- structure_probs.append(pred[1][0][i])
129
- bbox_preds = [bbox_preds]
130
- structure_probs = [structure_probs]
131
-
132
- bbox_preds = np.array(bbox_preds)
133
- structure_probs = np.array(structure_probs)
126
+ bbox_preds = np.array([list(pred[0][0])])
127
+ structure_probs = np.array([list(pred[1][0])])
134
128
 
135
129
  bbox_list, structure_str_list, structure_score = self.decode(
136
130
  structure_probs, bbox_preds, img_size, ori_img_size
@@ -159,9 +153,11 @@ class TableLabelDecode:
159
153
  structure_batch_list = []
160
154
  bbox_batch_list = []
161
155
  batch_size = len(structure_idx)
156
+ bbox_list = []
157
+ scale_list = []
158
+ scales = [0] * 8
162
159
  for batch_idx in range(batch_size):
163
160
  structure_list = []
164
- bbox_list = []
165
161
  score_list = []
166
162
  for idx in range(len(structure_idx[batch_idx])):
167
163
  char_idx = int(structure_idx[batch_idx][idx])
@@ -172,15 +168,21 @@ class TableLabelDecode:
172
168
  text = self.character[char_idx]
173
169
  if text in self.td_token:
174
170
  bbox = bbox_preds[batch_idx, idx]
175
- bbox = self._bbox_decode(
176
- bbox, padding_size[batch_idx], ori_img_size[batch_idx]
171
+ h_scale, w_scale = self._get_bbox_scales(
172
+ padding_size[batch_idx], ori_img_size[batch_idx]
177
173
  )
178
- bbox_list.append(bbox.astype(int))
174
+ scales[0::2] = [h_scale] * 4
175
+ scales[1::2] = [w_scale] * 4
176
+ bbox_list.append(bbox)
177
+ scale_list.append(scales)
178
+
179
179
  structure_list.append(text)
180
180
  score_list.append(structure_probs[batch_idx, idx])
181
181
  structure_batch_list.append(structure_list)
182
182
  structure_score = np.mean(score_list)
183
- bbox_batch_list.append(bbox_list)
183
+
184
+ bbox_batch_array = np.multiply(np.array(bbox_list), np.array(scale_list))
185
+ bbox_batch_list = [bbox_batch_array.astype(int).tolist()]
184
186
 
185
187
  return bbox_batch_list, structure_batch_list, structure_score
186
188
 
@@ -214,22 +216,14 @@ class TableLabelDecode:
214
216
  bbox_batch_list.append(bbox_list)
215
217
  return bbox_batch_list, structure_batch_list
216
218
 
217
- def _bbox_decode(self, bbox, padding_shape, ori_shape):
218
-
219
+ def _get_bbox_scales(self, padding_shape, ori_shape):
219
220
  if self.model_name == "SLANet":
220
221
  w, h = ori_shape
221
- bbox[0::2] *= w
222
- bbox[1::2] *= h
222
+ return w, h
223
223
  else:
224
224
  w, h = padding_shape
225
225
  ori_w, ori_h = ori_shape
226
226
  ratio_w = w / ori_w
227
227
  ratio_h = h / ori_h
228
228
  ratio = min(ratio_w, ratio_h)
229
-
230
- bbox[0::2] *= w
231
- bbox[1::2] *= h
232
- bbox[0::2] /= ratio
233
- bbox[1::2] /= ratio
234
-
235
- return bbox
229
+ return w / ratio, h / ratio