paddlex 2.1.0__py3-none-any.whl → 3.0.0b2__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 (1340) hide show
  1. paddlex/.version +1 -0
  2. paddlex/__init__.py +51 -19
  3. paddlex/__main__.py +40 -0
  4. paddlex/configs/anomaly_detection/STFPM.yaml +41 -0
  5. paddlex/configs/doc_text_orientation/PP-LCNet_x1_0_doc_ori.yaml +41 -0
  6. paddlex/configs/face_detection/BlazeFace-FPN-SSH.yaml +40 -0
  7. paddlex/configs/face_detection/BlazeFace.yaml +40 -0
  8. paddlex/configs/face_detection/PP-YOLOE_plus-S_face.yaml +40 -0
  9. paddlex/configs/face_detection/PicoDet_LCNet_x2_5_face.yaml +40 -0
  10. paddlex/configs/face_recognition/MobileFaceNet.yaml +44 -0
  11. paddlex/configs/face_recognition/ResNet50_face.yaml +44 -0
  12. paddlex/configs/formula_recognition/LaTeX_OCR_rec.yaml +40 -0
  13. paddlex/configs/general_recognition/PP-ShiTuV2_rec.yaml +42 -0
  14. paddlex/configs/general_recognition/PP-ShiTuV2_rec_CLIP_vit_base.yaml +42 -0
  15. paddlex/configs/general_recognition/PP-ShiTuV2_rec_CLIP_vit_large.yaml +41 -0
  16. paddlex/configs/human_detection/PP-YOLOE-L_human.yaml +42 -0
  17. paddlex/configs/human_detection/PP-YOLOE-S_human.yaml +42 -0
  18. paddlex/configs/image_classification/CLIP_vit_base_patch16_224.yaml +41 -0
  19. paddlex/configs/image_classification/CLIP_vit_large_patch14_224.yaml +41 -0
  20. paddlex/configs/image_classification/ConvNeXt_base_224.yaml +41 -0
  21. paddlex/configs/image_classification/ConvNeXt_base_384.yaml +41 -0
  22. paddlex/configs/image_classification/ConvNeXt_large_224.yaml +41 -0
  23. paddlex/configs/image_classification/ConvNeXt_large_384.yaml +41 -0
  24. paddlex/configs/image_classification/ConvNeXt_small.yaml +41 -0
  25. paddlex/configs/image_classification/ConvNeXt_tiny.yaml +41 -0
  26. paddlex/configs/image_classification/FasterNet-L.yaml +40 -0
  27. paddlex/configs/image_classification/FasterNet-M.yaml +40 -0
  28. paddlex/configs/image_classification/FasterNet-S.yaml +40 -0
  29. paddlex/configs/image_classification/FasterNet-T0.yaml +40 -0
  30. paddlex/configs/image_classification/FasterNet-T1.yaml +40 -0
  31. paddlex/configs/image_classification/FasterNet-T2.yaml +40 -0
  32. paddlex/configs/image_classification/MobileNetV1_x0_25.yaml +41 -0
  33. paddlex/configs/image_classification/MobileNetV1_x0_5.yaml +41 -0
  34. paddlex/configs/image_classification/MobileNetV1_x0_75.yaml +41 -0
  35. paddlex/configs/image_classification/MobileNetV1_x1_0.yaml +41 -0
  36. paddlex/configs/image_classification/MobileNetV2_x0_25.yaml +41 -0
  37. paddlex/configs/image_classification/MobileNetV2_x0_5.yaml +41 -0
  38. paddlex/configs/image_classification/MobileNetV2_x1_0.yaml +41 -0
  39. paddlex/configs/image_classification/MobileNetV2_x1_5.yaml +41 -0
  40. paddlex/configs/image_classification/MobileNetV2_x2_0.yaml +41 -0
  41. paddlex/configs/image_classification/MobileNetV3_large_x0_35.yaml +41 -0
  42. paddlex/configs/image_classification/MobileNetV3_large_x0_5.yaml +41 -0
  43. paddlex/configs/image_classification/MobileNetV3_large_x0_75.yaml +41 -0
  44. paddlex/configs/image_classification/MobileNetV3_large_x1_0.yaml +41 -0
  45. paddlex/configs/image_classification/MobileNetV3_large_x1_25.yaml +41 -0
  46. paddlex/configs/image_classification/MobileNetV3_small_x0_35.yaml +41 -0
  47. paddlex/configs/image_classification/MobileNetV3_small_x0_5.yaml +41 -0
  48. paddlex/configs/image_classification/MobileNetV3_small_x0_75.yaml +41 -0
  49. paddlex/configs/image_classification/MobileNetV3_small_x1_0.yaml +41 -0
  50. paddlex/configs/image_classification/MobileNetV3_small_x1_25.yaml +41 -0
  51. paddlex/configs/image_classification/MobileNetV4_conv_large.yaml +41 -0
  52. paddlex/configs/image_classification/MobileNetV4_conv_medium.yaml +41 -0
  53. paddlex/configs/image_classification/MobileNetV4_conv_small.yaml +41 -0
  54. paddlex/configs/image_classification/MobileNetV4_hybrid_large.yaml +41 -0
  55. paddlex/configs/image_classification/MobileNetV4_hybrid_medium.yaml +41 -0
  56. paddlex/configs/image_classification/PP-HGNetV2-B0.yaml +41 -0
  57. paddlex/configs/image_classification/PP-HGNetV2-B1.yaml +41 -0
  58. paddlex/configs/image_classification/PP-HGNetV2-B2.yaml +41 -0
  59. paddlex/configs/image_classification/PP-HGNetV2-B3.yaml +41 -0
  60. paddlex/configs/image_classification/PP-HGNetV2-B4.yaml +41 -0
  61. paddlex/configs/image_classification/PP-HGNetV2-B5.yaml +41 -0
  62. paddlex/configs/image_classification/PP-HGNetV2-B6.yaml +41 -0
  63. paddlex/configs/image_classification/PP-HGNet_base.yaml +41 -0
  64. paddlex/configs/image_classification/PP-HGNet_small.yaml +41 -0
  65. paddlex/configs/image_classification/PP-HGNet_tiny.yaml +41 -0
  66. paddlex/configs/image_classification/PP-LCNetV2_base.yaml +41 -0
  67. paddlex/configs/image_classification/PP-LCNetV2_large.yaml +41 -0
  68. paddlex/configs/image_classification/PP-LCNetV2_small.yaml +41 -0
  69. paddlex/configs/image_classification/PP-LCNet_x0_25.yaml +41 -0
  70. paddlex/configs/image_classification/PP-LCNet_x0_35.yaml +41 -0
  71. paddlex/configs/image_classification/PP-LCNet_x0_5.yaml +41 -0
  72. paddlex/configs/image_classification/PP-LCNet_x0_75.yaml +41 -0
  73. paddlex/configs/image_classification/PP-LCNet_x1_0.yaml +41 -0
  74. paddlex/configs/image_classification/PP-LCNet_x1_5.yaml +41 -0
  75. paddlex/configs/image_classification/PP-LCNet_x2_0.yaml +41 -0
  76. paddlex/configs/image_classification/PP-LCNet_x2_5.yaml +41 -0
  77. paddlex/configs/image_classification/ResNet101.yaml +41 -0
  78. paddlex/configs/image_classification/ResNet101_vd.yaml +41 -0
  79. paddlex/configs/image_classification/ResNet152.yaml +41 -0
  80. paddlex/configs/image_classification/ResNet152_vd.yaml +41 -0
  81. paddlex/configs/image_classification/ResNet18.yaml +41 -0
  82. paddlex/configs/image_classification/ResNet18_vd.yaml +41 -0
  83. paddlex/configs/image_classification/ResNet200_vd.yaml +41 -0
  84. paddlex/configs/image_classification/ResNet34.yaml +41 -0
  85. paddlex/configs/image_classification/ResNet34_vd.yaml +41 -0
  86. paddlex/configs/image_classification/ResNet50.yaml +41 -0
  87. paddlex/configs/image_classification/ResNet50_vd.yaml +41 -0
  88. paddlex/configs/image_classification/StarNet-S1.yaml +41 -0
  89. paddlex/configs/image_classification/StarNet-S2.yaml +41 -0
  90. paddlex/configs/image_classification/StarNet-S3.yaml +41 -0
  91. paddlex/configs/image_classification/StarNet-S4.yaml +41 -0
  92. paddlex/configs/image_classification/SwinTransformer_base_patch4_window12_384.yaml +41 -0
  93. paddlex/configs/image_classification/SwinTransformer_base_patch4_window7_224.yaml +41 -0
  94. paddlex/configs/image_classification/SwinTransformer_large_patch4_window12_384.yaml +41 -0
  95. paddlex/configs/image_classification/SwinTransformer_large_patch4_window7_224.yaml +41 -0
  96. paddlex/configs/image_classification/SwinTransformer_small_patch4_window7_224.yaml +41 -0
  97. paddlex/configs/image_classification/SwinTransformer_tiny_patch4_window7_224.yaml +41 -0
  98. paddlex/configs/image_unwarping/UVDoc.yaml +12 -0
  99. paddlex/configs/instance_segmentation/Cascade-MaskRCNN-ResNet50-FPN.yaml +40 -0
  100. paddlex/configs/instance_segmentation/Cascade-MaskRCNN-ResNet50-vd-SSLDv2-FPN.yaml +40 -0
  101. paddlex/configs/instance_segmentation/Mask-RT-DETR-H.yaml +40 -0
  102. paddlex/configs/instance_segmentation/Mask-RT-DETR-L.yaml +40 -0
  103. paddlex/configs/instance_segmentation/Mask-RT-DETR-M.yaml +40 -0
  104. paddlex/configs/instance_segmentation/Mask-RT-DETR-S.yaml +40 -0
  105. paddlex/configs/instance_segmentation/Mask-RT-DETR-X.yaml +40 -0
  106. paddlex/configs/instance_segmentation/MaskRCNN-ResNeXt101-vd-FPN.yaml +39 -0
  107. paddlex/configs/instance_segmentation/MaskRCNN-ResNet101-FPN.yaml +40 -0
  108. paddlex/configs/instance_segmentation/MaskRCNN-ResNet101-vd-FPN.yaml +40 -0
  109. paddlex/configs/instance_segmentation/MaskRCNN-ResNet50-FPN.yaml +40 -0
  110. paddlex/configs/instance_segmentation/MaskRCNN-ResNet50-vd-FPN.yaml +40 -0
  111. paddlex/configs/instance_segmentation/MaskRCNN-ResNet50.yaml +40 -0
  112. paddlex/configs/instance_segmentation/PP-YOLOE_seg-S.yaml +40 -0
  113. paddlex/configs/instance_segmentation/SOLOv2.yaml +40 -0
  114. paddlex/configs/mainbody_detection/PP-ShiTuV2_det.yaml +41 -0
  115. paddlex/configs/multilabel_classification/CLIP_vit_base_patch16_448_ML.yaml +41 -0
  116. paddlex/configs/multilabel_classification/PP-HGNetV2-B0_ML.yaml +41 -0
  117. paddlex/configs/multilabel_classification/PP-HGNetV2-B4_ML.yaml +41 -0
  118. paddlex/configs/multilabel_classification/PP-HGNetV2-B6_ML.yaml +41 -0
  119. paddlex/configs/multilabel_classification/PP-LCNet_x1_0_ML.yaml +41 -0
  120. paddlex/configs/multilabel_classification/ResNet50_ML.yaml +41 -0
  121. paddlex/configs/object_detection/Cascade-FasterRCNN-ResNet50-FPN.yaml +41 -0
  122. paddlex/configs/object_detection/Cascade-FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  123. paddlex/configs/object_detection/CenterNet-DLA-34.yaml +41 -0
  124. paddlex/configs/object_detection/CenterNet-ResNet50.yaml +41 -0
  125. paddlex/configs/object_detection/DETR-R50.yaml +42 -0
  126. paddlex/configs/object_detection/FCOS-ResNet50.yaml +41 -0
  127. paddlex/configs/object_detection/FasterRCNN-ResNeXt101-vd-FPN.yaml +42 -0
  128. paddlex/configs/object_detection/FasterRCNN-ResNet101-FPN.yaml +42 -0
  129. paddlex/configs/object_detection/FasterRCNN-ResNet101.yaml +42 -0
  130. paddlex/configs/object_detection/FasterRCNN-ResNet34-FPN.yaml +42 -0
  131. paddlex/configs/object_detection/FasterRCNN-ResNet50-FPN.yaml +42 -0
  132. paddlex/configs/object_detection/FasterRCNN-ResNet50-vd-FPN.yaml +42 -0
  133. paddlex/configs/object_detection/FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  134. paddlex/configs/object_detection/FasterRCNN-ResNet50.yaml +42 -0
  135. paddlex/configs/object_detection/FasterRCNN-Swin-Tiny-FPN.yaml +42 -0
  136. paddlex/configs/object_detection/PP-YOLOE_plus-L.yaml +40 -0
  137. paddlex/configs/object_detection/PP-YOLOE_plus-M.yaml +40 -0
  138. paddlex/configs/object_detection/PP-YOLOE_plus-S.yaml +40 -0
  139. paddlex/configs/object_detection/PP-YOLOE_plus-X.yaml +40 -0
  140. paddlex/configs/object_detection/PicoDet-L.yaml +40 -0
  141. paddlex/configs/object_detection/PicoDet-M.yaml +42 -0
  142. paddlex/configs/object_detection/PicoDet-S.yaml +40 -0
  143. paddlex/configs/object_detection/PicoDet-XS.yaml +42 -0
  144. paddlex/configs/object_detection/RT-DETR-H.yaml +40 -0
  145. paddlex/configs/object_detection/RT-DETR-L.yaml +40 -0
  146. paddlex/configs/object_detection/RT-DETR-R18.yaml +40 -0
  147. paddlex/configs/object_detection/RT-DETR-R50.yaml +40 -0
  148. paddlex/configs/object_detection/RT-DETR-X.yaml +40 -0
  149. paddlex/configs/object_detection/YOLOX-L.yaml +40 -0
  150. paddlex/configs/object_detection/YOLOX-M.yaml +40 -0
  151. paddlex/configs/object_detection/YOLOX-N.yaml +40 -0
  152. paddlex/configs/object_detection/YOLOX-S.yaml +40 -0
  153. paddlex/configs/object_detection/YOLOX-T.yaml +40 -0
  154. paddlex/configs/object_detection/YOLOX-X.yaml +40 -0
  155. paddlex/configs/object_detection/YOLOv3-DarkNet53.yaml +40 -0
  156. paddlex/configs/object_detection/YOLOv3-MobileNetV3.yaml +40 -0
  157. paddlex/configs/object_detection/YOLOv3-ResNet50_vd_DCN.yaml +40 -0
  158. paddlex/configs/pedestrian_attribute/PP-LCNet_x1_0_pedestrian_attribute.yaml +41 -0
  159. paddlex/configs/semantic_segmentation/Deeplabv3-R101.yaml +40 -0
  160. paddlex/configs/semantic_segmentation/Deeplabv3-R50.yaml +40 -0
  161. paddlex/configs/semantic_segmentation/Deeplabv3_Plus-R101.yaml +40 -0
  162. paddlex/configs/semantic_segmentation/Deeplabv3_Plus-R50.yaml +40 -0
  163. paddlex/configs/semantic_segmentation/OCRNet_HRNet-W18.yaml +40 -0
  164. paddlex/configs/semantic_segmentation/OCRNet_HRNet-W48.yaml +40 -0
  165. paddlex/configs/semantic_segmentation/PP-LiteSeg-B.yaml +41 -0
  166. paddlex/configs/semantic_segmentation/PP-LiteSeg-T.yaml +40 -0
  167. paddlex/configs/semantic_segmentation/SeaFormer_base.yaml +40 -0
  168. paddlex/configs/semantic_segmentation/SeaFormer_large.yaml +40 -0
  169. paddlex/configs/semantic_segmentation/SeaFormer_small.yaml +40 -0
  170. paddlex/configs/semantic_segmentation/SeaFormer_tiny.yaml +40 -0
  171. paddlex/configs/semantic_segmentation/SegFormer-B0.yaml +40 -0
  172. paddlex/configs/semantic_segmentation/SegFormer-B1.yaml +40 -0
  173. paddlex/configs/semantic_segmentation/SegFormer-B2.yaml +40 -0
  174. paddlex/configs/semantic_segmentation/SegFormer-B3.yaml +40 -0
  175. paddlex/configs/semantic_segmentation/SegFormer-B4.yaml +40 -0
  176. paddlex/configs/semantic_segmentation/SegFormer-B5.yaml +40 -0
  177. paddlex/configs/small_object_detection/PP-YOLOE_plus_SOD-L.yaml +42 -0
  178. paddlex/configs/small_object_detection/PP-YOLOE_plus_SOD-S.yaml +42 -0
  179. paddlex/configs/small_object_detection/PP-YOLOE_plus_SOD-largesize-L.yaml +42 -0
  180. paddlex/configs/structure_analysis/PicoDet-L_layout_17cls.yaml +40 -0
  181. paddlex/configs/structure_analysis/PicoDet-L_layout_3cls.yaml +40 -0
  182. paddlex/configs/structure_analysis/PicoDet-S_layout_17cls.yaml +40 -0
  183. paddlex/configs/structure_analysis/PicoDet-S_layout_3cls.yaml +40 -0
  184. paddlex/configs/structure_analysis/PicoDet_layout_1x.yaml +40 -0
  185. paddlex/configs/structure_analysis/PicoDet_layout_1x_table.yaml +40 -0
  186. paddlex/configs/structure_analysis/RT-DETR-H_layout_17cls.yaml +40 -0
  187. paddlex/configs/structure_analysis/RT-DETR-H_layout_3cls.yaml +40 -0
  188. paddlex/configs/table_recognition/SLANet.yaml +39 -0
  189. paddlex/configs/table_recognition/SLANet_plus.yaml +39 -0
  190. paddlex/configs/text_detection/PP-OCRv4_mobile_det.yaml +40 -0
  191. paddlex/configs/text_detection/PP-OCRv4_server_det.yaml +40 -0
  192. paddlex/configs/text_detection_seal/PP-OCRv4_mobile_seal_det.yaml +40 -0
  193. paddlex/configs/text_detection_seal/PP-OCRv4_server_seal_det.yaml +40 -0
  194. paddlex/configs/text_recognition/PP-OCRv4_mobile_rec.yaml +39 -0
  195. paddlex/configs/text_recognition/PP-OCRv4_server_rec.yaml +39 -0
  196. paddlex/configs/text_recognition/ch_RepSVTR_rec.yaml +39 -0
  197. paddlex/configs/text_recognition/ch_SVTRv2_rec.yaml +39 -0
  198. paddlex/configs/ts_anomaly_detection/AutoEncoder_ad.yaml +37 -0
  199. paddlex/configs/ts_anomaly_detection/DLinear_ad.yaml +37 -0
  200. paddlex/configs/ts_anomaly_detection/Nonstationary_ad.yaml +37 -0
  201. paddlex/configs/ts_anomaly_detection/PatchTST_ad.yaml +37 -0
  202. paddlex/configs/ts_anomaly_detection/TimesNet_ad.yaml +37 -0
  203. paddlex/configs/ts_classification/TimesNet_cls.yaml +37 -0
  204. paddlex/configs/ts_forecast/DLinear.yaml +38 -0
  205. paddlex/configs/ts_forecast/NLinear.yaml +38 -0
  206. paddlex/configs/ts_forecast/Nonstationary.yaml +38 -0
  207. paddlex/configs/ts_forecast/PatchTST.yaml +38 -0
  208. paddlex/configs/ts_forecast/RLinear.yaml +38 -0
  209. paddlex/configs/ts_forecast/TiDE.yaml +38 -0
  210. paddlex/configs/ts_forecast/TimesNet.yaml +38 -0
  211. paddlex/configs/vehicle_attribute/PP-LCNet_x1_0_vehicle_attribute.yaml +41 -0
  212. paddlex/configs/vehicle_detection/PP-YOLOE-L_vehicle.yaml +41 -0
  213. paddlex/configs/vehicle_detection/PP-YOLOE-S_vehicle.yaml +42 -0
  214. paddlex/engine.py +54 -0
  215. paddlex/inference/__init__.py +17 -0
  216. paddlex/inference/components/__init__.py +18 -0
  217. paddlex/inference/components/base.py +292 -0
  218. paddlex/inference/components/llm/__init__.py +25 -0
  219. paddlex/inference/components/llm/base.py +65 -0
  220. paddlex/inference/components/llm/erniebot.py +212 -0
  221. paddlex/inference/components/paddle_predictor/__init__.py +20 -0
  222. paddlex/inference/components/paddle_predictor/predictor.py +332 -0
  223. paddlex/inference/components/retrieval/__init__.py +15 -0
  224. paddlex/inference/components/retrieval/faiss.py +359 -0
  225. paddlex/inference/components/task_related/__init__.py +33 -0
  226. paddlex/inference/components/task_related/clas.py +124 -0
  227. paddlex/inference/components/task_related/det.py +284 -0
  228. paddlex/inference/components/task_related/instance_seg.py +89 -0
  229. paddlex/inference/components/task_related/seal_det_warp.py +940 -0
  230. paddlex/inference/components/task_related/seg.py +40 -0
  231. paddlex/inference/components/task_related/table_rec.py +191 -0
  232. paddlex/inference/components/task_related/text_det.py +895 -0
  233. paddlex/inference/components/task_related/text_rec.py +353 -0
  234. paddlex/inference/components/task_related/warp.py +43 -0
  235. paddlex/inference/components/transforms/__init__.py +16 -0
  236. paddlex/inference/components/transforms/image/__init__.py +15 -0
  237. paddlex/inference/components/transforms/image/common.py +598 -0
  238. paddlex/inference/components/transforms/image/funcs.py +58 -0
  239. paddlex/inference/components/transforms/read_data.py +67 -0
  240. paddlex/inference/components/transforms/ts/__init__.py +15 -0
  241. paddlex/inference/components/transforms/ts/common.py +393 -0
  242. paddlex/inference/components/transforms/ts/funcs.py +424 -0
  243. paddlex/inference/models/__init__.py +106 -0
  244. paddlex/inference/models/anomaly_detection.py +87 -0
  245. paddlex/inference/models/base/__init__.py +16 -0
  246. paddlex/inference/models/base/base_predictor.py +76 -0
  247. paddlex/inference/models/base/basic_predictor.py +122 -0
  248. paddlex/inference/models/face_recognition.py +21 -0
  249. paddlex/inference/models/formula_recognition.py +55 -0
  250. paddlex/inference/models/general_recognition.py +99 -0
  251. paddlex/inference/models/image_classification.py +101 -0
  252. paddlex/inference/models/image_unwarping.py +43 -0
  253. paddlex/inference/models/instance_segmentation.py +66 -0
  254. paddlex/inference/models/multilabel_classification.py +33 -0
  255. paddlex/inference/models/object_detection.py +129 -0
  256. paddlex/inference/models/semantic_segmentation.py +86 -0
  257. paddlex/inference/models/table_recognition.py +106 -0
  258. paddlex/inference/models/text_detection.py +105 -0
  259. paddlex/inference/models/text_recognition.py +78 -0
  260. paddlex/inference/models/ts_ad.py +68 -0
  261. paddlex/inference/models/ts_cls.py +57 -0
  262. paddlex/inference/models/ts_fc.py +73 -0
  263. paddlex/inference/pipelines/__init__.py +127 -0
  264. paddlex/inference/pipelines/attribute_recognition.py +92 -0
  265. paddlex/inference/pipelines/base.py +86 -0
  266. paddlex/inference/pipelines/face_recognition.py +49 -0
  267. paddlex/inference/pipelines/formula_recognition.py +102 -0
  268. paddlex/inference/pipelines/layout_parsing/__init__.py +15 -0
  269. paddlex/inference/pipelines/layout_parsing/layout_parsing.py +362 -0
  270. paddlex/inference/pipelines/ocr.py +80 -0
  271. paddlex/inference/pipelines/pp_shitu_v2.py +152 -0
  272. paddlex/inference/pipelines/ppchatocrv3/__init__.py +15 -0
  273. paddlex/inference/pipelines/ppchatocrv3/ch_prompt.yaml +14 -0
  274. paddlex/inference/pipelines/ppchatocrv3/ppchatocrv3.py +717 -0
  275. paddlex/inference/pipelines/ppchatocrv3/utils.py +168 -0
  276. paddlex/inference/pipelines/seal_recognition.py +152 -0
  277. paddlex/inference/pipelines/serving/__init__.py +17 -0
  278. paddlex/inference/pipelines/serving/_pipeline_apps/__init__.py +205 -0
  279. paddlex/inference/pipelines/serving/_pipeline_apps/anomaly_detection.py +80 -0
  280. paddlex/inference/pipelines/serving/_pipeline_apps/face_recognition.py +317 -0
  281. paddlex/inference/pipelines/serving/_pipeline_apps/formula_recognition.py +119 -0
  282. paddlex/inference/pipelines/serving/_pipeline_apps/image_classification.py +101 -0
  283. paddlex/inference/pipelines/serving/_pipeline_apps/instance_segmentation.py +112 -0
  284. paddlex/inference/pipelines/serving/_pipeline_apps/layout_parsing.py +205 -0
  285. paddlex/inference/pipelines/serving/_pipeline_apps/multi_label_image_classification.py +90 -0
  286. paddlex/inference/pipelines/serving/_pipeline_apps/object_detection.py +90 -0
  287. paddlex/inference/pipelines/serving/_pipeline_apps/ocr.py +98 -0
  288. paddlex/inference/pipelines/serving/_pipeline_apps/pedestrian_attribute_recognition.py +102 -0
  289. paddlex/inference/pipelines/serving/_pipeline_apps/pp_shitu_v2.py +319 -0
  290. paddlex/inference/pipelines/serving/_pipeline_apps/ppchatocrv3.py +445 -0
  291. paddlex/inference/pipelines/serving/_pipeline_apps/seal_recognition.py +110 -0
  292. paddlex/inference/pipelines/serving/_pipeline_apps/semantic_segmentation.py +82 -0
  293. paddlex/inference/pipelines/serving/_pipeline_apps/small_object_detection.py +92 -0
  294. paddlex/inference/pipelines/serving/_pipeline_apps/table_recognition.py +110 -0
  295. paddlex/inference/pipelines/serving/_pipeline_apps/ts_ad.py +68 -0
  296. paddlex/inference/pipelines/serving/_pipeline_apps/ts_cls.py +68 -0
  297. paddlex/inference/pipelines/serving/_pipeline_apps/ts_fc.py +68 -0
  298. paddlex/inference/pipelines/serving/_pipeline_apps/vehicle_attribute_recognition.py +102 -0
  299. paddlex/inference/pipelines/serving/app.py +164 -0
  300. paddlex/inference/pipelines/serving/models.py +30 -0
  301. paddlex/inference/pipelines/serving/server.py +25 -0
  302. paddlex/inference/pipelines/serving/storage.py +161 -0
  303. paddlex/inference/pipelines/serving/utils.py +190 -0
  304. paddlex/inference/pipelines/single_model_pipeline.py +76 -0
  305. paddlex/inference/pipelines/table_recognition/__init__.py +15 -0
  306. paddlex/inference/pipelines/table_recognition/table_recognition.py +193 -0
  307. paddlex/inference/pipelines/table_recognition/utils.py +457 -0
  308. paddlex/inference/results/__init__.py +31 -0
  309. paddlex/inference/results/attribute_rec.py +89 -0
  310. paddlex/inference/results/base.py +43 -0
  311. paddlex/inference/results/chat_ocr.py +158 -0
  312. paddlex/inference/results/clas.py +133 -0
  313. paddlex/inference/results/det.py +86 -0
  314. paddlex/inference/results/face_rec.py +34 -0
  315. paddlex/inference/results/formula_rec.py +363 -0
  316. paddlex/inference/results/instance_seg.py +152 -0
  317. paddlex/inference/results/ocr.py +157 -0
  318. paddlex/inference/results/seal_rec.py +50 -0
  319. paddlex/inference/results/seg.py +72 -0
  320. paddlex/inference/results/shitu.py +35 -0
  321. paddlex/inference/results/table_rec.py +109 -0
  322. paddlex/inference/results/text_det.py +33 -0
  323. paddlex/inference/results/text_rec.py +66 -0
  324. paddlex/inference/results/ts.py +37 -0
  325. paddlex/inference/results/utils/__init__.py +13 -0
  326. paddlex/inference/results/utils/mixin.py +204 -0
  327. paddlex/inference/results/warp.py +31 -0
  328. paddlex/inference/utils/__init__.py +13 -0
  329. paddlex/inference/utils/benchmark.py +214 -0
  330. paddlex/inference/utils/color_map.py +123 -0
  331. paddlex/inference/utils/get_pipeline_path.py +26 -0
  332. paddlex/inference/utils/io/__init__.py +33 -0
  333. paddlex/inference/utils/io/readers.py +353 -0
  334. paddlex/inference/utils/io/style.py +374 -0
  335. paddlex/inference/utils/io/tablepyxl.py +149 -0
  336. paddlex/inference/utils/io/writers.py +376 -0
  337. paddlex/inference/utils/new_ir_blacklist.py +22 -0
  338. paddlex/inference/utils/official_models.py +286 -0
  339. paddlex/inference/utils/pp_option.py +236 -0
  340. paddlex/inference/utils/process_hook.py +54 -0
  341. paddlex/model.py +106 -0
  342. paddlex/modules/__init__.py +105 -0
  343. paddlex/modules/anomaly_detection/__init__.py +18 -0
  344. paddlex/modules/anomaly_detection/dataset_checker/__init__.py +95 -0
  345. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  346. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +79 -0
  347. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +87 -0
  348. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +230 -0
  349. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +87 -0
  350. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  351. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +71 -0
  352. paddlex/modules/anomaly_detection/evaluator.py +58 -0
  353. paddlex/modules/anomaly_detection/exportor.py +22 -0
  354. paddlex/modules/anomaly_detection/model_list.py +16 -0
  355. paddlex/modules/anomaly_detection/trainer.py +71 -0
  356. paddlex/modules/base/__init__.py +18 -0
  357. paddlex/modules/base/build_model.py +34 -0
  358. paddlex/modules/base/dataset_checker/__init__.py +16 -0
  359. paddlex/modules/base/dataset_checker/dataset_checker.py +164 -0
  360. paddlex/modules/base/dataset_checker/utils.py +110 -0
  361. paddlex/modules/base/evaluator.py +154 -0
  362. paddlex/modules/base/exportor.py +121 -0
  363. paddlex/modules/base/trainer.py +111 -0
  364. paddlex/modules/face_recognition/__init__.py +18 -0
  365. paddlex/modules/face_recognition/dataset_checker/__init__.py +71 -0
  366. paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +16 -0
  367. paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +174 -0
  368. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  369. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +156 -0
  370. paddlex/modules/face_recognition/evaluator.py +52 -0
  371. paddlex/modules/face_recognition/exportor.py +22 -0
  372. paddlex/modules/face_recognition/model_list.py +15 -0
  373. paddlex/modules/face_recognition/trainer.py +97 -0
  374. paddlex/modules/formula_recognition/__init__.py +13 -0
  375. paddlex/modules/formula_recognition/model_list.py +17 -0
  376. paddlex/modules/general_recognition/__init__.py +18 -0
  377. paddlex/modules/general_recognition/dataset_checker/__init__.py +107 -0
  378. paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  379. paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +98 -0
  380. paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +100 -0
  381. paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +99 -0
  382. paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +82 -0
  383. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  384. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +150 -0
  385. paddlex/modules/general_recognition/evaluator.py +31 -0
  386. paddlex/modules/general_recognition/exportor.py +22 -0
  387. paddlex/modules/general_recognition/model_list.py +19 -0
  388. paddlex/modules/general_recognition/trainer.py +52 -0
  389. paddlex/modules/image_classification/__init__.py +18 -0
  390. paddlex/modules/image_classification/dataset_checker/__init__.py +104 -0
  391. paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +19 -0
  392. paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +93 -0
  393. paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +131 -0
  394. paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +51 -0
  395. paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  396. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  397. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +156 -0
  398. paddlex/modules/image_classification/evaluator.py +43 -0
  399. paddlex/modules/image_classification/exportor.py +22 -0
  400. paddlex/modules/image_classification/model_list.py +97 -0
  401. paddlex/modules/image_classification/trainer.py +82 -0
  402. paddlex/modules/image_unwarping/__init__.py +13 -0
  403. paddlex/modules/image_unwarping/model_list.py +17 -0
  404. paddlex/modules/instance_segmentation/__init__.py +18 -0
  405. paddlex/modules/instance_segmentation/dataset_checker/__init__.py +93 -0
  406. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  407. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +78 -0
  408. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +92 -0
  409. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +241 -0
  410. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +119 -0
  411. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  412. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +221 -0
  413. paddlex/modules/instance_segmentation/evaluator.py +32 -0
  414. paddlex/modules/instance_segmentation/exportor.py +22 -0
  415. paddlex/modules/instance_segmentation/model_list.py +33 -0
  416. paddlex/modules/instance_segmentation/trainer.py +31 -0
  417. paddlex/modules/multilabel_classification/__init__.py +18 -0
  418. paddlex/modules/multilabel_classification/dataset_checker/__init__.py +106 -0
  419. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +19 -0
  420. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +95 -0
  421. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +131 -0
  422. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +117 -0
  423. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  424. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  425. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +153 -0
  426. paddlex/modules/multilabel_classification/evaluator.py +43 -0
  427. paddlex/modules/multilabel_classification/exportor.py +22 -0
  428. paddlex/modules/multilabel_classification/model_list.py +24 -0
  429. paddlex/modules/multilabel_classification/trainer.py +85 -0
  430. paddlex/modules/object_detection/__init__.py +18 -0
  431. paddlex/modules/object_detection/dataset_checker/__init__.py +115 -0
  432. paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +19 -0
  433. paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +80 -0
  434. paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +86 -0
  435. paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +433 -0
  436. paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +119 -0
  437. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  438. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +192 -0
  439. paddlex/modules/object_detection/evaluator.py +41 -0
  440. paddlex/modules/object_detection/exportor.py +22 -0
  441. paddlex/modules/object_detection/model_list.py +74 -0
  442. paddlex/modules/object_detection/trainer.py +85 -0
  443. paddlex/modules/semantic_segmentation/__init__.py +18 -0
  444. paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +95 -0
  445. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  446. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +73 -0
  447. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +80 -0
  448. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +162 -0
  449. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +87 -0
  450. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  451. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +71 -0
  452. paddlex/modules/semantic_segmentation/evaluator.py +58 -0
  453. paddlex/modules/semantic_segmentation/exportor.py +22 -0
  454. paddlex/modules/semantic_segmentation/model_list.py +35 -0
  455. paddlex/modules/semantic_segmentation/trainer.py +71 -0
  456. paddlex/modules/table_recognition/__init__.py +18 -0
  457. paddlex/modules/table_recognition/dataset_checker/__init__.py +83 -0
  458. paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +18 -0
  459. paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +58 -0
  460. paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +87 -0
  461. paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +79 -0
  462. paddlex/modules/table_recognition/evaluator.py +43 -0
  463. paddlex/modules/table_recognition/exportor.py +22 -0
  464. paddlex/modules/table_recognition/model_list.py +19 -0
  465. paddlex/modules/table_recognition/trainer.py +70 -0
  466. paddlex/modules/text_detection/__init__.py +18 -0
  467. paddlex/modules/text_detection/dataset_checker/__init__.py +94 -0
  468. paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +18 -0
  469. paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +217 -0
  470. paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +96 -0
  471. paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +140 -0
  472. paddlex/modules/text_detection/evaluator.py +41 -0
  473. paddlex/modules/text_detection/exportor.py +22 -0
  474. paddlex/modules/text_detection/model_list.py +22 -0
  475. paddlex/modules/text_detection/trainer.py +68 -0
  476. paddlex/modules/text_recognition/__init__.py +18 -0
  477. paddlex/modules/text_recognition/dataset_checker/__init__.py +114 -0
  478. paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  479. paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +161 -0
  480. paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +97 -0
  481. paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +94 -0
  482. paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +81 -0
  483. paddlex/modules/text_recognition/evaluator.py +63 -0
  484. paddlex/modules/text_recognition/exportor.py +25 -0
  485. paddlex/modules/text_recognition/model_list.py +20 -0
  486. paddlex/modules/text_recognition/trainer.py +105 -0
  487. paddlex/modules/ts_anomaly_detection/__init__.py +19 -0
  488. paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +97 -0
  489. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  490. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +27 -0
  491. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +64 -0
  492. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +78 -0
  493. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +63 -0
  494. paddlex/modules/ts_anomaly_detection/evaluator.py +67 -0
  495. paddlex/modules/ts_anomaly_detection/exportor.py +45 -0
  496. paddlex/modules/ts_anomaly_detection/model_list.py +22 -0
  497. paddlex/modules/ts_anomaly_detection/trainer.py +97 -0
  498. paddlex/modules/ts_classification/__init__.py +19 -0
  499. paddlex/modules/ts_classification/dataset_checker/__init__.py +97 -0
  500. paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +19 -0
  501. paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +74 -0
  502. paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +64 -0
  503. paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +78 -0
  504. paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +88 -0
  505. paddlex/modules/ts_classification/evaluator.py +66 -0
  506. paddlex/modules/ts_classification/exportor.py +45 -0
  507. paddlex/modules/ts_classification/model_list.py +18 -0
  508. paddlex/modules/ts_classification/trainer.py +92 -0
  509. paddlex/modules/ts_forecast/__init__.py +19 -0
  510. paddlex/modules/ts_forecast/dataset_checker/__init__.py +97 -0
  511. paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +19 -0
  512. paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +27 -0
  513. paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +64 -0
  514. paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +77 -0
  515. paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +63 -0
  516. paddlex/modules/ts_forecast/evaluator.py +66 -0
  517. paddlex/modules/ts_forecast/exportor.py +45 -0
  518. paddlex/modules/ts_forecast/model_list.py +24 -0
  519. paddlex/modules/ts_forecast/trainer.py +92 -0
  520. paddlex/paddlex_cli.py +197 -0
  521. paddlex/pipelines/OCR.yaml +8 -0
  522. paddlex/pipelines/PP-ChatOCRv3-doc.yaml +27 -0
  523. paddlex/pipelines/PP-ShiTuV2.yaml +13 -0
  524. paddlex/pipelines/anomaly_detection.yaml +7 -0
  525. paddlex/pipelines/face_recognition.yaml +13 -0
  526. paddlex/pipelines/formula_recognition.yaml +8 -0
  527. paddlex/pipelines/image_classification.yaml +7 -0
  528. paddlex/pipelines/instance_segmentation.yaml +7 -0
  529. paddlex/pipelines/layout_parsing.yaml +14 -0
  530. paddlex/pipelines/multi_label_image_classification.yaml +7 -0
  531. paddlex/pipelines/object_detection.yaml +7 -0
  532. paddlex/pipelines/pedestrian_attribute_recognition.yaml +7 -0
  533. paddlex/pipelines/seal_recognition.yaml +10 -0
  534. paddlex/pipelines/semantic_segmentation.yaml +7 -0
  535. paddlex/pipelines/small_object_detection.yaml +7 -0
  536. paddlex/pipelines/table_recognition.yaml +12 -0
  537. paddlex/pipelines/ts_ad.yaml +7 -0
  538. paddlex/pipelines/ts_cls.yaml +7 -0
  539. paddlex/pipelines/ts_fc.yaml +7 -0
  540. paddlex/pipelines/vehicle_attribute_recognition.yaml +7 -0
  541. paddlex/repo_apis/PaddleClas_api/__init__.py +17 -0
  542. paddlex/repo_apis/PaddleClas_api/cls/__init__.py +19 -0
  543. paddlex/repo_apis/PaddleClas_api/cls/config.py +594 -0
  544. paddlex/repo_apis/PaddleClas_api/cls/model.py +349 -0
  545. paddlex/repo_apis/PaddleClas_api/cls/register.py +890 -0
  546. paddlex/repo_apis/PaddleClas_api/cls/runner.py +219 -0
  547. paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +18 -0
  548. paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +141 -0
  549. paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +23 -0
  550. paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +68 -0
  551. paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +55 -0
  552. paddlex/repo_apis/PaddleDetection_api/__init__.py +17 -0
  553. paddlex/repo_apis/PaddleDetection_api/config_helper.py +280 -0
  554. paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +18 -0
  555. paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +454 -0
  556. paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +397 -0
  557. paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +263 -0
  558. paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +226 -0
  559. paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +19 -0
  560. paddlex/repo_apis/PaddleDetection_api/object_det/config.py +517 -0
  561. paddlex/repo_apis/PaddleDetection_api/object_det/model.py +424 -0
  562. paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +139 -0
  563. paddlex/repo_apis/PaddleDetection_api/object_det/register.py +927 -0
  564. paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +226 -0
  565. paddlex/repo_apis/PaddleNLP_api/__init__.py +13 -0
  566. paddlex/repo_apis/PaddleOCR_api/__init__.py +20 -0
  567. paddlex/repo_apis/PaddleOCR_api/config_utils.py +53 -0
  568. paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +16 -0
  569. paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +64 -0
  570. paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +126 -0
  571. paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +53 -0
  572. paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +51 -0
  573. paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +16 -0
  574. paddlex/repo_apis/PaddleOCR_api/text_det/config.py +62 -0
  575. paddlex/repo_apis/PaddleOCR_api/text_det/model.py +72 -0
  576. paddlex/repo_apis/PaddleOCR_api/text_det/register.py +72 -0
  577. paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +53 -0
  578. paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +16 -0
  579. paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +542 -0
  580. paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +396 -0
  581. paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +80 -0
  582. paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +240 -0
  583. paddlex/repo_apis/PaddleSeg_api/__init__.py +16 -0
  584. paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +134 -0
  585. paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +16 -0
  586. paddlex/repo_apis/PaddleSeg_api/seg/config.py +177 -0
  587. paddlex/repo_apis/PaddleSeg_api/seg/model.py +481 -0
  588. paddlex/repo_apis/PaddleSeg_api/seg/register.py +253 -0
  589. paddlex/repo_apis/PaddleSeg_api/seg/runner.py +262 -0
  590. paddlex/repo_apis/PaddleTS_api/__init__.py +19 -0
  591. paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +16 -0
  592. paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +89 -0
  593. paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +146 -0
  594. paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +158 -0
  595. paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +13 -0
  596. paddlex/repo_apis/PaddleTS_api/ts_base/config.py +222 -0
  597. paddlex/repo_apis/PaddleTS_api/ts_base/model.py +272 -0
  598. paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +158 -0
  599. paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +16 -0
  600. paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +73 -0
  601. paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +59 -0
  602. paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +158 -0
  603. paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +16 -0
  604. paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +137 -0
  605. paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +186 -0
  606. paddlex/repo_apis/__init__.py +13 -0
  607. paddlex/repo_apis/base/__init__.py +23 -0
  608. paddlex/repo_apis/base/config.py +238 -0
  609. paddlex/repo_apis/base/model.py +571 -0
  610. paddlex/repo_apis/base/register.py +135 -0
  611. paddlex/repo_apis/base/runner.py +390 -0
  612. paddlex/repo_apis/base/utils/__init__.py +13 -0
  613. paddlex/repo_apis/base/utils/arg.py +64 -0
  614. paddlex/repo_apis/base/utils/subprocess.py +107 -0
  615. paddlex/repo_manager/__init__.py +24 -0
  616. paddlex/repo_manager/core.py +271 -0
  617. paddlex/repo_manager/meta.py +143 -0
  618. paddlex/repo_manager/repo.py +396 -0
  619. paddlex/repo_manager/requirements.txt +18 -0
  620. paddlex/repo_manager/utils.py +298 -0
  621. paddlex/utils/__init__.py +1 -12
  622. paddlex/utils/cache.py +148 -0
  623. paddlex/utils/config.py +214 -0
  624. paddlex/utils/device.py +103 -0
  625. paddlex/utils/download.py +168 -182
  626. paddlex/utils/errors/__init__.py +17 -0
  627. paddlex/utils/errors/dataset_checker.py +78 -0
  628. paddlex/utils/errors/others.py +152 -0
  629. paddlex/utils/file_interface.py +212 -0
  630. paddlex/utils/flags.py +61 -0
  631. paddlex/utils/fonts/PingFang-SC-Regular.ttf +0 -0
  632. paddlex/utils/fonts/__init__.py +24 -0
  633. paddlex/utils/func_register.py +41 -0
  634. paddlex/utils/interactive_get_pipeline.py +55 -0
  635. paddlex/utils/lazy_loader.py +66 -0
  636. paddlex/utils/logging.py +132 -33
  637. paddlex/utils/misc.py +201 -0
  638. paddlex/utils/result_saver.py +59 -0
  639. paddlex/utils/subclass_register.py +101 -0
  640. paddlex/version.py +54 -0
  641. paddlex-3.0.0b2.dist-info/LICENSE +169 -0
  642. paddlex-3.0.0b2.dist-info/METADATA +760 -0
  643. paddlex-3.0.0b2.dist-info/RECORD +646 -0
  644. paddlex-3.0.0b2.dist-info/WHEEL +5 -0
  645. paddlex-3.0.0b2.dist-info/entry_points.txt +2 -0
  646. paddlex-3.0.0b2.dist-info/top_level.txt +1 -0
  647. PaddleClas/__init__.py +0 -16
  648. PaddleClas/deploy/__init__.py +0 -1
  649. PaddleClas/deploy/paddleserving/__init__.py +0 -0
  650. PaddleClas/deploy/paddleserving/classification_web_service.py +0 -74
  651. PaddleClas/deploy/paddleserving/cpu_utilization.py +0 -4
  652. PaddleClas/deploy/paddleserving/pipeline_http_client.py +0 -20
  653. PaddleClas/deploy/paddleserving/pipeline_rpc_client.py +0 -33
  654. PaddleClas/deploy/paddleserving/recognition/__init__.py +0 -0
  655. PaddleClas/deploy/paddleserving/recognition/pipeline_http_client.py +0 -21
  656. PaddleClas/deploy/paddleserving/recognition/pipeline_rpc_client.py +0 -34
  657. PaddleClas/deploy/paddleserving/recognition/recognition_web_service.py +0 -209
  658. PaddleClas/deploy/python/__init__.py +0 -0
  659. PaddleClas/deploy/python/build_gallery.py +0 -214
  660. PaddleClas/deploy/python/det_preprocess.py +0 -205
  661. PaddleClas/deploy/python/postprocess.py +0 -161
  662. PaddleClas/deploy/python/predict_cls.py +0 -142
  663. PaddleClas/deploy/python/predict_det.py +0 -158
  664. PaddleClas/deploy/python/predict_rec.py +0 -138
  665. PaddleClas/deploy/python/predict_system.py +0 -144
  666. PaddleClas/deploy/python/preprocess.py +0 -337
  667. PaddleClas/deploy/utils/__init__.py +0 -5
  668. PaddleClas/deploy/utils/config.py +0 -197
  669. PaddleClas/deploy/utils/draw_bbox.py +0 -61
  670. PaddleClas/deploy/utils/encode_decode.py +0 -31
  671. PaddleClas/deploy/utils/get_image_list.py +0 -49
  672. PaddleClas/deploy/utils/logger.py +0 -120
  673. PaddleClas/deploy/utils/predictor.py +0 -71
  674. PaddleClas/deploy/vector_search/__init__.py +0 -1
  675. PaddleClas/deploy/vector_search/interface.py +0 -272
  676. PaddleClas/deploy/vector_search/test.py +0 -34
  677. PaddleClas/hubconf.py +0 -788
  678. PaddleClas/paddleclas.py +0 -552
  679. PaddleClas/ppcls/__init__.py +0 -20
  680. PaddleClas/ppcls/arch/__init__.py +0 -127
  681. PaddleClas/ppcls/arch/backbone/__init__.py +0 -80
  682. PaddleClas/ppcls/arch/backbone/base/__init__.py +0 -0
  683. PaddleClas/ppcls/arch/backbone/base/theseus_layer.py +0 -126
  684. PaddleClas/ppcls/arch/backbone/legendary_models/__init__.py +0 -6
  685. PaddleClas/ppcls/arch/backbone/legendary_models/esnet.py +0 -355
  686. PaddleClas/ppcls/arch/backbone/legendary_models/hrnet.py +0 -744
  687. PaddleClas/ppcls/arch/backbone/legendary_models/inception_v3.py +0 -539
  688. PaddleClas/ppcls/arch/backbone/legendary_models/mobilenet_v1.py +0 -234
  689. PaddleClas/ppcls/arch/backbone/legendary_models/mobilenet_v3.py +0 -561
  690. PaddleClas/ppcls/arch/backbone/legendary_models/pp_lcnet.py +0 -399
  691. PaddleClas/ppcls/arch/backbone/legendary_models/resnet.py +0 -534
  692. PaddleClas/ppcls/arch/backbone/legendary_models/vgg.py +0 -231
  693. PaddleClas/ppcls/arch/backbone/model_zoo/__init__.py +0 -0
  694. PaddleClas/ppcls/arch/backbone/model_zoo/alexnet.py +0 -168
  695. PaddleClas/ppcls/arch/backbone/model_zoo/cspnet.py +0 -376
  696. PaddleClas/ppcls/arch/backbone/model_zoo/darknet.py +0 -197
  697. PaddleClas/ppcls/arch/backbone/model_zoo/densenet.py +0 -344
  698. PaddleClas/ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py +0 -272
  699. PaddleClas/ppcls/arch/backbone/model_zoo/dla.py +0 -528
  700. PaddleClas/ppcls/arch/backbone/model_zoo/dpn.py +0 -451
  701. PaddleClas/ppcls/arch/backbone/model_zoo/efficientnet.py +0 -976
  702. PaddleClas/ppcls/arch/backbone/model_zoo/ghostnet.py +0 -363
  703. PaddleClas/ppcls/arch/backbone/model_zoo/googlenet.py +0 -229
  704. PaddleClas/ppcls/arch/backbone/model_zoo/gvt.py +0 -693
  705. PaddleClas/ppcls/arch/backbone/model_zoo/hardnet.py +0 -293
  706. PaddleClas/ppcls/arch/backbone/model_zoo/inception_v4.py +0 -477
  707. PaddleClas/ppcls/arch/backbone/model_zoo/levit.py +0 -589
  708. PaddleClas/ppcls/arch/backbone/model_zoo/mixnet.py +0 -815
  709. PaddleClas/ppcls/arch/backbone/model_zoo/mobilenet_v2.py +0 -287
  710. PaddleClas/ppcls/arch/backbone/model_zoo/rednet.py +0 -203
  711. PaddleClas/ppcls/arch/backbone/model_zoo/regnet.py +0 -431
  712. PaddleClas/ppcls/arch/backbone/model_zoo/repvgg.py +0 -422
  713. PaddleClas/ppcls/arch/backbone/model_zoo/res2net.py +0 -264
  714. PaddleClas/ppcls/arch/backbone/model_zoo/res2net_vd.py +0 -305
  715. PaddleClas/ppcls/arch/backbone/model_zoo/resnest.py +0 -740
  716. PaddleClas/ppcls/arch/backbone/model_zoo/resnet_vc.py +0 -309
  717. PaddleClas/ppcls/arch/backbone/model_zoo/resnext.py +0 -298
  718. PaddleClas/ppcls/arch/backbone/model_zoo/resnext101_wsl.py +0 -490
  719. PaddleClas/ppcls/arch/backbone/model_zoo/resnext_vd.py +0 -317
  720. PaddleClas/ppcls/arch/backbone/model_zoo/rexnet.py +0 -281
  721. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnet_vd.py +0 -390
  722. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnext.py +0 -364
  723. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnext_vd.py +0 -309
  724. PaddleClas/ppcls/arch/backbone/model_zoo/shufflenet_v2.py +0 -362
  725. PaddleClas/ppcls/arch/backbone/model_zoo/squeezenet.py +0 -194
  726. PaddleClas/ppcls/arch/backbone/model_zoo/swin_transformer.py +0 -857
  727. PaddleClas/ppcls/arch/backbone/model_zoo/tnt.py +0 -385
  728. PaddleClas/ppcls/arch/backbone/model_zoo/vision_transformer.py +0 -495
  729. PaddleClas/ppcls/arch/backbone/model_zoo/xception.py +0 -377
  730. PaddleClas/ppcls/arch/backbone/model_zoo/xception_deeplab.py +0 -421
  731. PaddleClas/ppcls/arch/backbone/variant_models/__init__.py +0 -3
  732. PaddleClas/ppcls/arch/backbone/variant_models/pp_lcnet_variant.py +0 -29
  733. PaddleClas/ppcls/arch/backbone/variant_models/resnet_variant.py +0 -23
  734. PaddleClas/ppcls/arch/backbone/variant_models/vgg_variant.py +0 -28
  735. PaddleClas/ppcls/arch/gears/__init__.py +0 -32
  736. PaddleClas/ppcls/arch/gears/arcmargin.py +0 -72
  737. PaddleClas/ppcls/arch/gears/circlemargin.py +0 -59
  738. PaddleClas/ppcls/arch/gears/cosmargin.py +0 -55
  739. PaddleClas/ppcls/arch/gears/fc.py +0 -35
  740. PaddleClas/ppcls/arch/gears/identity_head.py +0 -9
  741. PaddleClas/ppcls/arch/gears/vehicle_neck.py +0 -52
  742. PaddleClas/ppcls/arch/utils.py +0 -53
  743. PaddleClas/ppcls/data/__init__.py +0 -144
  744. PaddleClas/ppcls/data/dataloader/DistributedRandomIdentitySampler.py +0 -90
  745. PaddleClas/ppcls/data/dataloader/__init__.py +0 -9
  746. PaddleClas/ppcls/data/dataloader/common_dataset.py +0 -84
  747. PaddleClas/ppcls/data/dataloader/dali.py +0 -319
  748. PaddleClas/ppcls/data/dataloader/icartoon_dataset.py +0 -36
  749. PaddleClas/ppcls/data/dataloader/imagenet_dataset.py +0 -38
  750. PaddleClas/ppcls/data/dataloader/logo_dataset.py +0 -46
  751. PaddleClas/ppcls/data/dataloader/mix_dataset.py +0 -49
  752. PaddleClas/ppcls/data/dataloader/mix_sampler.py +0 -79
  753. PaddleClas/ppcls/data/dataloader/multilabel_dataset.py +0 -59
  754. PaddleClas/ppcls/data/dataloader/pk_sampler.py +0 -105
  755. PaddleClas/ppcls/data/dataloader/vehicle_dataset.py +0 -138
  756. PaddleClas/ppcls/data/postprocess/__init__.py +0 -41
  757. PaddleClas/ppcls/data/postprocess/topk.py +0 -85
  758. PaddleClas/ppcls/data/preprocess/__init__.py +0 -100
  759. PaddleClas/ppcls/data/preprocess/batch_ops/__init__.py +0 -1
  760. PaddleClas/ppcls/data/preprocess/batch_ops/batch_operators.py +0 -231
  761. PaddleClas/ppcls/data/preprocess/ops/__init__.py +0 -1
  762. PaddleClas/ppcls/data/preprocess/ops/autoaugment.py +0 -264
  763. PaddleClas/ppcls/data/preprocess/ops/cutout.py +0 -41
  764. PaddleClas/ppcls/data/preprocess/ops/fmix.py +0 -217
  765. PaddleClas/ppcls/data/preprocess/ops/functional.py +0 -138
  766. PaddleClas/ppcls/data/preprocess/ops/grid.py +0 -89
  767. PaddleClas/ppcls/data/preprocess/ops/hide_and_seek.py +0 -44
  768. PaddleClas/ppcls/data/preprocess/ops/operators.py +0 -384
  769. PaddleClas/ppcls/data/preprocess/ops/randaugment.py +0 -106
  770. PaddleClas/ppcls/data/preprocess/ops/random_erasing.py +0 -90
  771. PaddleClas/ppcls/data/preprocess/ops/timm_autoaugment.py +0 -877
  772. PaddleClas/ppcls/data/utils/__init__.py +0 -13
  773. PaddleClas/ppcls/data/utils/get_image_list.py +0 -49
  774. PaddleClas/ppcls/engine/__init__.py +0 -0
  775. PaddleClas/ppcls/engine/engine.py +0 -436
  776. PaddleClas/ppcls/engine/evaluation/__init__.py +0 -16
  777. PaddleClas/ppcls/engine/evaluation/classification.py +0 -143
  778. PaddleClas/ppcls/engine/evaluation/retrieval.py +0 -169
  779. PaddleClas/ppcls/engine/slim/__init__.py +0 -16
  780. PaddleClas/ppcls/engine/slim/prune.py +0 -66
  781. PaddleClas/ppcls/engine/slim/quant.py +0 -55
  782. PaddleClas/ppcls/engine/train/__init__.py +0 -14
  783. PaddleClas/ppcls/engine/train/train.py +0 -79
  784. PaddleClas/ppcls/engine/train/utils.py +0 -72
  785. PaddleClas/ppcls/loss/__init__.py +0 -65
  786. PaddleClas/ppcls/loss/celoss.py +0 -67
  787. PaddleClas/ppcls/loss/centerloss.py +0 -54
  788. PaddleClas/ppcls/loss/comfunc.py +0 -45
  789. PaddleClas/ppcls/loss/deephashloss.py +0 -92
  790. PaddleClas/ppcls/loss/distanceloss.py +0 -43
  791. PaddleClas/ppcls/loss/distillationloss.py +0 -141
  792. PaddleClas/ppcls/loss/dmlloss.py +0 -46
  793. PaddleClas/ppcls/loss/emlloss.py +0 -97
  794. PaddleClas/ppcls/loss/googlenetloss.py +0 -41
  795. PaddleClas/ppcls/loss/msmloss.py +0 -78
  796. PaddleClas/ppcls/loss/multilabelloss.py +0 -43
  797. PaddleClas/ppcls/loss/npairsloss.py +0 -38
  798. PaddleClas/ppcls/loss/pairwisecosface.py +0 -55
  799. PaddleClas/ppcls/loss/supconloss.py +0 -108
  800. PaddleClas/ppcls/loss/trihardloss.py +0 -82
  801. PaddleClas/ppcls/loss/triplet.py +0 -137
  802. PaddleClas/ppcls/metric/__init__.py +0 -51
  803. PaddleClas/ppcls/metric/metrics.py +0 -308
  804. PaddleClas/ppcls/optimizer/__init__.py +0 -72
  805. PaddleClas/ppcls/optimizer/learning_rate.py +0 -326
  806. PaddleClas/ppcls/optimizer/optimizer.py +0 -207
  807. PaddleClas/ppcls/utils/__init__.py +0 -27
  808. PaddleClas/ppcls/utils/check.py +0 -151
  809. PaddleClas/ppcls/utils/config.py +0 -210
  810. PaddleClas/ppcls/utils/download.py +0 -319
  811. PaddleClas/ppcls/utils/ema.py +0 -63
  812. PaddleClas/ppcls/utils/logger.py +0 -137
  813. PaddleClas/ppcls/utils/metrics.py +0 -107
  814. PaddleClas/ppcls/utils/misc.py +0 -63
  815. PaddleClas/ppcls/utils/model_zoo.py +0 -213
  816. PaddleClas/ppcls/utils/profiler.py +0 -111
  817. PaddleClas/ppcls/utils/save_load.py +0 -136
  818. PaddleClas/setup.py +0 -58
  819. PaddleClas/tools/__init__.py +0 -15
  820. PaddleClas/tools/eval.py +0 -31
  821. PaddleClas/tools/export_model.py +0 -34
  822. PaddleClas/tools/infer.py +0 -31
  823. PaddleClas/tools/train.py +0 -32
  824. paddlex/cls.py +0 -82
  825. paddlex/command.py +0 -215
  826. paddlex/cv/__init__.py +0 -17
  827. paddlex/cv/datasets/__init__.py +0 -18
  828. paddlex/cv/datasets/coco.py +0 -208
  829. paddlex/cv/datasets/imagenet.py +0 -88
  830. paddlex/cv/datasets/seg_dataset.py +0 -91
  831. paddlex/cv/datasets/voc.py +0 -445
  832. paddlex/cv/models/__init__.py +0 -18
  833. paddlex/cv/models/base.py +0 -631
  834. paddlex/cv/models/classifier.py +0 -989
  835. paddlex/cv/models/detector.py +0 -2292
  836. paddlex/cv/models/load_model.py +0 -148
  837. paddlex/cv/models/segmenter.py +0 -768
  838. paddlex/cv/models/slim/__init__.py +0 -13
  839. paddlex/cv/models/slim/prune.py +0 -55
  840. paddlex/cv/models/utils/__init__.py +0 -13
  841. paddlex/cv/models/utils/det_metrics/__init__.py +0 -15
  842. paddlex/cv/models/utils/det_metrics/coco_utils.py +0 -476
  843. paddlex/cv/models/utils/det_metrics/metrics.py +0 -220
  844. paddlex/cv/models/utils/infer_nets.py +0 -45
  845. paddlex/cv/models/utils/seg_metrics.py +0 -62
  846. paddlex/cv/models/utils/visualize.py +0 -399
  847. paddlex/cv/transforms/__init__.py +0 -46
  848. paddlex/cv/transforms/batch_operators.py +0 -286
  849. paddlex/cv/transforms/box_utils.py +0 -41
  850. paddlex/cv/transforms/functions.py +0 -193
  851. paddlex/cv/transforms/operators.py +0 -1402
  852. paddlex/deploy.py +0 -268
  853. paddlex/det.py +0 -49
  854. paddlex/paddleseg/__init__.py +0 -17
  855. paddlex/paddleseg/core/__init__.py +0 -20
  856. paddlex/paddleseg/core/infer.py +0 -289
  857. paddlex/paddleseg/core/predict.py +0 -145
  858. paddlex/paddleseg/core/train.py +0 -258
  859. paddlex/paddleseg/core/val.py +0 -172
  860. paddlex/paddleseg/cvlibs/__init__.py +0 -17
  861. paddlex/paddleseg/cvlibs/callbacks.py +0 -279
  862. paddlex/paddleseg/cvlibs/config.py +0 -359
  863. paddlex/paddleseg/cvlibs/manager.py +0 -142
  864. paddlex/paddleseg/cvlibs/param_init.py +0 -91
  865. paddlex/paddleseg/datasets/__init__.py +0 -21
  866. paddlex/paddleseg/datasets/ade.py +0 -112
  867. paddlex/paddleseg/datasets/cityscapes.py +0 -86
  868. paddlex/paddleseg/datasets/cocostuff.py +0 -79
  869. paddlex/paddleseg/datasets/dataset.py +0 -164
  870. paddlex/paddleseg/datasets/mini_deep_globe_road_extraction.py +0 -95
  871. paddlex/paddleseg/datasets/optic_disc_seg.py +0 -97
  872. paddlex/paddleseg/datasets/pascal_context.py +0 -80
  873. paddlex/paddleseg/datasets/voc.py +0 -113
  874. paddlex/paddleseg/models/__init__.py +0 -39
  875. paddlex/paddleseg/models/ann.py +0 -436
  876. paddlex/paddleseg/models/attention_unet.py +0 -189
  877. paddlex/paddleseg/models/backbones/__init__.py +0 -18
  878. paddlex/paddleseg/models/backbones/hrnet.py +0 -815
  879. paddlex/paddleseg/models/backbones/mobilenetv3.py +0 -365
  880. paddlex/paddleseg/models/backbones/resnet_vd.py +0 -364
  881. paddlex/paddleseg/models/backbones/xception_deeplab.py +0 -415
  882. paddlex/paddleseg/models/bisenet.py +0 -311
  883. paddlex/paddleseg/models/danet.py +0 -220
  884. paddlex/paddleseg/models/decoupled_segnet.py +0 -233
  885. paddlex/paddleseg/models/deeplab.py +0 -258
  886. paddlex/paddleseg/models/dnlnet.py +0 -231
  887. paddlex/paddleseg/models/emanet.py +0 -219
  888. paddlex/paddleseg/models/fast_scnn.py +0 -318
  889. paddlex/paddleseg/models/fcn.py +0 -135
  890. paddlex/paddleseg/models/gcnet.py +0 -223
  891. paddlex/paddleseg/models/gscnn.py +0 -357
  892. paddlex/paddleseg/models/hardnet.py +0 -309
  893. paddlex/paddleseg/models/isanet.py +0 -202
  894. paddlex/paddleseg/models/layers/__init__.py +0 -19
  895. paddlex/paddleseg/models/layers/activation.py +0 -73
  896. paddlex/paddleseg/models/layers/attention.py +0 -146
  897. paddlex/paddleseg/models/layers/layer_libs.py +0 -168
  898. paddlex/paddleseg/models/layers/nonlocal2d.py +0 -155
  899. paddlex/paddleseg/models/layers/pyramid_pool.py +0 -182
  900. paddlex/paddleseg/models/losses/__init__.py +0 -27
  901. paddlex/paddleseg/models/losses/binary_cross_entropy_loss.py +0 -174
  902. paddlex/paddleseg/models/losses/bootstrapped_cross_entropy.py +0 -73
  903. paddlex/paddleseg/models/losses/cross_entropy_loss.py +0 -94
  904. paddlex/paddleseg/models/losses/decoupledsegnet_relax_boundary_loss.py +0 -129
  905. paddlex/paddleseg/models/losses/dice_loss.py +0 -61
  906. paddlex/paddleseg/models/losses/edge_attention_loss.py +0 -78
  907. paddlex/paddleseg/models/losses/gscnn_dual_task_loss.py +0 -141
  908. paddlex/paddleseg/models/losses/l1_loss.py +0 -76
  909. paddlex/paddleseg/models/losses/lovasz_loss.py +0 -222
  910. paddlex/paddleseg/models/losses/mean_square_error_loss.py +0 -65
  911. paddlex/paddleseg/models/losses/mixed_loss.py +0 -58
  912. paddlex/paddleseg/models/losses/ohem_cross_entropy_loss.py +0 -99
  913. paddlex/paddleseg/models/losses/ohem_edge_attention_loss.py +0 -114
  914. paddlex/paddleseg/models/ocrnet.py +0 -248
  915. paddlex/paddleseg/models/pspnet.py +0 -147
  916. paddlex/paddleseg/models/sfnet.py +0 -236
  917. paddlex/paddleseg/models/shufflenet_slim.py +0 -268
  918. paddlex/paddleseg/models/u2net.py +0 -574
  919. paddlex/paddleseg/models/unet.py +0 -155
  920. paddlex/paddleseg/models/unet_3plus.py +0 -316
  921. paddlex/paddleseg/models/unet_plusplus.py +0 -237
  922. paddlex/paddleseg/transforms/__init__.py +0 -16
  923. paddlex/paddleseg/transforms/functional.py +0 -161
  924. paddlex/paddleseg/transforms/transforms.py +0 -937
  925. paddlex/paddleseg/utils/__init__.py +0 -22
  926. paddlex/paddleseg/utils/config_check.py +0 -60
  927. paddlex/paddleseg/utils/download.py +0 -163
  928. paddlex/paddleseg/utils/env/__init__.py +0 -16
  929. paddlex/paddleseg/utils/env/seg_env.py +0 -56
  930. paddlex/paddleseg/utils/env/sys_env.py +0 -122
  931. paddlex/paddleseg/utils/logger.py +0 -48
  932. paddlex/paddleseg/utils/metrics.py +0 -146
  933. paddlex/paddleseg/utils/progbar.py +0 -212
  934. paddlex/paddleseg/utils/timer.py +0 -53
  935. paddlex/paddleseg/utils/utils.py +0 -120
  936. paddlex/paddleseg/utils/visualize.py +0 -90
  937. paddlex/ppcls/__init__.py +0 -20
  938. paddlex/ppcls/arch/__init__.py +0 -127
  939. paddlex/ppcls/arch/backbone/__init__.py +0 -80
  940. paddlex/ppcls/arch/backbone/base/__init__.py +0 -0
  941. paddlex/ppcls/arch/backbone/base/theseus_layer.py +0 -130
  942. paddlex/ppcls/arch/backbone/legendary_models/__init__.py +0 -6
  943. paddlex/ppcls/arch/backbone/legendary_models/esnet.py +0 -355
  944. paddlex/ppcls/arch/backbone/legendary_models/hrnet.py +0 -748
  945. paddlex/ppcls/arch/backbone/legendary_models/inception_v3.py +0 -539
  946. paddlex/ppcls/arch/backbone/legendary_models/mobilenet_v1.py +0 -234
  947. paddlex/ppcls/arch/backbone/legendary_models/mobilenet_v3.py +0 -561
  948. paddlex/ppcls/arch/backbone/legendary_models/pp_lcnet.py +0 -399
  949. paddlex/ppcls/arch/backbone/legendary_models/resnet.py +0 -534
  950. paddlex/ppcls/arch/backbone/legendary_models/vgg.py +0 -235
  951. paddlex/ppcls/arch/backbone/model_zoo/__init__.py +0 -0
  952. paddlex/ppcls/arch/backbone/model_zoo/alexnet.py +0 -168
  953. paddlex/ppcls/arch/backbone/model_zoo/cspnet.py +0 -376
  954. paddlex/ppcls/arch/backbone/model_zoo/darknet.py +0 -197
  955. paddlex/ppcls/arch/backbone/model_zoo/densenet.py +0 -344
  956. paddlex/ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py +0 -272
  957. paddlex/ppcls/arch/backbone/model_zoo/dla.py +0 -528
  958. paddlex/ppcls/arch/backbone/model_zoo/dpn.py +0 -451
  959. paddlex/ppcls/arch/backbone/model_zoo/efficientnet.py +0 -976
  960. paddlex/ppcls/arch/backbone/model_zoo/ghostnet.py +0 -363
  961. paddlex/ppcls/arch/backbone/model_zoo/googlenet.py +0 -229
  962. paddlex/ppcls/arch/backbone/model_zoo/gvt.py +0 -693
  963. paddlex/ppcls/arch/backbone/model_zoo/hardnet.py +0 -293
  964. paddlex/ppcls/arch/backbone/model_zoo/inception_v4.py +0 -477
  965. paddlex/ppcls/arch/backbone/model_zoo/levit.py +0 -589
  966. paddlex/ppcls/arch/backbone/model_zoo/mixnet.py +0 -815
  967. paddlex/ppcls/arch/backbone/model_zoo/mobilenet_v2.py +0 -287
  968. paddlex/ppcls/arch/backbone/model_zoo/rednet.py +0 -203
  969. paddlex/ppcls/arch/backbone/model_zoo/regnet.py +0 -431
  970. paddlex/ppcls/arch/backbone/model_zoo/repvgg.py +0 -422
  971. paddlex/ppcls/arch/backbone/model_zoo/res2net.py +0 -264
  972. paddlex/ppcls/arch/backbone/model_zoo/res2net_vd.py +0 -305
  973. paddlex/ppcls/arch/backbone/model_zoo/resnest.py +0 -740
  974. paddlex/ppcls/arch/backbone/model_zoo/resnet_vc.py +0 -309
  975. paddlex/ppcls/arch/backbone/model_zoo/resnext.py +0 -298
  976. paddlex/ppcls/arch/backbone/model_zoo/resnext101_wsl.py +0 -490
  977. paddlex/ppcls/arch/backbone/model_zoo/resnext_vd.py +0 -317
  978. paddlex/ppcls/arch/backbone/model_zoo/rexnet.py +0 -281
  979. paddlex/ppcls/arch/backbone/model_zoo/se_resnet_vd.py +0 -390
  980. paddlex/ppcls/arch/backbone/model_zoo/se_resnext.py +0 -364
  981. paddlex/ppcls/arch/backbone/model_zoo/se_resnext_vd.py +0 -309
  982. paddlex/ppcls/arch/backbone/model_zoo/shufflenet_v2.py +0 -362
  983. paddlex/ppcls/arch/backbone/model_zoo/squeezenet.py +0 -194
  984. paddlex/ppcls/arch/backbone/model_zoo/swin_transformer.py +0 -857
  985. paddlex/ppcls/arch/backbone/model_zoo/tnt.py +0 -385
  986. paddlex/ppcls/arch/backbone/model_zoo/vision_transformer.py +0 -495
  987. paddlex/ppcls/arch/backbone/model_zoo/xception.py +0 -377
  988. paddlex/ppcls/arch/backbone/model_zoo/xception_deeplab.py +0 -421
  989. paddlex/ppcls/arch/backbone/variant_models/__init__.py +0 -3
  990. paddlex/ppcls/arch/backbone/variant_models/pp_lcnet_variant.py +0 -29
  991. paddlex/ppcls/arch/backbone/variant_models/resnet_variant.py +0 -23
  992. paddlex/ppcls/arch/backbone/variant_models/vgg_variant.py +0 -28
  993. paddlex/ppcls/arch/gears/__init__.py +0 -32
  994. paddlex/ppcls/arch/gears/arcmargin.py +0 -72
  995. paddlex/ppcls/arch/gears/circlemargin.py +0 -59
  996. paddlex/ppcls/arch/gears/cosmargin.py +0 -55
  997. paddlex/ppcls/arch/gears/fc.py +0 -35
  998. paddlex/ppcls/arch/gears/identity_head.py +0 -9
  999. paddlex/ppcls/arch/gears/vehicle_neck.py +0 -52
  1000. paddlex/ppcls/arch/utils.py +0 -53
  1001. paddlex/ppcls/data/__init__.py +0 -144
  1002. paddlex/ppcls/data/dataloader/DistributedRandomIdentitySampler.py +0 -90
  1003. paddlex/ppcls/data/dataloader/__init__.py +0 -9
  1004. paddlex/ppcls/data/dataloader/common_dataset.py +0 -84
  1005. paddlex/ppcls/data/dataloader/dali.py +0 -319
  1006. paddlex/ppcls/data/dataloader/icartoon_dataset.py +0 -36
  1007. paddlex/ppcls/data/dataloader/imagenet_dataset.py +0 -38
  1008. paddlex/ppcls/data/dataloader/logo_dataset.py +0 -46
  1009. paddlex/ppcls/data/dataloader/mix_dataset.py +0 -49
  1010. paddlex/ppcls/data/dataloader/mix_sampler.py +0 -79
  1011. paddlex/ppcls/data/dataloader/multilabel_dataset.py +0 -59
  1012. paddlex/ppcls/data/dataloader/pk_sampler.py +0 -105
  1013. paddlex/ppcls/data/dataloader/vehicle_dataset.py +0 -138
  1014. paddlex/ppcls/data/postprocess/__init__.py +0 -41
  1015. paddlex/ppcls/data/postprocess/topk.py +0 -85
  1016. paddlex/ppcls/data/preprocess/__init__.py +0 -100
  1017. paddlex/ppcls/data/preprocess/batch_ops/__init__.py +0 -0
  1018. paddlex/ppcls/data/preprocess/batch_ops/batch_operators.py +0 -231
  1019. paddlex/ppcls/data/preprocess/ops/__init__.py +0 -0
  1020. paddlex/ppcls/data/preprocess/ops/autoaugment.py +0 -264
  1021. paddlex/ppcls/data/preprocess/ops/cutout.py +0 -41
  1022. paddlex/ppcls/data/preprocess/ops/fmix.py +0 -217
  1023. paddlex/ppcls/data/preprocess/ops/functional.py +0 -141
  1024. paddlex/ppcls/data/preprocess/ops/grid.py +0 -89
  1025. paddlex/ppcls/data/preprocess/ops/hide_and_seek.py +0 -44
  1026. paddlex/ppcls/data/preprocess/ops/operators.py +0 -384
  1027. paddlex/ppcls/data/preprocess/ops/randaugment.py +0 -106
  1028. paddlex/ppcls/data/preprocess/ops/random_erasing.py +0 -90
  1029. paddlex/ppcls/data/preprocess/ops/timm_autoaugment.py +0 -877
  1030. paddlex/ppcls/data/utils/__init__.py +0 -13
  1031. paddlex/ppcls/data/utils/get_image_list.py +0 -49
  1032. paddlex/ppcls/engine/__init__.py +0 -0
  1033. paddlex/ppcls/engine/engine.py +0 -436
  1034. paddlex/ppcls/engine/evaluation/__init__.py +0 -16
  1035. paddlex/ppcls/engine/evaluation/classification.py +0 -143
  1036. paddlex/ppcls/engine/evaluation/retrieval.py +0 -169
  1037. paddlex/ppcls/engine/slim/__init__.py +0 -16
  1038. paddlex/ppcls/engine/slim/prune.py +0 -66
  1039. paddlex/ppcls/engine/slim/quant.py +0 -55
  1040. paddlex/ppcls/engine/train/__init__.py +0 -14
  1041. paddlex/ppcls/engine/train/train.py +0 -79
  1042. paddlex/ppcls/engine/train/utils.py +0 -72
  1043. paddlex/ppcls/loss/__init__.py +0 -65
  1044. paddlex/ppcls/loss/celoss.py +0 -67
  1045. paddlex/ppcls/loss/centerloss.py +0 -54
  1046. paddlex/ppcls/loss/comfunc.py +0 -45
  1047. paddlex/ppcls/loss/deephashloss.py +0 -96
  1048. paddlex/ppcls/loss/distanceloss.py +0 -43
  1049. paddlex/ppcls/loss/distillationloss.py +0 -141
  1050. paddlex/ppcls/loss/dmlloss.py +0 -46
  1051. paddlex/ppcls/loss/emlloss.py +0 -97
  1052. paddlex/ppcls/loss/googlenetloss.py +0 -42
  1053. paddlex/ppcls/loss/msmloss.py +0 -78
  1054. paddlex/ppcls/loss/multilabelloss.py +0 -43
  1055. paddlex/ppcls/loss/npairsloss.py +0 -38
  1056. paddlex/ppcls/loss/pairwisecosface.py +0 -59
  1057. paddlex/ppcls/loss/supconloss.py +0 -108
  1058. paddlex/ppcls/loss/trihardloss.py +0 -82
  1059. paddlex/ppcls/loss/triplet.py +0 -137
  1060. paddlex/ppcls/metric/__init__.py +0 -51
  1061. paddlex/ppcls/metric/metrics.py +0 -308
  1062. paddlex/ppcls/optimizer/__init__.py +0 -72
  1063. paddlex/ppcls/optimizer/learning_rate.py +0 -326
  1064. paddlex/ppcls/optimizer/optimizer.py +0 -208
  1065. paddlex/ppcls/utils/__init__.py +0 -27
  1066. paddlex/ppcls/utils/check.py +0 -151
  1067. paddlex/ppcls/utils/config.py +0 -210
  1068. paddlex/ppcls/utils/download.py +0 -319
  1069. paddlex/ppcls/utils/ema.py +0 -63
  1070. paddlex/ppcls/utils/logger.py +0 -137
  1071. paddlex/ppcls/utils/metrics.py +0 -112
  1072. paddlex/ppcls/utils/misc.py +0 -63
  1073. paddlex/ppcls/utils/model_zoo.py +0 -213
  1074. paddlex/ppcls/utils/profiler.py +0 -111
  1075. paddlex/ppcls/utils/save_load.py +0 -136
  1076. paddlex/ppdet/__init__.py +0 -16
  1077. paddlex/ppdet/core/__init__.py +0 -15
  1078. paddlex/ppdet/core/config/__init__.py +0 -13
  1079. paddlex/ppdet/core/config/schema.py +0 -248
  1080. paddlex/ppdet/core/config/yaml_helpers.py +0 -118
  1081. paddlex/ppdet/core/workspace.py +0 -278
  1082. paddlex/ppdet/data/__init__.py +0 -21
  1083. paddlex/ppdet/data/crop_utils/__init__.py +0 -13
  1084. paddlex/ppdet/data/crop_utils/annotation_cropper.py +0 -585
  1085. paddlex/ppdet/data/crop_utils/chip_box_utils.py +0 -170
  1086. paddlex/ppdet/data/reader.py +0 -302
  1087. paddlex/ppdet/data/shm_utils.py +0 -67
  1088. paddlex/ppdet/data/source/__init__.py +0 -29
  1089. paddlex/ppdet/data/source/category.py +0 -904
  1090. paddlex/ppdet/data/source/coco.py +0 -251
  1091. paddlex/ppdet/data/source/dataset.py +0 -197
  1092. paddlex/ppdet/data/source/keypoint_coco.py +0 -669
  1093. paddlex/ppdet/data/source/mot.py +0 -636
  1094. paddlex/ppdet/data/source/sniper_coco.py +0 -191
  1095. paddlex/ppdet/data/source/voc.py +0 -231
  1096. paddlex/ppdet/data/source/widerface.py +0 -180
  1097. paddlex/ppdet/data/transform/__init__.py +0 -28
  1098. paddlex/ppdet/data/transform/atss_assigner.py +0 -270
  1099. paddlex/ppdet/data/transform/autoaugment_utils.py +0 -1591
  1100. paddlex/ppdet/data/transform/batch_operators.py +0 -1080
  1101. paddlex/ppdet/data/transform/gridmask_utils.py +0 -86
  1102. paddlex/ppdet/data/transform/keypoint_operators.py +0 -868
  1103. paddlex/ppdet/data/transform/mot_operators.py +0 -628
  1104. paddlex/ppdet/data/transform/op_helper.py +0 -498
  1105. paddlex/ppdet/data/transform/operators.py +0 -3025
  1106. paddlex/ppdet/engine/__init__.py +0 -30
  1107. paddlex/ppdet/engine/callbacks.py +0 -340
  1108. paddlex/ppdet/engine/env.py +0 -50
  1109. paddlex/ppdet/engine/export_utils.py +0 -177
  1110. paddlex/ppdet/engine/tracker.py +0 -538
  1111. paddlex/ppdet/engine/trainer.py +0 -723
  1112. paddlex/ppdet/metrics/__init__.py +0 -29
  1113. paddlex/ppdet/metrics/coco_utils.py +0 -184
  1114. paddlex/ppdet/metrics/json_results.py +0 -149
  1115. paddlex/ppdet/metrics/keypoint_metrics.py +0 -401
  1116. paddlex/ppdet/metrics/map_utils.py +0 -444
  1117. paddlex/ppdet/metrics/mcmot_metrics.py +0 -470
  1118. paddlex/ppdet/metrics/metrics.py +0 -434
  1119. paddlex/ppdet/metrics/mot_metrics.py +0 -1236
  1120. paddlex/ppdet/metrics/munkres.py +0 -428
  1121. paddlex/ppdet/metrics/widerface_utils.py +0 -393
  1122. paddlex/ppdet/model_zoo/__init__.py +0 -18
  1123. paddlex/ppdet/model_zoo/model_zoo.py +0 -84
  1124. paddlex/ppdet/modeling/__init__.py +0 -45
  1125. paddlex/ppdet/modeling/architectures/__init__.py +0 -51
  1126. paddlex/ppdet/modeling/architectures/blazeface.py +0 -91
  1127. paddlex/ppdet/modeling/architectures/cascade_rcnn.py +0 -144
  1128. paddlex/ppdet/modeling/architectures/centernet.py +0 -108
  1129. paddlex/ppdet/modeling/architectures/deepsort.py +0 -69
  1130. paddlex/ppdet/modeling/architectures/detr.py +0 -93
  1131. paddlex/ppdet/modeling/architectures/fairmot.py +0 -100
  1132. paddlex/ppdet/modeling/architectures/faster_rcnn.py +0 -106
  1133. paddlex/ppdet/modeling/architectures/fcos.py +0 -105
  1134. paddlex/ppdet/modeling/architectures/gfl.py +0 -87
  1135. paddlex/ppdet/modeling/architectures/jde.py +0 -111
  1136. paddlex/ppdet/modeling/architectures/keypoint_hrhrnet.py +0 -287
  1137. paddlex/ppdet/modeling/architectures/keypoint_hrnet.py +0 -267
  1138. paddlex/ppdet/modeling/architectures/mask_rcnn.py +0 -135
  1139. paddlex/ppdet/modeling/architectures/meta_arch.py +0 -128
  1140. paddlex/ppdet/modeling/architectures/picodet.py +0 -91
  1141. paddlex/ppdet/modeling/architectures/s2anet.py +0 -102
  1142. paddlex/ppdet/modeling/architectures/solov2.py +0 -110
  1143. paddlex/ppdet/modeling/architectures/sparse_rcnn.py +0 -99
  1144. paddlex/ppdet/modeling/architectures/ssd.py +0 -93
  1145. paddlex/ppdet/modeling/architectures/tood.py +0 -78
  1146. paddlex/ppdet/modeling/architectures/ttfnet.py +0 -98
  1147. paddlex/ppdet/modeling/architectures/yolo.py +0 -124
  1148. paddlex/ppdet/modeling/assigners/__init__.py +0 -23
  1149. paddlex/ppdet/modeling/assigners/atss_assigner.py +0 -211
  1150. paddlex/ppdet/modeling/assigners/simota_assigner.py +0 -262
  1151. paddlex/ppdet/modeling/assigners/task_aligned_assigner.py +0 -158
  1152. paddlex/ppdet/modeling/assigners/utils.py +0 -195
  1153. paddlex/ppdet/modeling/backbones/__init__.py +0 -49
  1154. paddlex/ppdet/modeling/backbones/blazenet.py +0 -323
  1155. paddlex/ppdet/modeling/backbones/darknet.py +0 -340
  1156. paddlex/ppdet/modeling/backbones/dla.py +0 -244
  1157. paddlex/ppdet/modeling/backbones/esnet.py +0 -290
  1158. paddlex/ppdet/modeling/backbones/ghostnet.py +0 -470
  1159. paddlex/ppdet/modeling/backbones/hardnet.py +0 -224
  1160. paddlex/ppdet/modeling/backbones/hrnet.py +0 -727
  1161. paddlex/ppdet/modeling/backbones/lcnet.py +0 -259
  1162. paddlex/ppdet/modeling/backbones/lite_hrnet.py +0 -886
  1163. paddlex/ppdet/modeling/backbones/mobilenet_v1.py +0 -418
  1164. paddlex/ppdet/modeling/backbones/mobilenet_v3.py +0 -483
  1165. paddlex/ppdet/modeling/backbones/name_adapter.py +0 -69
  1166. paddlex/ppdet/modeling/backbones/res2net.py +0 -358
  1167. paddlex/ppdet/modeling/backbones/resnet.py +0 -613
  1168. paddlex/ppdet/modeling/backbones/senet.py +0 -139
  1169. paddlex/ppdet/modeling/backbones/shufflenet_v2.py +0 -246
  1170. paddlex/ppdet/modeling/backbones/swin_transformer.py +0 -743
  1171. paddlex/ppdet/modeling/backbones/vgg.py +0 -210
  1172. paddlex/ppdet/modeling/bbox_utils.py +0 -778
  1173. paddlex/ppdet/modeling/heads/__init__.py +0 -53
  1174. paddlex/ppdet/modeling/heads/bbox_head.py +0 -377
  1175. paddlex/ppdet/modeling/heads/cascade_head.py +0 -284
  1176. paddlex/ppdet/modeling/heads/centernet_head.py +0 -292
  1177. paddlex/ppdet/modeling/heads/detr_head.py +0 -368
  1178. paddlex/ppdet/modeling/heads/face_head.py +0 -110
  1179. paddlex/ppdet/modeling/heads/fcos_head.py +0 -259
  1180. paddlex/ppdet/modeling/heads/gfl_head.py +0 -487
  1181. paddlex/ppdet/modeling/heads/keypoint_hrhrnet_head.py +0 -108
  1182. paddlex/ppdet/modeling/heads/mask_head.py +0 -250
  1183. paddlex/ppdet/modeling/heads/pico_head.py +0 -278
  1184. paddlex/ppdet/modeling/heads/roi_extractor.py +0 -111
  1185. paddlex/ppdet/modeling/heads/s2anet_head.py +0 -1056
  1186. paddlex/ppdet/modeling/heads/simota_head.py +0 -506
  1187. paddlex/ppdet/modeling/heads/solov2_head.py +0 -560
  1188. paddlex/ppdet/modeling/heads/sparsercnn_head.py +0 -375
  1189. paddlex/ppdet/modeling/heads/ssd_head.py +0 -215
  1190. paddlex/ppdet/modeling/heads/tood_head.py +0 -366
  1191. paddlex/ppdet/modeling/heads/ttf_head.py +0 -316
  1192. paddlex/ppdet/modeling/heads/yolo_head.py +0 -124
  1193. paddlex/ppdet/modeling/initializer.py +0 -317
  1194. paddlex/ppdet/modeling/keypoint_utils.py +0 -342
  1195. paddlex/ppdet/modeling/layers.py +0 -1430
  1196. paddlex/ppdet/modeling/losses/__init__.py +0 -43
  1197. paddlex/ppdet/modeling/losses/ctfocal_loss.py +0 -68
  1198. paddlex/ppdet/modeling/losses/detr_loss.py +0 -233
  1199. paddlex/ppdet/modeling/losses/fairmot_loss.py +0 -41
  1200. paddlex/ppdet/modeling/losses/fcos_loss.py +0 -225
  1201. paddlex/ppdet/modeling/losses/gfocal_loss.py +0 -217
  1202. paddlex/ppdet/modeling/losses/iou_aware_loss.py +0 -47
  1203. paddlex/ppdet/modeling/losses/iou_loss.py +0 -210
  1204. paddlex/ppdet/modeling/losses/jde_loss.py +0 -193
  1205. paddlex/ppdet/modeling/losses/keypoint_loss.py +0 -229
  1206. paddlex/ppdet/modeling/losses/solov2_loss.py +0 -101
  1207. paddlex/ppdet/modeling/losses/sparsercnn_loss.py +0 -425
  1208. paddlex/ppdet/modeling/losses/ssd_loss.py +0 -170
  1209. paddlex/ppdet/modeling/losses/varifocal_loss.py +0 -152
  1210. paddlex/ppdet/modeling/losses/yolo_loss.py +0 -212
  1211. paddlex/ppdet/modeling/mot/__init__.py +0 -25
  1212. paddlex/ppdet/modeling/mot/matching/__init__.py +0 -19
  1213. paddlex/ppdet/modeling/mot/matching/deepsort_matching.py +0 -382
  1214. paddlex/ppdet/modeling/mot/matching/jde_matching.py +0 -144
  1215. paddlex/ppdet/modeling/mot/motion/__init__.py +0 -17
  1216. paddlex/ppdet/modeling/mot/motion/kalman_filter.py +0 -270
  1217. paddlex/ppdet/modeling/mot/tracker/__init__.py +0 -23
  1218. paddlex/ppdet/modeling/mot/tracker/base_jde_tracker.py +0 -297
  1219. paddlex/ppdet/modeling/mot/tracker/base_sde_tracker.py +0 -156
  1220. paddlex/ppdet/modeling/mot/tracker/deepsort_tracker.py +0 -188
  1221. paddlex/ppdet/modeling/mot/tracker/jde_tracker.py +0 -277
  1222. paddlex/ppdet/modeling/mot/utils.py +0 -263
  1223. paddlex/ppdet/modeling/mot/visualization.py +0 -150
  1224. paddlex/ppdet/modeling/necks/__init__.py +0 -30
  1225. paddlex/ppdet/modeling/necks/bifpn.py +0 -302
  1226. paddlex/ppdet/modeling/necks/blazeface_fpn.py +0 -216
  1227. paddlex/ppdet/modeling/necks/centernet_fpn.py +0 -426
  1228. paddlex/ppdet/modeling/necks/csp_pan.py +0 -364
  1229. paddlex/ppdet/modeling/necks/fpn.py +0 -231
  1230. paddlex/ppdet/modeling/necks/hrfpn.py +0 -126
  1231. paddlex/ppdet/modeling/necks/ttf_fpn.py +0 -242
  1232. paddlex/ppdet/modeling/necks/yolo_fpn.py +0 -988
  1233. paddlex/ppdet/modeling/ops.py +0 -1611
  1234. paddlex/ppdet/modeling/post_process.py +0 -731
  1235. paddlex/ppdet/modeling/proposal_generator/__init__.py +0 -2
  1236. paddlex/ppdet/modeling/proposal_generator/anchor_generator.py +0 -135
  1237. paddlex/ppdet/modeling/proposal_generator/proposal_generator.py +0 -77
  1238. paddlex/ppdet/modeling/proposal_generator/rpn_head.py +0 -260
  1239. paddlex/ppdet/modeling/proposal_generator/target.py +0 -681
  1240. paddlex/ppdet/modeling/proposal_generator/target_layer.py +0 -491
  1241. paddlex/ppdet/modeling/reid/__init__.py +0 -25
  1242. paddlex/ppdet/modeling/reid/fairmot_embedding_head.py +0 -225
  1243. paddlex/ppdet/modeling/reid/jde_embedding_head.py +0 -214
  1244. paddlex/ppdet/modeling/reid/pplcnet_embedding.py +0 -282
  1245. paddlex/ppdet/modeling/reid/pyramidal_embedding.py +0 -144
  1246. paddlex/ppdet/modeling/reid/resnet.py +0 -310
  1247. paddlex/ppdet/modeling/shape_spec.py +0 -25
  1248. paddlex/ppdet/modeling/transformers/__init__.py +0 -25
  1249. paddlex/ppdet/modeling/transformers/deformable_transformer.py +0 -517
  1250. paddlex/ppdet/modeling/transformers/detr_transformer.py +0 -353
  1251. paddlex/ppdet/modeling/transformers/matchers.py +0 -127
  1252. paddlex/ppdet/modeling/transformers/position_encoding.py +0 -108
  1253. paddlex/ppdet/modeling/transformers/utils.py +0 -110
  1254. paddlex/ppdet/optimizer.py +0 -335
  1255. paddlex/ppdet/slim/__init__.py +0 -82
  1256. paddlex/ppdet/slim/distill.py +0 -110
  1257. paddlex/ppdet/slim/prune.py +0 -85
  1258. paddlex/ppdet/slim/quant.py +0 -84
  1259. paddlex/ppdet/slim/unstructured_prune.py +0 -66
  1260. paddlex/ppdet/utils/__init__.py +0 -13
  1261. paddlex/ppdet/utils/check.py +0 -112
  1262. paddlex/ppdet/utils/checkpoint.py +0 -226
  1263. paddlex/ppdet/utils/cli.py +0 -151
  1264. paddlex/ppdet/utils/colormap.py +0 -58
  1265. paddlex/ppdet/utils/download.py +0 -558
  1266. paddlex/ppdet/utils/logger.py +0 -70
  1267. paddlex/ppdet/utils/profiler.py +0 -111
  1268. paddlex/ppdet/utils/stats.py +0 -94
  1269. paddlex/ppdet/utils/visualizer.py +0 -321
  1270. paddlex/ppdet/utils/voc_utils.py +0 -86
  1271. paddlex/seg.py +0 -41
  1272. paddlex/tools/__init__.py +0 -17
  1273. paddlex/tools/anchor_clustering/__init__.py +0 -15
  1274. paddlex/tools/anchor_clustering/yolo_cluster.py +0 -178
  1275. paddlex/tools/convert.py +0 -52
  1276. paddlex/tools/dataset_conversion/__init__.py +0 -24
  1277. paddlex/tools/dataset_conversion/x2coco.py +0 -379
  1278. paddlex/tools/dataset_conversion/x2imagenet.py +0 -82
  1279. paddlex/tools/dataset_conversion/x2seg.py +0 -343
  1280. paddlex/tools/dataset_conversion/x2voc.py +0 -230
  1281. paddlex/tools/dataset_split/__init__.py +0 -23
  1282. paddlex/tools/dataset_split/coco_split.py +0 -69
  1283. paddlex/tools/dataset_split/imagenet_split.py +0 -75
  1284. paddlex/tools/dataset_split/seg_split.py +0 -96
  1285. paddlex/tools/dataset_split/utils.py +0 -75
  1286. paddlex/tools/dataset_split/voc_split.py +0 -91
  1287. paddlex/tools/split.py +0 -41
  1288. paddlex/utils/checkpoint.py +0 -492
  1289. paddlex/utils/env.py +0 -67
  1290. paddlex/utils/shm.py +0 -67
  1291. paddlex/utils/stats.py +0 -68
  1292. paddlex/utils/utils.py +0 -229
  1293. paddlex-2.1.0.data/data/paddlex_restful/restful/templates/paddlex_restful_demo.html +0 -5205
  1294. paddlex-2.1.0.dist-info/LICENSE +0 -201
  1295. paddlex-2.1.0.dist-info/METADATA +0 -32
  1296. paddlex-2.1.0.dist-info/RECORD +0 -698
  1297. paddlex-2.1.0.dist-info/WHEEL +0 -5
  1298. paddlex-2.1.0.dist-info/entry_points.txt +0 -4
  1299. paddlex-2.1.0.dist-info/top_level.txt +0 -3
  1300. paddlex_restful/__init__.py +0 -15
  1301. paddlex_restful/command.py +0 -63
  1302. paddlex_restful/restful/__init__.py +0 -15
  1303. paddlex_restful/restful/app.py +0 -969
  1304. paddlex_restful/restful/dataset/__init__.py +0 -13
  1305. paddlex_restful/restful/dataset/cls_dataset.py +0 -159
  1306. paddlex_restful/restful/dataset/dataset.py +0 -266
  1307. paddlex_restful/restful/dataset/datasetbase.py +0 -86
  1308. paddlex_restful/restful/dataset/det_dataset.py +0 -190
  1309. paddlex_restful/restful/dataset/ins_seg_dataset.py +0 -312
  1310. paddlex_restful/restful/dataset/operate.py +0 -155
  1311. paddlex_restful/restful/dataset/seg_dataset.py +0 -222
  1312. paddlex_restful/restful/dataset/utils.py +0 -267
  1313. paddlex_restful/restful/demo.py +0 -202
  1314. paddlex_restful/restful/dir.py +0 -45
  1315. paddlex_restful/restful/model.py +0 -312
  1316. paddlex_restful/restful/project/__init__.py +0 -13
  1317. paddlex_restful/restful/project/evaluate/__init__.py +0 -13
  1318. paddlex_restful/restful/project/evaluate/classification.py +0 -126
  1319. paddlex_restful/restful/project/evaluate/detection.py +0 -789
  1320. paddlex_restful/restful/project/evaluate/draw_pred_result.py +0 -181
  1321. paddlex_restful/restful/project/evaluate/segmentation.py +0 -122
  1322. paddlex_restful/restful/project/operate.py +0 -931
  1323. paddlex_restful/restful/project/project.py +0 -143
  1324. paddlex_restful/restful/project/prune/__init__.py +0 -13
  1325. paddlex_restful/restful/project/prune/classification.py +0 -32
  1326. paddlex_restful/restful/project/prune/detection.py +0 -48
  1327. paddlex_restful/restful/project/prune/segmentation.py +0 -34
  1328. paddlex_restful/restful/project/task.py +0 -884
  1329. paddlex_restful/restful/project/train/__init__.py +0 -13
  1330. paddlex_restful/restful/project/train/classification.py +0 -141
  1331. paddlex_restful/restful/project/train/detection.py +0 -263
  1332. paddlex_restful/restful/project/train/params.py +0 -432
  1333. paddlex_restful/restful/project/train/params_v2.py +0 -326
  1334. paddlex_restful/restful/project/train/segmentation.py +0 -191
  1335. paddlex_restful/restful/project/visualize.py +0 -244
  1336. paddlex_restful/restful/system.py +0 -102
  1337. paddlex_restful/restful/templates/paddlex_restful_demo.html +0 -5205
  1338. paddlex_restful/restful/utils.py +0 -841
  1339. paddlex_restful/restful/workspace.py +0 -343
  1340. paddlex_restful/restful/workspace_pb2.py +0 -1411
@@ -1,1236 +0,0 @@
1
- # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from __future__ import absolute_import
16
- from __future__ import division
17
- from __future__ import print_function
18
-
19
- import os
20
- import copy
21
- import sys
22
- import math
23
- from collections import defaultdict
24
- import numpy as np
25
- import paddle
26
- import paddle.nn.functional as F
27
- from paddlex.ppdet.modeling.bbox_utils import bbox_iou_np_expand
28
- from .map_utils import ap_per_class
29
- from .metrics import Metric
30
- from .munkres import Munkres
31
-
32
- from paddlex.ppdet.utils.logger import setup_logger
33
- logger = setup_logger(__name__)
34
-
35
- __all__ = ['MOTEvaluator', 'MOTMetric', 'JDEDetMetric', 'KITTIMOTMetric']
36
-
37
-
38
- def read_mot_results(filename, is_gt=False, is_ignore=False):
39
- valid_labels = {1}
40
- ignore_labels = {2, 7, 8, 12} # only in motchallenge datasets like 'MOT16'
41
- results_dict = dict()
42
- if os.path.isfile(filename):
43
- with open(filename, 'r') as f:
44
- for line in f.readlines():
45
- linelist = line.split(',')
46
- if len(linelist) < 7:
47
- continue
48
- fid = int(linelist[0])
49
- if fid < 1:
50
- continue
51
- results_dict.setdefault(fid, list())
52
-
53
- box_size = float(linelist[4]) * float(linelist[5])
54
-
55
- if is_gt:
56
- label = int(float(linelist[7]))
57
- mark = int(float(linelist[6]))
58
- if mark == 0 or label not in valid_labels:
59
- continue
60
- score = 1
61
- elif is_ignore:
62
- if 'MOT16-' in filename or 'MOT17-' in filename or 'MOT15-' in filename or 'MOT20-' in filename:
63
- label = int(float(linelist[7]))
64
- vis_ratio = float(linelist[8])
65
- if label not in ignore_labels and vis_ratio >= 0:
66
- continue
67
- else:
68
- continue
69
- score = 1
70
- else:
71
- score = float(linelist[6])
72
-
73
- tlwh = tuple(map(float, linelist[2:6]))
74
- target_id = int(linelist[1])
75
-
76
- results_dict[fid].append((tlwh, target_id, score))
77
- return results_dict
78
-
79
-
80
- """
81
- MOT dataset label list, see in https://motchallenge.net
82
- labels={'ped', ... % 1
83
- 'person_on_vhcl', ... % 2
84
- 'car', ... % 3
85
- 'bicycle', ... % 4
86
- 'mbike', ... % 5
87
- 'non_mot_vhcl', ... % 6
88
- 'static_person', ... % 7
89
- 'distractor', ... % 8
90
- 'occluder', ... % 9
91
- 'occluder_on_grnd', ... % 10
92
- 'occluder_full', ... % 11
93
- 'reflection', ... % 12
94
- 'crowd' ... % 13
95
- };
96
- """
97
-
98
-
99
- def unzip_objs(objs):
100
- if len(objs) > 0:
101
- tlwhs, ids, scores = zip(*objs)
102
- else:
103
- tlwhs, ids, scores = [], [], []
104
- tlwhs = np.asarray(tlwhs, dtype=float).reshape(-1, 4)
105
- return tlwhs, ids, scores
106
-
107
-
108
- class MOTEvaluator(object):
109
- def __init__(self, data_root, seq_name, data_type):
110
- self.data_root = data_root
111
- self.seq_name = seq_name
112
- self.data_type = data_type
113
-
114
- self.load_annotations()
115
- self.reset_accumulator()
116
-
117
- def load_annotations(self):
118
- assert self.data_type == 'mot'
119
- gt_filename = os.path.join(self.data_root, self.seq_name, 'gt',
120
- 'gt.txt')
121
- self.gt_frame_dict = read_mot_results(gt_filename, is_gt=True)
122
- self.gt_ignore_frame_dict = read_mot_results(
123
- gt_filename, is_ignore=True)
124
-
125
- def reset_accumulator(self):
126
- import motmetrics as mm
127
- mm.lap.default_solver = 'lap'
128
- self.acc = mm.MOTAccumulator(auto_id=True)
129
-
130
- def eval_frame(self, frame_id, trk_tlwhs, trk_ids, rtn_events=False):
131
- import motmetrics as mm
132
- mm.lap.default_solver = 'lap'
133
- # results
134
- trk_tlwhs = np.copy(trk_tlwhs)
135
- trk_ids = np.copy(trk_ids)
136
-
137
- # gts
138
- gt_objs = self.gt_frame_dict.get(frame_id, [])
139
- gt_tlwhs, gt_ids = unzip_objs(gt_objs)[:2]
140
-
141
- # ignore boxes
142
- ignore_objs = self.gt_ignore_frame_dict.get(frame_id, [])
143
- ignore_tlwhs = unzip_objs(ignore_objs)[0]
144
-
145
- # remove ignored results
146
- keep = np.ones(len(trk_tlwhs), dtype=bool)
147
- iou_distance = mm.distances.iou_matrix(
148
- ignore_tlwhs, trk_tlwhs, max_iou=0.5)
149
- if len(iou_distance) > 0:
150
- match_is, match_js = mm.lap.linear_sum_assignment(iou_distance)
151
- match_is, match_js = map(lambda a: np.asarray(a, dtype=int), [match_is, match_js])
152
- match_ious = iou_distance[match_is, match_js]
153
-
154
- match_js = np.asarray(match_js, dtype=int)
155
- match_js = match_js[np.logical_not(np.isnan(match_ious))]
156
- keep[match_js] = False
157
- trk_tlwhs = trk_tlwhs[keep]
158
- trk_ids = trk_ids[keep]
159
-
160
- # get distance matrix
161
- iou_distance = mm.distances.iou_matrix(
162
- gt_tlwhs, trk_tlwhs, max_iou=0.5)
163
-
164
- # acc
165
- self.acc.update(gt_ids, trk_ids, iou_distance)
166
-
167
- if rtn_events and iou_distance.size > 0 and hasattr(self.acc,
168
- 'last_mot_events'):
169
- events = self.acc.last_mot_events # only supported by https://github.com/longcw/py-motmetrics
170
- else:
171
- events = None
172
- return events
173
-
174
- def eval_file(self, filename):
175
- self.reset_accumulator()
176
-
177
- result_frame_dict = read_mot_results(filename, is_gt=False)
178
- frames = sorted(list(set(result_frame_dict.keys())))
179
- for frame_id in frames:
180
- trk_objs = result_frame_dict.get(frame_id, [])
181
- trk_tlwhs, trk_ids = unzip_objs(trk_objs)[:2]
182
- self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False)
183
-
184
- return self.acc
185
-
186
- @staticmethod
187
- def get_summary(accs,
188
- names,
189
- metrics=('mota', 'num_switches', 'idp', 'idr', 'idf1',
190
- 'precision', 'recall')):
191
- import motmetrics as mm
192
- mm.lap.default_solver = 'lap'
193
- names = copy.deepcopy(names)
194
- if metrics is None:
195
- metrics = mm.metrics.motchallenge_metrics
196
- metrics = copy.deepcopy(metrics)
197
-
198
- mh = mm.metrics.create()
199
- summary = mh.compute_many(
200
- accs, metrics=metrics, names=names, generate_overall=True)
201
- return summary
202
-
203
- @staticmethod
204
- def save_summary(summary, filename):
205
- import pandas as pd
206
- writer = pd.ExcelWriter(filename)
207
- summary.to_excel(writer)
208
- writer.save()
209
-
210
-
211
- class MOTMetric(Metric):
212
- def __init__(self, save_summary=False):
213
- self.save_summary = save_summary
214
- self.MOTEvaluator = MOTEvaluator
215
- self.result_root = None
216
- self.reset()
217
-
218
- def reset(self):
219
- self.accs = []
220
- self.seqs = []
221
-
222
- def update(self, data_root, seq, data_type, result_root, result_filename):
223
- evaluator = self.MOTEvaluator(data_root, seq, data_type)
224
- self.accs.append(evaluator.eval_file(result_filename))
225
- self.seqs.append(seq)
226
- self.result_root = result_root
227
-
228
- def accumulate(self):
229
- import motmetrics as mm
230
- import openpyxl
231
- metrics = mm.metrics.motchallenge_metrics
232
- mh = mm.metrics.create()
233
- summary = self.MOTEvaluator.get_summary(self.accs, self.seqs, metrics)
234
- self.strsummary = mm.io.render_summary(
235
- summary,
236
- formatters=mh.formatters,
237
- namemap=mm.io.motchallenge_metric_names)
238
- if self.save_summary:
239
- self.MOTEvaluator.save_summary(
240
- summary, os.path.join(self.result_root, 'summary.xlsx'))
241
-
242
- def log(self):
243
- print(self.strsummary)
244
-
245
- def get_results(self):
246
- return self.strsummary
247
-
248
-
249
- class JDEDetMetric(Metric):
250
- # Note this detection AP metric is different from COCOMetric or VOCMetric,
251
- # and the bboxes coordinates are not scaled to the original image
252
- def __init__(self, overlap_thresh=0.5):
253
- self.overlap_thresh = overlap_thresh
254
- self.reset()
255
-
256
- def reset(self):
257
- self.AP_accum = np.zeros(1)
258
- self.AP_accum_count = np.zeros(1)
259
-
260
- def update(self, inputs, outputs):
261
- bboxes = outputs['bbox'][:, 2:].numpy()
262
- scores = outputs['bbox'][:, 1].numpy()
263
- labels = outputs['bbox'][:, 0].numpy()
264
- bbox_lengths = outputs['bbox_num'].numpy()
265
- if bboxes.shape[0] == 1 and bboxes.sum() == 0.0:
266
- return
267
-
268
- gt_boxes = inputs['gt_bbox'].numpy()[0]
269
- gt_labels = inputs['gt_class'].numpy()[0]
270
- if gt_labels.shape[0] == 0:
271
- return
272
-
273
- correct = []
274
- detected = []
275
- for i in range(bboxes.shape[0]):
276
- obj_pred = 0
277
- pred_bbox = bboxes[i].reshape(1, 4)
278
- # Compute iou with target boxes
279
- iou = bbox_iou_np_expand(pred_bbox, gt_boxes, x1y1x2y2=True)[0]
280
- # Extract index of largest overlap
281
- best_i = np.argmax(iou)
282
- # If overlap exceeds threshold and classification is correct mark as correct
283
- if iou[best_i] > self.overlap_thresh and obj_pred == gt_labels[
284
- best_i] and best_i not in detected:
285
- correct.append(1)
286
- detected.append(best_i)
287
- else:
288
- correct.append(0)
289
-
290
- # Compute Average Precision (AP) per class
291
- target_cls = list(gt_labels.T[0])
292
- AP, AP_class, R, P = ap_per_class(
293
- tp=correct,
294
- conf=scores,
295
- pred_cls=np.zeros_like(scores),
296
- target_cls=target_cls)
297
- self.AP_accum_count += np.bincount(AP_class, minlength=1)
298
- self.AP_accum += np.bincount(AP_class, minlength=1, weights=AP)
299
-
300
- def accumulate(self):
301
- logger.info("Accumulating evaluatation results...")
302
- self.map_stat = self.AP_accum[0] / (self.AP_accum_count[0] + 1E-16)
303
-
304
- def log(self):
305
- map_stat = 100. * self.map_stat
306
- logger.info("mAP({:.2f}) = {:.2f}%".format(self.overlap_thresh,
307
- map_stat))
308
-
309
- def get_results(self):
310
- return self.map_stat
311
-
312
-
313
- """
314
- Following code is borrow from https://github.com/xingyizhou/CenterTrack/blob/master/src/tools/eval_kitti_track/evaluate_tracking.py
315
- """
316
-
317
-
318
- class tData:
319
- """
320
- Utility class to load data.
321
- """
322
- def __init__(self,frame=-1,obj_type="unset",truncation=-1,occlusion=-1,\
323
- obs_angle=-10,x1=-1,y1=-1,x2=-1,y2=-1,w=-1,h=-1,l=-1,\
324
- X=-1000,Y=-1000,Z=-1000,yaw=-10,score=-1000,track_id=-1):
325
- """
326
- Constructor, initializes the object given the parameters.
327
- """
328
- self.frame = frame
329
- self.track_id = track_id
330
- self.obj_type = obj_type
331
- self.truncation = truncation
332
- self.occlusion = occlusion
333
- self.obs_angle = obs_angle
334
- self.x1 = x1
335
- self.y1 = y1
336
- self.x2 = x2
337
- self.y2 = y2
338
- self.w = w
339
- self.h = h
340
- self.l = l
341
- self.X = X
342
- self.Y = Y
343
- self.Z = Z
344
- self.yaw = yaw
345
- self.score = score
346
- self.ignored = False
347
- self.valid = False
348
- self.tracker = -1
349
-
350
- def __str__(self):
351
- attrs = vars(self)
352
- return '\n'.join("%s: %s" % item for item in attrs.items())
353
-
354
-
355
- class KITTIEvaluation(object):
356
- """ KITTI tracking statistics (CLEAR MOT, id-switches, fragments, ML/PT/MT, precision/recall)
357
- MOTA - Multi-object tracking accuracy in [0,100]
358
- MOTP - Multi-object tracking precision in [0,100] (3D) / [td,100] (2D)
359
- MOTAL - Multi-object tracking accuracy in [0,100] with log10(id-switches)
360
-
361
- id-switches - number of id switches
362
- fragments - number of fragmentations
363
-
364
- MT, PT, ML - number of mostly tracked, partially tracked and mostly lost trajectories
365
-
366
- recall - recall = percentage of detected targets
367
- precision - precision = percentage of correctly detected targets
368
- FAR - number of false alarms per frame
369
- falsepositives - number of false positives (FP)
370
- missed - number of missed targets (FN)
371
- """
372
- def __init__(self, result_path, gt_path, min_overlap=0.5, max_truncation = 0,\
373
- min_height = 25, max_occlusion = 2, cls="car",\
374
- n_frames=[], seqs=[], n_sequences=0):
375
- # get number of sequences and
376
- # get number of frames per sequence from test mapping
377
- # (created while extracting the benchmark)
378
- self.gt_path = os.path.join(gt_path, "../labels")
379
- self.n_frames = n_frames
380
- self.sequence_name = seqs
381
- self.n_sequences = n_sequences
382
-
383
- self.cls = cls # class to evaluate, i.e. pedestrian or car
384
-
385
- self.result_path = result_path
386
-
387
- # statistics and numbers for evaluation
388
- self.n_gt = 0 # number of ground truth detections minus ignored false negatives and true positives
389
- self.n_igt = 0 # number of ignored ground truth detections
390
- self.n_gts = [
391
- ] # number of ground truth detections minus ignored false negatives and true positives PER SEQUENCE
392
- self.n_igts = [
393
- ] # number of ground ignored truth detections PER SEQUENCE
394
- self.n_gt_trajectories = 0
395
- self.n_gt_seq = []
396
- self.n_tr = 0 # number of tracker detections minus ignored tracker detections
397
- self.n_trs = [
398
- ] # number of tracker detections minus ignored tracker detections PER SEQUENCE
399
- self.n_itr = 0 # number of ignored tracker detections
400
- self.n_itrs = [] # number of ignored tracker detections PER SEQUENCE
401
- self.n_igttr = 0 # number of ignored ground truth detections where the corresponding associated tracker detection is also ignored
402
- self.n_tr_trajectories = 0
403
- self.n_tr_seq = []
404
- self.MOTA = 0
405
- self.MOTP = 0
406
- self.MOTAL = 0
407
- self.MODA = 0
408
- self.MODP = 0
409
- self.MODP_t = []
410
- self.recall = 0
411
- self.precision = 0
412
- self.F1 = 0
413
- self.FAR = 0
414
- self.total_cost = 0
415
- self.itp = 0 # number of ignored true positives
416
- self.itps = [] # number of ignored true positives PER SEQUENCE
417
- self.tp = 0 # number of true positives including ignored true positives!
418
- self.tps = [
419
- ] # number of true positives including ignored true positives PER SEQUENCE
420
- self.fn = 0 # number of false negatives WITHOUT ignored false negatives
421
- self.fns = [
422
- ] # number of false negatives WITHOUT ignored false negatives PER SEQUENCE
423
- self.ifn = 0 # number of ignored false negatives
424
- self.ifns = [] # number of ignored false negatives PER SEQUENCE
425
- self.fp = 0 # number of false positives
426
- # a bit tricky, the number of ignored false negatives and ignored true positives
427
- # is subtracted, but if both tracker detection and ground truth detection
428
- # are ignored this number is added again to avoid double counting
429
- self.fps = [] # above PER SEQUENCE
430
- self.mme = 0
431
- self.fragments = 0
432
- self.id_switches = 0
433
- self.MT = 0
434
- self.PT = 0
435
- self.ML = 0
436
-
437
- self.min_overlap = min_overlap # minimum bounding box overlap for 3rd party metrics
438
- self.max_truncation = max_truncation # maximum truncation of an object for evaluation
439
- self.max_occlusion = max_occlusion # maximum occlusion of an object for evaluation
440
- self.min_height = min_height # minimum height of an object for evaluation
441
- self.n_sample_points = 500
442
-
443
- # this should be enough to hold all groundtruth trajectories
444
- # is expanded if necessary and reduced in any case
445
- self.gt_trajectories = [[] for x in range(self.n_sequences)]
446
- self.ign_trajectories = [[] for x in range(self.n_sequences)]
447
-
448
- def loadGroundtruth(self):
449
- try:
450
- self._loadData(
451
- self.gt_path, cls=self.cls, loading_groundtruth=True)
452
- except IOError:
453
- return False
454
- return True
455
-
456
- def loadTracker(self):
457
- try:
458
- if not self._loadData(
459
- self.result_path, cls=self.cls, loading_groundtruth=False):
460
- return False
461
- except IOError:
462
- return False
463
- return True
464
-
465
- def _loadData(self,
466
- root_dir,
467
- cls,
468
- min_score=-1000,
469
- loading_groundtruth=False):
470
- """
471
- Generic loader for ground truth and tracking data.
472
- Use loadGroundtruth() or loadTracker() to load this data.
473
- Loads detections in KITTI format from textfiles.
474
- """
475
- # construct objectDetections object to hold detection data
476
- t_data = tData()
477
- data = []
478
- eval_2d = True
479
- eval_3d = True
480
-
481
- seq_data = []
482
- n_trajectories = 0
483
- n_trajectories_seq = []
484
- for seq, s_name in enumerate(self.sequence_name):
485
- i = 0
486
- filename = os.path.join(root_dir, "%s.txt" % s_name)
487
- f = open(filename, "r")
488
-
489
- f_data = [
490
- [] for x in range(self.n_frames[seq])
491
- ] # current set has only 1059 entries, sufficient length is checked anyway
492
- ids = []
493
- n_in_seq = 0
494
- id_frame_cache = []
495
- for line in f:
496
- # KITTI tracking benchmark data format:
497
- # (frame,tracklet_id,objectType,truncation,occlusion,alpha,x1,y1,x2,y2,h,w,l,X,Y,Z,ry)
498
- line = line.strip()
499
- fields = line.split(" ")
500
- # classes that should be loaded (ignored neighboring classes)
501
- if "car" in cls.lower():
502
- classes = ["car", "van"]
503
- elif "pedestrian" in cls.lower():
504
- classes = ["pedestrian", "person_sitting"]
505
- else:
506
- classes = [cls.lower()]
507
- classes += ["dontcare"]
508
- if not any([s for s in classes if s in fields[2].lower()]):
509
- continue
510
- # get fields from table
511
- t_data.frame = int(float(fields[0])) # frame
512
- t_data.track_id = int(float(fields[1])) # id
513
- t_data.obj_type = fields[
514
- 2].lower() # object type [car, pedestrian, cyclist, ...]
515
- t_data.truncation = int(
516
- float(fields[3])) # truncation [-1,0,1,2]
517
- t_data.occlusion = int(
518
- float(fields[4])) # occlusion [-1,0,1,2]
519
- t_data.obs_angle = float(fields[5]) # observation angle [rad]
520
- t_data.x1 = float(fields[6]) # left [px]
521
- t_data.y1 = float(fields[7]) # top [px]
522
- t_data.x2 = float(fields[8]) # right [px]
523
- t_data.y2 = float(fields[9]) # bottom [px]
524
- t_data.h = float(fields[10]) # height [m]
525
- t_data.w = float(fields[11]) # width [m]
526
- t_data.l = float(fields[12]) # length [m]
527
- t_data.X = float(fields[13]) # X [m]
528
- t_data.Y = float(fields[14]) # Y [m]
529
- t_data.Z = float(fields[15]) # Z [m]
530
- t_data.yaw = float(fields[16]) # yaw angle [rad]
531
- if not loading_groundtruth:
532
- if len(fields) == 17:
533
- t_data.score = -1
534
- elif len(fields) == 18:
535
- t_data.score = float(fields[17]) # detection score
536
- else:
537
- logger.info("file is not in KITTI format")
538
- return
539
-
540
- # do not consider objects marked as invalid
541
- if t_data.track_id is -1 and t_data.obj_type != "dontcare":
542
- continue
543
-
544
- idx = t_data.frame
545
- # check if length for frame data is sufficient
546
- if idx >= len(f_data):
547
- print("extend f_data", idx, len(f_data))
548
- f_data += [[] for x in range(max(500, idx - len(f_data)))]
549
- try:
550
- id_frame = (t_data.frame, t_data.track_id)
551
- if id_frame in id_frame_cache and not loading_groundtruth:
552
- logger.info(
553
- "track ids are not unique for sequence %d: frame %d"
554
- % (seq, t_data.frame))
555
- logger.info(
556
- "track id %d occured at least twice for this frame"
557
- % t_data.track_id)
558
- logger.info("Exiting...")
559
- #continue # this allows to evaluate non-unique result files
560
- return False
561
- id_frame_cache.append(id_frame)
562
- f_data[t_data.frame].append(copy.copy(t_data))
563
- except:
564
- print(len(f_data), idx)
565
- raise
566
-
567
- if t_data.track_id not in ids and t_data.obj_type != "dontcare":
568
- ids.append(t_data.track_id)
569
- n_trajectories += 1
570
- n_in_seq += 1
571
-
572
- # check if uploaded data provides information for 2D and 3D evaluation
573
- if not loading_groundtruth and eval_2d is True and (
574
- t_data.x1 == -1 or t_data.x2 == -1 or
575
- t_data.y1 == -1 or t_data.y2 == -1):
576
- eval_2d = False
577
- if not loading_groundtruth and eval_3d is True and (
578
- t_data.X == -1000 or t_data.Y == -1000 or
579
- t_data.Z == -1000):
580
- eval_3d = False
581
-
582
- # only add existing frames
583
- n_trajectories_seq.append(n_in_seq)
584
- seq_data.append(f_data)
585
- f.close()
586
-
587
- if not loading_groundtruth:
588
- self.tracker = seq_data
589
- self.n_tr_trajectories = n_trajectories
590
- self.eval_2d = eval_2d
591
- self.eval_3d = eval_3d
592
- self.n_tr_seq = n_trajectories_seq
593
- if self.n_tr_trajectories == 0:
594
- return False
595
- else:
596
- # split ground truth and DontCare areas
597
- self.dcareas = []
598
- self.groundtruth = []
599
- for seq_idx in range(len(seq_data)):
600
- seq_gt = seq_data[seq_idx]
601
- s_g, s_dc = [], []
602
- for f in range(len(seq_gt)):
603
- all_gt = seq_gt[f]
604
- g, dc = [], []
605
- for gg in all_gt:
606
- if gg.obj_type == "dontcare":
607
- dc.append(gg)
608
- else:
609
- g.append(gg)
610
- s_g.append(g)
611
- s_dc.append(dc)
612
- self.dcareas.append(s_dc)
613
- self.groundtruth.append(s_g)
614
- self.n_gt_seq = n_trajectories_seq
615
- self.n_gt_trajectories = n_trajectories
616
- return True
617
-
618
- def boxoverlap(self, a, b, criterion="union"):
619
- """
620
- boxoverlap computes intersection over union for bbox a and b in KITTI format.
621
- If the criterion is 'union', overlap = (a inter b) / a union b).
622
- If the criterion is 'a', overlap = (a inter b) / a, where b should be a dontcare area.
623
- """
624
- x1 = max(a.x1, b.x1)
625
- y1 = max(a.y1, b.y1)
626
- x2 = min(a.x2, b.x2)
627
- y2 = min(a.y2, b.y2)
628
-
629
- w = x2 - x1
630
- h = y2 - y1
631
-
632
- if w <= 0. or h <= 0.:
633
- return 0.
634
- inter = w * h
635
- aarea = (a.x2 - a.x1) * (a.y2 - a.y1)
636
- barea = (b.x2 - b.x1) * (b.y2 - b.y1)
637
- # intersection over union overlap
638
- if criterion.lower() == "union":
639
- o = inter / float(aarea + barea - inter)
640
- elif criterion.lower() == "a":
641
- o = float(inter) / float(aarea)
642
- else:
643
- raise TypeError("Unkown type for criterion")
644
- return o
645
-
646
- def compute3rdPartyMetrics(self):
647
- """
648
- Computes the metrics defined in
649
- - Stiefelhagen 2008: Evaluating Multiple Object Tracking Performance: The CLEAR MOT Metrics
650
- MOTA, MOTAL, MOTP
651
- - Nevatia 2008: Global Data Association for Multi-Object Tracking Using Network Flows
652
- MT/PT/ML
653
- """
654
- # construct Munkres object for Hungarian Method association
655
- hm = Munkres()
656
- max_cost = 1e9
657
-
658
- # go through all frames and associate ground truth and tracker results
659
- # groundtruth and tracker contain lists for every single frame containing lists of KITTI format detections
660
- fr, ids = 0, 0
661
- for seq_idx in range(len(self.groundtruth)):
662
- seq_gt = self.groundtruth[seq_idx]
663
- seq_dc = self.dcareas[seq_idx] # don't care areas
664
- seq_tracker = self.tracker[seq_idx]
665
- seq_trajectories = defaultdict(list)
666
- seq_ignored = defaultdict(list)
667
-
668
- # statistics over the current sequence, check the corresponding
669
- # variable comments in __init__ to get their meaning
670
- seqtp = 0
671
- seqitp = 0
672
- seqfn = 0
673
- seqifn = 0
674
- seqfp = 0
675
- seqigt = 0
676
- seqitr = 0
677
-
678
- last_ids = [[], []]
679
- n_gts = 0
680
- n_trs = 0
681
-
682
- for f in range(len(seq_gt)):
683
- g = seq_gt[f]
684
- dc = seq_dc[f]
685
-
686
- t = seq_tracker[f]
687
- # counting total number of ground truth and tracker objects
688
- self.n_gt += len(g)
689
- self.n_tr += len(t)
690
-
691
- n_gts += len(g)
692
- n_trs += len(t)
693
-
694
- # use hungarian method to associate, using boxoverlap 0..1 as cost
695
- # build cost matrix
696
- cost_matrix = []
697
- this_ids = [[], []]
698
- for gg in g:
699
- # save current ids
700
- this_ids[0].append(gg.track_id)
701
- this_ids[1].append(-1)
702
- gg.tracker = -1
703
- gg.id_switch = 0
704
- gg.fragmentation = 0
705
- cost_row = []
706
- for tt in t:
707
- # overlap == 1 is cost ==0
708
- c = 1 - self.boxoverlap(gg, tt)
709
- # gating for boxoverlap
710
- if c <= self.min_overlap:
711
- cost_row.append(c)
712
- else:
713
- cost_row.append(max_cost) # = 1e9
714
- cost_matrix.append(cost_row)
715
- # all ground truth trajectories are initially not associated
716
- # extend groundtruth trajectories lists (merge lists)
717
- seq_trajectories[gg.track_id].append(-1)
718
- seq_ignored[gg.track_id].append(False)
719
-
720
- if len(g) is 0:
721
- cost_matrix = [[]]
722
- # associate
723
- association_matrix = hm.compute(cost_matrix)
724
-
725
- # tmp variables for sanity checks and MODP computation
726
- tmptp = 0
727
- tmpfp = 0
728
- tmpfn = 0
729
- tmpc = 0 # this will sum up the overlaps for all true positives
730
- tmpcs = [0] * len(
731
- g) # this will save the overlaps for all true positives
732
- # the reason is that some true positives might be ignored
733
- # later such that the corrsponding overlaps can
734
- # be subtracted from tmpc for MODP computation
735
-
736
- # mapping for tracker ids and ground truth ids
737
- for row, col in association_matrix:
738
- # apply gating on boxoverlap
739
- c = cost_matrix[row][col]
740
- if c < max_cost:
741
- g[row].tracker = t[col].track_id
742
- this_ids[1][row] = t[col].track_id
743
- t[col].valid = True
744
- g[row].distance = c
745
- self.total_cost += 1 - c
746
- tmpc += 1 - c
747
- tmpcs[row] = 1 - c
748
- seq_trajectories[g[row].track_id][-1] = t[col].track_id
749
-
750
- # true positives are only valid associations
751
- self.tp += 1
752
- tmptp += 1
753
- else:
754
- g[row].tracker = -1
755
- self.fn += 1
756
- tmpfn += 1
757
-
758
- # associate tracker and DontCare areas
759
- # ignore tracker in neighboring classes
760
- nignoredtracker = 0 # number of ignored tracker detections
761
- ignoredtrackers = dict() # will associate the track_id with -1
762
- # if it is not ignored and 1 if it is
763
- # ignored;
764
- # this is used to avoid double counting ignored
765
- # cases, see the next loop
766
-
767
- for tt in t:
768
- ignoredtrackers[tt.track_id] = -1
769
- # ignore detection if it belongs to a neighboring class or is
770
- # smaller or equal to the minimum height
771
-
772
- tt_height = abs(tt.y1 - tt.y2)
773
- if ((self.cls == "car" and tt.obj_type == "van") or
774
- (self.cls == "pedestrian" and
775
- tt.obj_type == "person_sitting") or
776
- tt_height <= self.min_height) and not tt.valid:
777
- nignoredtracker += 1
778
- tt.ignored = True
779
- ignoredtrackers[tt.track_id] = 1
780
- continue
781
- for d in dc:
782
- overlap = self.boxoverlap(tt, d, "a")
783
- if overlap > 0.5 and not tt.valid:
784
- tt.ignored = True
785
- nignoredtracker += 1
786
- ignoredtrackers[tt.track_id] = 1
787
- break
788
-
789
- # check for ignored FN/TP (truncation or neighboring object class)
790
- ignoredfn = 0 # the number of ignored false negatives
791
- nignoredtp = 0 # the number of ignored true positives
792
- nignoredpairs = 0 # the number of ignored pairs, i.e. a true positive
793
- # which is ignored but where the associated tracker
794
- # detection has already been ignored
795
-
796
- gi = 0
797
- for gg in g:
798
- if gg.tracker < 0:
799
- if gg.occlusion>self.max_occlusion or gg.truncation>self.max_truncation\
800
- or (self.cls=="car" and gg.obj_type=="van") or (self.cls=="pedestrian" and gg.obj_type=="person_sitting"):
801
- seq_ignored[gg.track_id][-1] = True
802
- gg.ignored = True
803
- ignoredfn += 1
804
-
805
- elif gg.tracker >= 0:
806
- if gg.occlusion>self.max_occlusion or gg.truncation>self.max_truncation\
807
- or (self.cls=="car" and gg.obj_type=="van") or (self.cls=="pedestrian" and gg.obj_type=="person_sitting"):
808
-
809
- seq_ignored[gg.track_id][-1] = True
810
- gg.ignored = True
811
- nignoredtp += 1
812
-
813
- # if the associated tracker detection is already ignored,
814
- # we want to avoid double counting ignored detections
815
- if ignoredtrackers[gg.tracker] > 0:
816
- nignoredpairs += 1
817
-
818
- # for computing MODP, the overlaps from ignored detections
819
- # are subtracted
820
- tmpc -= tmpcs[gi]
821
- gi += 1
822
-
823
- # the below might be confusion, check the comments in __init__
824
- # to see what the individual statistics represent
825
-
826
- # correct TP by number of ignored TP due to truncation
827
- # ignored TP are shown as tracked in visualization
828
- tmptp -= nignoredtp
829
-
830
- # count the number of ignored true positives
831
- self.itp += nignoredtp
832
-
833
- # adjust the number of ground truth objects considered
834
- self.n_gt -= (ignoredfn + nignoredtp)
835
-
836
- # count the number of ignored ground truth objects
837
- self.n_igt += ignoredfn + nignoredtp
838
-
839
- # count the number of ignored tracker objects
840
- self.n_itr += nignoredtracker
841
-
842
- # count the number of ignored pairs, i.e. associated tracker and
843
- # ground truth objects that are both ignored
844
- self.n_igttr += nignoredpairs
845
-
846
- # false negatives = associated gt bboxes exceding association threshold + non-associated gt bboxes
847
- tmpfn += len(g) - len(association_matrix) - ignoredfn
848
- self.fn += len(g) - len(association_matrix) - ignoredfn
849
- self.ifn += ignoredfn
850
-
851
- # false positives = tracker bboxes - associated tracker bboxes
852
- # mismatches (mme_t)
853
- tmpfp += len(
854
- t) - tmptp - nignoredtracker - nignoredtp + nignoredpairs
855
- self.fp += len(
856
- t) - tmptp - nignoredtracker - nignoredtp + nignoredpairs
857
-
858
- # update sequence data
859
- seqtp += tmptp
860
- seqitp += nignoredtp
861
- seqfp += tmpfp
862
- seqfn += tmpfn
863
- seqifn += ignoredfn
864
- seqigt += ignoredfn + nignoredtp
865
- seqitr += nignoredtracker
866
-
867
- # sanity checks
868
- # - the number of true positives minues ignored true positives
869
- # should be greater or equal to 0
870
- # - the number of false negatives should be greater or equal to 0
871
- # - the number of false positives needs to be greater or equal to 0
872
- # otherwise ignored detections might be counted double
873
- # - the number of counted true positives (plus ignored ones)
874
- # and the number of counted false negatives (plus ignored ones)
875
- # should match the total number of ground truth objects
876
- # - the number of counted true positives (plus ignored ones)
877
- # and the number of counted false positives
878
- # plus the number of ignored tracker detections should
879
- # match the total number of tracker detections; note that
880
- # nignoredpairs is subtracted here to avoid double counting
881
- # of ignored detection sin nignoredtp and nignoredtracker
882
- if tmptp < 0:
883
- print(tmptp, nignoredtp)
884
- raise NameError("Something went wrong! TP is negative")
885
- if tmpfn < 0:
886
- print(tmpfn,
887
- len(g),
888
- len(association_matrix), ignoredfn, nignoredpairs)
889
- raise NameError("Something went wrong! FN is negative")
890
- if tmpfp < 0:
891
- print(tmpfp,
892
- len(t), tmptp, nignoredtracker, nignoredtp,
893
- nignoredpairs)
894
- raise NameError("Something went wrong! FP is negative")
895
- if tmptp + tmpfn is not len(g) - ignoredfn - nignoredtp:
896
- print("seqidx", seq_idx)
897
- print("frame ", f)
898
- print("TP ", tmptp)
899
- print("FN ", tmpfn)
900
- print("FP ", tmpfp)
901
- print("nGT ", len(g))
902
- print("nAss ", len(association_matrix))
903
- print("ign GT", ignoredfn)
904
- print("ign TP", nignoredtp)
905
- raise NameError(
906
- "Something went wrong! nGroundtruth is not TP+FN")
907
- if tmptp + tmpfp + nignoredtp + nignoredtracker - nignoredpairs is not len(
908
- t):
909
- print(seq_idx, f, len(t), tmptp, tmpfp)
910
- print(len(association_matrix), association_matrix)
911
- raise NameError(
912
- "Something went wrong! nTracker is not TP+FP")
913
-
914
- # check for id switches or fragmentations
915
- for i, tt in enumerate(this_ids[0]):
916
- if tt in last_ids[0]:
917
- idx = last_ids[0].index(tt)
918
- tid = this_ids[1][i]
919
- lid = last_ids[1][idx]
920
- if tid != lid and lid != -1 and tid != -1:
921
- if g[i].truncation < self.max_truncation:
922
- g[i].id_switch = 1
923
- ids += 1
924
- if tid != lid and lid != -1:
925
- if g[i].truncation < self.max_truncation:
926
- g[i].fragmentation = 1
927
- fr += 1
928
-
929
- # save current index
930
- last_ids = this_ids
931
- # compute MOTP_t
932
- MODP_t = 1
933
- if tmptp != 0:
934
- MODP_t = tmpc / float(tmptp)
935
- self.MODP_t.append(MODP_t)
936
-
937
- # remove empty lists for current gt trajectories
938
- self.gt_trajectories[seq_idx] = seq_trajectories
939
- self.ign_trajectories[seq_idx] = seq_ignored
940
-
941
- # gather statistics for "per sequence" statistics.
942
- self.n_gts.append(n_gts)
943
- self.n_trs.append(n_trs)
944
- self.tps.append(seqtp)
945
- self.itps.append(seqitp)
946
- self.fps.append(seqfp)
947
- self.fns.append(seqfn)
948
- self.ifns.append(seqifn)
949
- self.n_igts.append(seqigt)
950
- self.n_itrs.append(seqitr)
951
-
952
- # compute MT/PT/ML, fragments, idswitches for all groundtruth trajectories
953
- n_ignored_tr_total = 0
954
- for seq_idx, (
955
- seq_trajectories, seq_ignored
956
- ) in enumerate(zip(self.gt_trajectories, self.ign_trajectories)):
957
- if len(seq_trajectories) == 0:
958
- continue
959
- tmpMT, tmpML, tmpPT, tmpId_switches, tmpFragments = [0] * 5
960
- n_ignored_tr = 0
961
- for g, ign_g in zip(seq_trajectories.values(),
962
- seq_ignored.values()):
963
- # all frames of this gt trajectory are ignored
964
- if all(ign_g):
965
- n_ignored_tr += 1
966
- n_ignored_tr_total += 1
967
- continue
968
- # all frames of this gt trajectory are not assigned to any detections
969
- if all([this == -1 for this in g]):
970
- tmpML += 1
971
- self.ML += 1
972
- continue
973
- # compute tracked frames in trajectory
974
- last_id = g[0]
975
- # first detection (necessary to be in gt_trajectories) is always tracked
976
- tracked = 1 if g[0] >= 0 else 0
977
- lgt = 0 if ign_g[0] else 1
978
- for f in range(1, len(g)):
979
- if ign_g[f]:
980
- last_id = -1
981
- continue
982
- lgt += 1
983
- if last_id != g[f] and last_id != -1 and g[f] != -1 and g[
984
- f - 1] != -1:
985
- tmpId_switches += 1
986
- self.id_switches += 1
987
- if f < len(g) - 1 and g[f - 1] != g[
988
- f] and last_id != -1 and g[f] != -1 and g[f +
989
- 1] != -1:
990
- tmpFragments += 1
991
- self.fragments += 1
992
- if g[f] != -1:
993
- tracked += 1
994
- last_id = g[f]
995
- # handle last frame; tracked state is handled in for loop (g[f]!=-1)
996
- if len(g) > 1 and g[f - 1] != g[f] and last_id != -1 and g[
997
- f] != -1 and not ign_g[f]:
998
- tmpFragments += 1
999
- self.fragments += 1
1000
-
1001
- # compute MT/PT/ML
1002
- tracking_ratio = tracked / float(len(g) - sum(ign_g))
1003
- if tracking_ratio > 0.8:
1004
- tmpMT += 1
1005
- self.MT += 1
1006
- elif tracking_ratio < 0.2:
1007
- tmpML += 1
1008
- self.ML += 1
1009
- else: # 0.2 <= tracking_ratio <= 0.8
1010
- tmpPT += 1
1011
- self.PT += 1
1012
-
1013
- if (self.n_gt_trajectories - n_ignored_tr_total) == 0:
1014
- self.MT = 0.
1015
- self.PT = 0.
1016
- self.ML = 0.
1017
- else:
1018
- self.MT /= float(self.n_gt_trajectories - n_ignored_tr_total)
1019
- self.PT /= float(self.n_gt_trajectories - n_ignored_tr_total)
1020
- self.ML /= float(self.n_gt_trajectories - n_ignored_tr_total)
1021
-
1022
- # precision/recall etc.
1023
- if (self.fp + self.tp) == 0 or (self.tp + self.fn) == 0:
1024
- self.recall = 0.
1025
- self.precision = 0.
1026
- else:
1027
- self.recall = self.tp / float(self.tp + self.fn)
1028
- self.precision = self.tp / float(self.fp + self.tp)
1029
- if (self.recall + self.precision) == 0:
1030
- self.F1 = 0.
1031
- else:
1032
- self.F1 = 2. * (self.precision * self.recall) / (
1033
- self.precision + self.recall)
1034
- if sum(self.n_frames) == 0:
1035
- self.FAR = "n/a"
1036
- else:
1037
- self.FAR = self.fp / float(sum(self.n_frames))
1038
-
1039
- # compute CLEARMOT
1040
- if self.n_gt == 0:
1041
- self.MOTA = -float("inf")
1042
- self.MODA = -float("inf")
1043
- else:
1044
- self.MOTA = 1 - (self.fn + self.fp + self.id_switches
1045
- ) / float(self.n_gt)
1046
- self.MODA = 1 - (self.fn + self.fp) / float(self.n_gt)
1047
- if self.tp == 0:
1048
- self.MOTP = float("inf")
1049
- else:
1050
- self.MOTP = self.total_cost / float(self.tp)
1051
- if self.n_gt != 0:
1052
- if self.id_switches == 0:
1053
- self.MOTAL = 1 - (self.fn + self.fp + self.id_switches
1054
- ) / float(self.n_gt)
1055
- else:
1056
- self.MOTAL = 1 - (self.fn + self.fp +
1057
- math.log10(self.id_switches)
1058
- ) / float(self.n_gt)
1059
- else:
1060
- self.MOTAL = -float("inf")
1061
- if sum(self.n_frames) == 0:
1062
- self.MODP = "n/a"
1063
- else:
1064
- self.MODP = sum(self.MODP_t) / float(sum(self.n_frames))
1065
- return True
1066
-
1067
- def createSummary(self):
1068
- summary = ""
1069
- summary += "tracking evaluation summary".center(80, "=") + "\n"
1070
- summary += self.printEntry("Multiple Object Tracking Accuracy (MOTA)",
1071
- self.MOTA) + "\n"
1072
- summary += self.printEntry("Multiple Object Tracking Precision (MOTP)",
1073
- self.MOTP) + "\n"
1074
- summary += self.printEntry("Multiple Object Tracking Accuracy (MOTAL)",
1075
- self.MOTAL) + "\n"
1076
- summary += self.printEntry("Multiple Object Detection Accuracy (MODA)",
1077
- self.MODA) + "\n"
1078
- summary += self.printEntry(
1079
- "Multiple Object Detection Precision (MODP)", self.MODP) + "\n"
1080
- summary += "\n"
1081
- summary += self.printEntry("Recall", self.recall) + "\n"
1082
- summary += self.printEntry("Precision", self.precision) + "\n"
1083
- summary += self.printEntry("F1", self.F1) + "\n"
1084
- summary += self.printEntry("False Alarm Rate", self.FAR) + "\n"
1085
- summary += "\n"
1086
- summary += self.printEntry("Mostly Tracked", self.MT) + "\n"
1087
- summary += self.printEntry("Partly Tracked", self.PT) + "\n"
1088
- summary += self.printEntry("Mostly Lost", self.ML) + "\n"
1089
- summary += "\n"
1090
- summary += self.printEntry("True Positives", self.tp) + "\n"
1091
- #summary += self.printEntry("True Positives per Sequence", self.tps) + "\n"
1092
- summary += self.printEntry("Ignored True Positives", self.itp) + "\n"
1093
- #summary += self.printEntry("Ignored True Positives per Sequence", self.itps) + "\n"
1094
-
1095
- summary += self.printEntry("False Positives", self.fp) + "\n"
1096
- #summary += self.printEntry("False Positives per Sequence", self.fps) + "\n"
1097
- summary += self.printEntry("False Negatives", self.fn) + "\n"
1098
- #summary += self.printEntry("False Negatives per Sequence", self.fns) + "\n"
1099
- summary += self.printEntry("ID-switches", self.id_switches) + "\n"
1100
- self.fp = self.fp / self.n_gt
1101
- self.fn = self.fn / self.n_gt
1102
- self.id_switches = self.id_switches / self.n_gt
1103
- summary += self.printEntry("False Positives Ratio", self.fp) + "\n"
1104
- #summary += self.printEntry("False Positives per Sequence", self.fps) + "\n"
1105
- summary += self.printEntry("False Negatives Ratio", self.fn) + "\n"
1106
- #summary += self.printEntry("False Negatives per Sequence", self.fns) + "\n"
1107
- summary += self.printEntry("Ignored False Negatives Ratio",
1108
- self.ifn) + "\n"
1109
-
1110
- #summary += self.printEntry("Ignored False Negatives per Sequence", self.ifns) + "\n"
1111
- summary += self.printEntry("Missed Targets", self.fn) + "\n"
1112
- summary += self.printEntry("ID-switches", self.id_switches) + "\n"
1113
- summary += self.printEntry("Fragmentations", self.fragments) + "\n"
1114
- summary += "\n"
1115
- summary += self.printEntry("Ground Truth Objects (Total)", self.n_gt +
1116
- self.n_igt) + "\n"
1117
- #summary += self.printEntry("Ground Truth Objects (Total) per Sequence", self.n_gts) + "\n"
1118
- summary += self.printEntry("Ignored Ground Truth Objects",
1119
- self.n_igt) + "\n"
1120
- #summary += self.printEntry("Ignored Ground Truth Objects per Sequence", self.n_igts) + "\n"
1121
- summary += self.printEntry("Ground Truth Trajectories",
1122
- self.n_gt_trajectories) + "\n"
1123
- summary += "\n"
1124
- summary += self.printEntry("Tracker Objects (Total)", self.n_tr) + "\n"
1125
- #summary += self.printEntry("Tracker Objects (Total) per Sequence", self.n_trs) + "\n"
1126
- summary += self.printEntry("Ignored Tracker Objects",
1127
- self.n_itr) + "\n"
1128
- #summary += self.printEntry("Ignored Tracker Objects per Sequence", self.n_itrs) + "\n"
1129
- summary += self.printEntry("Tracker Trajectories",
1130
- self.n_tr_trajectories) + "\n"
1131
- #summary += "\n"
1132
- #summary += self.printEntry("Ignored Tracker Objects with Associated Ignored Ground Truth Objects", self.n_igttr) + "\n"
1133
- summary += "=" * 80
1134
- return summary
1135
-
1136
- def printEntry(self, key, val, width=(70, 10)):
1137
- """
1138
- Pretty print an entry in a table fashion.
1139
- """
1140
- s_out = key.ljust(width[0])
1141
- if type(val) == int:
1142
- s = "%%%dd" % width[1]
1143
- s_out += s % val
1144
- elif type(val) == float:
1145
- s = "%%%df" % (width[1])
1146
- s_out += s % val
1147
- else:
1148
- s_out += ("%s" % val).rjust(width[1])
1149
- return s_out
1150
-
1151
- def saveToStats(self, save_summary):
1152
- """
1153
- Save the statistics in a whitespace separate file.
1154
- """
1155
- summary = self.createSummary()
1156
- if save_summary:
1157
- filename = os.path.join(self.result_path,
1158
- "summary_%s.txt" % self.cls)
1159
- dump = open(filename, "w+")
1160
- dump.write(summary)
1161
- dump.close()
1162
- return summary
1163
-
1164
-
1165
- class KITTIMOTMetric(Metric):
1166
- def __init__(self, save_summary=True):
1167
- self.save_summary = save_summary
1168
- self.MOTEvaluator = KITTIEvaluation
1169
- self.result_root = None
1170
- self.reset()
1171
-
1172
- def reset(self):
1173
- self.seqs = []
1174
- self.n_sequences = 0
1175
- self.n_frames = []
1176
- self.strsummary = ''
1177
-
1178
- def update(self, data_root, seq, data_type, result_root, result_filename):
1179
- assert data_type == 'kitti', "data_type should 'kitti'"
1180
- self.result_root = result_root
1181
- self.gt_path = data_root
1182
- gt_path = '{}/../labels/{}.txt'.format(data_root, seq)
1183
- gt = open(gt_path, "r")
1184
- max_frame = 0
1185
- for line in gt:
1186
- line = line.strip()
1187
- line_list = line.split(" ")
1188
- if int(line_list[0]) > max_frame:
1189
- max_frame = int(line_list[0])
1190
- rs = open(result_filename, "r")
1191
- for line in rs:
1192
- line = line.strip()
1193
- line_list = line.split(" ")
1194
- if int(line_list[0]) > max_frame:
1195
- max_frame = int(line_list[0])
1196
- gt.close()
1197
- rs.close()
1198
- self.n_frames.append(max_frame + 1)
1199
- self.seqs.append(seq)
1200
- self.n_sequences += 1
1201
-
1202
- def accumulate(self):
1203
- logger.info("Processing Result for KITTI Tracking Benchmark")
1204
- e = self.MOTEvaluator(result_path=self.result_root, gt_path=self.gt_path,\
1205
- n_frames=self.n_frames, seqs=self.seqs, n_sequences=self.n_sequences)
1206
- try:
1207
- if not e.loadTracker():
1208
- return
1209
- logger.info("Loading Results - Success")
1210
- logger.info("Evaluate Object Class: %s" % c.upper())
1211
- except:
1212
- logger.info("Caught exception while loading result data.")
1213
- if not e.loadGroundtruth():
1214
- raise ValueError("Ground truth not found.")
1215
- logger.info("Loading Groundtruth - Success")
1216
- # sanity checks
1217
- if len(e.groundtruth) is not len(e.tracker):
1218
- logger.info(
1219
- "The uploaded data does not provide results for every sequence."
1220
- )
1221
- return False
1222
- logger.info("Loaded %d Sequences." % len(e.groundtruth))
1223
- logger.info("Start Evaluation...")
1224
-
1225
- if e.compute3rdPartyMetrics():
1226
- self.strsummary = e.saveToStats(self.save_summary)
1227
- else:
1228
- logger.info(
1229
- "There seem to be no true positives or false positives at all in the submitted data."
1230
- )
1231
-
1232
- def log(self):
1233
- print(self.strsummary)
1234
-
1235
- def get_results(self):
1236
- return self.strsummary