paddlex 2.0.0rc4__py3-none-any.whl → 3.0.0__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 (1533) hide show
  1. paddlex/.version +1 -0
  2. paddlex/__init__.py +35 -18
  3. paddlex/__main__.py +39 -0
  4. paddlex/configs/modules/3d_bev_detection/BEVFusion.yaml +38 -0
  5. paddlex/configs/modules/chart_parsing/PP-Chart2Table.yaml +13 -0
  6. paddlex/configs/modules/doc_text_orientation/PP-LCNet_x1_0_doc_ori.yaml +41 -0
  7. paddlex/configs/modules/doc_vlm/PP-DocBee-2B.yaml +14 -0
  8. paddlex/configs/modules/doc_vlm/PP-DocBee-7B.yaml +14 -0
  9. paddlex/configs/modules/doc_vlm/PP-DocBee2-3B.yaml +14 -0
  10. paddlex/configs/modules/face_detection/BlazeFace-FPN-SSH.yaml +40 -0
  11. paddlex/configs/modules/face_detection/BlazeFace.yaml +40 -0
  12. paddlex/configs/modules/face_detection/PP-YOLOE_plus-S_face.yaml +40 -0
  13. paddlex/configs/modules/face_detection/PicoDet_LCNet_x2_5_face.yaml +40 -0
  14. paddlex/configs/modules/face_feature/MobileFaceNet.yaml +41 -0
  15. paddlex/configs/modules/face_feature/ResNet50_face.yaml +41 -0
  16. paddlex/configs/modules/formula_recognition/LaTeX_OCR_rec.yaml +40 -0
  17. paddlex/configs/modules/formula_recognition/PP-FormulaNet-L.yaml +40 -0
  18. paddlex/configs/modules/formula_recognition/PP-FormulaNet-S.yaml +40 -0
  19. paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-L.yaml +40 -0
  20. paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-M.yaml +40 -0
  21. paddlex/configs/modules/formula_recognition/PP-FormulaNet_plus-S.yaml +40 -0
  22. paddlex/configs/modules/formula_recognition/UniMERNet.yaml +40 -0
  23. paddlex/configs/modules/human_detection/PP-YOLOE-L_human.yaml +42 -0
  24. paddlex/configs/modules/human_detection/PP-YOLOE-S_human.yaml +42 -0
  25. paddlex/configs/modules/image_anomaly_detection/STFPM.yaml +41 -0
  26. paddlex/configs/modules/image_classification/CLIP_vit_base_patch16_224.yaml +41 -0
  27. paddlex/configs/modules/image_classification/CLIP_vit_large_patch14_224.yaml +41 -0
  28. paddlex/configs/modules/image_classification/ConvNeXt_base_224.yaml +41 -0
  29. paddlex/configs/modules/image_classification/ConvNeXt_base_384.yaml +41 -0
  30. paddlex/configs/modules/image_classification/ConvNeXt_large_224.yaml +41 -0
  31. paddlex/configs/modules/image_classification/ConvNeXt_large_384.yaml +41 -0
  32. paddlex/configs/modules/image_classification/ConvNeXt_small.yaml +41 -0
  33. paddlex/configs/modules/image_classification/ConvNeXt_tiny.yaml +41 -0
  34. paddlex/configs/modules/image_classification/FasterNet-L.yaml +40 -0
  35. paddlex/configs/modules/image_classification/FasterNet-M.yaml +40 -0
  36. paddlex/configs/modules/image_classification/FasterNet-S.yaml +40 -0
  37. paddlex/configs/modules/image_classification/FasterNet-T0.yaml +40 -0
  38. paddlex/configs/modules/image_classification/FasterNet-T1.yaml +40 -0
  39. paddlex/configs/modules/image_classification/FasterNet-T2.yaml +40 -0
  40. paddlex/configs/modules/image_classification/MobileNetV1_x0_25.yaml +41 -0
  41. paddlex/configs/modules/image_classification/MobileNetV1_x0_5.yaml +41 -0
  42. paddlex/configs/modules/image_classification/MobileNetV1_x0_75.yaml +41 -0
  43. paddlex/configs/modules/image_classification/MobileNetV1_x1_0.yaml +41 -0
  44. paddlex/configs/modules/image_classification/MobileNetV2_x0_25.yaml +41 -0
  45. paddlex/configs/modules/image_classification/MobileNetV2_x0_5.yaml +41 -0
  46. paddlex/configs/modules/image_classification/MobileNetV2_x1_0.yaml +41 -0
  47. paddlex/configs/modules/image_classification/MobileNetV2_x1_5.yaml +41 -0
  48. paddlex/configs/modules/image_classification/MobileNetV2_x2_0.yaml +41 -0
  49. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_35.yaml +41 -0
  50. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_5.yaml +41 -0
  51. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_75.yaml +41 -0
  52. paddlex/configs/modules/image_classification/MobileNetV3_large_x1_0.yaml +41 -0
  53. paddlex/configs/modules/image_classification/MobileNetV3_large_x1_25.yaml +41 -0
  54. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_35.yaml +41 -0
  55. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_5.yaml +41 -0
  56. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_75.yaml +41 -0
  57. paddlex/configs/modules/image_classification/MobileNetV3_small_x1_0.yaml +41 -0
  58. paddlex/configs/modules/image_classification/MobileNetV3_small_x1_25.yaml +41 -0
  59. paddlex/configs/modules/image_classification/MobileNetV4_conv_large.yaml +41 -0
  60. paddlex/configs/modules/image_classification/MobileNetV4_conv_medium.yaml +41 -0
  61. paddlex/configs/modules/image_classification/MobileNetV4_conv_small.yaml +41 -0
  62. paddlex/configs/modules/image_classification/MobileNetV4_hybrid_large.yaml +41 -0
  63. paddlex/configs/modules/image_classification/MobileNetV4_hybrid_medium.yaml +41 -0
  64. paddlex/configs/modules/image_classification/PP-HGNetV2-B0.yaml +41 -0
  65. paddlex/configs/modules/image_classification/PP-HGNetV2-B1.yaml +41 -0
  66. paddlex/configs/modules/image_classification/PP-HGNetV2-B2.yaml +41 -0
  67. paddlex/configs/modules/image_classification/PP-HGNetV2-B3.yaml +41 -0
  68. paddlex/configs/modules/image_classification/PP-HGNetV2-B4.yaml +41 -0
  69. paddlex/configs/modules/image_classification/PP-HGNetV2-B5.yaml +41 -0
  70. paddlex/configs/modules/image_classification/PP-HGNetV2-B6.yaml +41 -0
  71. paddlex/configs/modules/image_classification/PP-HGNet_base.yaml +41 -0
  72. paddlex/configs/modules/image_classification/PP-HGNet_small.yaml +41 -0
  73. paddlex/configs/modules/image_classification/PP-HGNet_tiny.yaml +41 -0
  74. paddlex/configs/modules/image_classification/PP-LCNetV2_base.yaml +41 -0
  75. paddlex/configs/modules/image_classification/PP-LCNetV2_large.yaml +41 -0
  76. paddlex/configs/modules/image_classification/PP-LCNetV2_small.yaml +41 -0
  77. paddlex/configs/modules/image_classification/PP-LCNet_x0_25.yaml +41 -0
  78. paddlex/configs/modules/image_classification/PP-LCNet_x0_35.yaml +41 -0
  79. paddlex/configs/modules/image_classification/PP-LCNet_x0_5.yaml +41 -0
  80. paddlex/configs/modules/image_classification/PP-LCNet_x0_75.yaml +41 -0
  81. paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml +41 -0
  82. paddlex/configs/modules/image_classification/PP-LCNet_x1_5.yaml +41 -0
  83. paddlex/configs/modules/image_classification/PP-LCNet_x2_0.yaml +41 -0
  84. paddlex/configs/modules/image_classification/PP-LCNet_x2_5.yaml +41 -0
  85. paddlex/configs/modules/image_classification/ResNet101.yaml +41 -0
  86. paddlex/configs/modules/image_classification/ResNet101_vd.yaml +41 -0
  87. paddlex/configs/modules/image_classification/ResNet152.yaml +41 -0
  88. paddlex/configs/modules/image_classification/ResNet152_vd.yaml +41 -0
  89. paddlex/configs/modules/image_classification/ResNet18.yaml +41 -0
  90. paddlex/configs/modules/image_classification/ResNet18_vd.yaml +41 -0
  91. paddlex/configs/modules/image_classification/ResNet200_vd.yaml +41 -0
  92. paddlex/configs/modules/image_classification/ResNet34.yaml +41 -0
  93. paddlex/configs/modules/image_classification/ResNet34_vd.yaml +41 -0
  94. paddlex/configs/modules/image_classification/ResNet50.yaml +41 -0
  95. paddlex/configs/modules/image_classification/ResNet50_vd.yaml +41 -0
  96. paddlex/configs/modules/image_classification/StarNet-S1.yaml +41 -0
  97. paddlex/configs/modules/image_classification/StarNet-S2.yaml +41 -0
  98. paddlex/configs/modules/image_classification/StarNet-S3.yaml +41 -0
  99. paddlex/configs/modules/image_classification/StarNet-S4.yaml +41 -0
  100. paddlex/configs/modules/image_classification/SwinTransformer_base_patch4_window12_384.yaml +41 -0
  101. paddlex/configs/modules/image_classification/SwinTransformer_base_patch4_window7_224.yaml +41 -0
  102. paddlex/configs/modules/image_classification/SwinTransformer_large_patch4_window12_384.yaml +41 -0
  103. paddlex/configs/modules/image_classification/SwinTransformer_large_patch4_window7_224.yaml +41 -0
  104. paddlex/configs/modules/image_classification/SwinTransformer_small_patch4_window7_224.yaml +41 -0
  105. paddlex/configs/modules/image_classification/SwinTransformer_tiny_patch4_window7_224.yaml +41 -0
  106. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec.yaml +42 -0
  107. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec_CLIP_vit_base.yaml +42 -0
  108. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec_CLIP_vit_large.yaml +41 -0
  109. paddlex/configs/modules/image_multilabel_classification/CLIP_vit_base_patch16_448_ML.yaml +41 -0
  110. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B0_ML.yaml +41 -0
  111. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B4_ML.yaml +41 -0
  112. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B6_ML.yaml +41 -0
  113. paddlex/configs/modules/image_multilabel_classification/PP-LCNet_x1_0_ML.yaml +41 -0
  114. paddlex/configs/modules/image_multilabel_classification/ResNet50_ML.yaml +41 -0
  115. paddlex/configs/modules/image_unwarping/UVDoc.yaml +12 -0
  116. paddlex/configs/modules/instance_segmentation/Cascade-MaskRCNN-ResNet50-FPN.yaml +40 -0
  117. paddlex/configs/modules/instance_segmentation/Cascade-MaskRCNN-ResNet50-vd-SSLDv2-FPN.yaml +40 -0
  118. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-H.yaml +40 -0
  119. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-L.yaml +40 -0
  120. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-M.yaml +40 -0
  121. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-S.yaml +40 -0
  122. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-X.yaml +40 -0
  123. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNeXt101-vd-FPN.yaml +39 -0
  124. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet101-FPN.yaml +40 -0
  125. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet101-vd-FPN.yaml +40 -0
  126. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50-FPN.yaml +40 -0
  127. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50-vd-FPN.yaml +40 -0
  128. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50.yaml +40 -0
  129. paddlex/configs/modules/instance_segmentation/PP-YOLOE_seg-S.yaml +40 -0
  130. paddlex/configs/modules/instance_segmentation/SOLOv2.yaml +40 -0
  131. paddlex/configs/modules/keypoint_detection/PP-TinyPose_128x96.yaml +40 -0
  132. paddlex/configs/modules/keypoint_detection/PP-TinyPose_256x192.yaml +40 -0
  133. paddlex/configs/modules/layout_detection/PP-DocBlockLayout.yaml +40 -0
  134. paddlex/configs/modules/layout_detection/PP-DocLayout-L.yaml +40 -0
  135. paddlex/configs/modules/layout_detection/PP-DocLayout-M.yaml +40 -0
  136. paddlex/configs/modules/layout_detection/PP-DocLayout-S.yaml +40 -0
  137. paddlex/configs/modules/layout_detection/PP-DocLayout_plus-L.yaml +40 -0
  138. paddlex/configs/modules/layout_detection/PicoDet-L_layout_17cls.yaml +40 -0
  139. paddlex/configs/modules/layout_detection/PicoDet-L_layout_3cls.yaml +40 -0
  140. paddlex/configs/modules/layout_detection/PicoDet-S_layout_17cls.yaml +40 -0
  141. paddlex/configs/modules/layout_detection/PicoDet-S_layout_3cls.yaml +40 -0
  142. paddlex/configs/modules/layout_detection/PicoDet_layout_1x.yaml +40 -0
  143. paddlex/configs/modules/layout_detection/PicoDet_layout_1x_table.yaml +40 -0
  144. paddlex/configs/modules/layout_detection/RT-DETR-H_layout_17cls.yaml +40 -0
  145. paddlex/configs/modules/layout_detection/RT-DETR-H_layout_3cls.yaml +40 -0
  146. paddlex/configs/modules/mainbody_detection/PP-ShiTuV2_det.yaml +41 -0
  147. paddlex/configs/modules/multilingual_speech_recognition/whisper_base.yaml +12 -0
  148. paddlex/configs/modules/multilingual_speech_recognition/whisper_large.yaml +12 -0
  149. paddlex/configs/modules/multilingual_speech_recognition/whisper_medium.yaml +12 -0
  150. paddlex/configs/modules/multilingual_speech_recognition/whisper_small.yaml +12 -0
  151. paddlex/configs/modules/multilingual_speech_recognition/whisper_tiny.yaml +12 -0
  152. paddlex/configs/modules/object_detection/Cascade-FasterRCNN-ResNet50-FPN.yaml +41 -0
  153. paddlex/configs/modules/object_detection/Cascade-FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  154. paddlex/configs/modules/object_detection/CenterNet-DLA-34.yaml +41 -0
  155. paddlex/configs/modules/object_detection/CenterNet-ResNet50.yaml +41 -0
  156. paddlex/configs/modules/object_detection/Co-DINO-R50.yaml +40 -0
  157. paddlex/configs/modules/object_detection/Co-DINO-Swin-L.yaml +40 -0
  158. paddlex/configs/modules/object_detection/Co-Deformable-DETR-R50.yaml +40 -0
  159. paddlex/configs/modules/object_detection/Co-Deformable-DETR-Swin-T.yaml +40 -0
  160. paddlex/configs/modules/object_detection/DETR-R50.yaml +42 -0
  161. paddlex/configs/modules/object_detection/FCOS-ResNet50.yaml +41 -0
  162. paddlex/configs/modules/object_detection/FasterRCNN-ResNeXt101-vd-FPN.yaml +42 -0
  163. paddlex/configs/modules/object_detection/FasterRCNN-ResNet101-FPN.yaml +42 -0
  164. paddlex/configs/modules/object_detection/FasterRCNN-ResNet101.yaml +42 -0
  165. paddlex/configs/modules/object_detection/FasterRCNN-ResNet34-FPN.yaml +42 -0
  166. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-FPN.yaml +42 -0
  167. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-vd-FPN.yaml +42 -0
  168. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  169. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50.yaml +42 -0
  170. paddlex/configs/modules/object_detection/FasterRCNN-Swin-Tiny-FPN.yaml +42 -0
  171. paddlex/configs/modules/object_detection/PP-YOLOE_plus-L.yaml +40 -0
  172. paddlex/configs/modules/object_detection/PP-YOLOE_plus-M.yaml +40 -0
  173. paddlex/configs/modules/object_detection/PP-YOLOE_plus-S.yaml +40 -0
  174. paddlex/configs/modules/object_detection/PP-YOLOE_plus-X.yaml +40 -0
  175. paddlex/configs/modules/object_detection/PicoDet-L.yaml +40 -0
  176. paddlex/configs/modules/object_detection/PicoDet-M.yaml +42 -0
  177. paddlex/configs/modules/object_detection/PicoDet-S.yaml +40 -0
  178. paddlex/configs/modules/object_detection/PicoDet-XS.yaml +42 -0
  179. paddlex/configs/modules/object_detection/RT-DETR-H.yaml +40 -0
  180. paddlex/configs/modules/object_detection/RT-DETR-L.yaml +40 -0
  181. paddlex/configs/modules/object_detection/RT-DETR-R18.yaml +40 -0
  182. paddlex/configs/modules/object_detection/RT-DETR-R50.yaml +40 -0
  183. paddlex/configs/modules/object_detection/RT-DETR-X.yaml +40 -0
  184. paddlex/configs/modules/object_detection/YOLOX-L.yaml +40 -0
  185. paddlex/configs/modules/object_detection/YOLOX-M.yaml +40 -0
  186. paddlex/configs/modules/object_detection/YOLOX-N.yaml +40 -0
  187. paddlex/configs/modules/object_detection/YOLOX-S.yaml +40 -0
  188. paddlex/configs/modules/object_detection/YOLOX-T.yaml +40 -0
  189. paddlex/configs/modules/object_detection/YOLOX-X.yaml +40 -0
  190. paddlex/configs/modules/object_detection/YOLOv3-DarkNet53.yaml +40 -0
  191. paddlex/configs/modules/object_detection/YOLOv3-MobileNetV3.yaml +40 -0
  192. paddlex/configs/modules/object_detection/YOLOv3-ResNet50_vd_DCN.yaml +40 -0
  193. paddlex/configs/modules/open_vocabulary_detection/GroundingDINO-T.yaml +13 -0
  194. paddlex/configs/modules/open_vocabulary_detection/YOLO-Worldv2-L.yaml +13 -0
  195. paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_box.yaml +17 -0
  196. paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_point.yaml +15 -0
  197. paddlex/configs/modules/pedestrian_attribute_recognition/PP-LCNet_x1_0_pedestrian_attribute.yaml +41 -0
  198. paddlex/configs/modules/rotated_object_detection/PP-YOLOE-R-L.yaml +40 -0
  199. paddlex/configs/modules/seal_text_detection/PP-OCRv4_mobile_seal_det.yaml +40 -0
  200. paddlex/configs/modules/seal_text_detection/PP-OCRv4_server_seal_det.yaml +40 -0
  201. paddlex/configs/modules/semantic_segmentation/Deeplabv3-R101.yaml +40 -0
  202. paddlex/configs/modules/semantic_segmentation/Deeplabv3-R50.yaml +40 -0
  203. paddlex/configs/modules/semantic_segmentation/Deeplabv3_Plus-R101.yaml +40 -0
  204. paddlex/configs/modules/semantic_segmentation/Deeplabv3_Plus-R50.yaml +40 -0
  205. paddlex/configs/modules/semantic_segmentation/MaskFormer_small.yaml +42 -0
  206. paddlex/configs/modules/semantic_segmentation/MaskFormer_tiny.yaml +42 -0
  207. paddlex/configs/modules/semantic_segmentation/OCRNet_HRNet-W18.yaml +40 -0
  208. paddlex/configs/modules/semantic_segmentation/OCRNet_HRNet-W48.yaml +40 -0
  209. paddlex/configs/modules/semantic_segmentation/PP-LiteSeg-B.yaml +41 -0
  210. paddlex/configs/modules/semantic_segmentation/PP-LiteSeg-T.yaml +40 -0
  211. paddlex/configs/modules/semantic_segmentation/SeaFormer_base.yaml +40 -0
  212. paddlex/configs/modules/semantic_segmentation/SeaFormer_large.yaml +40 -0
  213. paddlex/configs/modules/semantic_segmentation/SeaFormer_small.yaml +40 -0
  214. paddlex/configs/modules/semantic_segmentation/SeaFormer_tiny.yaml +40 -0
  215. paddlex/configs/modules/semantic_segmentation/SegFormer-B0.yaml +40 -0
  216. paddlex/configs/modules/semantic_segmentation/SegFormer-B1.yaml +40 -0
  217. paddlex/configs/modules/semantic_segmentation/SegFormer-B2.yaml +40 -0
  218. paddlex/configs/modules/semantic_segmentation/SegFormer-B3.yaml +40 -0
  219. paddlex/configs/modules/semantic_segmentation/SegFormer-B4.yaml +40 -0
  220. paddlex/configs/modules/semantic_segmentation/SegFormer-B5.yaml +40 -0
  221. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-L.yaml +42 -0
  222. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-S.yaml +42 -0
  223. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-largesize-L.yaml +42 -0
  224. paddlex/configs/modules/table_cells_detection/RT-DETR-L_wired_table_cell_det.yaml +40 -0
  225. paddlex/configs/modules/table_cells_detection/RT-DETR-L_wireless_table_cell_det.yaml +40 -0
  226. paddlex/configs/modules/table_classification/PP-LCNet_x1_0_table_cls.yaml +41 -0
  227. paddlex/configs/modules/table_structure_recognition/SLANeXt_wired.yaml +39 -0
  228. paddlex/configs/modules/table_structure_recognition/SLANeXt_wireless.yaml +39 -0
  229. paddlex/configs/modules/table_structure_recognition/SLANet.yaml +39 -0
  230. paddlex/configs/modules/table_structure_recognition/SLANet_plus.yaml +39 -0
  231. paddlex/configs/modules/text_detection/PP-OCRv3_mobile_det.yaml +40 -0
  232. paddlex/configs/modules/text_detection/PP-OCRv3_server_det.yaml +40 -0
  233. paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml +40 -0
  234. paddlex/configs/modules/text_detection/PP-OCRv4_server_det.yaml +40 -0
  235. paddlex/configs/modules/text_detection/PP-OCRv5_mobile_det.yaml +40 -0
  236. paddlex/configs/modules/text_detection/PP-OCRv5_server_det.yaml +40 -0
  237. paddlex/configs/modules/text_recognition/PP-OCRv3_mobile_rec.yaml +39 -0
  238. paddlex/configs/modules/text_recognition/PP-OCRv4_mobile_rec.yaml +39 -0
  239. paddlex/configs/modules/text_recognition/PP-OCRv4_server_rec.yaml +39 -0
  240. paddlex/configs/modules/text_recognition/PP-OCRv4_server_rec_doc.yaml +39 -0
  241. paddlex/configs/modules/text_recognition/PP-OCRv5_mobile_rec.yaml +39 -0
  242. paddlex/configs/modules/text_recognition/PP-OCRv5_server_rec.yaml +39 -0
  243. paddlex/configs/modules/text_recognition/arabic_PP-OCRv3_mobile_rec.yaml +39 -0
  244. paddlex/configs/modules/text_recognition/ch_RepSVTR_rec.yaml +39 -0
  245. paddlex/configs/modules/text_recognition/ch_SVTRv2_rec.yaml +39 -0
  246. paddlex/configs/modules/text_recognition/chinese_cht_PP-OCRv3_mobile_rec.yaml +39 -0
  247. paddlex/configs/modules/text_recognition/cyrillic_PP-OCRv3_mobile_rec.yaml +39 -0
  248. paddlex/configs/modules/text_recognition/devanagari_PP-OCRv3_mobile_rec.yaml +39 -0
  249. paddlex/configs/modules/text_recognition/en_PP-OCRv3_mobile_rec.yaml +39 -0
  250. paddlex/configs/modules/text_recognition/en_PP-OCRv4_mobile_rec.yaml +39 -0
  251. paddlex/configs/modules/text_recognition/japan_PP-OCRv3_mobile_rec.yaml +39 -0
  252. paddlex/configs/modules/text_recognition/ka_PP-OCRv3_mobile_rec.yaml +39 -0
  253. paddlex/configs/modules/text_recognition/korean_PP-OCRv3_mobile_rec.yaml +39 -0
  254. paddlex/configs/modules/text_recognition/latin_PP-OCRv3_mobile_rec.yaml +39 -0
  255. paddlex/configs/modules/text_recognition/ta_PP-OCRv3_mobile_rec.yaml +39 -0
  256. paddlex/configs/modules/text_recognition/te_PP-OCRv3_mobile_rec.yaml +39 -0
  257. paddlex/configs/modules/textline_orientation/PP-LCNet_x0_25_textline_ori.yaml +41 -0
  258. paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml +37 -0
  259. paddlex/configs/modules/ts_anomaly_detection/DLinear_ad.yaml +37 -0
  260. paddlex/configs/modules/ts_anomaly_detection/Nonstationary_ad.yaml +37 -0
  261. paddlex/configs/modules/ts_anomaly_detection/PatchTST_ad.yaml +37 -0
  262. paddlex/configs/modules/ts_anomaly_detection/TimesNet_ad.yaml +37 -0
  263. paddlex/configs/modules/ts_classification/TimesNet_cls.yaml +37 -0
  264. paddlex/configs/modules/ts_forecast/DLinear.yaml +38 -0
  265. paddlex/configs/modules/ts_forecast/NLinear.yaml +38 -0
  266. paddlex/configs/modules/ts_forecast/Nonstationary.yaml +38 -0
  267. paddlex/configs/modules/ts_forecast/PatchTST.yaml +38 -0
  268. paddlex/configs/modules/ts_forecast/RLinear.yaml +38 -0
  269. paddlex/configs/modules/ts_forecast/TiDE.yaml +38 -0
  270. paddlex/configs/modules/ts_forecast/TimesNet.yaml +38 -0
  271. paddlex/configs/modules/vehicle_attribute_recognition/PP-LCNet_x1_0_vehicle_attribute.yaml +41 -0
  272. paddlex/configs/modules/vehicle_detection/PP-YOLOE-L_vehicle.yaml +41 -0
  273. paddlex/configs/modules/vehicle_detection/PP-YOLOE-S_vehicle.yaml +42 -0
  274. paddlex/configs/modules/video_classification/PP-TSM-R50_8frames_uniform.yaml +42 -0
  275. paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_16frames_uniform.yaml +42 -0
  276. paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_8frames_uniform.yaml +42 -0
  277. paddlex/configs/modules/video_detection/YOWO.yaml +40 -0
  278. paddlex/configs/pipelines/3d_bev_detection.yaml +9 -0
  279. paddlex/configs/pipelines/OCR.yaml +45 -0
  280. paddlex/configs/pipelines/PP-ChatOCRv3-doc.yaml +151 -0
  281. paddlex/configs/pipelines/PP-ChatOCRv4-doc.yaml +237 -0
  282. paddlex/configs/pipelines/PP-ShiTuV2.yaml +18 -0
  283. paddlex/configs/pipelines/PP-StructureV3.yaml +226 -0
  284. paddlex/configs/pipelines/anomaly_detection.yaml +8 -0
  285. paddlex/configs/pipelines/doc_preprocessor.yaml +15 -0
  286. paddlex/configs/pipelines/doc_understanding.yaml +9 -0
  287. paddlex/configs/pipelines/face_recognition.yaml +18 -0
  288. paddlex/configs/pipelines/formula_recognition.yaml +39 -0
  289. paddlex/configs/pipelines/human_keypoint_detection.yaml +17 -0
  290. paddlex/configs/pipelines/image_classification.yaml +10 -0
  291. paddlex/configs/pipelines/image_multilabel_classification.yaml +9 -0
  292. paddlex/configs/pipelines/instance_segmentation.yaml +10 -0
  293. paddlex/configs/pipelines/layout_parsing.yaml +102 -0
  294. paddlex/configs/pipelines/multilingual_speech_recognition.yaml +9 -0
  295. paddlex/configs/pipelines/object_detection.yaml +10 -0
  296. paddlex/configs/pipelines/open_vocabulary_detection.yaml +12 -0
  297. paddlex/configs/pipelines/open_vocabulary_segmentation.yaml +13 -0
  298. paddlex/configs/pipelines/pedestrian_attribute_recognition.yaml +15 -0
  299. paddlex/configs/pipelines/rotated_object_detection.yaml +10 -0
  300. paddlex/configs/pipelines/seal_recognition.yaml +52 -0
  301. paddlex/configs/pipelines/semantic_segmentation.yaml +10 -0
  302. paddlex/configs/pipelines/small_object_detection.yaml +10 -0
  303. paddlex/configs/pipelines/table_recognition.yaml +57 -0
  304. paddlex/configs/pipelines/table_recognition_v2.yaml +82 -0
  305. paddlex/configs/pipelines/ts_anomaly_detection.yaml +8 -0
  306. paddlex/configs/pipelines/ts_classification.yaml +8 -0
  307. paddlex/configs/pipelines/ts_forecast.yaml +8 -0
  308. paddlex/configs/pipelines/vehicle_attribute_recognition.yaml +15 -0
  309. paddlex/configs/pipelines/video_classification.yaml +9 -0
  310. paddlex/configs/pipelines/video_detection.yaml +10 -0
  311. paddlex/constants.py +17 -0
  312. paddlex/engine.py +56 -0
  313. paddlex/hpip_links.html +31 -0
  314. paddlex/inference/__init__.py +19 -0
  315. paddlex/inference/common/__init__.py +13 -0
  316. paddlex/inference/common/batch_sampler/__init__.py +21 -0
  317. paddlex/inference/common/batch_sampler/audio_batch_sampler.py +83 -0
  318. paddlex/inference/common/batch_sampler/base_batch_sampler.py +94 -0
  319. paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +144 -0
  320. paddlex/inference/common/batch_sampler/doc_vlm_batch_sampler.py +87 -0
  321. paddlex/inference/common/batch_sampler/image_batch_sampler.py +121 -0
  322. paddlex/inference/common/batch_sampler/ts_batch_sampler.py +109 -0
  323. paddlex/inference/common/batch_sampler/video_batch_sampler.py +74 -0
  324. paddlex/inference/common/reader/__init__.py +19 -0
  325. paddlex/inference/common/reader/audio_reader.py +46 -0
  326. paddlex/inference/common/reader/det_3d_reader.py +241 -0
  327. paddlex/inference/common/reader/image_reader.py +73 -0
  328. paddlex/inference/common/reader/ts_reader.py +46 -0
  329. paddlex/inference/common/reader/video_reader.py +42 -0
  330. paddlex/inference/common/result/__init__.py +29 -0
  331. paddlex/inference/common/result/base_cv_result.py +41 -0
  332. paddlex/inference/common/result/base_result.py +72 -0
  333. paddlex/inference/common/result/base_ts_result.py +41 -0
  334. paddlex/inference/common/result/base_video_result.py +36 -0
  335. paddlex/inference/common/result/mixin.py +709 -0
  336. paddlex/inference/models/__init__.py +86 -0
  337. paddlex/inference/models/anomaly_detection/__init__.py +15 -0
  338. paddlex/inference/models/anomaly_detection/predictor.py +135 -0
  339. paddlex/inference/models/anomaly_detection/processors.py +53 -0
  340. paddlex/inference/models/anomaly_detection/result.py +71 -0
  341. paddlex/inference/models/base/__init__.py +15 -0
  342. paddlex/inference/models/base/predictor/__init__.py +15 -0
  343. paddlex/inference/models/base/predictor/base_predictor.py +414 -0
  344. paddlex/inference/models/common/__init__.py +26 -0
  345. paddlex/inference/models/common/static_infer.py +801 -0
  346. paddlex/inference/models/common/tokenizer/__init__.py +21 -0
  347. paddlex/inference/models/common/tokenizer/bert_tokenizer.py +655 -0
  348. paddlex/inference/models/common/tokenizer/clip_tokenizer.py +609 -0
  349. paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +453 -0
  350. paddlex/inference/models/common/tokenizer/qwen2_5_tokenizer.py +112 -0
  351. paddlex/inference/models/common/tokenizer/qwen2_tokenizer.py +438 -0
  352. paddlex/inference/models/common/tokenizer/qwen_tokenizer.py +288 -0
  353. paddlex/inference/models/common/tokenizer/tokenizer_utils.py +2149 -0
  354. paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +3720 -0
  355. paddlex/inference/models/common/tokenizer/utils.py +66 -0
  356. paddlex/inference/models/common/tokenizer/vocab.py +647 -0
  357. paddlex/inference/models/common/ts/__init__.py +15 -0
  358. paddlex/inference/models/common/ts/funcs.py +540 -0
  359. paddlex/inference/models/common/ts/processors.py +322 -0
  360. paddlex/inference/models/common/vision/__init__.py +23 -0
  361. paddlex/inference/models/common/vision/funcs.py +98 -0
  362. paddlex/inference/models/common/vision/processors.py +285 -0
  363. paddlex/inference/models/common/vlm/__init__.py +13 -0
  364. paddlex/inference/models/common/vlm/activations.py +189 -0
  365. paddlex/inference/models/common/vlm/bert_padding.py +127 -0
  366. paddlex/inference/models/common/vlm/conversion_utils.py +99 -0
  367. paddlex/inference/models/common/vlm/distributed.py +229 -0
  368. paddlex/inference/models/common/vlm/flash_attn_utils.py +119 -0
  369. paddlex/inference/models/common/vlm/fusion_ops.py +205 -0
  370. paddlex/inference/models/common/vlm/generation/__init__.py +34 -0
  371. paddlex/inference/models/common/vlm/generation/configuration_utils.py +533 -0
  372. paddlex/inference/models/common/vlm/generation/logits_process.py +730 -0
  373. paddlex/inference/models/common/vlm/generation/stopping_criteria.py +106 -0
  374. paddlex/inference/models/common/vlm/generation/utils.py +2162 -0
  375. paddlex/inference/models/common/vlm/transformers/__init__.py +16 -0
  376. paddlex/inference/models/common/vlm/transformers/configuration_utils.py +1037 -0
  377. paddlex/inference/models/common/vlm/transformers/conversion_utils.py +408 -0
  378. paddlex/inference/models/common/vlm/transformers/model_outputs.py +1612 -0
  379. paddlex/inference/models/common/vlm/transformers/model_utils.py +2014 -0
  380. paddlex/inference/models/common/vlm/transformers/utils.py +178 -0
  381. paddlex/inference/models/common/vlm/utils.py +109 -0
  382. paddlex/inference/models/doc_vlm/__init__.py +15 -0
  383. paddlex/inference/models/doc_vlm/modeling/GOT_ocr_2_0.py +830 -0
  384. paddlex/inference/models/doc_vlm/modeling/__init__.py +17 -0
  385. paddlex/inference/models/doc_vlm/modeling/qwen2.py +1606 -0
  386. paddlex/inference/models/doc_vlm/modeling/qwen2_5_vl.py +3006 -0
  387. paddlex/inference/models/doc_vlm/modeling/qwen2_vl.py +2495 -0
  388. paddlex/inference/models/doc_vlm/predictor.py +253 -0
  389. paddlex/inference/models/doc_vlm/processors/GOT_ocr_2_0.py +97 -0
  390. paddlex/inference/models/doc_vlm/processors/__init__.py +17 -0
  391. paddlex/inference/models/doc_vlm/processors/common.py +561 -0
  392. paddlex/inference/models/doc_vlm/processors/qwen2_5_vl.py +548 -0
  393. paddlex/inference/models/doc_vlm/processors/qwen2_vl.py +543 -0
  394. paddlex/inference/models/doc_vlm/result.py +21 -0
  395. paddlex/inference/models/face_feature/__init__.py +15 -0
  396. paddlex/inference/models/face_feature/predictor.py +66 -0
  397. paddlex/inference/models/formula_recognition/__init__.py +15 -0
  398. paddlex/inference/models/formula_recognition/predictor.py +193 -0
  399. paddlex/inference/models/formula_recognition/processors.py +1015 -0
  400. paddlex/inference/models/formula_recognition/result.py +411 -0
  401. paddlex/inference/models/image_classification/__init__.py +15 -0
  402. paddlex/inference/models/image_classification/predictor.py +172 -0
  403. paddlex/inference/models/image_classification/processors.py +89 -0
  404. paddlex/inference/models/image_classification/result.py +93 -0
  405. paddlex/inference/models/image_feature/__init__.py +15 -0
  406. paddlex/inference/models/image_feature/predictor.py +146 -0
  407. paddlex/inference/models/image_feature/processors.py +31 -0
  408. paddlex/inference/models/image_feature/result.py +32 -0
  409. paddlex/inference/models/image_multilabel_classification/__init__.py +15 -0
  410. paddlex/inference/models/image_multilabel_classification/predictor.py +95 -0
  411. paddlex/inference/models/image_multilabel_classification/processors.py +89 -0
  412. paddlex/inference/models/image_multilabel_classification/result.py +96 -0
  413. paddlex/inference/models/image_unwarping/__init__.py +15 -0
  414. paddlex/inference/models/image_unwarping/predictor.py +97 -0
  415. paddlex/inference/models/image_unwarping/processors.py +92 -0
  416. paddlex/inference/models/image_unwarping/result.py +47 -0
  417. paddlex/inference/models/instance_segmentation/__init__.py +15 -0
  418. paddlex/inference/models/instance_segmentation/predictor.py +202 -0
  419. paddlex/inference/models/instance_segmentation/processors.py +102 -0
  420. paddlex/inference/models/instance_segmentation/result.py +162 -0
  421. paddlex/inference/models/keypoint_detection/__init__.py +15 -0
  422. paddlex/inference/models/keypoint_detection/predictor.py +190 -0
  423. paddlex/inference/models/keypoint_detection/processors.py +367 -0
  424. paddlex/inference/models/keypoint_detection/result.py +197 -0
  425. paddlex/inference/models/m_3d_bev_detection/__init__.py +15 -0
  426. paddlex/inference/models/m_3d_bev_detection/predictor.py +303 -0
  427. paddlex/inference/models/m_3d_bev_detection/processors.py +990 -0
  428. paddlex/inference/models/m_3d_bev_detection/result.py +68 -0
  429. paddlex/inference/models/m_3d_bev_detection/visualizer_3d.py +169 -0
  430. paddlex/inference/models/multilingual_speech_recognition/__init__.py +15 -0
  431. paddlex/inference/models/multilingual_speech_recognition/predictor.py +137 -0
  432. paddlex/inference/models/multilingual_speech_recognition/processors.py +1933 -0
  433. paddlex/inference/models/multilingual_speech_recognition/result.py +21 -0
  434. paddlex/inference/models/object_detection/__init__.py +15 -0
  435. paddlex/inference/models/object_detection/predictor.py +344 -0
  436. paddlex/inference/models/object_detection/processors.py +885 -0
  437. paddlex/inference/models/object_detection/result.py +114 -0
  438. paddlex/inference/models/object_detection/utils.py +70 -0
  439. paddlex/inference/models/open_vocabulary_detection/__init__.py +15 -0
  440. paddlex/inference/models/open_vocabulary_detection/predictor.py +172 -0
  441. paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +16 -0
  442. paddlex/inference/models/open_vocabulary_detection/processors/common.py +114 -0
  443. paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +496 -0
  444. paddlex/inference/models/open_vocabulary_detection/processors/yoloworld_processors.py +209 -0
  445. paddlex/inference/models/open_vocabulary_segmentation/__init__.py +15 -0
  446. paddlex/inference/models/open_vocabulary_segmentation/predictor.py +113 -0
  447. paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +15 -0
  448. paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +249 -0
  449. paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +15 -0
  450. paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +149 -0
  451. paddlex/inference/models/semantic_segmentation/__init__.py +15 -0
  452. paddlex/inference/models/semantic_segmentation/predictor.py +158 -0
  453. paddlex/inference/models/semantic_segmentation/processors.py +117 -0
  454. paddlex/inference/models/semantic_segmentation/result.py +73 -0
  455. paddlex/inference/models/table_structure_recognition/__init__.py +15 -0
  456. paddlex/inference/models/table_structure_recognition/predictor.py +161 -0
  457. paddlex/inference/models/table_structure_recognition/processors.py +229 -0
  458. paddlex/inference/models/table_structure_recognition/result.py +63 -0
  459. paddlex/inference/models/text_detection/__init__.py +15 -0
  460. paddlex/inference/models/text_detection/predictor.py +191 -0
  461. paddlex/inference/models/text_detection/processors.py +538 -0
  462. paddlex/inference/models/text_detection/result.py +46 -0
  463. paddlex/inference/models/text_recognition/__init__.py +15 -0
  464. paddlex/inference/models/text_recognition/predictor.py +98 -0
  465. paddlex/inference/models/text_recognition/processors.py +245 -0
  466. paddlex/inference/models/text_recognition/result.py +76 -0
  467. paddlex/inference/models/ts_anomaly_detection/__init__.py +15 -0
  468. paddlex/inference/models/ts_anomaly_detection/predictor.py +141 -0
  469. paddlex/inference/models/ts_anomaly_detection/processors.py +98 -0
  470. paddlex/inference/models/ts_anomaly_detection/result.py +83 -0
  471. paddlex/inference/models/ts_classification/__init__.py +15 -0
  472. paddlex/inference/models/ts_classification/predictor.py +122 -0
  473. paddlex/inference/models/ts_classification/processors.py +122 -0
  474. paddlex/inference/models/ts_classification/result.py +87 -0
  475. paddlex/inference/models/ts_forecasting/__init__.py +15 -0
  476. paddlex/inference/models/ts_forecasting/predictor.py +154 -0
  477. paddlex/inference/models/ts_forecasting/processors.py +158 -0
  478. paddlex/inference/models/ts_forecasting/result.py +96 -0
  479. paddlex/inference/models/video_classification/__init__.py +15 -0
  480. paddlex/inference/models/video_classification/predictor.py +141 -0
  481. paddlex/inference/models/video_classification/processors.py +409 -0
  482. paddlex/inference/models/video_classification/result.py +96 -0
  483. paddlex/inference/models/video_detection/__init__.py +15 -0
  484. paddlex/inference/models/video_detection/predictor.py +129 -0
  485. paddlex/inference/models/video_detection/processors.py +463 -0
  486. paddlex/inference/models/video_detection/result.py +109 -0
  487. paddlex/inference/pipelines/__init__.py +239 -0
  488. paddlex/inference/pipelines/_parallel.py +172 -0
  489. paddlex/inference/pipelines/anomaly_detection/__init__.py +15 -0
  490. paddlex/inference/pipelines/anomaly_detection/pipeline.py +82 -0
  491. paddlex/inference/pipelines/attribute_recognition/__init__.py +15 -0
  492. paddlex/inference/pipelines/attribute_recognition/pipeline.py +120 -0
  493. paddlex/inference/pipelines/attribute_recognition/result.py +102 -0
  494. paddlex/inference/pipelines/base.py +156 -0
  495. paddlex/inference/pipelines/components/__init__.py +29 -0
  496. paddlex/inference/pipelines/components/chat_server/__init__.py +16 -0
  497. paddlex/inference/pipelines/components/chat_server/base.py +39 -0
  498. paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +236 -0
  499. paddlex/inference/pipelines/components/common/__init__.py +19 -0
  500. paddlex/inference/pipelines/components/common/base_operator.py +37 -0
  501. paddlex/inference/pipelines/components/common/base_result.py +66 -0
  502. paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +45 -0
  503. paddlex/inference/pipelines/components/common/crop_image_regions.py +556 -0
  504. paddlex/inference/pipelines/components/common/seal_det_warp.py +972 -0
  505. paddlex/inference/pipelines/components/common/sort_boxes.py +85 -0
  506. paddlex/inference/pipelines/components/common/warp_image.py +50 -0
  507. paddlex/inference/pipelines/components/faisser.py +357 -0
  508. paddlex/inference/pipelines/components/prompt_engineering/__init__.py +16 -0
  509. paddlex/inference/pipelines/components/prompt_engineering/base.py +35 -0
  510. paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +128 -0
  511. paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +148 -0
  512. paddlex/inference/pipelines/components/retriever/__init__.py +16 -0
  513. paddlex/inference/pipelines/components/retriever/base.py +228 -0
  514. paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +70 -0
  515. paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +166 -0
  516. paddlex/inference/pipelines/components/utils/__init__.py +13 -0
  517. paddlex/inference/pipelines/components/utils/mixin.py +206 -0
  518. paddlex/inference/pipelines/doc_preprocessor/__init__.py +15 -0
  519. paddlex/inference/pipelines/doc_preprocessor/pipeline.py +209 -0
  520. paddlex/inference/pipelines/doc_preprocessor/result.py +98 -0
  521. paddlex/inference/pipelines/doc_understanding/__init__.py +15 -0
  522. paddlex/inference/pipelines/doc_understanding/pipeline.py +71 -0
  523. paddlex/inference/pipelines/face_recognition/__init__.py +15 -0
  524. paddlex/inference/pipelines/face_recognition/pipeline.py +63 -0
  525. paddlex/inference/pipelines/face_recognition/result.py +44 -0
  526. paddlex/inference/pipelines/formula_recognition/__init__.py +15 -0
  527. paddlex/inference/pipelines/formula_recognition/pipeline.py +347 -0
  528. paddlex/inference/pipelines/formula_recognition/result.py +282 -0
  529. paddlex/inference/pipelines/image_classification/__init__.py +15 -0
  530. paddlex/inference/pipelines/image_classification/pipeline.py +90 -0
  531. paddlex/inference/pipelines/image_multilabel_classification/__init__.py +15 -0
  532. paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +97 -0
  533. paddlex/inference/pipelines/instance_segmentation/__init__.py +15 -0
  534. paddlex/inference/pipelines/instance_segmentation/pipeline.py +91 -0
  535. paddlex/inference/pipelines/keypoint_detection/__init__.py +15 -0
  536. paddlex/inference/pipelines/keypoint_detection/pipeline.py +158 -0
  537. paddlex/inference/pipelines/layout_parsing/__init__.py +16 -0
  538. paddlex/inference/pipelines/layout_parsing/pipeline.py +568 -0
  539. paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +1382 -0
  540. paddlex/inference/pipelines/layout_parsing/result.py +191 -0
  541. paddlex/inference/pipelines/layout_parsing/result_v2.py +745 -0
  542. paddlex/inference/pipelines/layout_parsing/setting.py +87 -0
  543. paddlex/inference/pipelines/layout_parsing/utils.py +951 -0
  544. paddlex/inference/pipelines/layout_parsing/xycut_enhanced/__init__.py +16 -0
  545. paddlex/inference/pipelines/layout_parsing/xycut_enhanced/utils.py +1143 -0
  546. paddlex/inference/pipelines/layout_parsing/xycut_enhanced/xycuts.py +562 -0
  547. paddlex/inference/pipelines/m_3d_bev_detection/__init__.py +15 -0
  548. paddlex/inference/pipelines/m_3d_bev_detection/pipeline.py +74 -0
  549. paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +15 -0
  550. paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +78 -0
  551. paddlex/inference/pipelines/object_detection/__init__.py +15 -0
  552. paddlex/inference/pipelines/object_detection/pipeline.py +115 -0
  553. paddlex/inference/pipelines/ocr/__init__.py +15 -0
  554. paddlex/inference/pipelines/ocr/pipeline.py +463 -0
  555. paddlex/inference/pipelines/ocr/result.py +255 -0
  556. paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +15 -0
  557. paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +86 -0
  558. paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +15 -0
  559. paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +100 -0
  560. paddlex/inference/pipelines/pp_chatocr/__init__.py +16 -0
  561. paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +111 -0
  562. paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +781 -0
  563. paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +992 -0
  564. paddlex/inference/pipelines/pp_shitu_v2/__init__.py +15 -0
  565. paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +156 -0
  566. paddlex/inference/pipelines/pp_shitu_v2/result.py +126 -0
  567. paddlex/inference/pipelines/rotated_object_detection/__init__.py +15 -0
  568. paddlex/inference/pipelines/rotated_object_detection/pipeline.py +95 -0
  569. paddlex/inference/pipelines/seal_recognition/__init__.py +15 -0
  570. paddlex/inference/pipelines/seal_recognition/pipeline.py +335 -0
  571. paddlex/inference/pipelines/seal_recognition/result.py +89 -0
  572. paddlex/inference/pipelines/semantic_segmentation/__init__.py +15 -0
  573. paddlex/inference/pipelines/semantic_segmentation/pipeline.py +95 -0
  574. paddlex/inference/pipelines/small_object_detection/__init__.py +15 -0
  575. paddlex/inference/pipelines/small_object_detection/pipeline.py +95 -0
  576. paddlex/inference/pipelines/table_recognition/__init__.py +16 -0
  577. paddlex/inference/pipelines/table_recognition/pipeline.py +486 -0
  578. paddlex/inference/pipelines/table_recognition/pipeline_v2.py +1395 -0
  579. paddlex/inference/pipelines/table_recognition/result.py +218 -0
  580. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +366 -0
  581. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +488 -0
  582. paddlex/inference/pipelines/table_recognition/utils.py +44 -0
  583. paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +15 -0
  584. paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +72 -0
  585. paddlex/inference/pipelines/ts_classification/__init__.py +15 -0
  586. paddlex/inference/pipelines/ts_classification/pipeline.py +72 -0
  587. paddlex/inference/pipelines/ts_forecasting/__init__.py +15 -0
  588. paddlex/inference/pipelines/ts_forecasting/pipeline.py +72 -0
  589. paddlex/inference/pipelines/video_classification/__init__.py +15 -0
  590. paddlex/inference/pipelines/video_classification/pipeline.py +79 -0
  591. paddlex/inference/pipelines/video_detection/__init__.py +15 -0
  592. paddlex/inference/pipelines/video_detection/pipeline.py +86 -0
  593. paddlex/inference/serving/__init__.py +17 -0
  594. paddlex/inference/serving/basic_serving/__init__.py +18 -0
  595. paddlex/inference/serving/basic_serving/_app.py +221 -0
  596. paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +44 -0
  597. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +13 -0
  598. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +104 -0
  599. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +36 -0
  600. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +95 -0
  601. paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +67 -0
  602. paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +100 -0
  603. paddlex/inference/serving/basic_serving/_pipeline_apps/doc_understanding.py +153 -0
  604. paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +226 -0
  605. paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +100 -0
  606. paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +81 -0
  607. paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +69 -0
  608. paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +73 -0
  609. paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +87 -0
  610. paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +117 -0
  611. paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +79 -0
  612. paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +92 -0
  613. paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +77 -0
  614. paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +102 -0
  615. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +81 -0
  616. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +91 -0
  617. paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +84 -0
  618. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +193 -0
  619. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +223 -0
  620. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +221 -0
  621. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +143 -0
  622. paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +81 -0
  623. paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +106 -0
  624. paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +67 -0
  625. paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +72 -0
  626. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +108 -0
  627. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +113 -0
  628. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +65 -0
  629. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +64 -0
  630. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +65 -0
  631. paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +84 -0
  632. paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +76 -0
  633. paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +92 -0
  634. paddlex/inference/serving/basic_serving/_server.py +40 -0
  635. paddlex/inference/serving/infra/__init__.py +13 -0
  636. paddlex/inference/serving/infra/config.py +36 -0
  637. paddlex/inference/serving/infra/models.py +79 -0
  638. paddlex/inference/serving/infra/storage.py +180 -0
  639. paddlex/inference/serving/infra/utils.py +285 -0
  640. paddlex/inference/serving/schemas/__init__.py +13 -0
  641. paddlex/inference/serving/schemas/anomaly_detection.py +39 -0
  642. paddlex/inference/serving/schemas/doc_preprocessor.py +54 -0
  643. paddlex/inference/serving/schemas/doc_understanding.py +78 -0
  644. paddlex/inference/serving/schemas/face_recognition.py +124 -0
  645. paddlex/inference/serving/schemas/formula_recognition.py +56 -0
  646. paddlex/inference/serving/schemas/human_keypoint_detection.py +55 -0
  647. paddlex/inference/serving/schemas/image_classification.py +45 -0
  648. paddlex/inference/serving/schemas/image_multilabel_classification.py +47 -0
  649. paddlex/inference/serving/schemas/instance_segmentation.py +53 -0
  650. paddlex/inference/serving/schemas/layout_parsing.py +71 -0
  651. paddlex/inference/serving/schemas/m_3d_bev_detection.py +48 -0
  652. paddlex/inference/serving/schemas/multilingual_speech_recognition.py +57 -0
  653. paddlex/inference/serving/schemas/object_detection.py +52 -0
  654. paddlex/inference/serving/schemas/ocr.py +60 -0
  655. paddlex/inference/serving/schemas/open_vocabulary_detection.py +52 -0
  656. paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +52 -0
  657. paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +61 -0
  658. paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +133 -0
  659. paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +150 -0
  660. paddlex/inference/serving/schemas/pp_shituv2.py +124 -0
  661. paddlex/inference/serving/schemas/pp_structurev3.py +88 -0
  662. paddlex/inference/serving/schemas/rotated_object_detection.py +52 -0
  663. paddlex/inference/serving/schemas/seal_recognition.py +62 -0
  664. paddlex/inference/serving/schemas/semantic_segmentation.py +45 -0
  665. paddlex/inference/serving/schemas/shared/__init__.py +13 -0
  666. paddlex/inference/serving/schemas/shared/classification.py +23 -0
  667. paddlex/inference/serving/schemas/shared/image_segmentation.py +28 -0
  668. paddlex/inference/serving/schemas/shared/object_detection.py +24 -0
  669. paddlex/inference/serving/schemas/shared/ocr.py +25 -0
  670. paddlex/inference/serving/schemas/small_object_detection.py +52 -0
  671. paddlex/inference/serving/schemas/table_recognition.py +64 -0
  672. paddlex/inference/serving/schemas/table_recognition_v2.py +69 -0
  673. paddlex/inference/serving/schemas/ts_anomaly_detection.py +37 -0
  674. paddlex/inference/serving/schemas/ts_classification.py +38 -0
  675. paddlex/inference/serving/schemas/ts_forecast.py +37 -0
  676. paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +61 -0
  677. paddlex/inference/serving/schemas/video_classification.py +44 -0
  678. paddlex/inference/serving/schemas/video_detection.py +56 -0
  679. paddlex/inference/utils/__init__.py +13 -0
  680. paddlex/inference/utils/benchmark.py +379 -0
  681. paddlex/inference/utils/color_map.py +123 -0
  682. paddlex/inference/utils/get_pipeline_path.py +27 -0
  683. paddlex/inference/utils/hpi.py +254 -0
  684. paddlex/inference/utils/hpi_model_info_collection.json +2331 -0
  685. paddlex/inference/utils/io/__init__.py +36 -0
  686. paddlex/inference/utils/io/readers.py +504 -0
  687. paddlex/inference/utils/io/style.py +381 -0
  688. paddlex/inference/utils/io/tablepyxl.py +157 -0
  689. paddlex/inference/utils/io/writers.py +458 -0
  690. paddlex/inference/utils/model_paths.py +48 -0
  691. paddlex/inference/utils/new_ir_blocklist.py +27 -0
  692. paddlex/inference/utils/official_models.py +367 -0
  693. paddlex/inference/utils/pp_option.py +339 -0
  694. paddlex/inference/utils/trt_blocklist.py +43 -0
  695. paddlex/inference/utils/trt_config.py +420 -0
  696. paddlex/model.py +131 -0
  697. paddlex/modules/__init__.py +115 -0
  698. paddlex/modules/anomaly_detection/__init__.py +18 -0
  699. paddlex/modules/anomaly_detection/dataset_checker/__init__.py +94 -0
  700. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  701. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +82 -0
  702. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +91 -0
  703. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +233 -0
  704. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +87 -0
  705. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  706. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +76 -0
  707. paddlex/modules/anomaly_detection/evaluator.py +58 -0
  708. paddlex/modules/anomaly_detection/exportor.py +22 -0
  709. paddlex/modules/anomaly_detection/model_list.py +16 -0
  710. paddlex/modules/anomaly_detection/trainer.py +70 -0
  711. paddlex/modules/base/__init__.py +18 -0
  712. paddlex/modules/base/build_model.py +33 -0
  713. paddlex/modules/base/dataset_checker/__init__.py +16 -0
  714. paddlex/modules/base/dataset_checker/dataset_checker.py +169 -0
  715. paddlex/modules/base/dataset_checker/utils.py +108 -0
  716. paddlex/modules/base/evaluator.py +170 -0
  717. paddlex/modules/base/exportor.py +145 -0
  718. paddlex/modules/base/trainer.py +144 -0
  719. paddlex/modules/base/utils/__init__.py +13 -0
  720. paddlex/modules/base/utils/cinn_setting.py +89 -0
  721. paddlex/modules/base/utils/coco_eval.py +94 -0
  722. paddlex/modules/base/utils/topk_eval.py +118 -0
  723. paddlex/modules/doc_vlm/__init__.py +18 -0
  724. paddlex/modules/doc_vlm/dataset_checker.py +29 -0
  725. paddlex/modules/doc_vlm/evaluator.py +29 -0
  726. paddlex/modules/doc_vlm/exportor.py +29 -0
  727. paddlex/modules/doc_vlm/model_list.py +16 -0
  728. paddlex/modules/doc_vlm/trainer.py +41 -0
  729. paddlex/modules/face_recognition/__init__.py +18 -0
  730. paddlex/modules/face_recognition/dataset_checker/__init__.py +71 -0
  731. paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +16 -0
  732. paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +172 -0
  733. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  734. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +153 -0
  735. paddlex/modules/face_recognition/evaluator.py +52 -0
  736. paddlex/modules/face_recognition/exportor.py +22 -0
  737. paddlex/modules/face_recognition/model_list.py +15 -0
  738. paddlex/modules/face_recognition/trainer.py +75 -0
  739. paddlex/modules/formula_recognition/__init__.py +18 -0
  740. paddlex/modules/formula_recognition/dataset_checker/__init__.py +113 -0
  741. paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  742. paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +158 -0
  743. paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +76 -0
  744. paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +95 -0
  745. paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +80 -0
  746. paddlex/modules/formula_recognition/evaluator.py +80 -0
  747. paddlex/modules/formula_recognition/exportor.py +22 -0
  748. paddlex/modules/formula_recognition/model_list.py +23 -0
  749. paddlex/modules/formula_recognition/trainer.py +123 -0
  750. paddlex/modules/general_recognition/__init__.py +18 -0
  751. paddlex/modules/general_recognition/dataset_checker/__init__.py +107 -0
  752. paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  753. paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +96 -0
  754. paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +99 -0
  755. paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +100 -0
  756. paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +82 -0
  757. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  758. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +147 -0
  759. paddlex/modules/general_recognition/evaluator.py +31 -0
  760. paddlex/modules/general_recognition/exportor.py +22 -0
  761. paddlex/modules/general_recognition/model_list.py +19 -0
  762. paddlex/modules/general_recognition/trainer.py +52 -0
  763. paddlex/modules/image_classification/__init__.py +18 -0
  764. paddlex/modules/image_classification/dataset_checker/__init__.py +104 -0
  765. paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +19 -0
  766. paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +92 -0
  767. paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +132 -0
  768. paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +51 -0
  769. paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  770. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  771. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +153 -0
  772. paddlex/modules/image_classification/evaluator.py +43 -0
  773. paddlex/modules/image_classification/exportor.py +22 -0
  774. paddlex/modules/image_classification/model_list.py +99 -0
  775. paddlex/modules/image_classification/trainer.py +82 -0
  776. paddlex/modules/image_unwarping/__init__.py +13 -0
  777. paddlex/modules/image_unwarping/model_list.py +17 -0
  778. paddlex/modules/instance_segmentation/__init__.py +18 -0
  779. paddlex/modules/instance_segmentation/dataset_checker/__init__.py +107 -0
  780. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  781. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +82 -0
  782. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +95 -0
  783. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +241 -0
  784. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +122 -0
  785. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  786. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +223 -0
  787. paddlex/modules/instance_segmentation/evaluator.py +32 -0
  788. paddlex/modules/instance_segmentation/exportor.py +22 -0
  789. paddlex/modules/instance_segmentation/model_list.py +33 -0
  790. paddlex/modules/instance_segmentation/trainer.py +31 -0
  791. paddlex/modules/keypoint_detection/__init__.py +18 -0
  792. paddlex/modules/keypoint_detection/dataset_checker/__init__.py +56 -0
  793. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +15 -0
  794. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +91 -0
  795. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  796. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +124 -0
  797. paddlex/modules/keypoint_detection/evaluator.py +41 -0
  798. paddlex/modules/keypoint_detection/exportor.py +22 -0
  799. paddlex/modules/keypoint_detection/model_list.py +16 -0
  800. paddlex/modules/keypoint_detection/trainer.py +39 -0
  801. paddlex/modules/m_3d_bev_detection/__init__.py +18 -0
  802. paddlex/modules/m_3d_bev_detection/dataset_checker/__init__.py +95 -0
  803. paddlex/modules/m_3d_bev_detection/dataset_checker/dataset_src/__init__.py +17 -0
  804. paddlex/modules/m_3d_bev_detection/dataset_checker/dataset_src/analyse_dataset.py +106 -0
  805. paddlex/modules/m_3d_bev_detection/dataset_checker/dataset_src/check_dataset.py +101 -0
  806. paddlex/modules/m_3d_bev_detection/evaluator.py +46 -0
  807. paddlex/modules/m_3d_bev_detection/exportor.py +22 -0
  808. paddlex/modules/m_3d_bev_detection/model_list.py +18 -0
  809. paddlex/modules/m_3d_bev_detection/trainer.py +68 -0
  810. paddlex/modules/multilabel_classification/__init__.py +18 -0
  811. paddlex/modules/multilabel_classification/dataset_checker/__init__.py +106 -0
  812. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +19 -0
  813. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +94 -0
  814. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +132 -0
  815. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +120 -0
  816. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  817. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  818. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +149 -0
  819. paddlex/modules/multilabel_classification/evaluator.py +43 -0
  820. paddlex/modules/multilabel_classification/exportor.py +22 -0
  821. paddlex/modules/multilabel_classification/model_list.py +24 -0
  822. paddlex/modules/multilabel_classification/trainer.py +85 -0
  823. paddlex/modules/multilingual_speech_recognition/__init__.py +18 -0
  824. paddlex/modules/multilingual_speech_recognition/dataset_checker.py +27 -0
  825. paddlex/modules/multilingual_speech_recognition/evaluator.py +27 -0
  826. paddlex/modules/multilingual_speech_recognition/exportor.py +27 -0
  827. paddlex/modules/multilingual_speech_recognition/model_list.py +22 -0
  828. paddlex/modules/multilingual_speech_recognition/trainer.py +42 -0
  829. paddlex/modules/object_detection/__init__.py +18 -0
  830. paddlex/modules/object_detection/dataset_checker/__init__.py +106 -0
  831. paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +19 -0
  832. paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +82 -0
  833. paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +91 -0
  834. paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +438 -0
  835. paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +123 -0
  836. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  837. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +193 -0
  838. paddlex/modules/object_detection/evaluator.py +57 -0
  839. paddlex/modules/object_detection/exportor.py +22 -0
  840. paddlex/modules/object_detection/model_list.py +86 -0
  841. paddlex/modules/object_detection/trainer.py +98 -0
  842. paddlex/modules/open_vocabulary_detection/__init__.py +18 -0
  843. paddlex/modules/open_vocabulary_detection/dataset_checker.py +29 -0
  844. paddlex/modules/open_vocabulary_detection/evaluator.py +29 -0
  845. paddlex/modules/open_vocabulary_detection/exportor.py +29 -0
  846. paddlex/modules/open_vocabulary_detection/model_list.py +16 -0
  847. paddlex/modules/open_vocabulary_detection/trainer.py +44 -0
  848. paddlex/modules/open_vocabulary_segmentation/__init__.py +18 -0
  849. paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +29 -0
  850. paddlex/modules/open_vocabulary_segmentation/evaluator.py +29 -0
  851. paddlex/modules/open_vocabulary_segmentation/exportor.py +29 -0
  852. paddlex/modules/open_vocabulary_segmentation/model_list.py +19 -0
  853. paddlex/modules/open_vocabulary_segmentation/trainer.py +44 -0
  854. paddlex/modules/semantic_segmentation/__init__.py +18 -0
  855. paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +109 -0
  856. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  857. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +76 -0
  858. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +80 -0
  859. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +165 -0
  860. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +87 -0
  861. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  862. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +75 -0
  863. paddlex/modules/semantic_segmentation/evaluator.py +58 -0
  864. paddlex/modules/semantic_segmentation/exportor.py +31 -0
  865. paddlex/modules/semantic_segmentation/model_list.py +37 -0
  866. paddlex/modules/semantic_segmentation/trainer.py +72 -0
  867. paddlex/modules/table_recognition/__init__.py +18 -0
  868. paddlex/modules/table_recognition/dataset_checker/__init__.py +98 -0
  869. paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +18 -0
  870. paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +59 -0
  871. paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +87 -0
  872. paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +80 -0
  873. paddlex/modules/table_recognition/evaluator.py +43 -0
  874. paddlex/modules/table_recognition/exportor.py +22 -0
  875. paddlex/modules/table_recognition/model_list.py +21 -0
  876. paddlex/modules/table_recognition/trainer.py +67 -0
  877. paddlex/modules/text_detection/__init__.py +18 -0
  878. paddlex/modules/text_detection/dataset_checker/__init__.py +107 -0
  879. paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +18 -0
  880. paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +220 -0
  881. paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +106 -0
  882. paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +140 -0
  883. paddlex/modules/text_detection/evaluator.py +41 -0
  884. paddlex/modules/text_detection/exportor.py +22 -0
  885. paddlex/modules/text_detection/model_list.py +26 -0
  886. paddlex/modules/text_detection/trainer.py +65 -0
  887. paddlex/modules/text_recognition/__init__.py +18 -0
  888. paddlex/modules/text_recognition/dataset_checker/__init__.py +125 -0
  889. paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  890. paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +162 -0
  891. paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +104 -0
  892. paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +95 -0
  893. paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +80 -0
  894. paddlex/modules/text_recognition/evaluator.py +64 -0
  895. paddlex/modules/text_recognition/exportor.py +22 -0
  896. paddlex/modules/text_recognition/model_list.py +36 -0
  897. paddlex/modules/text_recognition/trainer.py +105 -0
  898. paddlex/modules/ts_anomaly_detection/__init__.py +19 -0
  899. paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +111 -0
  900. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  901. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +19 -0
  902. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +64 -0
  903. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +74 -0
  904. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +63 -0
  905. paddlex/modules/ts_anomaly_detection/evaluator.py +67 -0
  906. paddlex/modules/ts_anomaly_detection/exportor.py +44 -0
  907. paddlex/modules/ts_anomaly_detection/model_list.py +22 -0
  908. paddlex/modules/ts_anomaly_detection/trainer.py +113 -0
  909. paddlex/modules/ts_classification/__init__.py +19 -0
  910. paddlex/modules/ts_classification/dataset_checker/__init__.py +111 -0
  911. paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +19 -0
  912. paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +77 -0
  913. paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +64 -0
  914. paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +74 -0
  915. paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +88 -0
  916. paddlex/modules/ts_classification/evaluator.py +66 -0
  917. paddlex/modules/ts_classification/exportor.py +44 -0
  918. paddlex/modules/ts_classification/model_list.py +18 -0
  919. paddlex/modules/ts_classification/trainer.py +108 -0
  920. paddlex/modules/ts_forecast/__init__.py +19 -0
  921. paddlex/modules/ts_forecast/dataset_checker/__init__.py +111 -0
  922. paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +19 -0
  923. paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +19 -0
  924. paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +64 -0
  925. paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +73 -0
  926. paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +63 -0
  927. paddlex/modules/ts_forecast/evaluator.py +66 -0
  928. paddlex/modules/ts_forecast/exportor.py +44 -0
  929. paddlex/modules/ts_forecast/model_list.py +24 -0
  930. paddlex/modules/ts_forecast/trainer.py +108 -0
  931. paddlex/modules/video_classification/__init__.py +18 -0
  932. paddlex/modules/video_classification/dataset_checker/__init__.py +93 -0
  933. paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +18 -0
  934. paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +93 -0
  935. paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +120 -0
  936. paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +82 -0
  937. paddlex/modules/video_classification/evaluator.py +44 -0
  938. paddlex/modules/video_classification/exportor.py +22 -0
  939. paddlex/modules/video_classification/model_list.py +19 -0
  940. paddlex/modules/video_classification/trainer.py +88 -0
  941. paddlex/modules/video_detection/__init__.py +18 -0
  942. paddlex/modules/video_detection/dataset_checker/__init__.py +86 -0
  943. paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +17 -0
  944. paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +100 -0
  945. paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +132 -0
  946. paddlex/modules/video_detection/evaluator.py +42 -0
  947. paddlex/modules/video_detection/exportor.py +22 -0
  948. paddlex/modules/video_detection/model_list.py +15 -0
  949. paddlex/modules/video_detection/trainer.py +82 -0
  950. paddlex/ops/__init__.py +152 -0
  951. paddlex/ops/iou3d_nms/iou3d_cpu.cpp +266 -0
  952. paddlex/ops/iou3d_nms/iou3d_cpu.h +28 -0
  953. paddlex/ops/iou3d_nms/iou3d_nms.cpp +206 -0
  954. paddlex/ops/iou3d_nms/iou3d_nms.h +35 -0
  955. paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +114 -0
  956. paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +484 -0
  957. paddlex/ops/setup.py +37 -0
  958. paddlex/ops/voxel/voxelize_op.cc +194 -0
  959. paddlex/ops/voxel/voxelize_op.cu +346 -0
  960. paddlex/paddlex_cli.py +476 -0
  961. paddlex/repo_apis/Paddle3D_api/__init__.py +17 -0
  962. paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +18 -0
  963. paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +118 -0
  964. paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +238 -0
  965. paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +55 -0
  966. paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +104 -0
  967. paddlex/repo_apis/Paddle3D_api/pp3d_config.py +145 -0
  968. paddlex/repo_apis/PaddleClas_api/__init__.py +17 -0
  969. paddlex/repo_apis/PaddleClas_api/cls/__init__.py +19 -0
  970. paddlex/repo_apis/PaddleClas_api/cls/config.py +595 -0
  971. paddlex/repo_apis/PaddleClas_api/cls/model.py +355 -0
  972. paddlex/repo_apis/PaddleClas_api/cls/register.py +907 -0
  973. paddlex/repo_apis/PaddleClas_api/cls/runner.py +218 -0
  974. paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +18 -0
  975. paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +141 -0
  976. paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +20 -0
  977. paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +68 -0
  978. paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +50 -0
  979. paddlex/repo_apis/PaddleDetection_api/__init__.py +17 -0
  980. paddlex/repo_apis/PaddleDetection_api/config_helper.py +280 -0
  981. paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +18 -0
  982. paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +457 -0
  983. paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +403 -0
  984. paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +262 -0
  985. paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +225 -0
  986. paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +19 -0
  987. paddlex/repo_apis/PaddleDetection_api/object_det/config.py +540 -0
  988. paddlex/repo_apis/PaddleDetection_api/object_det/model.py +429 -0
  989. paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +245 -0
  990. paddlex/repo_apis/PaddleDetection_api/object_det/register.py +1135 -0
  991. paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +225 -0
  992. paddlex/repo_apis/PaddleNLP_api/__init__.py +13 -0
  993. paddlex/repo_apis/PaddleOCR_api/__init__.py +22 -0
  994. paddlex/repo_apis/PaddleOCR_api/config_utils.py +53 -0
  995. paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +16 -0
  996. paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +571 -0
  997. paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +398 -0
  998. paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +99 -0
  999. paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +239 -0
  1000. paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +16 -0
  1001. paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +64 -0
  1002. paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +126 -0
  1003. paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +70 -0
  1004. paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +51 -0
  1005. paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +16 -0
  1006. paddlex/repo_apis/PaddleOCR_api/text_det/config.py +62 -0
  1007. paddlex/repo_apis/PaddleOCR_api/text_det/model.py +72 -0
  1008. paddlex/repo_apis/PaddleOCR_api/text_det/register.py +107 -0
  1009. paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +53 -0
  1010. paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +16 -0
  1011. paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +564 -0
  1012. paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +398 -0
  1013. paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +216 -0
  1014. paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +239 -0
  1015. paddlex/repo_apis/PaddleSeg_api/__init__.py +16 -0
  1016. paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +134 -0
  1017. paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +16 -0
  1018. paddlex/repo_apis/PaddleSeg_api/seg/config.py +183 -0
  1019. paddlex/repo_apis/PaddleSeg_api/seg/model.py +491 -0
  1020. paddlex/repo_apis/PaddleSeg_api/seg/register.py +272 -0
  1021. paddlex/repo_apis/PaddleSeg_api/seg/runner.py +261 -0
  1022. paddlex/repo_apis/PaddleTS_api/__init__.py +20 -0
  1023. paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +16 -0
  1024. paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +88 -0
  1025. paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +146 -0
  1026. paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +158 -0
  1027. paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +13 -0
  1028. paddlex/repo_apis/PaddleTS_api/ts_base/config.py +244 -0
  1029. paddlex/repo_apis/PaddleTS_api/ts_base/model.py +276 -0
  1030. paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +158 -0
  1031. paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +16 -0
  1032. paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +72 -0
  1033. paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +59 -0
  1034. paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +158 -0
  1035. paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +16 -0
  1036. paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +136 -0
  1037. paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +186 -0
  1038. paddlex/repo_apis/PaddleVideo_api/__init__.py +17 -0
  1039. paddlex/repo_apis/PaddleVideo_api/config_utils.py +51 -0
  1040. paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +19 -0
  1041. paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +548 -0
  1042. paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +346 -0
  1043. paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +70 -0
  1044. paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +204 -0
  1045. paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +19 -0
  1046. paddlex/repo_apis/PaddleVideo_api/video_det/config.py +549 -0
  1047. paddlex/repo_apis/PaddleVideo_api/video_det/model.py +298 -0
  1048. paddlex/repo_apis/PaddleVideo_api/video_det/register.py +44 -0
  1049. paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +199 -0
  1050. paddlex/repo_apis/__init__.py +13 -0
  1051. paddlex/repo_apis/base/__init__.py +22 -0
  1052. paddlex/repo_apis/base/config.py +237 -0
  1053. paddlex/repo_apis/base/model.py +563 -0
  1054. paddlex/repo_apis/base/register.py +135 -0
  1055. paddlex/repo_apis/base/runner.py +390 -0
  1056. paddlex/repo_apis/base/utils/__init__.py +13 -0
  1057. paddlex/repo_apis/base/utils/arg.py +64 -0
  1058. paddlex/repo_apis/base/utils/subprocess.py +107 -0
  1059. paddlex/repo_manager/__init__.py +17 -0
  1060. paddlex/repo_manager/core.py +253 -0
  1061. paddlex/repo_manager/meta.py +180 -0
  1062. paddlex/repo_manager/repo.py +425 -0
  1063. paddlex/repo_manager/utils.py +148 -0
  1064. paddlex/utils/__init__.py +1 -12
  1065. paddlex/utils/cache.py +146 -0
  1066. paddlex/utils/config.py +216 -0
  1067. paddlex/utils/custom_device_list.py +311 -0
  1068. paddlex/utils/deps.py +249 -0
  1069. paddlex/utils/device.py +195 -0
  1070. paddlex/utils/download.py +168 -182
  1071. paddlex/utils/env.py +31 -48
  1072. paddlex/utils/errors/__init__.py +17 -0
  1073. paddlex/utils/errors/dataset_checker.py +78 -0
  1074. paddlex/utils/errors/others.py +138 -0
  1075. paddlex/utils/file_interface.py +211 -0
  1076. paddlex/utils/flags.py +70 -0
  1077. paddlex/utils/fonts/__init__.py +97 -0
  1078. paddlex/utils/func_register.py +41 -0
  1079. paddlex/utils/install.py +87 -0
  1080. paddlex/utils/interactive_get_pipeline.py +55 -0
  1081. paddlex/utils/lazy_loader.py +68 -0
  1082. paddlex/utils/logging.py +140 -33
  1083. paddlex/utils/misc.py +201 -0
  1084. paddlex/utils/pipeline_arguments.py +719 -0
  1085. paddlex/utils/result_saver.py +58 -0
  1086. paddlex/utils/subclass_register.py +99 -0
  1087. paddlex/version.py +55 -0
  1088. paddlex-3.0.0.dist-info/METADATA +1168 -0
  1089. paddlex-3.0.0.dist-info/RECORD +1093 -0
  1090. paddlex-3.0.0.dist-info/WHEEL +5 -0
  1091. paddlex-3.0.0.dist-info/entry_points.txt +2 -0
  1092. paddlex-3.0.0.dist-info/licenses/LICENSE +169 -0
  1093. paddlex-3.0.0.dist-info/top_level.txt +1 -0
  1094. PaddleClas/__init__.py +0 -16
  1095. PaddleClas/paddleclas.py +0 -375
  1096. PaddleClas/ppcls/__init__.py +0 -20
  1097. PaddleClas/ppcls/data/__init__.py +0 -15
  1098. PaddleClas/ppcls/data/imaug/__init__.py +0 -94
  1099. PaddleClas/ppcls/data/imaug/autoaugment.py +0 -264
  1100. PaddleClas/ppcls/data/imaug/batch_operators.py +0 -117
  1101. PaddleClas/ppcls/data/imaug/cutout.py +0 -41
  1102. PaddleClas/ppcls/data/imaug/fmix.py +0 -217
  1103. PaddleClas/ppcls/data/imaug/grid.py +0 -89
  1104. PaddleClas/ppcls/data/imaug/hide_and_seek.py +0 -44
  1105. PaddleClas/ppcls/data/imaug/operators.py +0 -244
  1106. PaddleClas/ppcls/data/imaug/randaugment.py +0 -106
  1107. PaddleClas/ppcls/data/imaug/random_erasing.py +0 -55
  1108. PaddleClas/ppcls/data/reader.py +0 -318
  1109. PaddleClas/ppcls/modeling/__init__.py +0 -20
  1110. PaddleClas/ppcls/modeling/architectures/__init__.py +0 -51
  1111. PaddleClas/ppcls/modeling/architectures/alexnet.py +0 -132
  1112. PaddleClas/ppcls/modeling/architectures/darknet.py +0 -161
  1113. PaddleClas/ppcls/modeling/architectures/densenet.py +0 -308
  1114. PaddleClas/ppcls/modeling/architectures/distillation_models.py +0 -65
  1115. PaddleClas/ppcls/modeling/architectures/distilled_vision_transformer.py +0 -196
  1116. PaddleClas/ppcls/modeling/architectures/dpn.py +0 -425
  1117. PaddleClas/ppcls/modeling/architectures/efficientnet.py +0 -901
  1118. PaddleClas/ppcls/modeling/architectures/ghostnet.py +0 -331
  1119. PaddleClas/ppcls/modeling/architectures/googlenet.py +0 -207
  1120. PaddleClas/ppcls/modeling/architectures/hrnet.py +0 -742
  1121. PaddleClas/ppcls/modeling/architectures/inception_v3.py +0 -481
  1122. PaddleClas/ppcls/modeling/architectures/inception_v4.py +0 -455
  1123. PaddleClas/ppcls/modeling/architectures/mixnet.py +0 -782
  1124. PaddleClas/ppcls/modeling/architectures/mobilenet_v1.py +0 -266
  1125. PaddleClas/ppcls/modeling/architectures/mobilenet_v2.py +0 -248
  1126. PaddleClas/ppcls/modeling/architectures/mobilenet_v3.py +0 -359
  1127. PaddleClas/ppcls/modeling/architectures/regnet.py +0 -383
  1128. PaddleClas/ppcls/modeling/architectures/repvgg.py +0 -339
  1129. PaddleClas/ppcls/modeling/architectures/res2net.py +0 -272
  1130. PaddleClas/ppcls/modeling/architectures/res2net_vd.py +0 -295
  1131. PaddleClas/ppcls/modeling/architectures/resnest.py +0 -705
  1132. PaddleClas/ppcls/modeling/architectures/resnet.py +0 -316
  1133. PaddleClas/ppcls/modeling/architectures/resnet_vc.py +0 -309
  1134. PaddleClas/ppcls/modeling/architectures/resnet_vd.py +0 -354
  1135. PaddleClas/ppcls/modeling/architectures/resnext.py +0 -253
  1136. PaddleClas/ppcls/modeling/architectures/resnext101_wsl.py +0 -447
  1137. PaddleClas/ppcls/modeling/architectures/resnext_vd.py +0 -266
  1138. PaddleClas/ppcls/modeling/architectures/rexnet.py +0 -240
  1139. PaddleClas/ppcls/modeling/architectures/se_resnet_vd.py +0 -378
  1140. PaddleClas/ppcls/modeling/architectures/se_resnext.py +0 -290
  1141. PaddleClas/ppcls/modeling/architectures/se_resnext_vd.py +0 -285
  1142. PaddleClas/ppcls/modeling/architectures/shufflenet_v2.py +0 -320
  1143. PaddleClas/ppcls/modeling/architectures/squeezenet.py +0 -154
  1144. PaddleClas/ppcls/modeling/architectures/vgg.py +0 -152
  1145. PaddleClas/ppcls/modeling/architectures/vision_transformer.py +0 -402
  1146. PaddleClas/ppcls/modeling/architectures/xception.py +0 -345
  1147. PaddleClas/ppcls/modeling/architectures/xception_deeplab.py +0 -386
  1148. PaddleClas/ppcls/modeling/loss.py +0 -154
  1149. PaddleClas/ppcls/modeling/utils.py +0 -53
  1150. PaddleClas/ppcls/optimizer/__init__.py +0 -19
  1151. PaddleClas/ppcls/optimizer/learning_rate.py +0 -159
  1152. PaddleClas/ppcls/optimizer/optimizer.py +0 -165
  1153. PaddleClas/ppcls/utils/__init__.py +0 -27
  1154. PaddleClas/ppcls/utils/check.py +0 -151
  1155. PaddleClas/ppcls/utils/config.py +0 -201
  1156. PaddleClas/ppcls/utils/logger.py +0 -120
  1157. PaddleClas/ppcls/utils/metrics.py +0 -107
  1158. PaddleClas/ppcls/utils/misc.py +0 -62
  1159. PaddleClas/ppcls/utils/model_zoo.py +0 -213
  1160. PaddleClas/ppcls/utils/save_load.py +0 -163
  1161. PaddleClas/setup.py +0 -55
  1162. PaddleClas/tools/__init__.py +0 -15
  1163. PaddleClas/tools/download.py +0 -50
  1164. PaddleClas/tools/ema.py +0 -58
  1165. PaddleClas/tools/eval.py +0 -112
  1166. PaddleClas/tools/export_model.py +0 -85
  1167. PaddleClas/tools/export_serving_model.py +0 -76
  1168. PaddleClas/tools/infer/__init__.py +0 -16
  1169. PaddleClas/tools/infer/infer.py +0 -94
  1170. PaddleClas/tools/infer/predict.py +0 -117
  1171. PaddleClas/tools/infer/utils.py +0 -233
  1172. PaddleClas/tools/program.py +0 -444
  1173. PaddleClas/tools/test_hubserving.py +0 -113
  1174. PaddleClas/tools/train.py +0 -141
  1175. paddlex/cls.py +0 -76
  1176. paddlex/command.py +0 -215
  1177. paddlex/cv/__init__.py +0 -17
  1178. paddlex/cv/datasets/__init__.py +0 -18
  1179. paddlex/cv/datasets/coco.py +0 -169
  1180. paddlex/cv/datasets/imagenet.py +0 -88
  1181. paddlex/cv/datasets/seg_dataset.py +0 -91
  1182. paddlex/cv/datasets/voc.py +0 -301
  1183. paddlex/cv/models/__init__.py +0 -18
  1184. paddlex/cv/models/base.py +0 -623
  1185. paddlex/cv/models/classifier.py +0 -814
  1186. paddlex/cv/models/detector.py +0 -1747
  1187. paddlex/cv/models/load_model.py +0 -126
  1188. paddlex/cv/models/segmenter.py +0 -673
  1189. paddlex/cv/models/slim/__init__.py +0 -13
  1190. paddlex/cv/models/slim/prune.py +0 -55
  1191. paddlex/cv/models/utils/__init__.py +0 -13
  1192. paddlex/cv/models/utils/det_metrics/__init__.py +0 -15
  1193. paddlex/cv/models/utils/det_metrics/coco_utils.py +0 -217
  1194. paddlex/cv/models/utils/det_metrics/metrics.py +0 -220
  1195. paddlex/cv/models/utils/ema.py +0 -48
  1196. paddlex/cv/models/utils/seg_metrics.py +0 -62
  1197. paddlex/cv/models/utils/visualize.py +0 -394
  1198. paddlex/cv/transforms/__init__.py +0 -46
  1199. paddlex/cv/transforms/batch_operators.py +0 -286
  1200. paddlex/cv/transforms/box_utils.py +0 -41
  1201. paddlex/cv/transforms/functions.py +0 -193
  1202. paddlex/cv/transforms/operators.py +0 -1402
  1203. paddlex/det.py +0 -43
  1204. paddlex/paddleseg/__init__.py +0 -17
  1205. paddlex/paddleseg/core/__init__.py +0 -20
  1206. paddlex/paddleseg/core/infer.py +0 -289
  1207. paddlex/paddleseg/core/predict.py +0 -145
  1208. paddlex/paddleseg/core/train.py +0 -258
  1209. paddlex/paddleseg/core/val.py +0 -172
  1210. paddlex/paddleseg/cvlibs/__init__.py +0 -17
  1211. paddlex/paddleseg/cvlibs/callbacks.py +0 -279
  1212. paddlex/paddleseg/cvlibs/config.py +0 -359
  1213. paddlex/paddleseg/cvlibs/manager.py +0 -142
  1214. paddlex/paddleseg/cvlibs/param_init.py +0 -91
  1215. paddlex/paddleseg/datasets/__init__.py +0 -21
  1216. paddlex/paddleseg/datasets/ade.py +0 -112
  1217. paddlex/paddleseg/datasets/cityscapes.py +0 -86
  1218. paddlex/paddleseg/datasets/cocostuff.py +0 -79
  1219. paddlex/paddleseg/datasets/dataset.py +0 -164
  1220. paddlex/paddleseg/datasets/mini_deep_globe_road_extraction.py +0 -95
  1221. paddlex/paddleseg/datasets/optic_disc_seg.py +0 -97
  1222. paddlex/paddleseg/datasets/pascal_context.py +0 -80
  1223. paddlex/paddleseg/datasets/voc.py +0 -113
  1224. paddlex/paddleseg/models/__init__.py +0 -39
  1225. paddlex/paddleseg/models/ann.py +0 -436
  1226. paddlex/paddleseg/models/attention_unet.py +0 -189
  1227. paddlex/paddleseg/models/backbones/__init__.py +0 -18
  1228. paddlex/paddleseg/models/backbones/hrnet.py +0 -815
  1229. paddlex/paddleseg/models/backbones/mobilenetv3.py +0 -365
  1230. paddlex/paddleseg/models/backbones/resnet_vd.py +0 -364
  1231. paddlex/paddleseg/models/backbones/xception_deeplab.py +0 -415
  1232. paddlex/paddleseg/models/bisenet.py +0 -311
  1233. paddlex/paddleseg/models/danet.py +0 -220
  1234. paddlex/paddleseg/models/decoupled_segnet.py +0 -233
  1235. paddlex/paddleseg/models/deeplab.py +0 -258
  1236. paddlex/paddleseg/models/dnlnet.py +0 -231
  1237. paddlex/paddleseg/models/emanet.py +0 -219
  1238. paddlex/paddleseg/models/fast_scnn.py +0 -318
  1239. paddlex/paddleseg/models/fcn.py +0 -135
  1240. paddlex/paddleseg/models/gcnet.py +0 -223
  1241. paddlex/paddleseg/models/gscnn.py +0 -357
  1242. paddlex/paddleseg/models/hardnet.py +0 -309
  1243. paddlex/paddleseg/models/isanet.py +0 -202
  1244. paddlex/paddleseg/models/layers/__init__.py +0 -19
  1245. paddlex/paddleseg/models/layers/activation.py +0 -73
  1246. paddlex/paddleseg/models/layers/attention.py +0 -146
  1247. paddlex/paddleseg/models/layers/layer_libs.py +0 -168
  1248. paddlex/paddleseg/models/layers/nonlocal2d.py +0 -155
  1249. paddlex/paddleseg/models/layers/pyramid_pool.py +0 -182
  1250. paddlex/paddleseg/models/losses/__init__.py +0 -27
  1251. paddlex/paddleseg/models/losses/binary_cross_entropy_loss.py +0 -174
  1252. paddlex/paddleseg/models/losses/bootstrapped_cross_entropy.py +0 -73
  1253. paddlex/paddleseg/models/losses/cross_entropy_loss.py +0 -94
  1254. paddlex/paddleseg/models/losses/decoupledsegnet_relax_boundary_loss.py +0 -129
  1255. paddlex/paddleseg/models/losses/dice_loss.py +0 -61
  1256. paddlex/paddleseg/models/losses/edge_attention_loss.py +0 -78
  1257. paddlex/paddleseg/models/losses/gscnn_dual_task_loss.py +0 -141
  1258. paddlex/paddleseg/models/losses/l1_loss.py +0 -76
  1259. paddlex/paddleseg/models/losses/lovasz_loss.py +0 -222
  1260. paddlex/paddleseg/models/losses/mean_square_error_loss.py +0 -65
  1261. paddlex/paddleseg/models/losses/mixed_loss.py +0 -58
  1262. paddlex/paddleseg/models/losses/ohem_cross_entropy_loss.py +0 -99
  1263. paddlex/paddleseg/models/losses/ohem_edge_attention_loss.py +0 -114
  1264. paddlex/paddleseg/models/ocrnet.py +0 -248
  1265. paddlex/paddleseg/models/pspnet.py +0 -147
  1266. paddlex/paddleseg/models/sfnet.py +0 -236
  1267. paddlex/paddleseg/models/shufflenet_slim.py +0 -268
  1268. paddlex/paddleseg/models/u2net.py +0 -574
  1269. paddlex/paddleseg/models/unet.py +0 -155
  1270. paddlex/paddleseg/models/unet_3plus.py +0 -316
  1271. paddlex/paddleseg/models/unet_plusplus.py +0 -237
  1272. paddlex/paddleseg/transforms/__init__.py +0 -16
  1273. paddlex/paddleseg/transforms/functional.py +0 -161
  1274. paddlex/paddleseg/transforms/transforms.py +0 -937
  1275. paddlex/paddleseg/utils/__init__.py +0 -22
  1276. paddlex/paddleseg/utils/config_check.py +0 -60
  1277. paddlex/paddleseg/utils/download.py +0 -163
  1278. paddlex/paddleseg/utils/env/__init__.py +0 -16
  1279. paddlex/paddleseg/utils/env/seg_env.py +0 -56
  1280. paddlex/paddleseg/utils/env/sys_env.py +0 -122
  1281. paddlex/paddleseg/utils/logger.py +0 -48
  1282. paddlex/paddleseg/utils/metrics.py +0 -146
  1283. paddlex/paddleseg/utils/progbar.py +0 -212
  1284. paddlex/paddleseg/utils/timer.py +0 -53
  1285. paddlex/paddleseg/utils/utils.py +0 -120
  1286. paddlex/paddleseg/utils/visualize.py +0 -90
  1287. paddlex/ppcls/__init__.py +0 -20
  1288. paddlex/ppcls/data/__init__.py +0 -15
  1289. paddlex/ppcls/data/imaug/__init__.py +0 -94
  1290. paddlex/ppcls/data/imaug/autoaugment.py +0 -264
  1291. paddlex/ppcls/data/imaug/batch_operators.py +0 -117
  1292. paddlex/ppcls/data/imaug/cutout.py +0 -41
  1293. paddlex/ppcls/data/imaug/fmix.py +0 -217
  1294. paddlex/ppcls/data/imaug/grid.py +0 -89
  1295. paddlex/ppcls/data/imaug/hide_and_seek.py +0 -44
  1296. paddlex/ppcls/data/imaug/operators.py +0 -256
  1297. paddlex/ppcls/data/imaug/randaugment.py +0 -106
  1298. paddlex/ppcls/data/imaug/random_erasing.py +0 -55
  1299. paddlex/ppcls/data/reader.py +0 -318
  1300. paddlex/ppcls/modeling/__init__.py +0 -20
  1301. paddlex/ppcls/modeling/architectures/__init__.py +0 -51
  1302. paddlex/ppcls/modeling/architectures/alexnet.py +0 -132
  1303. paddlex/ppcls/modeling/architectures/darknet.py +0 -161
  1304. paddlex/ppcls/modeling/architectures/densenet.py +0 -308
  1305. paddlex/ppcls/modeling/architectures/distillation_models.py +0 -65
  1306. paddlex/ppcls/modeling/architectures/distilled_vision_transformer.py +0 -196
  1307. paddlex/ppcls/modeling/architectures/dpn.py +0 -425
  1308. paddlex/ppcls/modeling/architectures/efficientnet.py +0 -901
  1309. paddlex/ppcls/modeling/architectures/ghostnet.py +0 -331
  1310. paddlex/ppcls/modeling/architectures/googlenet.py +0 -207
  1311. paddlex/ppcls/modeling/architectures/hrnet.py +0 -742
  1312. paddlex/ppcls/modeling/architectures/inception_v3.py +0 -541
  1313. paddlex/ppcls/modeling/architectures/inception_v4.py +0 -455
  1314. paddlex/ppcls/modeling/architectures/mixnet.py +0 -782
  1315. paddlex/ppcls/modeling/architectures/mobilenet_v1.py +0 -266
  1316. paddlex/ppcls/modeling/architectures/mobilenet_v2.py +0 -248
  1317. paddlex/ppcls/modeling/architectures/mobilenet_v3.py +0 -359
  1318. paddlex/ppcls/modeling/architectures/regnet.py +0 -383
  1319. paddlex/ppcls/modeling/architectures/repvgg.py +0 -339
  1320. paddlex/ppcls/modeling/architectures/res2net.py +0 -272
  1321. paddlex/ppcls/modeling/architectures/res2net_vd.py +0 -295
  1322. paddlex/ppcls/modeling/architectures/resnest.py +0 -705
  1323. paddlex/ppcls/modeling/architectures/resnet.py +0 -317
  1324. paddlex/ppcls/modeling/architectures/resnet_vc.py +0 -309
  1325. paddlex/ppcls/modeling/architectures/resnet_vd.py +0 -354
  1326. paddlex/ppcls/modeling/architectures/resnext.py +0 -259
  1327. paddlex/ppcls/modeling/architectures/resnext101_wsl.py +0 -447
  1328. paddlex/ppcls/modeling/architectures/resnext_vd.py +0 -266
  1329. paddlex/ppcls/modeling/architectures/rexnet.py +0 -240
  1330. paddlex/ppcls/modeling/architectures/se_resnet_vd.py +0 -378
  1331. paddlex/ppcls/modeling/architectures/se_resnext.py +0 -290
  1332. paddlex/ppcls/modeling/architectures/se_resnext_vd.py +0 -285
  1333. paddlex/ppcls/modeling/architectures/shufflenet_v2.py +0 -320
  1334. paddlex/ppcls/modeling/architectures/squeezenet.py +0 -154
  1335. paddlex/ppcls/modeling/architectures/vgg.py +0 -152
  1336. paddlex/ppcls/modeling/architectures/vision_transformer.py +0 -402
  1337. paddlex/ppcls/modeling/architectures/xception.py +0 -345
  1338. paddlex/ppcls/modeling/architectures/xception_deeplab.py +0 -386
  1339. paddlex/ppcls/modeling/loss.py +0 -158
  1340. paddlex/ppcls/modeling/utils.py +0 -53
  1341. paddlex/ppcls/optimizer/__init__.py +0 -19
  1342. paddlex/ppcls/optimizer/learning_rate.py +0 -159
  1343. paddlex/ppcls/optimizer/optimizer.py +0 -165
  1344. paddlex/ppcls/utils/__init__.py +0 -27
  1345. paddlex/ppcls/utils/check.py +0 -151
  1346. paddlex/ppcls/utils/config.py +0 -201
  1347. paddlex/ppcls/utils/logger.py +0 -120
  1348. paddlex/ppcls/utils/metrics.py +0 -112
  1349. paddlex/ppcls/utils/misc.py +0 -62
  1350. paddlex/ppcls/utils/model_zoo.py +0 -213
  1351. paddlex/ppcls/utils/save_load.py +0 -163
  1352. paddlex/ppdet/__init__.py +0 -16
  1353. paddlex/ppdet/core/__init__.py +0 -15
  1354. paddlex/ppdet/core/config/__init__.py +0 -13
  1355. paddlex/ppdet/core/config/schema.py +0 -248
  1356. paddlex/ppdet/core/config/yaml_helpers.py +0 -118
  1357. paddlex/ppdet/core/workspace.py +0 -279
  1358. paddlex/ppdet/data/__init__.py +0 -21
  1359. paddlex/ppdet/data/reader.py +0 -304
  1360. paddlex/ppdet/data/shm_utils.py +0 -67
  1361. paddlex/ppdet/data/source/__init__.py +0 -27
  1362. paddlex/ppdet/data/source/category.py +0 -823
  1363. paddlex/ppdet/data/source/coco.py +0 -243
  1364. paddlex/ppdet/data/source/dataset.py +0 -192
  1365. paddlex/ppdet/data/source/keypoint_coco.py +0 -656
  1366. paddlex/ppdet/data/source/mot.py +0 -360
  1367. paddlex/ppdet/data/source/voc.py +0 -204
  1368. paddlex/ppdet/data/source/widerface.py +0 -180
  1369. paddlex/ppdet/data/transform/__init__.py +0 -28
  1370. paddlex/ppdet/data/transform/autoaugment_utils.py +0 -1593
  1371. paddlex/ppdet/data/transform/batch_operators.py +0 -758
  1372. paddlex/ppdet/data/transform/gridmask_utils.py +0 -83
  1373. paddlex/ppdet/data/transform/keypoint_operators.py +0 -665
  1374. paddlex/ppdet/data/transform/mot_operators.py +0 -636
  1375. paddlex/ppdet/data/transform/op_helper.py +0 -468
  1376. paddlex/ppdet/data/transform/operators.py +0 -2103
  1377. paddlex/ppdet/engine/__init__.py +0 -29
  1378. paddlex/ppdet/engine/callbacks.py +0 -262
  1379. paddlex/ppdet/engine/env.py +0 -47
  1380. paddlex/ppdet/engine/export_utils.py +0 -118
  1381. paddlex/ppdet/engine/tracker.py +0 -425
  1382. paddlex/ppdet/engine/trainer.py +0 -535
  1383. paddlex/ppdet/metrics/__init__.py +0 -23
  1384. paddlex/ppdet/metrics/coco_utils.py +0 -184
  1385. paddlex/ppdet/metrics/json_results.py +0 -151
  1386. paddlex/ppdet/metrics/keypoint_metrics.py +0 -202
  1387. paddlex/ppdet/metrics/map_utils.py +0 -396
  1388. paddlex/ppdet/metrics/metrics.py +0 -300
  1389. paddlex/ppdet/metrics/mot_eval_utils.py +0 -192
  1390. paddlex/ppdet/metrics/mot_metrics.py +0 -184
  1391. paddlex/ppdet/metrics/widerface_utils.py +0 -393
  1392. paddlex/ppdet/model_zoo/__init__.py +0 -18
  1393. paddlex/ppdet/model_zoo/model_zoo.py +0 -86
  1394. paddlex/ppdet/model_zoo/tests/__init__.py +0 -13
  1395. paddlex/ppdet/model_zoo/tests/test_get_model.py +0 -48
  1396. paddlex/ppdet/model_zoo/tests/test_list_model.py +0 -68
  1397. paddlex/ppdet/modeling/__init__.py +0 -41
  1398. paddlex/ppdet/modeling/architectures/__init__.py +0 -40
  1399. paddlex/ppdet/modeling/architectures/cascade_rcnn.py +0 -144
  1400. paddlex/ppdet/modeling/architectures/centernet.py +0 -103
  1401. paddlex/ppdet/modeling/architectures/deepsort.py +0 -111
  1402. paddlex/ppdet/modeling/architectures/fairmot.py +0 -107
  1403. paddlex/ppdet/modeling/architectures/faster_rcnn.py +0 -106
  1404. paddlex/ppdet/modeling/architectures/fcos.py +0 -105
  1405. paddlex/ppdet/modeling/architectures/jde.py +0 -125
  1406. paddlex/ppdet/modeling/architectures/keypoint_hrhrnet.py +0 -286
  1407. paddlex/ppdet/modeling/architectures/keypoint_hrnet.py +0 -203
  1408. paddlex/ppdet/modeling/architectures/mask_rcnn.py +0 -135
  1409. paddlex/ppdet/modeling/architectures/meta_arch.py +0 -45
  1410. paddlex/ppdet/modeling/architectures/s2anet.py +0 -103
  1411. paddlex/ppdet/modeling/architectures/solov2.py +0 -110
  1412. paddlex/ppdet/modeling/architectures/ssd.py +0 -84
  1413. paddlex/ppdet/modeling/architectures/ttfnet.py +0 -98
  1414. paddlex/ppdet/modeling/architectures/yolo.py +0 -104
  1415. paddlex/ppdet/modeling/backbones/__init__.py +0 -37
  1416. paddlex/ppdet/modeling/backbones/blazenet.py +0 -322
  1417. paddlex/ppdet/modeling/backbones/darknet.py +0 -341
  1418. paddlex/ppdet/modeling/backbones/dla.py +0 -244
  1419. paddlex/ppdet/modeling/backbones/ghostnet.py +0 -476
  1420. paddlex/ppdet/modeling/backbones/hrnet.py +0 -724
  1421. paddlex/ppdet/modeling/backbones/mobilenet_v1.py +0 -410
  1422. paddlex/ppdet/modeling/backbones/mobilenet_v3.py +0 -497
  1423. paddlex/ppdet/modeling/backbones/name_adapter.py +0 -69
  1424. paddlex/ppdet/modeling/backbones/res2net.py +0 -358
  1425. paddlex/ppdet/modeling/backbones/resnet.py +0 -606
  1426. paddlex/ppdet/modeling/backbones/senet.py +0 -140
  1427. paddlex/ppdet/modeling/backbones/vgg.py +0 -216
  1428. paddlex/ppdet/modeling/bbox_utils.py +0 -464
  1429. paddlex/ppdet/modeling/heads/__init__.py +0 -41
  1430. paddlex/ppdet/modeling/heads/bbox_head.py +0 -379
  1431. paddlex/ppdet/modeling/heads/cascade_head.py +0 -285
  1432. paddlex/ppdet/modeling/heads/centernet_head.py +0 -194
  1433. paddlex/ppdet/modeling/heads/face_head.py +0 -113
  1434. paddlex/ppdet/modeling/heads/fcos_head.py +0 -270
  1435. paddlex/ppdet/modeling/heads/keypoint_hrhrnet_head.py +0 -108
  1436. paddlex/ppdet/modeling/heads/mask_head.py +0 -253
  1437. paddlex/ppdet/modeling/heads/roi_extractor.py +0 -111
  1438. paddlex/ppdet/modeling/heads/s2anet_head.py +0 -845
  1439. paddlex/ppdet/modeling/heads/solov2_head.py +0 -537
  1440. paddlex/ppdet/modeling/heads/ssd_head.py +0 -175
  1441. paddlex/ppdet/modeling/heads/ttf_head.py +0 -314
  1442. paddlex/ppdet/modeling/heads/yolo_head.py +0 -124
  1443. paddlex/ppdet/modeling/keypoint_utils.py +0 -302
  1444. paddlex/ppdet/modeling/layers.py +0 -1142
  1445. paddlex/ppdet/modeling/losses/__init__.py +0 -35
  1446. paddlex/ppdet/modeling/losses/ctfocal_loss.py +0 -67
  1447. paddlex/ppdet/modeling/losses/fairmot_loss.py +0 -41
  1448. paddlex/ppdet/modeling/losses/fcos_loss.py +0 -225
  1449. paddlex/ppdet/modeling/losses/iou_aware_loss.py +0 -48
  1450. paddlex/ppdet/modeling/losses/iou_loss.py +0 -210
  1451. paddlex/ppdet/modeling/losses/jde_loss.py +0 -182
  1452. paddlex/ppdet/modeling/losses/keypoint_loss.py +0 -228
  1453. paddlex/ppdet/modeling/losses/solov2_loss.py +0 -101
  1454. paddlex/ppdet/modeling/losses/ssd_loss.py +0 -163
  1455. paddlex/ppdet/modeling/losses/yolo_loss.py +0 -212
  1456. paddlex/ppdet/modeling/mot/__init__.py +0 -25
  1457. paddlex/ppdet/modeling/mot/matching/__init__.py +0 -19
  1458. paddlex/ppdet/modeling/mot/matching/deepsort_matching.py +0 -382
  1459. paddlex/ppdet/modeling/mot/matching/jde_matching.py +0 -145
  1460. paddlex/ppdet/modeling/mot/motion/__init__.py +0 -17
  1461. paddlex/ppdet/modeling/mot/motion/kalman_filter.py +0 -270
  1462. paddlex/ppdet/modeling/mot/tracker/__init__.py +0 -23
  1463. paddlex/ppdet/modeling/mot/tracker/base_jde_tracker.py +0 -267
  1464. paddlex/ppdet/modeling/mot/tracker/base_sde_tracker.py +0 -145
  1465. paddlex/ppdet/modeling/mot/tracker/deepsort_tracker.py +0 -165
  1466. paddlex/ppdet/modeling/mot/tracker/jde_tracker.py +0 -262
  1467. paddlex/ppdet/modeling/mot/utils.py +0 -181
  1468. paddlex/ppdet/modeling/mot/visualization.py +0 -130
  1469. paddlex/ppdet/modeling/necks/__init__.py +0 -25
  1470. paddlex/ppdet/modeling/necks/centernet_fpn.py +0 -185
  1471. paddlex/ppdet/modeling/necks/fpn.py +0 -233
  1472. paddlex/ppdet/modeling/necks/hrfpn.py +0 -131
  1473. paddlex/ppdet/modeling/necks/ttf_fpn.py +0 -243
  1474. paddlex/ppdet/modeling/necks/yolo_fpn.py +0 -1034
  1475. paddlex/ppdet/modeling/ops.py +0 -1599
  1476. paddlex/ppdet/modeling/post_process.py +0 -449
  1477. paddlex/ppdet/modeling/proposal_generator/__init__.py +0 -2
  1478. paddlex/ppdet/modeling/proposal_generator/anchor_generator.py +0 -135
  1479. paddlex/ppdet/modeling/proposal_generator/proposal_generator.py +0 -81
  1480. paddlex/ppdet/modeling/proposal_generator/rpn_head.py +0 -269
  1481. paddlex/ppdet/modeling/proposal_generator/target.py +0 -671
  1482. paddlex/ppdet/modeling/proposal_generator/target_layer.py +0 -476
  1483. paddlex/ppdet/modeling/reid/__init__.py +0 -23
  1484. paddlex/ppdet/modeling/reid/fairmot_embedding_head.py +0 -117
  1485. paddlex/ppdet/modeling/reid/jde_embedding_head.py +0 -189
  1486. paddlex/ppdet/modeling/reid/pyramidal_embedding.py +0 -151
  1487. paddlex/ppdet/modeling/reid/resnet.py +0 -320
  1488. paddlex/ppdet/modeling/shape_spec.py +0 -33
  1489. paddlex/ppdet/modeling/tests/__init__.py +0 -13
  1490. paddlex/ppdet/modeling/tests/test_architectures.py +0 -59
  1491. paddlex/ppdet/modeling/tests/test_base.py +0 -75
  1492. paddlex/ppdet/modeling/tests/test_ops.py +0 -839
  1493. paddlex/ppdet/modeling/tests/test_yolov3_loss.py +0 -420
  1494. paddlex/ppdet/optimizer.py +0 -285
  1495. paddlex/ppdet/slim/__init__.py +0 -62
  1496. paddlex/ppdet/slim/distill.py +0 -111
  1497. paddlex/ppdet/slim/prune.py +0 -85
  1498. paddlex/ppdet/slim/quant.py +0 -52
  1499. paddlex/ppdet/utils/__init__.py +0 -13
  1500. paddlex/ppdet/utils/check.py +0 -93
  1501. paddlex/ppdet/utils/checkpoint.py +0 -216
  1502. paddlex/ppdet/utils/cli.py +0 -151
  1503. paddlex/ppdet/utils/colormap.py +0 -56
  1504. paddlex/ppdet/utils/download.py +0 -477
  1505. paddlex/ppdet/utils/logger.py +0 -71
  1506. paddlex/ppdet/utils/stats.py +0 -95
  1507. paddlex/ppdet/utils/visualizer.py +0 -292
  1508. paddlex/ppdet/utils/voc_utils.py +0 -87
  1509. paddlex/seg.py +0 -38
  1510. paddlex/tools/__init__.py +0 -16
  1511. paddlex/tools/convert.py +0 -52
  1512. paddlex/tools/dataset_conversion/__init__.py +0 -24
  1513. paddlex/tools/dataset_conversion/x2coco.py +0 -379
  1514. paddlex/tools/dataset_conversion/x2imagenet.py +0 -82
  1515. paddlex/tools/dataset_conversion/x2seg.py +0 -343
  1516. paddlex/tools/dataset_conversion/x2voc.py +0 -230
  1517. paddlex/tools/dataset_split/__init__.py +0 -23
  1518. paddlex/tools/dataset_split/coco_split.py +0 -69
  1519. paddlex/tools/dataset_split/imagenet_split.py +0 -75
  1520. paddlex/tools/dataset_split/seg_split.py +0 -96
  1521. paddlex/tools/dataset_split/utils.py +0 -75
  1522. paddlex/tools/dataset_split/voc_split.py +0 -91
  1523. paddlex/tools/split.py +0 -41
  1524. paddlex/utils/checkpoint.py +0 -439
  1525. paddlex/utils/shm.py +0 -67
  1526. paddlex/utils/stats.py +0 -68
  1527. paddlex/utils/utils.py +0 -140
  1528. paddlex-2.0.0rc4.dist-info/LICENSE +0 -201
  1529. paddlex-2.0.0rc4.dist-info/METADATA +0 -29
  1530. paddlex-2.0.0rc4.dist-info/RECORD +0 -445
  1531. paddlex-2.0.0rc4.dist-info/WHEEL +0 -5
  1532. paddlex-2.0.0rc4.dist-info/entry_points.txt +0 -3
  1533. paddlex-2.0.0rc4.dist-info/top_level.txt +0 -2
@@ -0,0 +1,1395 @@
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 math
16
+ import re
17
+ from typing import Any, Dict, List, Optional, Tuple, Union
18
+
19
+ import numpy as np
20
+
21
+ from ....utils import logging
22
+ from ....utils.deps import (
23
+ function_requires_deps,
24
+ is_dep_available,
25
+ pipeline_requires_extra,
26
+ )
27
+ from ...common.batch_sampler import ImageBatchSampler
28
+ from ...common.reader import ReadImage
29
+ from ...models.object_detection.result import DetResult
30
+ from ...utils.hpi import HPIConfig
31
+ from ...utils.pp_option import PaddlePredictorOption
32
+ from .._parallel import AutoParallelImageSimpleInferencePipeline
33
+ from ..base import BasePipeline
34
+ from ..components import CropByBoxes
35
+ from ..doc_preprocessor.result import DocPreprocessorResult
36
+ from ..layout_parsing.utils import get_sub_regions_ocr_res
37
+ from ..ocr.result import OCRResult
38
+ from .result import SingleTableRecognitionResult, TableRecognitionResult
39
+ from .table_recognition_post_processing import (
40
+ get_table_recognition_res as get_table_recognition_res_e2e,
41
+ )
42
+ from .table_recognition_post_processing_v2 import get_table_recognition_res
43
+ from .utils import get_neighbor_boxes_idx
44
+
45
+ if is_dep_available("scikit-learn"):
46
+ from sklearn.cluster import KMeans
47
+
48
+
49
+ class _TableRecognitionPipelineV2(BasePipeline):
50
+ """Table Recognition Pipeline"""
51
+
52
+ def __init__(
53
+ self,
54
+ config: Dict,
55
+ device: str = None,
56
+ pp_option: PaddlePredictorOption = None,
57
+ use_hpip: bool = False,
58
+ hpi_config: Optional[Union[Dict[str, Any], HPIConfig]] = None,
59
+ ) -> None:
60
+ """Initializes the layout parsing pipeline.
61
+
62
+ Args:
63
+ config (Dict): Configuration dictionary containing various settings.
64
+ device (str, optional): Device to run the predictions on. Defaults to None.
65
+ pp_option (PaddlePredictorOption, optional): PaddlePredictor options. Defaults to None.
66
+ use_hpip (bool, optional): Whether to use the high-performance
67
+ inference plugin (HPIP) by default. Defaults to False.
68
+ hpi_config (Optional[Union[Dict[str, Any], HPIConfig]], optional):
69
+ The default high-performance inference configuration dictionary.
70
+ Defaults to None.
71
+ """
72
+
73
+ super().__init__(
74
+ device=device, pp_option=pp_option, use_hpip=use_hpip, hpi_config=hpi_config
75
+ )
76
+
77
+ self.use_doc_preprocessor = config.get("use_doc_preprocessor", True)
78
+ if self.use_doc_preprocessor:
79
+ doc_preprocessor_config = config.get("SubPipelines", {}).get(
80
+ "DocPreprocessor",
81
+ {
82
+ "pipeline_config_error": "config error for doc_preprocessor_pipeline!"
83
+ },
84
+ )
85
+ self.doc_preprocessor_pipeline = self.create_pipeline(
86
+ doc_preprocessor_config
87
+ )
88
+
89
+ self.use_layout_detection = config.get("use_layout_detection", True)
90
+ if self.use_layout_detection:
91
+ layout_det_config = config.get("SubModules", {}).get(
92
+ "LayoutDetection",
93
+ {"model_config_error": "config error for layout_det_model!"},
94
+ )
95
+ self.layout_det_model = self.create_model(layout_det_config)
96
+
97
+ table_cls_config = config.get("SubModules", {}).get(
98
+ "TableClassification",
99
+ {"model_config_error": "config error for table_classification_model!"},
100
+ )
101
+ self.table_cls_model = self.create_model(table_cls_config)
102
+
103
+ wired_table_rec_config = config.get("SubModules", {}).get(
104
+ "WiredTableStructureRecognition",
105
+ {"model_config_error": "config error for wired_table_structure_model!"},
106
+ )
107
+ self.wired_table_rec_model = self.create_model(wired_table_rec_config)
108
+
109
+ wireless_table_rec_config = config.get("SubModules", {}).get(
110
+ "WirelessTableStructureRecognition",
111
+ {"model_config_error": "config error for wireless_table_structure_model!"},
112
+ )
113
+ self.wireless_table_rec_model = self.create_model(wireless_table_rec_config)
114
+
115
+ wired_table_cells_det_config = config.get("SubModules", {}).get(
116
+ "WiredTableCellsDetection",
117
+ {
118
+ "model_config_error": "config error for wired_table_cells_detection_model!"
119
+ },
120
+ )
121
+ self.wired_table_cells_detection_model = self.create_model(
122
+ wired_table_cells_det_config
123
+ )
124
+
125
+ wireless_table_cells_det_config = config.get("SubModules", {}).get(
126
+ "WirelessTableCellsDetection",
127
+ {
128
+ "model_config_error": "config error for wireless_table_cells_detection_model!"
129
+ },
130
+ )
131
+ self.wireless_table_cells_detection_model = self.create_model(
132
+ wireless_table_cells_det_config
133
+ )
134
+
135
+ self.use_ocr_model = config.get("use_ocr_model", True)
136
+ self.general_ocr_pipeline = None
137
+ if self.use_ocr_model:
138
+ general_ocr_config = config.get("SubPipelines", {}).get(
139
+ "GeneralOCR",
140
+ {"pipeline_config_error": "config error for general_ocr_pipeline!"},
141
+ )
142
+ self.general_ocr_pipeline = self.create_pipeline(general_ocr_config)
143
+ else:
144
+ self.general_ocr_config_bak = config.get("SubPipelines", {}).get(
145
+ "GeneralOCR", None
146
+ )
147
+
148
+ self.table_orientation_classify_model = None
149
+ self.table_orientation_classify_config = config.get("SubModules", {}).get(
150
+ "TableOrientationClassify", None
151
+ )
152
+
153
+ self._crop_by_boxes = CropByBoxes()
154
+ self.batch_sampler = ImageBatchSampler(batch_size=1)
155
+ self.img_reader = ReadImage(format="BGR")
156
+
157
+ def get_model_settings(
158
+ self,
159
+ use_doc_orientation_classify: Optional[bool],
160
+ use_doc_unwarping: Optional[bool],
161
+ use_layout_detection: Optional[bool],
162
+ use_ocr_model: Optional[bool],
163
+ ) -> dict:
164
+ """
165
+ Get the model settings based on the provided parameters or default values.
166
+
167
+ Args:
168
+ use_doc_orientation_classify (Optional[bool]): Whether to use document orientation classification.
169
+ use_doc_unwarping (Optional[bool]): Whether to use document unwarping.
170
+ use_layout_detection (Optional[bool]): Whether to use layout detection.
171
+ use_ocr_model (Optional[bool]): Whether to use OCR model.
172
+
173
+ Returns:
174
+ dict: A dictionary containing the model settings.
175
+ """
176
+ if use_doc_orientation_classify is None and use_doc_unwarping is None:
177
+ use_doc_preprocessor = self.use_doc_preprocessor
178
+ else:
179
+ if use_doc_orientation_classify is True or use_doc_unwarping is True:
180
+ use_doc_preprocessor = True
181
+ else:
182
+ use_doc_preprocessor = False
183
+
184
+ if use_layout_detection is None:
185
+ use_layout_detection = self.use_layout_detection
186
+
187
+ if use_ocr_model is None:
188
+ use_ocr_model = self.use_ocr_model
189
+
190
+ return dict(
191
+ use_doc_preprocessor=use_doc_preprocessor,
192
+ use_layout_detection=use_layout_detection,
193
+ use_ocr_model=use_ocr_model,
194
+ )
195
+
196
+ def check_model_settings_valid(
197
+ self,
198
+ model_settings: Dict,
199
+ overall_ocr_res: OCRResult,
200
+ layout_det_res: DetResult,
201
+ ) -> bool:
202
+ """
203
+ Check if the input parameters are valid based on the initialized models.
204
+
205
+ Args:
206
+ model_settings (Dict): A dictionary containing input parameters.
207
+ overall_ocr_res (OCRResult): Overall OCR result obtained after running the OCR pipeline.
208
+ The overall OCR result with convert_points_to_boxes information.
209
+ layout_det_res (DetResult): The layout detection result.
210
+ Returns:
211
+ bool: True if all required models are initialized according to input parameters, False otherwise.
212
+ """
213
+
214
+ if model_settings["use_doc_preprocessor"] and not self.use_doc_preprocessor:
215
+ logging.error(
216
+ "Set use_doc_preprocessor, but the models for doc preprocessor are not initialized."
217
+ )
218
+ return False
219
+
220
+ if model_settings["use_layout_detection"]:
221
+ if layout_det_res is not None:
222
+ logging.error(
223
+ "The layout detection model has already been initialized, please set use_layout_detection=False"
224
+ )
225
+ return False
226
+
227
+ if not self.use_layout_detection:
228
+ logging.error(
229
+ "Set use_layout_detection, but the models for layout detection are not initialized."
230
+ )
231
+ return False
232
+
233
+ if model_settings["use_ocr_model"]:
234
+ if overall_ocr_res is not None:
235
+ logging.error(
236
+ "The OCR models have already been initialized, please set use_ocr_model=False"
237
+ )
238
+ return False
239
+
240
+ if not self.use_ocr_model:
241
+ logging.error(
242
+ "Set use_ocr_model, but the models for OCR are not initialized."
243
+ )
244
+ return False
245
+ else:
246
+ if overall_ocr_res is None:
247
+ logging.error("Set use_ocr_model=False, but no OCR results were found.")
248
+ return False
249
+ return True
250
+
251
+ def predict_doc_preprocessor_res(
252
+ self, image_array: np.ndarray, input_params: dict
253
+ ) -> Tuple[DocPreprocessorResult, np.ndarray]:
254
+ """
255
+ Preprocess the document image based on input parameters.
256
+
257
+ Args:
258
+ image_array (np.ndarray): The input image array.
259
+ input_params (dict): Dictionary containing preprocessing parameters.
260
+
261
+ Returns:
262
+ tuple[DocPreprocessorResult, np.ndarray]: A tuple containing the preprocessing
263
+ result dictionary and the processed image array.
264
+ """
265
+ if input_params["use_doc_preprocessor"]:
266
+ use_doc_orientation_classify = input_params["use_doc_orientation_classify"]
267
+ use_doc_unwarping = input_params["use_doc_unwarping"]
268
+ doc_preprocessor_res = next(
269
+ self.doc_preprocessor_pipeline(
270
+ image_array,
271
+ use_doc_orientation_classify=use_doc_orientation_classify,
272
+ use_doc_unwarping=use_doc_unwarping,
273
+ )
274
+ )
275
+ doc_preprocessor_image = doc_preprocessor_res["output_img"]
276
+ else:
277
+ doc_preprocessor_res = {}
278
+ doc_preprocessor_image = image_array
279
+ return doc_preprocessor_res, doc_preprocessor_image
280
+
281
+ def extract_results(self, pred, task):
282
+ if task == "cls":
283
+ return pred["label_names"][np.argmax(pred["scores"])]
284
+ elif task == "det":
285
+ threshold = 0.0
286
+ result = []
287
+ cell_score = []
288
+ if "boxes" in pred and isinstance(pred["boxes"], list):
289
+ for box in pred["boxes"]:
290
+ if isinstance(box, dict) and "score" in box and "coordinate" in box:
291
+ score = box["score"]
292
+ coordinate = box["coordinate"]
293
+ if isinstance(score, float) and score > threshold:
294
+ result.append(coordinate)
295
+ cell_score.append(score)
296
+ return result, cell_score
297
+ elif task == "table_stru":
298
+ return pred["structure"]
299
+ else:
300
+ return None
301
+
302
+ def cells_det_results_nms(
303
+ self, cells_det_results, cells_det_scores, cells_det_threshold=0.3
304
+ ):
305
+ """
306
+ Apply Non-Maximum Suppression (NMS) on detection results to remove redundant overlapping bounding boxes.
307
+
308
+ Args:
309
+ cells_det_results (list): List of bounding boxes, each box is in format [x1, y1, x2, y2].
310
+ cells_det_scores (list): List of confidence scores corresponding to the bounding boxes.
311
+ cells_det_threshold (float): IoU threshold for suppression. Boxes with IoU greater than this threshold
312
+ will be suppressed. Default is 0.5.
313
+
314
+ Returns:
315
+ Tuple[list, list]: A tuple containing the list of bounding boxes and confidence scores after NMS,
316
+ while maintaining one-to-one correspondence.
317
+ """
318
+ # Convert lists to numpy arrays for efficient computation
319
+ boxes = np.array(cells_det_results)
320
+ scores = np.array(cells_det_scores)
321
+ # Initialize list for picked indices
322
+ picked_indices = []
323
+ # Get coordinates of bounding boxes
324
+ x1 = boxes[:, 0]
325
+ y1 = boxes[:, 1]
326
+ x2 = boxes[:, 2]
327
+ y2 = boxes[:, 3]
328
+ # Compute the area of the bounding boxes
329
+ areas = (x2 - x1) * (y2 - y1)
330
+ # Sort the bounding boxes by the confidence scores in descending order
331
+ order = scores.argsort()[::-1]
332
+ # Process the boxes
333
+ while order.size > 0:
334
+ # Index of the current highest score box
335
+ i = order[0]
336
+ picked_indices.append(i)
337
+ # Compute IoU between the highest score box and the rest
338
+ xx1 = np.maximum(x1[i], x1[order[1:]])
339
+ yy1 = np.maximum(y1[i], y1[order[1:]])
340
+ xx2 = np.minimum(x2[i], x2[order[1:]])
341
+ yy2 = np.minimum(y2[i], y2[order[1:]])
342
+ # Compute the width and height of the overlapping area
343
+ w = np.maximum(0.0, xx2 - xx1)
344
+ h = np.maximum(0.0, yy2 - yy1)
345
+ # Compute the ratio of overlap (IoU)
346
+ inter = w * h
347
+ ovr = inter / (areas[i] + areas[order[1:]] - inter)
348
+ # Indices of boxes with IoU less than threshold
349
+ inds = np.where(ovr <= cells_det_threshold)[0]
350
+ # Update order, only keep boxes with IoU less than threshold
351
+ order = order[
352
+ inds + 1
353
+ ] # inds shifted by 1 because order[0] is the current box
354
+ # Select the boxes and scores based on picked indices
355
+ final_boxes = boxes[picked_indices].tolist()
356
+ final_scores = scores[picked_indices].tolist()
357
+ return final_boxes, final_scores
358
+
359
+ def get_region_ocr_det_boxes(self, ocr_det_boxes, table_box):
360
+ """Adjust the coordinates of ocr_det_boxes that are fully inside table_box relative to table_box.
361
+
362
+ Args:
363
+ ocr_det_boxes (list of list): List of bounding boxes [x1, y1, x2, y2] in the original image.
364
+ table_box (list): Bounding box [x1, y1, x2, y2] of the target region in the original image.
365
+
366
+ Returns:
367
+ list of list: List of adjusted bounding boxes relative to table_box, for boxes fully inside table_box.
368
+ """
369
+ tol = 0
370
+ # Extract coordinates from table_box
371
+ x_min_t, y_min_t, x_max_t, y_max_t = table_box
372
+ adjusted_boxes = []
373
+ for box in ocr_det_boxes:
374
+ x_min_b, y_min_b, x_max_b, y_max_b = box
375
+ # Check if the box is fully inside table_box
376
+ if (
377
+ x_min_b + tol >= x_min_t
378
+ and y_min_b + tol >= y_min_t
379
+ and x_max_b - tol <= x_max_t
380
+ and y_max_b - tol <= y_max_t
381
+ ):
382
+ # Adjust the coordinates to be relative to table_box
383
+ adjusted_box = [
384
+ x_min_b - x_min_t, # Adjust x1
385
+ y_min_b - y_min_t, # Adjust y1
386
+ x_max_b - x_min_t, # Adjust x2
387
+ y_max_b - y_min_t, # Adjust y2
388
+ ]
389
+ adjusted_boxes.append(adjusted_box)
390
+ # Discard boxes not fully inside table_box
391
+ return adjusted_boxes
392
+
393
+ def cells_det_results_reprocessing(
394
+ self, cells_det_results, cells_det_scores, ocr_det_results, html_pred_boxes_nums
395
+ ):
396
+ """
397
+ Process and filter cells_det_results based on ocr_det_results and html_pred_boxes_nums.
398
+
399
+ Args:
400
+ cells_det_results (List[List[float]]): List of detected cell rectangles [[x1, y1, x2, y2], ...].
401
+ cells_det_scores (List[float]): List of confidence scores for each rectangle in cells_det_results.
402
+ ocr_det_results (List[List[float]]): List of OCR detected rectangles [[x1, y1, x2, y2], ...].
403
+ html_pred_boxes_nums (int): The desired number of rectangles in the final output.
404
+
405
+ Returns:
406
+ List[List[float]]: The processed list of rectangles.
407
+ """
408
+
409
+ # Function to compute IoU between two rectangles
410
+ def compute_iou(box1, box2):
411
+ """
412
+ Compute the Intersection over Union (IoU) between two rectangles.
413
+
414
+ Args:
415
+ box1 (array-like): [x1, y1, x2, y2] of the first rectangle.
416
+ box2 (array-like): [x1, y1, x2, y2] of the second rectangle.
417
+
418
+ Returns:
419
+ float: The IoU between the two rectangles.
420
+ """
421
+ # Determine the coordinates of the intersection rectangle
422
+ x_left = max(box1[0], box2[0])
423
+ y_top = max(box1[1], box2[1])
424
+ x_right = min(box1[2], box2[2])
425
+ y_bottom = min(box1[3], box2[3])
426
+ if x_right <= x_left or y_bottom <= y_top:
427
+ return 0.0
428
+ # Calculate the area of intersection rectangle
429
+ intersection_area = (x_right - x_left) * (y_bottom - y_top)
430
+ # Calculate the area of both rectangles
431
+ box1_area = (box1[2] - box1[0]) * (box1[3] - box1[1])
432
+ (box2[2] - box2[0]) * (box2[3] - box2[1])
433
+ # Calculate the IoU
434
+ iou = intersection_area / float(box1_area)
435
+ return iou
436
+
437
+ # Function to combine rectangles into N rectangles
438
+ @function_requires_deps("scikit-learn")
439
+ def combine_rectangles(rectangles, N):
440
+ """
441
+ Combine rectangles into N rectangles based on geometric proximity.
442
+
443
+ Args:
444
+ rectangles (list of list of int): A list of rectangles, each represented by [x1, y1, x2, y2].
445
+ N (int): The desired number of combined rectangles.
446
+
447
+ Returns:
448
+ list of list of int: A list of N combined rectangles.
449
+ """
450
+ # Number of input rectangles
451
+ num_rects = len(rectangles)
452
+ # If N is greater than or equal to the number of rectangles, return the original rectangles
453
+ if N >= num_rects:
454
+ return rectangles
455
+ # Compute the center points of the rectangles
456
+ centers = np.array(
457
+ [
458
+ [
459
+ (rect[0] + rect[2]) / 2, # Center x-coordinate
460
+ (rect[1] + rect[3]) / 2, # Center y-coordinate
461
+ ]
462
+ for rect in rectangles
463
+ ]
464
+ )
465
+ # Perform KMeans clustering on the center points to group them into N clusters
466
+ kmeans = KMeans(n_clusters=N, random_state=0, n_init="auto")
467
+ labels = kmeans.fit_predict(centers)
468
+ # Initialize a list to store the combined rectangles
469
+ combined_rectangles = []
470
+ # For each cluster, compute the minimal bounding rectangle that covers all rectangles in the cluster
471
+ for i in range(N):
472
+ # Get the indices of rectangles that belong to cluster i
473
+ indices = np.where(labels == i)[0]
474
+ if len(indices) == 0:
475
+ # If no rectangles in this cluster, skip it
476
+ continue
477
+ # Extract the rectangles in cluster i
478
+ cluster_rects = np.array([rectangles[idx] for idx in indices])
479
+ # Compute the minimal x1, y1 (top-left corner) and maximal x2, y2 (bottom-right corner)
480
+ x1_min = np.min(cluster_rects[:, 0])
481
+ y1_min = np.min(cluster_rects[:, 1])
482
+ x2_max = np.max(cluster_rects[:, 2])
483
+ y2_max = np.max(cluster_rects[:, 3])
484
+ # Append the combined rectangle to the list
485
+ combined_rectangles.append([x1_min, y1_min, x2_max, y2_max])
486
+ return combined_rectangles
487
+
488
+ # Ensure that the inputs are numpy arrays for efficient computation
489
+ cells_det_results = np.array(cells_det_results)
490
+ cells_det_scores = np.array(cells_det_scores)
491
+ ocr_det_results = np.array(ocr_det_results)
492
+ more_cells_flag = False
493
+ if len(cells_det_results) == html_pred_boxes_nums:
494
+ return cells_det_results
495
+ # Step 1: If cells_det_results has more rectangles than html_pred_boxes_nums
496
+ elif len(cells_det_results) > html_pred_boxes_nums:
497
+ more_cells_flag = True
498
+ # Select the indices of the top html_pred_boxes_nums scores
499
+ top_indices = np.argsort(-cells_det_scores)[:html_pred_boxes_nums]
500
+ # Adjust the corresponding rectangles
501
+ cells_det_results = cells_det_results[top_indices].tolist()
502
+ # Threshold for IoU
503
+ iou_threshold = 0.6
504
+ # List to store ocr_miss_boxes
505
+ ocr_miss_boxes = []
506
+ # For each rectangle in ocr_det_results
507
+ for ocr_rect in ocr_det_results:
508
+ merge_ocr_box_iou = []
509
+ # Flag to indicate if ocr_rect has IoU >= threshold with any cell_rect
510
+ has_large_iou = False
511
+ # For each rectangle in cells_det_results
512
+ for cell_rect in cells_det_results:
513
+ # Compute IoU
514
+ iou = compute_iou(ocr_rect, cell_rect)
515
+ if iou > 0:
516
+ merge_ocr_box_iou.append(iou)
517
+ if (iou >= iou_threshold) or (sum(merge_ocr_box_iou) >= iou_threshold):
518
+ has_large_iou = True
519
+ break
520
+ if not has_large_iou:
521
+ ocr_miss_boxes.append(ocr_rect)
522
+ # If no ocr_miss_boxes, return cells_det_results
523
+ if len(ocr_miss_boxes) == 0:
524
+ final_results = (
525
+ cells_det_results
526
+ if more_cells_flag == True
527
+ else cells_det_results.tolist()
528
+ )
529
+ else:
530
+ if more_cells_flag == True:
531
+ final_results = combine_rectangles(
532
+ cells_det_results + ocr_miss_boxes, html_pred_boxes_nums
533
+ )
534
+ else:
535
+ # Need to combine ocr_miss_boxes into N rectangles
536
+ N = html_pred_boxes_nums - len(cells_det_results)
537
+ # Combine ocr_miss_boxes into N rectangles
538
+ ocr_supp_boxes = combine_rectangles(ocr_miss_boxes, N)
539
+ # Combine cells_det_results and ocr_supp_boxes
540
+ final_results = np.concatenate(
541
+ (cells_det_results, ocr_supp_boxes), axis=0
542
+ ).tolist()
543
+ if len(final_results) <= 0.6 * html_pred_boxes_nums:
544
+ final_results = combine_rectangles(ocr_det_results, html_pred_boxes_nums)
545
+ return final_results
546
+
547
+ def split_ocr_bboxes_by_table_cells(
548
+ self, cells_det_results, overall_ocr_res, ori_img, k=2
549
+ ):
550
+ """
551
+ Split OCR bounding boxes based on table cell boundaries when they span multiple cells horizontally.
552
+
553
+ Args:
554
+ cells_det_results (list): List of cell bounding boxes in format [x1, y1, x2, y2]
555
+ overall_ocr_res (dict): Dictionary containing OCR results with keys:
556
+ - 'rec_boxes': OCR bounding boxes (will be converted to list)
557
+ - 'rec_texts': OCR recognized texts
558
+ ori_img (np.array): Original input image array
559
+ k (int): Threshold for determining when to split (minimum number of cells spanned)
560
+
561
+ Returns:
562
+ dict: Modified overall_ocr_res with split boxes and texts
563
+ """
564
+
565
+ def calculate_iou(box1, box2):
566
+ """
567
+ Calculate Intersection over Union (IoU) between two bounding boxes.
568
+
569
+ Args:
570
+ box1 (list): [x1, y1, x2, y2]
571
+ box2 (list): [x1, y1, x2, y2]
572
+
573
+ Returns:
574
+ float: IoU value
575
+ """
576
+ # Determine intersection coordinates
577
+ x_left = max(box1[0], box2[0])
578
+ y_top = max(box1[1], box2[1])
579
+ x_right = min(box1[2], box2[2])
580
+ y_bottom = min(box1[3], box2[3])
581
+ if x_right < x_left or y_bottom < y_top:
582
+ return 0.0
583
+ # Calculate areas
584
+ intersection_area = (x_right - x_left) * (y_bottom - y_top)
585
+ box1_area = (box1[2] - box1[0]) * (box1[3] - box1[1])
586
+ box2_area = (box2[2] - box2[0]) * (box2[3] - box2[1])
587
+ # return intersection_area / float(box1_area + box2_area - intersection_area)
588
+ return intersection_area / box2_area
589
+
590
+ def get_overlapping_cells(ocr_box, cells):
591
+ """
592
+ Find cells that overlap significantly with the OCR box (IoU > 0.5).
593
+
594
+ Args:
595
+ ocr_box (list): OCR bounding box [x1, y1, x2, y2]
596
+ cells (list): List of cell bounding boxes
597
+
598
+ Returns:
599
+ list: Indices of overlapping cells, sorted by x-coordinate
600
+ """
601
+ overlapping = []
602
+ for idx, cell in enumerate(cells):
603
+ if calculate_iou(ocr_box, cell) > 0.5:
604
+ overlapping.append(idx)
605
+ # Sort overlapping cells by their x-coordinate (left to right)
606
+ overlapping.sort(key=lambda i: cells[i][0])
607
+ return overlapping
608
+
609
+ def split_box_by_cells(ocr_box, cell_indices, cells):
610
+ """
611
+ Split OCR box vertically at cell boundaries.
612
+
613
+ Args:
614
+ ocr_box (list): Original OCR box [x1, y1, x2, y2]
615
+ cell_indices (list): Indices of cells to split by
616
+ cells (list): All cell bounding boxes
617
+
618
+ Returns:
619
+ list: List of split boxes
620
+ """
621
+ if not cell_indices:
622
+ return [ocr_box]
623
+ split_boxes = []
624
+ cells_to_split = [cells[i] for i in cell_indices]
625
+ if ocr_box[0] < cells_to_split[0][0]:
626
+ split_boxes.append(
627
+ [ocr_box[0], ocr_box[1], cells_to_split[0][0], ocr_box[3]]
628
+ )
629
+ for i in range(len(cells_to_split)):
630
+ current_cell = cells_to_split[i]
631
+ split_boxes.append(
632
+ [
633
+ max(ocr_box[0], current_cell[0]),
634
+ ocr_box[1],
635
+ min(ocr_box[2], current_cell[2]),
636
+ ocr_box[3],
637
+ ]
638
+ )
639
+ if i < len(cells_to_split) - 1:
640
+ next_cell = cells_to_split[i + 1]
641
+ if current_cell[2] < next_cell[0]:
642
+ split_boxes.append(
643
+ [current_cell[2], ocr_box[1], next_cell[0], ocr_box[3]]
644
+ )
645
+ last_cell = cells_to_split[-1]
646
+ if last_cell[2] < ocr_box[2]:
647
+ split_boxes.append([last_cell[2], ocr_box[1], ocr_box[2], ocr_box[3]])
648
+ unique_boxes = []
649
+ seen = set()
650
+ for box in split_boxes:
651
+ box_tuple = tuple(box)
652
+ if box_tuple not in seen:
653
+ seen.add(box_tuple)
654
+ unique_boxes.append(box)
655
+
656
+ return unique_boxes
657
+
658
+ # Convert OCR boxes to list if needed
659
+ if hasattr(overall_ocr_res["rec_boxes"], "tolist"):
660
+ ocr_det_results = overall_ocr_res["rec_boxes"].tolist()
661
+ else:
662
+ ocr_det_results = overall_ocr_res["rec_boxes"]
663
+ ocr_texts = overall_ocr_res["rec_texts"]
664
+
665
+ # Make copies to modify
666
+ new_boxes = []
667
+ new_texts = []
668
+
669
+ # Process each OCR box
670
+ i = 0
671
+ while i < len(ocr_det_results):
672
+ ocr_box = ocr_det_results[i]
673
+ text = ocr_texts[i]
674
+ # Find cells that significantly overlap with this OCR box
675
+ overlapping_cells = get_overlapping_cells(ocr_box, cells_det_results)
676
+ # Check if we need to split (spans >= k cells)
677
+ if len(overlapping_cells) >= k:
678
+ # Split the box at cell boundaries
679
+ split_boxes = split_box_by_cells(
680
+ ocr_box, overlapping_cells, cells_det_results
681
+ )
682
+ # Process each split box
683
+ split_texts = []
684
+ for box in split_boxes:
685
+ x1, y1, x2, y2 = int(box[0]), int(box[1]), int(box[2]), int(box[3])
686
+ if y2 - y1 > 1 and x2 - x1 > 1:
687
+ ocr_result = next(
688
+ self.general_ocr_pipeline.text_rec_model(
689
+ ori_img[y1:y2, x1:x2, :]
690
+ )
691
+ )
692
+ # Extract the recognized text from the OCR result
693
+ if "rec_text" in ocr_result:
694
+ result = ocr_result[
695
+ "rec_text"
696
+ ] # Assumes "rec_texts" contains a single string
697
+ else:
698
+ result = ""
699
+ else:
700
+ result = ""
701
+ split_texts.append(result)
702
+ # Add split boxes and texts to results
703
+ new_boxes.extend(split_boxes)
704
+ new_texts.extend(split_texts)
705
+ else:
706
+ # Keep original box and text
707
+ new_boxes.append(ocr_box)
708
+ new_texts.append(text)
709
+ i += 1
710
+
711
+ # Update the results dictionary
712
+ overall_ocr_res["rec_boxes"] = new_boxes
713
+ overall_ocr_res["rec_texts"] = new_texts
714
+
715
+ return overall_ocr_res
716
+
717
+ def gen_ocr_with_table_cells(self, ori_img, cells_bboxes):
718
+ """
719
+ Splits OCR bounding boxes by table cells and retrieves text.
720
+
721
+ Args:
722
+ ori_img (ndarray): The original image from which text regions will be extracted.
723
+ cells_bboxes (list or ndarray): Detected cell bounding boxes to extract text from.
724
+
725
+ Returns:
726
+ list: A list containing the recognized texts from each cell.
727
+ """
728
+
729
+ # Check if cells_bboxes is a list and convert it if not.
730
+ if not isinstance(cells_bboxes, list):
731
+ cells_bboxes = cells_bboxes.tolist()
732
+ texts_list = [] # Initialize a list to store the recognized texts.
733
+ # Process each bounding box provided in cells_bboxes.
734
+ for i in range(len(cells_bboxes)):
735
+ # Extract and round up the coordinates of the bounding box.
736
+ x1, y1, x2, y2 = [math.ceil(k) for k in cells_bboxes[i]]
737
+ # Perform OCR on the defined region of the image and get the recognized text.
738
+ if y2 - y1 > 1 and x2 - x1 > 1:
739
+ rec_te = next(self.general_ocr_pipeline(ori_img[y1:y2, x1:x2, :]))
740
+ # Concatenate the texts and append them to the texts_list.
741
+ texts_list.append("".join(rec_te["rec_texts"]))
742
+ # Return the list of recognized texts from each cell.
743
+ return texts_list
744
+
745
+ def map_cells_to_original_image(
746
+ self, detections, table_angle, img_width, img_height
747
+ ):
748
+ """
749
+ Map bounding boxes from the rotated image back to the original image.
750
+
751
+ Parameters:
752
+ - detections: list of numpy arrays, each containing bounding box coordinates [x1, y1, x2, y2]
753
+ - table_angle: rotation angle in degrees (90, 180, or 270)
754
+ - width_orig: width of the original image (img1)
755
+ - height_orig: height of the original image (img1)
756
+
757
+ Returns:
758
+ - mapped_detections: list of numpy arrays with mapped bounding box coordinates
759
+ """
760
+
761
+ mapped_detections = []
762
+ for i in range(len(detections)):
763
+ tbx1, tby1, tbx2, tby2 = (
764
+ detections[i][0],
765
+ detections[i][1],
766
+ detections[i][2],
767
+ detections[i][3],
768
+ )
769
+ if table_angle == "270":
770
+ new_x1, new_y1 = tby1, img_width - tbx2
771
+ new_x2, new_y2 = tby2, img_width - tbx1
772
+ elif table_angle == "180":
773
+ new_x1, new_y1 = img_width - tbx2, img_height - tby2
774
+ new_x2, new_y2 = img_width - tbx1, img_height - tby1
775
+ elif table_angle == "90":
776
+ new_x1, new_y1 = img_height - tby2, tbx1
777
+ new_x2, new_y2 = img_height - tby1, tbx2
778
+ new_box = np.array([new_x1, new_y1, new_x2, new_y2])
779
+ mapped_detections.append(new_box)
780
+ return mapped_detections
781
+
782
+ def split_string_by_keywords(self, html_string):
783
+ """
784
+ Split HTML string by keywords.
785
+
786
+ Args:
787
+ html_string (str): The HTML string.
788
+ Returns:
789
+ split_html (list): The list of html keywords.
790
+ """
791
+
792
+ keywords = [
793
+ "<thead>",
794
+ "</thead>",
795
+ "<tbody>",
796
+ "</tbody>",
797
+ "<tr>",
798
+ "</tr>",
799
+ "<td>",
800
+ "<td",
801
+ ">",
802
+ "</td>",
803
+ 'colspan="2"',
804
+ 'colspan="3"',
805
+ 'colspan="4"',
806
+ 'colspan="5"',
807
+ 'colspan="6"',
808
+ 'colspan="7"',
809
+ 'colspan="8"',
810
+ 'colspan="9"',
811
+ 'colspan="10"',
812
+ 'colspan="11"',
813
+ 'colspan="12"',
814
+ 'colspan="13"',
815
+ 'colspan="14"',
816
+ 'colspan="15"',
817
+ 'colspan="16"',
818
+ 'colspan="17"',
819
+ 'colspan="18"',
820
+ 'colspan="19"',
821
+ 'colspan="20"',
822
+ 'rowspan="2"',
823
+ 'rowspan="3"',
824
+ 'rowspan="4"',
825
+ 'rowspan="5"',
826
+ 'rowspan="6"',
827
+ 'rowspan="7"',
828
+ 'rowspan="8"',
829
+ 'rowspan="9"',
830
+ 'rowspan="10"',
831
+ 'rowspan="11"',
832
+ 'rowspan="12"',
833
+ 'rowspan="13"',
834
+ 'rowspan="14"',
835
+ 'rowspan="15"',
836
+ 'rowspan="16"',
837
+ 'rowspan="17"',
838
+ 'rowspan="18"',
839
+ 'rowspan="19"',
840
+ 'rowspan="20"',
841
+ ]
842
+ regex_pattern = "|".join(re.escape(keyword) for keyword in keywords)
843
+ split_result = re.split(f"({regex_pattern})", html_string)
844
+ split_html = [part for part in split_result if part]
845
+ return split_html
846
+
847
+ def cluster_positions(self, positions, tolerance):
848
+ if not positions:
849
+ return []
850
+ positions = sorted(set(positions))
851
+ clustered = []
852
+ current_cluster = [positions[0]]
853
+ for pos in positions[1:]:
854
+ if abs(pos - current_cluster[-1]) <= tolerance:
855
+ current_cluster.append(pos)
856
+ else:
857
+ clustered.append(sum(current_cluster) / len(current_cluster))
858
+ current_cluster = [pos]
859
+ clustered.append(sum(current_cluster) / len(current_cluster))
860
+ return clustered
861
+
862
+ def trans_cells_det_results_to_html(self, cells_det_results):
863
+ """
864
+ Trans table cells bboxes to HTML.
865
+
866
+ Args:
867
+ cells_det_results (list): The table cells detection results.
868
+ Returns:
869
+ html (list): The list of html keywords.
870
+ """
871
+
872
+ tolerance = 5
873
+ x_coords = [x for cell in cells_det_results for x in (cell[0], cell[2])]
874
+ y_coords = [y for cell in cells_det_results for y in (cell[1], cell[3])]
875
+ x_positions = self.cluster_positions(x_coords, tolerance)
876
+ y_positions = self.cluster_positions(y_coords, tolerance)
877
+ x_position_to_index = {x: i for i, x in enumerate(x_positions)}
878
+ y_position_to_index = {y: i for i, y in enumerate(y_positions)}
879
+ num_rows = len(y_positions) - 1
880
+ num_cols = len(x_positions) - 1
881
+ grid = [[None for _ in range(num_cols)] for _ in range(num_rows)]
882
+ cells_info = []
883
+ cell_index = 0
884
+ cell_map = {}
885
+ for index, cell in enumerate(cells_det_results):
886
+ x1, y1, x2, y2 = cell
887
+ x1_idx = min(
888
+ range(len(x_positions)), key=lambda i: abs(x_positions[i] - x1)
889
+ )
890
+ x2_idx = min(
891
+ range(len(x_positions)), key=lambda i: abs(x_positions[i] - x2)
892
+ )
893
+ y1_idx = min(
894
+ range(len(y_positions)), key=lambda i: abs(y_positions[i] - y1)
895
+ )
896
+ y2_idx = min(
897
+ range(len(y_positions)), key=lambda i: abs(y_positions[i] - y2)
898
+ )
899
+ col_start = min(x1_idx, x2_idx)
900
+ col_end = max(x1_idx, x2_idx)
901
+ row_start = min(y1_idx, y2_idx)
902
+ row_end = max(y1_idx, y2_idx)
903
+ rowspan = row_end - row_start
904
+ colspan = col_end - col_start
905
+ if rowspan == 0:
906
+ rowspan = 1
907
+ if colspan == 0:
908
+ colspan = 1
909
+ cells_info.append(
910
+ {
911
+ "row_start": row_start,
912
+ "col_start": col_start,
913
+ "rowspan": rowspan,
914
+ "colspan": colspan,
915
+ "content": "",
916
+ }
917
+ )
918
+ for r in range(row_start, row_start + rowspan):
919
+ for c in range(col_start, col_start + colspan):
920
+ key = (r, c)
921
+ if key in cell_map:
922
+ continue
923
+ else:
924
+ cell_map[key] = index
925
+ html = "<table><tbody>"
926
+ for r in range(num_rows):
927
+ html += "<tr>"
928
+ c = 0
929
+ while c < num_cols:
930
+ key = (r, c)
931
+ if key in cell_map:
932
+ cell_index = cell_map[key]
933
+ cell_info = cells_info[cell_index]
934
+ if cell_info["row_start"] == r and cell_info["col_start"] == c:
935
+ rowspan = cell_info["rowspan"]
936
+ colspan = cell_info["colspan"]
937
+ rowspan_attr = f' rowspan="{rowspan}"' if rowspan > 1 else ""
938
+ colspan_attr = f' colspan="{colspan}"' if colspan > 1 else ""
939
+ content = cell_info["content"]
940
+ html += f"<td{rowspan_attr}{colspan_attr}>{content}</td>"
941
+ c += cell_info["colspan"]
942
+ else:
943
+ html += "<td></td>"
944
+ c += 1
945
+ html += "</tr>"
946
+ html += "</tbody></table>"
947
+ html = self.split_string_by_keywords(html)
948
+ return html
949
+
950
+ def predict_single_table_recognition_res(
951
+ self,
952
+ image_array: np.ndarray,
953
+ overall_ocr_res: OCRResult,
954
+ table_box: list,
955
+ use_e2e_wired_table_rec_model: bool = False,
956
+ use_e2e_wireless_table_rec_model: bool = False,
957
+ use_wired_table_cells_trans_to_html: bool = False,
958
+ use_wireless_table_cells_trans_to_html: bool = False,
959
+ use_ocr_results_with_table_cells: bool = True,
960
+ flag_find_nei_text: bool = True,
961
+ ) -> SingleTableRecognitionResult:
962
+ """
963
+ Predict table recognition results from an image array, layout detection results, and OCR results.
964
+
965
+ Args:
966
+ image_array (np.ndarray): The input image represented as a numpy array.
967
+ overall_ocr_res (OCRResult): Overall OCR result obtained after running the OCR pipeline.
968
+ The overall OCR results containing text recognition information.
969
+ table_box (list): The table box coordinates.
970
+ use_e2e_wired_table_rec_model (bool): Whether to use end-to-end wired table recognition model.
971
+ use_e2e_wireless_table_rec_model (bool): Whether to use end-to-end wireless table recognition model.
972
+ use_wired_table_cells_trans_to_html (bool): Whether to use wired table cells trans to HTML.
973
+ use_wireless_table_cells_trans_to_html (bool): Whether to use wireless table cells trans to HTML.
974
+ use_ocr_results_with_table_cells (bool): Whether to use OCR results processed by table cells.
975
+ flag_find_nei_text (bool): Whether to find neighboring text.
976
+ Returns:
977
+ SingleTableRecognitionResult: single table recognition result.
978
+ """
979
+
980
+ table_cls_pred = next(self.table_cls_model(image_array))
981
+ table_cls_result = self.extract_results(table_cls_pred, "cls")
982
+ use_e2e_model = False
983
+ cells_trans_to_html = False
984
+
985
+ if table_cls_result == "wired_table":
986
+ if use_wired_table_cells_trans_to_html == True:
987
+ cells_trans_to_html = True
988
+ else:
989
+ table_structure_pred = next(self.wired_table_rec_model(image_array))
990
+ if use_e2e_wired_table_rec_model == True:
991
+ use_e2e_model = True
992
+ if cells_trans_to_html == True:
993
+ table_structure_pred = next(self.wired_table_rec_model(image_array))
994
+ else:
995
+ table_cells_pred = next(
996
+ self.wired_table_cells_detection_model(image_array, threshold=0.3)
997
+ ) # Setting the threshold to 0.3 can improve the accuracy of table cells detection.
998
+ # If you really want more or fewer table cells detection boxes, the threshold can be adjusted.
999
+ elif table_cls_result == "wireless_table":
1000
+ if use_wireless_table_cells_trans_to_html == True:
1001
+ cells_trans_to_html = True
1002
+ else:
1003
+ table_structure_pred = next(self.wireless_table_rec_model(image_array))
1004
+ if use_e2e_wireless_table_rec_model == True:
1005
+ use_e2e_model = True
1006
+ if cells_trans_to_html == True:
1007
+ table_structure_pred = next(
1008
+ self.wireless_table_rec_model(image_array)
1009
+ )
1010
+ else:
1011
+ table_cells_pred = next(
1012
+ self.wireless_table_cells_detection_model(
1013
+ image_array, threshold=0.3
1014
+ )
1015
+ ) # Setting the threshold to 0.3 can improve the accuracy of table cells detection.
1016
+ # If you really want more or fewer table cells detection boxes, the threshold can be adjusted.
1017
+
1018
+ if use_e2e_model == False:
1019
+ table_cells_result, table_cells_score = self.extract_results(
1020
+ table_cells_pred, "det"
1021
+ )
1022
+ table_cells_result, table_cells_score = self.cells_det_results_nms(
1023
+ table_cells_result, table_cells_score
1024
+ )
1025
+ if cells_trans_to_html == True:
1026
+ table_structure_result = self.trans_cells_det_results_to_html(
1027
+ table_cells_result
1028
+ )
1029
+ else:
1030
+ table_structure_result = self.extract_results(
1031
+ table_structure_pred, "table_stru"
1032
+ )
1033
+ ocr_det_boxes = self.get_region_ocr_det_boxes(
1034
+ overall_ocr_res["rec_boxes"].tolist(), table_box
1035
+ )
1036
+ table_cells_result = self.cells_det_results_reprocessing(
1037
+ table_cells_result,
1038
+ table_cells_score,
1039
+ ocr_det_boxes,
1040
+ len(table_structure_pred["bbox"]),
1041
+ )
1042
+ if use_ocr_results_with_table_cells == True:
1043
+ if self.cells_split_ocr == True:
1044
+ table_box_copy = np.array([table_box])
1045
+ table_ocr_pred = get_sub_regions_ocr_res(
1046
+ overall_ocr_res, table_box_copy
1047
+ )
1048
+ table_ocr_pred = self.split_ocr_bboxes_by_table_cells(
1049
+ table_cells_result, table_ocr_pred, image_array
1050
+ )
1051
+ cells_texts_list = []
1052
+ else:
1053
+ cells_texts_list = self.gen_ocr_with_table_cells(
1054
+ image_array, table_cells_result
1055
+ )
1056
+ table_ocr_pred = {}
1057
+ else:
1058
+ table_ocr_pred = {}
1059
+ cells_texts_list = []
1060
+ single_table_recognition_res = get_table_recognition_res(
1061
+ table_box,
1062
+ table_structure_result,
1063
+ table_cells_result,
1064
+ overall_ocr_res,
1065
+ table_ocr_pred,
1066
+ cells_texts_list,
1067
+ use_ocr_results_with_table_cells,
1068
+ self.cells_split_ocr,
1069
+ )
1070
+ else:
1071
+ cells_texts_list = []
1072
+ use_ocr_results_with_table_cells = False
1073
+ table_cells_result_e2e = table_structure_pred["bbox"]
1074
+ table_cells_result_e2e = [
1075
+ [rect[0], rect[1], rect[4], rect[5]] for rect in table_cells_result_e2e
1076
+ ]
1077
+ if cells_trans_to_html == True:
1078
+ table_structure_pred["structure"] = (
1079
+ self.trans_cells_det_results_to_html(table_cells_result_e2e)
1080
+ )
1081
+ single_table_recognition_res = get_table_recognition_res_e2e(
1082
+ table_box,
1083
+ table_structure_pred,
1084
+ overall_ocr_res,
1085
+ cells_texts_list,
1086
+ use_ocr_results_with_table_cells,
1087
+ )
1088
+
1089
+ neighbor_text = ""
1090
+ if flag_find_nei_text:
1091
+ match_idx_list = get_neighbor_boxes_idx(
1092
+ overall_ocr_res["rec_boxes"], table_box
1093
+ )
1094
+ if len(match_idx_list) > 0:
1095
+ for idx in match_idx_list:
1096
+ neighbor_text += overall_ocr_res["rec_texts"][idx] + "; "
1097
+ single_table_recognition_res["neighbor_texts"] = neighbor_text
1098
+ return single_table_recognition_res
1099
+
1100
+ def predict(
1101
+ self,
1102
+ input: Union[str, List[str], np.ndarray, List[np.ndarray]],
1103
+ use_doc_orientation_classify: Optional[bool] = None,
1104
+ use_doc_unwarping: Optional[bool] = None,
1105
+ use_layout_detection: Optional[bool] = None,
1106
+ use_ocr_model: Optional[bool] = None,
1107
+ overall_ocr_res: Optional[OCRResult] = None,
1108
+ layout_det_res: Optional[DetResult] = None,
1109
+ text_det_limit_side_len: Optional[int] = None,
1110
+ text_det_limit_type: Optional[str] = None,
1111
+ text_det_thresh: Optional[float] = None,
1112
+ text_det_box_thresh: Optional[float] = None,
1113
+ text_det_unclip_ratio: Optional[float] = None,
1114
+ text_rec_score_thresh: Optional[float] = None,
1115
+ use_e2e_wired_table_rec_model: bool = False,
1116
+ use_e2e_wireless_table_rec_model: bool = False,
1117
+ use_wired_table_cells_trans_to_html: bool = False,
1118
+ use_wireless_table_cells_trans_to_html: bool = False,
1119
+ use_table_orientation_classify: bool = True,
1120
+ use_ocr_results_with_table_cells: bool = True,
1121
+ **kwargs,
1122
+ ) -> TableRecognitionResult:
1123
+ """
1124
+ This function predicts the layout parsing result for the given input.
1125
+
1126
+ Args:
1127
+ input (Union[str, list[str], np.ndarray, list[np.ndarray]]): The input image(s) of pdf(s) to be processed.
1128
+ use_layout_detection (bool): Whether to use layout detection.
1129
+ use_doc_orientation_classify (bool): Whether to use document orientation classification.
1130
+ use_doc_unwarping (bool): Whether to use document unwarping.
1131
+ overall_ocr_res (OCRResult): The overall OCR result with convert_points_to_boxes information.
1132
+ It will be used if it is not None and use_ocr_model is False.
1133
+ layout_det_res (DetResult): The layout detection result.
1134
+ It will be used if it is not None and use_layout_detection is False.
1135
+ use_e2e_wired_table_rec_model (bool): Whether to use end-to-end wired table recognition model.
1136
+ use_e2e_wireless_table_rec_model (bool): Whether to use end-to-end wireless table recognition model.
1137
+ use_wired_table_cells_trans_to_html (bool): Whether to use wired table cells trans to HTML.
1138
+ use_wireless_table_cells_trans_to_html (bool): Whether to use wireless table cells trans to HTML.
1139
+ use_table_orientation_classify (bool): Whether to use table orientation classification.
1140
+ use_ocr_results_with_table_cells (bool): Whether to use OCR results processed by table cells.
1141
+ **kwargs: Additional keyword arguments.
1142
+
1143
+ Returns:
1144
+ TableRecognitionResult: The predicted table recognition result.
1145
+ """
1146
+
1147
+ self.cells_split_ocr = True
1148
+
1149
+ if use_table_orientation_classify == True and (
1150
+ self.table_orientation_classify_model is None
1151
+ ):
1152
+ assert self.table_orientation_classify_config != None
1153
+ self.table_orientation_classify_model = self.create_model(
1154
+ self.table_orientation_classify_config
1155
+ )
1156
+
1157
+ model_settings = self.get_model_settings(
1158
+ use_doc_orientation_classify,
1159
+ use_doc_unwarping,
1160
+ use_layout_detection,
1161
+ use_ocr_model,
1162
+ )
1163
+
1164
+ if not self.check_model_settings_valid(
1165
+ model_settings, overall_ocr_res, layout_det_res
1166
+ ):
1167
+ yield {"error": "the input params for model settings are invalid!"}
1168
+
1169
+ for img_id, batch_data in enumerate(self.batch_sampler(input)):
1170
+ image_array = self.img_reader(batch_data.instances)[0]
1171
+
1172
+ if model_settings["use_doc_preprocessor"]:
1173
+ doc_preprocessor_res = next(
1174
+ self.doc_preprocessor_pipeline(
1175
+ image_array,
1176
+ use_doc_orientation_classify=use_doc_orientation_classify,
1177
+ use_doc_unwarping=use_doc_unwarping,
1178
+ )
1179
+ )
1180
+ else:
1181
+ doc_preprocessor_res = {"output_img": image_array}
1182
+
1183
+ doc_preprocessor_image = doc_preprocessor_res["output_img"]
1184
+
1185
+ if model_settings["use_ocr_model"]:
1186
+ overall_ocr_res = next(
1187
+ self.general_ocr_pipeline(
1188
+ doc_preprocessor_image,
1189
+ text_det_limit_side_len=text_det_limit_side_len,
1190
+ text_det_limit_type=text_det_limit_type,
1191
+ text_det_thresh=text_det_thresh,
1192
+ text_det_box_thresh=text_det_box_thresh,
1193
+ text_det_unclip_ratio=text_det_unclip_ratio,
1194
+ text_rec_score_thresh=text_rec_score_thresh,
1195
+ )
1196
+ )
1197
+ elif self.general_ocr_pipeline is None and (
1198
+ (
1199
+ use_ocr_results_with_table_cells == True
1200
+ and self.cells_split_ocr == False
1201
+ )
1202
+ or use_table_orientation_classify == True
1203
+ ):
1204
+ assert self.general_ocr_config_bak != None
1205
+ self.general_ocr_pipeline = self.create_pipeline(
1206
+ self.general_ocr_config_bak
1207
+ )
1208
+
1209
+ if use_table_orientation_classify == False:
1210
+ table_angle = "0"
1211
+
1212
+ table_res_list = []
1213
+ table_region_id = 1
1214
+
1215
+ if not model_settings["use_layout_detection"] and layout_det_res is None:
1216
+ img_height, img_width = doc_preprocessor_image.shape[:2]
1217
+ table_box = [0, 0, img_width - 1, img_height - 1]
1218
+ if use_table_orientation_classify == True:
1219
+ table_angle = next(
1220
+ self.table_orientation_classify_model(doc_preprocessor_image)
1221
+ )["label_names"][0]
1222
+ if table_angle == "90":
1223
+ doc_preprocessor_image = np.rot90(doc_preprocessor_image, k=1)
1224
+ elif table_angle == "180":
1225
+ doc_preprocessor_image = np.rot90(doc_preprocessor_image, k=2)
1226
+ elif table_angle == "270":
1227
+ doc_preprocessor_image = np.rot90(doc_preprocessor_image, k=3)
1228
+ if table_angle in ["90", "180", "270"]:
1229
+ overall_ocr_res = next(
1230
+ self.general_ocr_pipeline(
1231
+ doc_preprocessor_image,
1232
+ text_det_limit_side_len=text_det_limit_side_len,
1233
+ text_det_limit_type=text_det_limit_type,
1234
+ text_det_thresh=text_det_thresh,
1235
+ text_det_box_thresh=text_det_box_thresh,
1236
+ text_det_unclip_ratio=text_det_unclip_ratio,
1237
+ text_rec_score_thresh=text_rec_score_thresh,
1238
+ )
1239
+ )
1240
+ tbx1, tby1, tbx2, tby2 = (
1241
+ table_box[0],
1242
+ table_box[1],
1243
+ table_box[2],
1244
+ table_box[3],
1245
+ )
1246
+ if table_angle == "90":
1247
+ new_x1, new_y1 = tby1, img_width - tbx2
1248
+ new_x2, new_y2 = tby2, img_width - tbx1
1249
+ elif table_angle == "180":
1250
+ new_x1, new_y1 = img_width - tbx2, img_height - tby2
1251
+ new_x2, new_y2 = img_width - tbx1, img_height - tby1
1252
+ elif table_angle == "270":
1253
+ new_x1, new_y1 = img_height - tby2, tbx1
1254
+ new_x2, new_y2 = img_height - tby1, tbx2
1255
+ table_box = [new_x1, new_y1, new_x2, new_y2]
1256
+ layout_det_res = {}
1257
+ single_table_rec_res = self.predict_single_table_recognition_res(
1258
+ doc_preprocessor_image,
1259
+ overall_ocr_res,
1260
+ table_box,
1261
+ use_e2e_wired_table_rec_model,
1262
+ use_e2e_wireless_table_rec_model,
1263
+ use_wired_table_cells_trans_to_html,
1264
+ use_wireless_table_cells_trans_to_html,
1265
+ use_ocr_results_with_table_cells,
1266
+ flag_find_nei_text=False,
1267
+ )
1268
+ single_table_rec_res["table_region_id"] = table_region_id
1269
+ if use_table_orientation_classify == True and table_angle != "0":
1270
+ img_height, img_width = doc_preprocessor_image.shape[:2]
1271
+ single_table_rec_res["cell_box_list"] = (
1272
+ self.map_cells_to_original_image(
1273
+ single_table_rec_res["cell_box_list"],
1274
+ table_angle,
1275
+ img_width,
1276
+ img_height,
1277
+ )
1278
+ )
1279
+ table_res_list.append(single_table_rec_res)
1280
+ table_region_id += 1
1281
+ else:
1282
+ if model_settings["use_layout_detection"]:
1283
+ layout_det_res = next(self.layout_det_model(doc_preprocessor_image))
1284
+ img_height, img_width = doc_preprocessor_image.shape[:2]
1285
+ for box_info in layout_det_res["boxes"]:
1286
+ if box_info["label"].lower() in ["table"]:
1287
+ crop_img_info = self._crop_by_boxes(
1288
+ doc_preprocessor_image, [box_info]
1289
+ )
1290
+ crop_img_info = crop_img_info[0]
1291
+ table_box = crop_img_info["box"]
1292
+ if use_table_orientation_classify == True:
1293
+ doc_preprocessor_image_copy = doc_preprocessor_image.copy()
1294
+ table_angle = next(
1295
+ self.table_orientation_classify_model(
1296
+ crop_img_info["img"]
1297
+ )
1298
+ )["label_names"][0]
1299
+ if table_angle == "90":
1300
+ crop_img_info["img"] = np.rot90(crop_img_info["img"], k=1)
1301
+ doc_preprocessor_image_copy = np.rot90(
1302
+ doc_preprocessor_image_copy, k=1
1303
+ )
1304
+ elif table_angle == "180":
1305
+ crop_img_info["img"] = np.rot90(crop_img_info["img"], k=2)
1306
+ doc_preprocessor_image_copy = np.rot90(
1307
+ doc_preprocessor_image_copy, k=2
1308
+ )
1309
+ elif table_angle == "270":
1310
+ crop_img_info["img"] = np.rot90(crop_img_info["img"], k=3)
1311
+ doc_preprocessor_image_copy = np.rot90(
1312
+ doc_preprocessor_image_copy, k=3
1313
+ )
1314
+ if table_angle in ["90", "180", "270"]:
1315
+ overall_ocr_res = next(
1316
+ self.general_ocr_pipeline(
1317
+ doc_preprocessor_image_copy,
1318
+ text_det_limit_side_len=text_det_limit_side_len,
1319
+ text_det_limit_type=text_det_limit_type,
1320
+ text_det_thresh=text_det_thresh,
1321
+ text_det_box_thresh=text_det_box_thresh,
1322
+ text_det_unclip_ratio=text_det_unclip_ratio,
1323
+ text_rec_score_thresh=text_rec_score_thresh,
1324
+ )
1325
+ )
1326
+ tbx1, tby1, tbx2, tby2 = (
1327
+ table_box[0],
1328
+ table_box[1],
1329
+ table_box[2],
1330
+ table_box[3],
1331
+ )
1332
+ if table_angle == "90":
1333
+ new_x1, new_y1 = tby1, img_width - tbx2
1334
+ new_x2, new_y2 = tby2, img_width - tbx1
1335
+ elif table_angle == "180":
1336
+ new_x1, new_y1 = img_width - tbx2, img_height - tby2
1337
+ new_x2, new_y2 = img_width - tbx1, img_height - tby1
1338
+ elif table_angle == "270":
1339
+ new_x1, new_y1 = img_height - tby2, tbx1
1340
+ new_x2, new_y2 = img_height - tby1, tbx2
1341
+ table_box = [new_x1, new_y1, new_x2, new_y2]
1342
+ single_table_rec_res = (
1343
+ self.predict_single_table_recognition_res(
1344
+ crop_img_info["img"],
1345
+ overall_ocr_res,
1346
+ table_box,
1347
+ use_e2e_wired_table_rec_model,
1348
+ use_e2e_wireless_table_rec_model,
1349
+ use_wired_table_cells_trans_to_html,
1350
+ use_wireless_table_cells_trans_to_html,
1351
+ use_ocr_results_with_table_cells,
1352
+ )
1353
+ )
1354
+ single_table_rec_res["table_region_id"] = table_region_id
1355
+ if (
1356
+ use_table_orientation_classify == True
1357
+ and table_angle != "0"
1358
+ ):
1359
+ img_height_copy, img_width_copy = (
1360
+ doc_preprocessor_image_copy.shape[:2]
1361
+ )
1362
+ single_table_rec_res["cell_box_list"] = (
1363
+ self.map_cells_to_original_image(
1364
+ single_table_rec_res["cell_box_list"],
1365
+ table_angle,
1366
+ img_width_copy,
1367
+ img_height_copy,
1368
+ )
1369
+ )
1370
+ table_res_list.append(single_table_rec_res)
1371
+ table_region_id += 1
1372
+
1373
+ single_img_res = {
1374
+ "input_path": batch_data.input_paths[0],
1375
+ "page_index": batch_data.page_indexes[0],
1376
+ "doc_preprocessor_res": doc_preprocessor_res,
1377
+ "layout_det_res": layout_det_res,
1378
+ "overall_ocr_res": overall_ocr_res,
1379
+ "table_res_list": table_res_list,
1380
+ "model_settings": model_settings,
1381
+ }
1382
+
1383
+ yield TableRecognitionResult(single_img_res)
1384
+
1385
+
1386
+ @pipeline_requires_extra("ocr")
1387
+ class TableRecognitionPipelineV2(AutoParallelImageSimpleInferencePipeline):
1388
+ entities = ["table_recognition_v2"]
1389
+
1390
+ @property
1391
+ def _pipeline_cls(self):
1392
+ return _TableRecognitionPipelineV2
1393
+
1394
+ def _get_batch_size(self, config):
1395
+ return 1