paddlex 2.0.0rc4__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 (1087) hide show
  1. paddlex/.version +1 -0
  2. paddlex/__init__.py +51 -18
  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/paddleclas.py +0 -375
  649. PaddleClas/ppcls/__init__.py +0 -20
  650. PaddleClas/ppcls/data/__init__.py +0 -15
  651. PaddleClas/ppcls/data/imaug/__init__.py +0 -94
  652. PaddleClas/ppcls/data/imaug/autoaugment.py +0 -264
  653. PaddleClas/ppcls/data/imaug/batch_operators.py +0 -117
  654. PaddleClas/ppcls/data/imaug/cutout.py +0 -41
  655. PaddleClas/ppcls/data/imaug/fmix.py +0 -217
  656. PaddleClas/ppcls/data/imaug/grid.py +0 -89
  657. PaddleClas/ppcls/data/imaug/hide_and_seek.py +0 -44
  658. PaddleClas/ppcls/data/imaug/operators.py +0 -244
  659. PaddleClas/ppcls/data/imaug/randaugment.py +0 -106
  660. PaddleClas/ppcls/data/imaug/random_erasing.py +0 -55
  661. PaddleClas/ppcls/data/reader.py +0 -318
  662. PaddleClas/ppcls/modeling/__init__.py +0 -20
  663. PaddleClas/ppcls/modeling/architectures/__init__.py +0 -51
  664. PaddleClas/ppcls/modeling/architectures/alexnet.py +0 -132
  665. PaddleClas/ppcls/modeling/architectures/darknet.py +0 -161
  666. PaddleClas/ppcls/modeling/architectures/densenet.py +0 -308
  667. PaddleClas/ppcls/modeling/architectures/distillation_models.py +0 -65
  668. PaddleClas/ppcls/modeling/architectures/distilled_vision_transformer.py +0 -196
  669. PaddleClas/ppcls/modeling/architectures/dpn.py +0 -425
  670. PaddleClas/ppcls/modeling/architectures/efficientnet.py +0 -901
  671. PaddleClas/ppcls/modeling/architectures/ghostnet.py +0 -331
  672. PaddleClas/ppcls/modeling/architectures/googlenet.py +0 -207
  673. PaddleClas/ppcls/modeling/architectures/hrnet.py +0 -742
  674. PaddleClas/ppcls/modeling/architectures/inception_v3.py +0 -481
  675. PaddleClas/ppcls/modeling/architectures/inception_v4.py +0 -455
  676. PaddleClas/ppcls/modeling/architectures/mixnet.py +0 -782
  677. PaddleClas/ppcls/modeling/architectures/mobilenet_v1.py +0 -266
  678. PaddleClas/ppcls/modeling/architectures/mobilenet_v2.py +0 -248
  679. PaddleClas/ppcls/modeling/architectures/mobilenet_v3.py +0 -359
  680. PaddleClas/ppcls/modeling/architectures/regnet.py +0 -383
  681. PaddleClas/ppcls/modeling/architectures/repvgg.py +0 -339
  682. PaddleClas/ppcls/modeling/architectures/res2net.py +0 -272
  683. PaddleClas/ppcls/modeling/architectures/res2net_vd.py +0 -295
  684. PaddleClas/ppcls/modeling/architectures/resnest.py +0 -705
  685. PaddleClas/ppcls/modeling/architectures/resnet.py +0 -316
  686. PaddleClas/ppcls/modeling/architectures/resnet_vc.py +0 -309
  687. PaddleClas/ppcls/modeling/architectures/resnet_vd.py +0 -354
  688. PaddleClas/ppcls/modeling/architectures/resnext.py +0 -253
  689. PaddleClas/ppcls/modeling/architectures/resnext101_wsl.py +0 -447
  690. PaddleClas/ppcls/modeling/architectures/resnext_vd.py +0 -266
  691. PaddleClas/ppcls/modeling/architectures/rexnet.py +0 -240
  692. PaddleClas/ppcls/modeling/architectures/se_resnet_vd.py +0 -378
  693. PaddleClas/ppcls/modeling/architectures/se_resnext.py +0 -290
  694. PaddleClas/ppcls/modeling/architectures/se_resnext_vd.py +0 -285
  695. PaddleClas/ppcls/modeling/architectures/shufflenet_v2.py +0 -320
  696. PaddleClas/ppcls/modeling/architectures/squeezenet.py +0 -154
  697. PaddleClas/ppcls/modeling/architectures/vgg.py +0 -152
  698. PaddleClas/ppcls/modeling/architectures/vision_transformer.py +0 -402
  699. PaddleClas/ppcls/modeling/architectures/xception.py +0 -345
  700. PaddleClas/ppcls/modeling/architectures/xception_deeplab.py +0 -386
  701. PaddleClas/ppcls/modeling/loss.py +0 -154
  702. PaddleClas/ppcls/modeling/utils.py +0 -53
  703. PaddleClas/ppcls/optimizer/__init__.py +0 -19
  704. PaddleClas/ppcls/optimizer/learning_rate.py +0 -159
  705. PaddleClas/ppcls/optimizer/optimizer.py +0 -165
  706. PaddleClas/ppcls/utils/__init__.py +0 -27
  707. PaddleClas/ppcls/utils/check.py +0 -151
  708. PaddleClas/ppcls/utils/config.py +0 -201
  709. PaddleClas/ppcls/utils/logger.py +0 -120
  710. PaddleClas/ppcls/utils/metrics.py +0 -107
  711. PaddleClas/ppcls/utils/misc.py +0 -62
  712. PaddleClas/ppcls/utils/model_zoo.py +0 -213
  713. PaddleClas/ppcls/utils/save_load.py +0 -163
  714. PaddleClas/setup.py +0 -55
  715. PaddleClas/tools/__init__.py +0 -15
  716. PaddleClas/tools/download.py +0 -50
  717. PaddleClas/tools/ema.py +0 -58
  718. PaddleClas/tools/eval.py +0 -112
  719. PaddleClas/tools/export_model.py +0 -85
  720. PaddleClas/tools/export_serving_model.py +0 -76
  721. PaddleClas/tools/infer/__init__.py +0 -16
  722. PaddleClas/tools/infer/infer.py +0 -94
  723. PaddleClas/tools/infer/predict.py +0 -117
  724. PaddleClas/tools/infer/utils.py +0 -233
  725. PaddleClas/tools/program.py +0 -444
  726. PaddleClas/tools/test_hubserving.py +0 -113
  727. PaddleClas/tools/train.py +0 -141
  728. paddlex/cls.py +0 -76
  729. paddlex/command.py +0 -215
  730. paddlex/cv/__init__.py +0 -17
  731. paddlex/cv/datasets/__init__.py +0 -18
  732. paddlex/cv/datasets/coco.py +0 -169
  733. paddlex/cv/datasets/imagenet.py +0 -88
  734. paddlex/cv/datasets/seg_dataset.py +0 -91
  735. paddlex/cv/datasets/voc.py +0 -301
  736. paddlex/cv/models/__init__.py +0 -18
  737. paddlex/cv/models/base.py +0 -623
  738. paddlex/cv/models/classifier.py +0 -814
  739. paddlex/cv/models/detector.py +0 -1747
  740. paddlex/cv/models/load_model.py +0 -126
  741. paddlex/cv/models/segmenter.py +0 -673
  742. paddlex/cv/models/slim/__init__.py +0 -13
  743. paddlex/cv/models/slim/prune.py +0 -55
  744. paddlex/cv/models/utils/__init__.py +0 -13
  745. paddlex/cv/models/utils/det_metrics/__init__.py +0 -15
  746. paddlex/cv/models/utils/det_metrics/coco_utils.py +0 -217
  747. paddlex/cv/models/utils/det_metrics/metrics.py +0 -220
  748. paddlex/cv/models/utils/ema.py +0 -48
  749. paddlex/cv/models/utils/seg_metrics.py +0 -62
  750. paddlex/cv/models/utils/visualize.py +0 -394
  751. paddlex/cv/transforms/__init__.py +0 -46
  752. paddlex/cv/transforms/batch_operators.py +0 -286
  753. paddlex/cv/transforms/box_utils.py +0 -41
  754. paddlex/cv/transforms/functions.py +0 -193
  755. paddlex/cv/transforms/operators.py +0 -1402
  756. paddlex/det.py +0 -43
  757. paddlex/paddleseg/__init__.py +0 -17
  758. paddlex/paddleseg/core/__init__.py +0 -20
  759. paddlex/paddleseg/core/infer.py +0 -289
  760. paddlex/paddleseg/core/predict.py +0 -145
  761. paddlex/paddleseg/core/train.py +0 -258
  762. paddlex/paddleseg/core/val.py +0 -172
  763. paddlex/paddleseg/cvlibs/__init__.py +0 -17
  764. paddlex/paddleseg/cvlibs/callbacks.py +0 -279
  765. paddlex/paddleseg/cvlibs/config.py +0 -359
  766. paddlex/paddleseg/cvlibs/manager.py +0 -142
  767. paddlex/paddleseg/cvlibs/param_init.py +0 -91
  768. paddlex/paddleseg/datasets/__init__.py +0 -21
  769. paddlex/paddleseg/datasets/ade.py +0 -112
  770. paddlex/paddleseg/datasets/cityscapes.py +0 -86
  771. paddlex/paddleseg/datasets/cocostuff.py +0 -79
  772. paddlex/paddleseg/datasets/dataset.py +0 -164
  773. paddlex/paddleseg/datasets/mini_deep_globe_road_extraction.py +0 -95
  774. paddlex/paddleseg/datasets/optic_disc_seg.py +0 -97
  775. paddlex/paddleseg/datasets/pascal_context.py +0 -80
  776. paddlex/paddleseg/datasets/voc.py +0 -113
  777. paddlex/paddleseg/models/__init__.py +0 -39
  778. paddlex/paddleseg/models/ann.py +0 -436
  779. paddlex/paddleseg/models/attention_unet.py +0 -189
  780. paddlex/paddleseg/models/backbones/__init__.py +0 -18
  781. paddlex/paddleseg/models/backbones/hrnet.py +0 -815
  782. paddlex/paddleseg/models/backbones/mobilenetv3.py +0 -365
  783. paddlex/paddleseg/models/backbones/resnet_vd.py +0 -364
  784. paddlex/paddleseg/models/backbones/xception_deeplab.py +0 -415
  785. paddlex/paddleseg/models/bisenet.py +0 -311
  786. paddlex/paddleseg/models/danet.py +0 -220
  787. paddlex/paddleseg/models/decoupled_segnet.py +0 -233
  788. paddlex/paddleseg/models/deeplab.py +0 -258
  789. paddlex/paddleseg/models/dnlnet.py +0 -231
  790. paddlex/paddleseg/models/emanet.py +0 -219
  791. paddlex/paddleseg/models/fast_scnn.py +0 -318
  792. paddlex/paddleseg/models/fcn.py +0 -135
  793. paddlex/paddleseg/models/gcnet.py +0 -223
  794. paddlex/paddleseg/models/gscnn.py +0 -357
  795. paddlex/paddleseg/models/hardnet.py +0 -309
  796. paddlex/paddleseg/models/isanet.py +0 -202
  797. paddlex/paddleseg/models/layers/__init__.py +0 -19
  798. paddlex/paddleseg/models/layers/activation.py +0 -73
  799. paddlex/paddleseg/models/layers/attention.py +0 -146
  800. paddlex/paddleseg/models/layers/layer_libs.py +0 -168
  801. paddlex/paddleseg/models/layers/nonlocal2d.py +0 -155
  802. paddlex/paddleseg/models/layers/pyramid_pool.py +0 -182
  803. paddlex/paddleseg/models/losses/__init__.py +0 -27
  804. paddlex/paddleseg/models/losses/binary_cross_entropy_loss.py +0 -174
  805. paddlex/paddleseg/models/losses/bootstrapped_cross_entropy.py +0 -73
  806. paddlex/paddleseg/models/losses/cross_entropy_loss.py +0 -94
  807. paddlex/paddleseg/models/losses/decoupledsegnet_relax_boundary_loss.py +0 -129
  808. paddlex/paddleseg/models/losses/dice_loss.py +0 -61
  809. paddlex/paddleseg/models/losses/edge_attention_loss.py +0 -78
  810. paddlex/paddleseg/models/losses/gscnn_dual_task_loss.py +0 -141
  811. paddlex/paddleseg/models/losses/l1_loss.py +0 -76
  812. paddlex/paddleseg/models/losses/lovasz_loss.py +0 -222
  813. paddlex/paddleseg/models/losses/mean_square_error_loss.py +0 -65
  814. paddlex/paddleseg/models/losses/mixed_loss.py +0 -58
  815. paddlex/paddleseg/models/losses/ohem_cross_entropy_loss.py +0 -99
  816. paddlex/paddleseg/models/losses/ohem_edge_attention_loss.py +0 -114
  817. paddlex/paddleseg/models/ocrnet.py +0 -248
  818. paddlex/paddleseg/models/pspnet.py +0 -147
  819. paddlex/paddleseg/models/sfnet.py +0 -236
  820. paddlex/paddleseg/models/shufflenet_slim.py +0 -268
  821. paddlex/paddleseg/models/u2net.py +0 -574
  822. paddlex/paddleseg/models/unet.py +0 -155
  823. paddlex/paddleseg/models/unet_3plus.py +0 -316
  824. paddlex/paddleseg/models/unet_plusplus.py +0 -237
  825. paddlex/paddleseg/transforms/__init__.py +0 -16
  826. paddlex/paddleseg/transforms/functional.py +0 -161
  827. paddlex/paddleseg/transforms/transforms.py +0 -937
  828. paddlex/paddleseg/utils/__init__.py +0 -22
  829. paddlex/paddleseg/utils/config_check.py +0 -60
  830. paddlex/paddleseg/utils/download.py +0 -163
  831. paddlex/paddleseg/utils/env/__init__.py +0 -16
  832. paddlex/paddleseg/utils/env/seg_env.py +0 -56
  833. paddlex/paddleseg/utils/env/sys_env.py +0 -122
  834. paddlex/paddleseg/utils/logger.py +0 -48
  835. paddlex/paddleseg/utils/metrics.py +0 -146
  836. paddlex/paddleseg/utils/progbar.py +0 -212
  837. paddlex/paddleseg/utils/timer.py +0 -53
  838. paddlex/paddleseg/utils/utils.py +0 -120
  839. paddlex/paddleseg/utils/visualize.py +0 -90
  840. paddlex/ppcls/__init__.py +0 -20
  841. paddlex/ppcls/data/__init__.py +0 -15
  842. paddlex/ppcls/data/imaug/__init__.py +0 -94
  843. paddlex/ppcls/data/imaug/autoaugment.py +0 -264
  844. paddlex/ppcls/data/imaug/batch_operators.py +0 -117
  845. paddlex/ppcls/data/imaug/cutout.py +0 -41
  846. paddlex/ppcls/data/imaug/fmix.py +0 -217
  847. paddlex/ppcls/data/imaug/grid.py +0 -89
  848. paddlex/ppcls/data/imaug/hide_and_seek.py +0 -44
  849. paddlex/ppcls/data/imaug/operators.py +0 -256
  850. paddlex/ppcls/data/imaug/randaugment.py +0 -106
  851. paddlex/ppcls/data/imaug/random_erasing.py +0 -55
  852. paddlex/ppcls/data/reader.py +0 -318
  853. paddlex/ppcls/modeling/__init__.py +0 -20
  854. paddlex/ppcls/modeling/architectures/__init__.py +0 -51
  855. paddlex/ppcls/modeling/architectures/alexnet.py +0 -132
  856. paddlex/ppcls/modeling/architectures/darknet.py +0 -161
  857. paddlex/ppcls/modeling/architectures/densenet.py +0 -308
  858. paddlex/ppcls/modeling/architectures/distillation_models.py +0 -65
  859. paddlex/ppcls/modeling/architectures/distilled_vision_transformer.py +0 -196
  860. paddlex/ppcls/modeling/architectures/dpn.py +0 -425
  861. paddlex/ppcls/modeling/architectures/efficientnet.py +0 -901
  862. paddlex/ppcls/modeling/architectures/ghostnet.py +0 -331
  863. paddlex/ppcls/modeling/architectures/googlenet.py +0 -207
  864. paddlex/ppcls/modeling/architectures/hrnet.py +0 -742
  865. paddlex/ppcls/modeling/architectures/inception_v3.py +0 -541
  866. paddlex/ppcls/modeling/architectures/inception_v4.py +0 -455
  867. paddlex/ppcls/modeling/architectures/mixnet.py +0 -782
  868. paddlex/ppcls/modeling/architectures/mobilenet_v1.py +0 -266
  869. paddlex/ppcls/modeling/architectures/mobilenet_v2.py +0 -248
  870. paddlex/ppcls/modeling/architectures/mobilenet_v3.py +0 -359
  871. paddlex/ppcls/modeling/architectures/regnet.py +0 -383
  872. paddlex/ppcls/modeling/architectures/repvgg.py +0 -339
  873. paddlex/ppcls/modeling/architectures/res2net.py +0 -272
  874. paddlex/ppcls/modeling/architectures/res2net_vd.py +0 -295
  875. paddlex/ppcls/modeling/architectures/resnest.py +0 -705
  876. paddlex/ppcls/modeling/architectures/resnet.py +0 -317
  877. paddlex/ppcls/modeling/architectures/resnet_vc.py +0 -309
  878. paddlex/ppcls/modeling/architectures/resnet_vd.py +0 -354
  879. paddlex/ppcls/modeling/architectures/resnext.py +0 -259
  880. paddlex/ppcls/modeling/architectures/resnext101_wsl.py +0 -447
  881. paddlex/ppcls/modeling/architectures/resnext_vd.py +0 -266
  882. paddlex/ppcls/modeling/architectures/rexnet.py +0 -240
  883. paddlex/ppcls/modeling/architectures/se_resnet_vd.py +0 -378
  884. paddlex/ppcls/modeling/architectures/se_resnext.py +0 -290
  885. paddlex/ppcls/modeling/architectures/se_resnext_vd.py +0 -285
  886. paddlex/ppcls/modeling/architectures/shufflenet_v2.py +0 -320
  887. paddlex/ppcls/modeling/architectures/squeezenet.py +0 -154
  888. paddlex/ppcls/modeling/architectures/vgg.py +0 -152
  889. paddlex/ppcls/modeling/architectures/vision_transformer.py +0 -402
  890. paddlex/ppcls/modeling/architectures/xception.py +0 -345
  891. paddlex/ppcls/modeling/architectures/xception_deeplab.py +0 -386
  892. paddlex/ppcls/modeling/loss.py +0 -158
  893. paddlex/ppcls/modeling/utils.py +0 -53
  894. paddlex/ppcls/optimizer/__init__.py +0 -19
  895. paddlex/ppcls/optimizer/learning_rate.py +0 -159
  896. paddlex/ppcls/optimizer/optimizer.py +0 -165
  897. paddlex/ppcls/utils/__init__.py +0 -27
  898. paddlex/ppcls/utils/check.py +0 -151
  899. paddlex/ppcls/utils/config.py +0 -201
  900. paddlex/ppcls/utils/logger.py +0 -120
  901. paddlex/ppcls/utils/metrics.py +0 -112
  902. paddlex/ppcls/utils/misc.py +0 -62
  903. paddlex/ppcls/utils/model_zoo.py +0 -213
  904. paddlex/ppcls/utils/save_load.py +0 -163
  905. paddlex/ppdet/__init__.py +0 -16
  906. paddlex/ppdet/core/__init__.py +0 -15
  907. paddlex/ppdet/core/config/__init__.py +0 -13
  908. paddlex/ppdet/core/config/schema.py +0 -248
  909. paddlex/ppdet/core/config/yaml_helpers.py +0 -118
  910. paddlex/ppdet/core/workspace.py +0 -279
  911. paddlex/ppdet/data/__init__.py +0 -21
  912. paddlex/ppdet/data/reader.py +0 -304
  913. paddlex/ppdet/data/shm_utils.py +0 -67
  914. paddlex/ppdet/data/source/__init__.py +0 -27
  915. paddlex/ppdet/data/source/category.py +0 -823
  916. paddlex/ppdet/data/source/coco.py +0 -243
  917. paddlex/ppdet/data/source/dataset.py +0 -192
  918. paddlex/ppdet/data/source/keypoint_coco.py +0 -656
  919. paddlex/ppdet/data/source/mot.py +0 -360
  920. paddlex/ppdet/data/source/voc.py +0 -204
  921. paddlex/ppdet/data/source/widerface.py +0 -180
  922. paddlex/ppdet/data/transform/__init__.py +0 -28
  923. paddlex/ppdet/data/transform/autoaugment_utils.py +0 -1593
  924. paddlex/ppdet/data/transform/batch_operators.py +0 -758
  925. paddlex/ppdet/data/transform/gridmask_utils.py +0 -83
  926. paddlex/ppdet/data/transform/keypoint_operators.py +0 -665
  927. paddlex/ppdet/data/transform/mot_operators.py +0 -636
  928. paddlex/ppdet/data/transform/op_helper.py +0 -468
  929. paddlex/ppdet/data/transform/operators.py +0 -2103
  930. paddlex/ppdet/engine/__init__.py +0 -29
  931. paddlex/ppdet/engine/callbacks.py +0 -262
  932. paddlex/ppdet/engine/env.py +0 -47
  933. paddlex/ppdet/engine/export_utils.py +0 -118
  934. paddlex/ppdet/engine/tracker.py +0 -425
  935. paddlex/ppdet/engine/trainer.py +0 -535
  936. paddlex/ppdet/metrics/__init__.py +0 -23
  937. paddlex/ppdet/metrics/coco_utils.py +0 -184
  938. paddlex/ppdet/metrics/json_results.py +0 -151
  939. paddlex/ppdet/metrics/keypoint_metrics.py +0 -202
  940. paddlex/ppdet/metrics/map_utils.py +0 -396
  941. paddlex/ppdet/metrics/metrics.py +0 -300
  942. paddlex/ppdet/metrics/mot_eval_utils.py +0 -192
  943. paddlex/ppdet/metrics/mot_metrics.py +0 -184
  944. paddlex/ppdet/metrics/widerface_utils.py +0 -393
  945. paddlex/ppdet/model_zoo/__init__.py +0 -18
  946. paddlex/ppdet/model_zoo/model_zoo.py +0 -86
  947. paddlex/ppdet/model_zoo/tests/__init__.py +0 -13
  948. paddlex/ppdet/model_zoo/tests/test_get_model.py +0 -48
  949. paddlex/ppdet/model_zoo/tests/test_list_model.py +0 -68
  950. paddlex/ppdet/modeling/__init__.py +0 -41
  951. paddlex/ppdet/modeling/architectures/__init__.py +0 -40
  952. paddlex/ppdet/modeling/architectures/cascade_rcnn.py +0 -144
  953. paddlex/ppdet/modeling/architectures/centernet.py +0 -103
  954. paddlex/ppdet/modeling/architectures/deepsort.py +0 -111
  955. paddlex/ppdet/modeling/architectures/fairmot.py +0 -107
  956. paddlex/ppdet/modeling/architectures/faster_rcnn.py +0 -106
  957. paddlex/ppdet/modeling/architectures/fcos.py +0 -105
  958. paddlex/ppdet/modeling/architectures/jde.py +0 -125
  959. paddlex/ppdet/modeling/architectures/keypoint_hrhrnet.py +0 -286
  960. paddlex/ppdet/modeling/architectures/keypoint_hrnet.py +0 -203
  961. paddlex/ppdet/modeling/architectures/mask_rcnn.py +0 -135
  962. paddlex/ppdet/modeling/architectures/meta_arch.py +0 -45
  963. paddlex/ppdet/modeling/architectures/s2anet.py +0 -103
  964. paddlex/ppdet/modeling/architectures/solov2.py +0 -110
  965. paddlex/ppdet/modeling/architectures/ssd.py +0 -84
  966. paddlex/ppdet/modeling/architectures/ttfnet.py +0 -98
  967. paddlex/ppdet/modeling/architectures/yolo.py +0 -104
  968. paddlex/ppdet/modeling/backbones/__init__.py +0 -37
  969. paddlex/ppdet/modeling/backbones/blazenet.py +0 -322
  970. paddlex/ppdet/modeling/backbones/darknet.py +0 -341
  971. paddlex/ppdet/modeling/backbones/dla.py +0 -244
  972. paddlex/ppdet/modeling/backbones/ghostnet.py +0 -476
  973. paddlex/ppdet/modeling/backbones/hrnet.py +0 -724
  974. paddlex/ppdet/modeling/backbones/mobilenet_v1.py +0 -410
  975. paddlex/ppdet/modeling/backbones/mobilenet_v3.py +0 -497
  976. paddlex/ppdet/modeling/backbones/name_adapter.py +0 -69
  977. paddlex/ppdet/modeling/backbones/res2net.py +0 -358
  978. paddlex/ppdet/modeling/backbones/resnet.py +0 -606
  979. paddlex/ppdet/modeling/backbones/senet.py +0 -140
  980. paddlex/ppdet/modeling/backbones/vgg.py +0 -216
  981. paddlex/ppdet/modeling/bbox_utils.py +0 -464
  982. paddlex/ppdet/modeling/heads/__init__.py +0 -41
  983. paddlex/ppdet/modeling/heads/bbox_head.py +0 -379
  984. paddlex/ppdet/modeling/heads/cascade_head.py +0 -285
  985. paddlex/ppdet/modeling/heads/centernet_head.py +0 -194
  986. paddlex/ppdet/modeling/heads/face_head.py +0 -113
  987. paddlex/ppdet/modeling/heads/fcos_head.py +0 -270
  988. paddlex/ppdet/modeling/heads/keypoint_hrhrnet_head.py +0 -108
  989. paddlex/ppdet/modeling/heads/mask_head.py +0 -253
  990. paddlex/ppdet/modeling/heads/roi_extractor.py +0 -111
  991. paddlex/ppdet/modeling/heads/s2anet_head.py +0 -845
  992. paddlex/ppdet/modeling/heads/solov2_head.py +0 -537
  993. paddlex/ppdet/modeling/heads/ssd_head.py +0 -175
  994. paddlex/ppdet/modeling/heads/ttf_head.py +0 -314
  995. paddlex/ppdet/modeling/heads/yolo_head.py +0 -124
  996. paddlex/ppdet/modeling/keypoint_utils.py +0 -302
  997. paddlex/ppdet/modeling/layers.py +0 -1142
  998. paddlex/ppdet/modeling/losses/__init__.py +0 -35
  999. paddlex/ppdet/modeling/losses/ctfocal_loss.py +0 -67
  1000. paddlex/ppdet/modeling/losses/fairmot_loss.py +0 -41
  1001. paddlex/ppdet/modeling/losses/fcos_loss.py +0 -225
  1002. paddlex/ppdet/modeling/losses/iou_aware_loss.py +0 -48
  1003. paddlex/ppdet/modeling/losses/iou_loss.py +0 -210
  1004. paddlex/ppdet/modeling/losses/jde_loss.py +0 -182
  1005. paddlex/ppdet/modeling/losses/keypoint_loss.py +0 -228
  1006. paddlex/ppdet/modeling/losses/solov2_loss.py +0 -101
  1007. paddlex/ppdet/modeling/losses/ssd_loss.py +0 -163
  1008. paddlex/ppdet/modeling/losses/yolo_loss.py +0 -212
  1009. paddlex/ppdet/modeling/mot/__init__.py +0 -25
  1010. paddlex/ppdet/modeling/mot/matching/__init__.py +0 -19
  1011. paddlex/ppdet/modeling/mot/matching/deepsort_matching.py +0 -382
  1012. paddlex/ppdet/modeling/mot/matching/jde_matching.py +0 -145
  1013. paddlex/ppdet/modeling/mot/motion/__init__.py +0 -17
  1014. paddlex/ppdet/modeling/mot/motion/kalman_filter.py +0 -270
  1015. paddlex/ppdet/modeling/mot/tracker/__init__.py +0 -23
  1016. paddlex/ppdet/modeling/mot/tracker/base_jde_tracker.py +0 -267
  1017. paddlex/ppdet/modeling/mot/tracker/base_sde_tracker.py +0 -145
  1018. paddlex/ppdet/modeling/mot/tracker/deepsort_tracker.py +0 -165
  1019. paddlex/ppdet/modeling/mot/tracker/jde_tracker.py +0 -262
  1020. paddlex/ppdet/modeling/mot/utils.py +0 -181
  1021. paddlex/ppdet/modeling/mot/visualization.py +0 -130
  1022. paddlex/ppdet/modeling/necks/__init__.py +0 -25
  1023. paddlex/ppdet/modeling/necks/centernet_fpn.py +0 -185
  1024. paddlex/ppdet/modeling/necks/fpn.py +0 -233
  1025. paddlex/ppdet/modeling/necks/hrfpn.py +0 -131
  1026. paddlex/ppdet/modeling/necks/ttf_fpn.py +0 -243
  1027. paddlex/ppdet/modeling/necks/yolo_fpn.py +0 -1034
  1028. paddlex/ppdet/modeling/ops.py +0 -1599
  1029. paddlex/ppdet/modeling/post_process.py +0 -449
  1030. paddlex/ppdet/modeling/proposal_generator/__init__.py +0 -2
  1031. paddlex/ppdet/modeling/proposal_generator/anchor_generator.py +0 -135
  1032. paddlex/ppdet/modeling/proposal_generator/proposal_generator.py +0 -81
  1033. paddlex/ppdet/modeling/proposal_generator/rpn_head.py +0 -269
  1034. paddlex/ppdet/modeling/proposal_generator/target.py +0 -671
  1035. paddlex/ppdet/modeling/proposal_generator/target_layer.py +0 -476
  1036. paddlex/ppdet/modeling/reid/__init__.py +0 -23
  1037. paddlex/ppdet/modeling/reid/fairmot_embedding_head.py +0 -117
  1038. paddlex/ppdet/modeling/reid/jde_embedding_head.py +0 -189
  1039. paddlex/ppdet/modeling/reid/pyramidal_embedding.py +0 -151
  1040. paddlex/ppdet/modeling/reid/resnet.py +0 -320
  1041. paddlex/ppdet/modeling/shape_spec.py +0 -33
  1042. paddlex/ppdet/modeling/tests/__init__.py +0 -13
  1043. paddlex/ppdet/modeling/tests/test_architectures.py +0 -59
  1044. paddlex/ppdet/modeling/tests/test_base.py +0 -75
  1045. paddlex/ppdet/modeling/tests/test_ops.py +0 -839
  1046. paddlex/ppdet/modeling/tests/test_yolov3_loss.py +0 -420
  1047. paddlex/ppdet/optimizer.py +0 -285
  1048. paddlex/ppdet/slim/__init__.py +0 -62
  1049. paddlex/ppdet/slim/distill.py +0 -111
  1050. paddlex/ppdet/slim/prune.py +0 -85
  1051. paddlex/ppdet/slim/quant.py +0 -52
  1052. paddlex/ppdet/utils/__init__.py +0 -13
  1053. paddlex/ppdet/utils/check.py +0 -93
  1054. paddlex/ppdet/utils/checkpoint.py +0 -216
  1055. paddlex/ppdet/utils/cli.py +0 -151
  1056. paddlex/ppdet/utils/colormap.py +0 -56
  1057. paddlex/ppdet/utils/download.py +0 -477
  1058. paddlex/ppdet/utils/logger.py +0 -71
  1059. paddlex/ppdet/utils/stats.py +0 -95
  1060. paddlex/ppdet/utils/visualizer.py +0 -292
  1061. paddlex/ppdet/utils/voc_utils.py +0 -87
  1062. paddlex/seg.py +0 -38
  1063. paddlex/tools/__init__.py +0 -16
  1064. paddlex/tools/convert.py +0 -52
  1065. paddlex/tools/dataset_conversion/__init__.py +0 -24
  1066. paddlex/tools/dataset_conversion/x2coco.py +0 -379
  1067. paddlex/tools/dataset_conversion/x2imagenet.py +0 -82
  1068. paddlex/tools/dataset_conversion/x2seg.py +0 -343
  1069. paddlex/tools/dataset_conversion/x2voc.py +0 -230
  1070. paddlex/tools/dataset_split/__init__.py +0 -23
  1071. paddlex/tools/dataset_split/coco_split.py +0 -69
  1072. paddlex/tools/dataset_split/imagenet_split.py +0 -75
  1073. paddlex/tools/dataset_split/seg_split.py +0 -96
  1074. paddlex/tools/dataset_split/utils.py +0 -75
  1075. paddlex/tools/dataset_split/voc_split.py +0 -91
  1076. paddlex/tools/split.py +0 -41
  1077. paddlex/utils/checkpoint.py +0 -439
  1078. paddlex/utils/env.py +0 -71
  1079. paddlex/utils/shm.py +0 -67
  1080. paddlex/utils/stats.py +0 -68
  1081. paddlex/utils/utils.py +0 -140
  1082. paddlex-2.0.0rc4.dist-info/LICENSE +0 -201
  1083. paddlex-2.0.0rc4.dist-info/METADATA +0 -29
  1084. paddlex-2.0.0rc4.dist-info/RECORD +0 -445
  1085. paddlex-2.0.0rc4.dist-info/WHEEL +0 -5
  1086. paddlex-2.0.0rc4.dist-info/entry_points.txt +0 -3
  1087. paddlex-2.0.0rc4.dist-info/top_level.txt +0 -2
@@ -1,1142 +0,0 @@
1
- # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import math
16
- import six
17
- import numpy as np
18
- from numbers import Integral
19
-
20
- import paddle
21
- import paddle.nn as nn
22
- from paddle import ParamAttr
23
- from paddle import to_tensor
24
- from paddle.nn import Conv2D, BatchNorm2D, GroupNorm
25
- import paddle.nn.functional as F
26
- from paddle.nn.initializer import Normal, Constant, XavierUniform
27
- from paddle.regularizer import L2Decay
28
-
29
- from paddlex.ppdet.core.workspace import register, serializable
30
- from paddlex.ppdet.modeling.bbox_utils import delta2bbox
31
- from . import ops
32
-
33
- from paddle.vision.ops import DeformConv2D
34
-
35
-
36
- def _to_list(l):
37
- if isinstance(l, (list, tuple)):
38
- return list(l)
39
- return [l]
40
-
41
-
42
- class DeformableConvV2(nn.Layer):
43
- def __init__(self,
44
- in_channels,
45
- out_channels,
46
- kernel_size,
47
- stride=1,
48
- padding=0,
49
- dilation=1,
50
- groups=1,
51
- weight_attr=None,
52
- bias_attr=None,
53
- lr_scale=1,
54
- regularizer=None,
55
- skip_quant=False,
56
- dcn_bias_regularizer=L2Decay(0.),
57
- dcn_bias_lr_scale=2.):
58
- super(DeformableConvV2, self).__init__()
59
- self.offset_channel = 2 * kernel_size**2
60
- self.mask_channel = kernel_size**2
61
-
62
- if lr_scale == 1 and regularizer is None:
63
- offset_bias_attr = ParamAttr(initializer=Constant(0.))
64
- else:
65
- offset_bias_attr = ParamAttr(
66
- initializer=Constant(0.),
67
- learning_rate=lr_scale,
68
- regularizer=regularizer)
69
- self.conv_offset = nn.Conv2D(
70
- in_channels,
71
- 3 * kernel_size**2,
72
- kernel_size,
73
- stride=stride,
74
- padding=(kernel_size - 1) // 2,
75
- weight_attr=ParamAttr(initializer=Constant(0.0)),
76
- bias_attr=offset_bias_attr)
77
- if skip_quant:
78
- self.conv_offset.skip_quant = True
79
-
80
- if bias_attr:
81
- # in FCOS-DCN head, specifically need learning_rate and regularizer
82
- dcn_bias_attr = ParamAttr(
83
- initializer=Constant(value=0),
84
- regularizer=dcn_bias_regularizer,
85
- learning_rate=dcn_bias_lr_scale)
86
- else:
87
- # in ResNet backbone, do not need bias
88
- dcn_bias_attr = False
89
- self.conv_dcn = DeformConv2D(
90
- in_channels,
91
- out_channels,
92
- kernel_size,
93
- stride=stride,
94
- padding=(kernel_size - 1) // 2 * dilation,
95
- dilation=dilation,
96
- groups=groups,
97
- weight_attr=weight_attr,
98
- bias_attr=dcn_bias_attr)
99
-
100
- def forward(self, x):
101
- offset_mask = self.conv_offset(x)
102
- offset, mask = paddle.split(
103
- offset_mask,
104
- num_or_sections=[self.offset_channel, self.mask_channel],
105
- axis=1)
106
- mask = F.sigmoid(mask)
107
- y = self.conv_dcn(x, offset, mask=mask)
108
- return y
109
-
110
-
111
- class ConvNormLayer(nn.Layer):
112
- def __init__(self,
113
- ch_in,
114
- ch_out,
115
- filter_size,
116
- stride,
117
- groups=1,
118
- norm_type='bn',
119
- norm_decay=0.,
120
- norm_groups=32,
121
- use_dcn=False,
122
- bias_on=False,
123
- lr_scale=1.,
124
- freeze_norm=False,
125
- initializer=Normal(
126
- mean=0., std=0.01),
127
- skip_quant=False,
128
- dcn_lr_scale=2.,
129
- dcn_regularizer=L2Decay(0.)):
130
- super(ConvNormLayer, self).__init__()
131
- assert norm_type in ['bn', 'sync_bn', 'gn']
132
-
133
- if bias_on:
134
- bias_attr = ParamAttr(
135
- initializer=Constant(value=0.), learning_rate=lr_scale)
136
- else:
137
- bias_attr = False
138
-
139
- if not use_dcn:
140
- self.conv = nn.Conv2D(
141
- in_channels=ch_in,
142
- out_channels=ch_out,
143
- kernel_size=filter_size,
144
- stride=stride,
145
- padding=(filter_size - 1) // 2,
146
- groups=groups,
147
- weight_attr=ParamAttr(
148
- initializer=initializer, learning_rate=1.),
149
- bias_attr=bias_attr)
150
- if skip_quant:
151
- self.conv.skip_quant = True
152
- else:
153
- # in FCOS-DCN head, specifically need learning_rate and regularizer
154
- self.conv = DeformableConvV2(
155
- in_channels=ch_in,
156
- out_channels=ch_out,
157
- kernel_size=filter_size,
158
- stride=stride,
159
- padding=(filter_size - 1) // 2,
160
- groups=groups,
161
- weight_attr=ParamAttr(
162
- initializer=initializer, learning_rate=1.),
163
- bias_attr=True,
164
- lr_scale=dcn_lr_scale,
165
- regularizer=dcn_regularizer,
166
- skip_quant=skip_quant)
167
-
168
- norm_lr = 0. if freeze_norm else 1.
169
- param_attr = ParamAttr(
170
- learning_rate=norm_lr,
171
- regularizer=L2Decay(norm_decay)
172
- if norm_decay is not None else None)
173
- bias_attr = ParamAttr(
174
- learning_rate=norm_lr,
175
- regularizer=L2Decay(norm_decay)
176
- if norm_decay is not None else None)
177
- if norm_type == 'bn':
178
- self.norm = nn.BatchNorm2D(
179
- ch_out, weight_attr=param_attr, bias_attr=bias_attr)
180
- elif norm_type == 'sync_bn':
181
- self.norm = nn.SyncBatchNorm(
182
- ch_out, weight_attr=param_attr, bias_attr=bias_attr)
183
- elif norm_type == 'gn':
184
- self.norm = nn.GroupNorm(
185
- num_groups=norm_groups,
186
- num_channels=ch_out,
187
- weight_attr=param_attr,
188
- bias_attr=bias_attr)
189
-
190
- def forward(self, inputs):
191
- out = self.conv(inputs)
192
- out = self.norm(out)
193
- return out
194
-
195
-
196
- class LiteConv(nn.Layer):
197
- def __init__(self,
198
- in_channels,
199
- out_channels,
200
- stride=1,
201
- with_act=True,
202
- norm_type='sync_bn',
203
- name=None):
204
- super(LiteConv, self).__init__()
205
- self.lite_conv = nn.Sequential()
206
- conv1 = ConvNormLayer(
207
- in_channels,
208
- in_channels,
209
- filter_size=5,
210
- stride=stride,
211
- groups=in_channels,
212
- norm_type=norm_type,
213
- initializer=XavierUniform())
214
- conv2 = ConvNormLayer(
215
- in_channels,
216
- out_channels,
217
- filter_size=1,
218
- stride=stride,
219
- norm_type=norm_type,
220
- initializer=XavierUniform())
221
- conv3 = ConvNormLayer(
222
- out_channels,
223
- out_channels,
224
- filter_size=1,
225
- stride=stride,
226
- norm_type=norm_type,
227
- initializer=XavierUniform())
228
- conv4 = ConvNormLayer(
229
- out_channels,
230
- out_channels,
231
- filter_size=5,
232
- stride=stride,
233
- groups=out_channels,
234
- norm_type=norm_type,
235
- initializer=XavierUniform())
236
- conv_list = [conv1, conv2, conv3, conv4]
237
- self.lite_conv.add_sublayer('conv1', conv1)
238
- self.lite_conv.add_sublayer('relu6_1', nn.ReLU6())
239
- self.lite_conv.add_sublayer('conv2', conv2)
240
- if with_act:
241
- self.lite_conv.add_sublayer('relu6_2', nn.ReLU6())
242
- self.lite_conv.add_sublayer('conv3', conv3)
243
- self.lite_conv.add_sublayer('relu6_3', nn.ReLU6())
244
- self.lite_conv.add_sublayer('conv4', conv4)
245
- if with_act:
246
- self.lite_conv.add_sublayer('relu6_4', nn.ReLU6())
247
-
248
- def forward(self, inputs):
249
- out = self.lite_conv(inputs)
250
- return out
251
-
252
-
253
- @register
254
- @serializable
255
- class AnchorGeneratorSSD(object):
256
- def __init__(
257
- self,
258
- steps=[8, 16, 32, 64, 100, 300],
259
- aspect_ratios=[[2.], [2., 3.], [2., 3.], [2., 3.], [2.], [2.]],
260
- min_ratio=15,
261
- max_ratio=90,
262
- base_size=300,
263
- min_sizes=[30.0, 60.0, 111.0, 162.0, 213.0, 264.0],
264
- max_sizes=[60.0, 111.0, 162.0, 213.0, 264.0, 315.0],
265
- offset=0.5,
266
- flip=True,
267
- clip=False,
268
- min_max_aspect_ratios_order=False):
269
- self.steps = steps
270
- self.aspect_ratios = aspect_ratios
271
- self.min_ratio = min_ratio
272
- self.max_ratio = max_ratio
273
- self.base_size = base_size
274
- self.min_sizes = min_sizes
275
- self.max_sizes = max_sizes
276
- self.offset = offset
277
- self.flip = flip
278
- self.clip = clip
279
- self.min_max_aspect_ratios_order = min_max_aspect_ratios_order
280
-
281
- if self.min_sizes == [] and self.max_sizes == []:
282
- num_layer = len(aspect_ratios)
283
- step = int(
284
- math.floor(((self.max_ratio - self.min_ratio)) / (num_layer - 2
285
- )))
286
- for ratio in six.moves.range(self.min_ratio, self.max_ratio + 1,
287
- step):
288
- self.min_sizes.append(self.base_size * ratio / 100.)
289
- self.max_sizes.append(self.base_size * (ratio + step) / 100.)
290
- self.min_sizes = [self.base_size * .10] + self.min_sizes
291
- self.max_sizes = [self.base_size * .20] + self.max_sizes
292
-
293
- self.num_priors = []
294
- for aspect_ratio, min_size, max_size in zip(
295
- aspect_ratios, self.min_sizes, self.max_sizes):
296
- if isinstance(min_size, (list, tuple)):
297
- self.num_priors.append(
298
- len(_to_list(min_size)) + len(_to_list(max_size)))
299
- else:
300
- self.num_priors.append((len(aspect_ratio) * 2 + 1) * len(
301
- _to_list(min_size)) + len(_to_list(max_size)))
302
-
303
- def __call__(self, inputs, image):
304
- boxes = []
305
- for input, min_size, max_size, aspect_ratio, step in zip(
306
- inputs, self.min_sizes, self.max_sizes, self.aspect_ratios,
307
- self.steps):
308
- box, _ = ops.prior_box(
309
- input=input,
310
- image=image,
311
- min_sizes=_to_list(min_size),
312
- max_sizes=_to_list(max_size),
313
- aspect_ratios=aspect_ratio,
314
- flip=self.flip,
315
- clip=self.clip,
316
- steps=[step, step],
317
- offset=self.offset,
318
- min_max_aspect_ratios_order=self.min_max_aspect_ratios_order)
319
- boxes.append(paddle.reshape(box, [-1, 4]))
320
- return boxes
321
-
322
-
323
- @register
324
- @serializable
325
- class RCNNBox(object):
326
- __shared__ = ['num_classes']
327
-
328
- def __init__(self,
329
- prior_box_var=[10., 10., 5., 5.],
330
- code_type="decode_center_size",
331
- box_normalized=False,
332
- num_classes=80):
333
- super(RCNNBox, self).__init__()
334
- self.prior_box_var = prior_box_var
335
- self.code_type = code_type
336
- self.box_normalized = box_normalized
337
- self.num_classes = num_classes
338
-
339
- def __call__(self, bbox_head_out, rois, im_shape, scale_factor):
340
- bbox_pred = bbox_head_out[0]
341
- cls_prob = bbox_head_out[1]
342
- roi = rois[0]
343
- rois_num = rois[1]
344
-
345
- origin_shape = paddle.floor(im_shape / scale_factor + 0.5)
346
- scale_list = []
347
- origin_shape_list = []
348
- for idx, roi_per_im in enumerate(roi):
349
- rois_num_per_im = rois_num[idx]
350
- expand_im_shape = paddle.expand(im_shape[idx, :],
351
- [rois_num_per_im, 2])
352
- origin_shape_list.append(expand_im_shape)
353
-
354
- origin_shape = paddle.concat(origin_shape_list)
355
-
356
- # bbox_pred.shape: [N, C*4]
357
- # C=num_classes in faster/mask rcnn(bbox_head), C=1 in cascade rcnn(cascade_head)
358
- bbox = paddle.concat(roi)
359
- if bbox.shape[0] == 0:
360
- bbox = paddle.zeros([0, bbox_pred.shape[1]], dtype='float32')
361
- else:
362
- bbox = delta2bbox(bbox_pred, bbox, self.prior_box_var)
363
- scores = cls_prob[:, :-1]
364
-
365
- # bbox.shape: [N, C, 4]
366
- # bbox.shape[1] must be equal to scores.shape[1]
367
- bbox_num_class = bbox.shape[1]
368
- if bbox_num_class == 1:
369
- bbox = paddle.tile(bbox, [1, self.num_classes, 1])
370
-
371
- origin_h = paddle.unsqueeze(origin_shape[:, 0], axis=1)
372
- origin_w = paddle.unsqueeze(origin_shape[:, 1], axis=1)
373
- zeros = paddle.zeros_like(origin_h)
374
- x1 = paddle.maximum(paddle.minimum(bbox[:, :, 0], origin_w), zeros)
375
- y1 = paddle.maximum(paddle.minimum(bbox[:, :, 1], origin_h), zeros)
376
- x2 = paddle.maximum(paddle.minimum(bbox[:, :, 2], origin_w), zeros)
377
- y2 = paddle.maximum(paddle.minimum(bbox[:, :, 3], origin_h), zeros)
378
- bbox = paddle.stack([x1, y1, x2, y2], axis=-1)
379
- bboxes = (bbox, rois_num)
380
- return bboxes, scores
381
-
382
-
383
- @register
384
- @serializable
385
- class MultiClassNMS(object):
386
- def __init__(self,
387
- score_threshold=.05,
388
- nms_top_k=-1,
389
- keep_top_k=100,
390
- nms_threshold=.5,
391
- normalized=True,
392
- nms_eta=1.0,
393
- return_index=False,
394
- return_rois_num=True):
395
- super(MultiClassNMS, self).__init__()
396
- self.score_threshold = score_threshold
397
- self.nms_top_k = nms_top_k
398
- self.keep_top_k = keep_top_k
399
- self.nms_threshold = nms_threshold
400
- self.normalized = normalized
401
- self.nms_eta = nms_eta
402
- self.return_index = return_index
403
- self.return_rois_num = return_rois_num
404
-
405
- def __call__(self, bboxes, score, background_label=-1):
406
- """
407
- bboxes (Tensor|List[Tensor]): 1. (Tensor) Predicted bboxes with shape
408
- [N, M, 4], N is the batch size and M
409
- is the number of bboxes
410
- 2. (List[Tensor]) bboxes and bbox_num,
411
- bboxes have shape of [M, C, 4], C
412
- is the class number and bbox_num means
413
- the number of bboxes of each batch with
414
- shape [N,]
415
- score (Tensor): Predicted scores with shape [N, C, M] or [M, C]
416
- background_label (int): Ignore the background label; For example, RCNN
417
- is num_classes and YOLO is -1.
418
- """
419
- kwargs = self.__dict__.copy()
420
- if isinstance(bboxes, tuple):
421
- bboxes, bbox_num = bboxes
422
- kwargs.update({'rois_num': bbox_num})
423
- if background_label > -1:
424
- kwargs.update({'background_label': background_label})
425
- return ops.multiclass_nms(bboxes, score, **kwargs)
426
-
427
-
428
- @register
429
- @serializable
430
- class MatrixNMS(object):
431
- __append_doc__ = True
432
-
433
- def __init__(self,
434
- score_threshold=.05,
435
- post_threshold=.05,
436
- nms_top_k=-1,
437
- keep_top_k=100,
438
- use_gaussian=False,
439
- gaussian_sigma=2.,
440
- normalized=False,
441
- background_label=0):
442
- super(MatrixNMS, self).__init__()
443
- self.score_threshold = score_threshold
444
- self.post_threshold = post_threshold
445
- self.nms_top_k = nms_top_k
446
- self.keep_top_k = keep_top_k
447
- self.normalized = normalized
448
- self.use_gaussian = use_gaussian
449
- self.gaussian_sigma = gaussian_sigma
450
- self.background_label = background_label
451
-
452
- def __call__(self, bbox, score, *args):
453
- return ops.matrix_nms(
454
- bboxes=bbox,
455
- scores=score,
456
- score_threshold=self.score_threshold,
457
- post_threshold=self.post_threshold,
458
- nms_top_k=self.nms_top_k,
459
- keep_top_k=self.keep_top_k,
460
- use_gaussian=self.use_gaussian,
461
- gaussian_sigma=self.gaussian_sigma,
462
- background_label=self.background_label,
463
- normalized=self.normalized)
464
-
465
-
466
- @register
467
- @serializable
468
- class YOLOBox(object):
469
- __shared__ = ['num_classes']
470
-
471
- def __init__(self,
472
- num_classes=80,
473
- conf_thresh=0.005,
474
- downsample_ratio=32,
475
- clip_bbox=True,
476
- scale_x_y=1.):
477
- self.num_classes = num_classes
478
- self.conf_thresh = conf_thresh
479
- self.downsample_ratio = downsample_ratio
480
- self.clip_bbox = clip_bbox
481
- self.scale_x_y = scale_x_y
482
-
483
- def __call__(self,
484
- yolo_head_out,
485
- anchors,
486
- im_shape,
487
- scale_factor,
488
- var_weight=None):
489
- boxes_list = []
490
- scores_list = []
491
- origin_shape = im_shape / scale_factor
492
- origin_shape = paddle.cast(origin_shape, 'int32')
493
- for i, head_out in enumerate(yolo_head_out):
494
- boxes, scores = ops.yolo_box(head_out, origin_shape, anchors[i],
495
- self.num_classes, self.conf_thresh,
496
- self.downsample_ratio // 2**i,
497
- self.clip_bbox, self.scale_x_y)
498
- boxes_list.append(boxes)
499
- scores_list.append(paddle.transpose(scores, perm=[0, 2, 1]))
500
- yolo_boxes = paddle.concat(boxes_list, axis=1)
501
- yolo_scores = paddle.concat(scores_list, axis=2)
502
- return yolo_boxes, yolo_scores
503
-
504
-
505
- @register
506
- @serializable
507
- class SSDBox(object):
508
- def __init__(self, is_normalized=True):
509
- self.is_normalized = is_normalized
510
- self.norm_delta = float(not self.is_normalized)
511
-
512
- def __call__(self,
513
- preds,
514
- prior_boxes,
515
- im_shape,
516
- scale_factor,
517
- var_weight=None):
518
- boxes, scores = preds
519
- outputs = []
520
- for box, score, prior_box in zip(boxes, scores, prior_boxes):
521
- pb_w = prior_box[:, 2] - prior_box[:, 0] + self.norm_delta
522
- pb_h = prior_box[:, 3] - prior_box[:, 1] + self.norm_delta
523
- pb_x = prior_box[:, 0] + pb_w * 0.5
524
- pb_y = prior_box[:, 1] + pb_h * 0.5
525
- out_x = pb_x + box[:, :, 0] * pb_w * 0.1
526
- out_y = pb_y + box[:, :, 1] * pb_h * 0.1
527
- out_w = paddle.exp(box[:, :, 2] * 0.2) * pb_w
528
- out_h = paddle.exp(box[:, :, 3] * 0.2) * pb_h
529
-
530
- if self.is_normalized:
531
- h = paddle.unsqueeze(
532
- im_shape[:, 0] / scale_factor[:, 0], axis=-1)
533
- w = paddle.unsqueeze(
534
- im_shape[:, 1] / scale_factor[:, 1], axis=-1)
535
- output = paddle.stack(
536
- [(out_x - out_w / 2.) * w, (out_y - out_h / 2.) * h,
537
- (out_x + out_w / 2.) * w, (out_y + out_h / 2.) * h],
538
- axis=-1)
539
- else:
540
- output = paddle.stack(
541
- [
542
- out_x - out_w / 2., out_y - out_h / 2.,
543
- out_x + out_w / 2. - 1., out_y + out_h / 2. - 1.
544
- ],
545
- axis=-1)
546
- outputs.append(output)
547
- boxes = paddle.concat(outputs, axis=1)
548
-
549
- scores = F.softmax(paddle.concat(scores, axis=1))
550
- scores = paddle.transpose(scores, [0, 2, 1])
551
-
552
- return boxes, scores
553
-
554
-
555
- @register
556
- @serializable
557
- class AnchorGrid(object):
558
- """Generate anchor grid
559
-
560
- Args:
561
- image_size (int or list): input image size, may be a single integer or
562
- list of [h, w]. Default: 512
563
- min_level (int): min level of the feature pyramid. Default: 3
564
- max_level (int): max level of the feature pyramid. Default: 7
565
- anchor_base_scale: base anchor scale. Default: 4
566
- num_scales: number of anchor scales. Default: 3
567
- aspect_ratios: aspect ratios. default: [[1, 1], [1.4, 0.7], [0.7, 1.4]]
568
- """
569
-
570
- def __init__(self,
571
- image_size=512,
572
- min_level=3,
573
- max_level=7,
574
- anchor_base_scale=4,
575
- num_scales=3,
576
- aspect_ratios=[[1, 1], [1.4, 0.7], [0.7, 1.4]]):
577
- super(AnchorGrid, self).__init__()
578
- if isinstance(image_size, Integral):
579
- self.image_size = [image_size, image_size]
580
- else:
581
- self.image_size = image_size
582
- for dim in self.image_size:
583
- assert dim % 2 ** max_level == 0, \
584
- "image size should be multiple of the max level stride"
585
- self.min_level = min_level
586
- self.max_level = max_level
587
- self.anchor_base_scale = anchor_base_scale
588
- self.num_scales = num_scales
589
- self.aspect_ratios = aspect_ratios
590
-
591
- @property
592
- def base_cell(self):
593
- if not hasattr(self, '_base_cell'):
594
- self._base_cell = self.make_cell()
595
- return self._base_cell
596
-
597
- def make_cell(self):
598
- scales = [2**(i / self.num_scales) for i in range(self.num_scales)]
599
- scales = np.array(scales)
600
- ratios = np.array(self.aspect_ratios)
601
- ws = np.outer(scales, ratios[:, 0]).reshape(-1, 1)
602
- hs = np.outer(scales, ratios[:, 1]).reshape(-1, 1)
603
- anchors = np.hstack((-0.5 * ws, -0.5 * hs, 0.5 * ws, 0.5 * hs))
604
- return anchors
605
-
606
- def make_grid(self, stride):
607
- cell = self.base_cell * stride * self.anchor_base_scale
608
- x_steps = np.arange(stride // 2, self.image_size[1], stride)
609
- y_steps = np.arange(stride // 2, self.image_size[0], stride)
610
- offset_x, offset_y = np.meshgrid(x_steps, y_steps)
611
- offset_x = offset_x.flatten()
612
- offset_y = offset_y.flatten()
613
- offsets = np.stack((offset_x, offset_y, offset_x, offset_y), axis=-1)
614
- offsets = offsets[:, np.newaxis, :]
615
- return (cell + offsets).reshape(-1, 4)
616
-
617
- def generate(self):
618
- return [
619
- self.make_grid(2**l)
620
- for l in range(self.min_level, self.max_level + 1)
621
- ]
622
-
623
- def __call__(self):
624
- if not hasattr(self, '_anchor_vars'):
625
- anchor_vars = []
626
- helper = LayerHelper('anchor_grid')
627
- for idx, l in enumerate(range(self.min_level, self.max_level + 1)):
628
- stride = 2**l
629
- anchors = self.make_grid(stride)
630
- var = helper.create_parameter(
631
- attr=ParamAttr(name='anchors_{}'.format(idx)),
632
- shape=anchors.shape,
633
- dtype='float32',
634
- stop_gradient=True,
635
- default_initializer=NumpyArrayInitializer(anchors))
636
- anchor_vars.append(var)
637
- var.persistable = True
638
- self._anchor_vars = anchor_vars
639
-
640
- return self._anchor_vars
641
-
642
-
643
- @register
644
- @serializable
645
- class FCOSBox(object):
646
- __shared__ = ['num_classes']
647
-
648
- def __init__(self, num_classes=80):
649
- super(FCOSBox, self).__init__()
650
- self.num_classes = num_classes
651
-
652
- def _merge_hw(self, inputs, ch_type="channel_first"):
653
- """
654
- Merge h and w of the feature map into one dimension.
655
- Args:
656
- inputs (Tensor): Tensor of the input feature map
657
- ch_type (str): "channel_first" or "channel_last" style
658
- Return:
659
- new_shape (Tensor): The new shape after h and w merged
660
- """
661
- shape_ = paddle.shape(inputs)
662
- bs, ch, hi, wi = shape_[0], shape_[1], shape_[2], shape_[3]
663
- img_size = hi * wi
664
- img_size.stop_gradient = True
665
- if ch_type == "channel_first":
666
- new_shape = paddle.concat([bs, ch, img_size])
667
- elif ch_type == "channel_last":
668
- new_shape = paddle.concat([bs, img_size, ch])
669
- else:
670
- raise KeyError("Wrong ch_type %s" % ch_type)
671
- new_shape.stop_gradient = True
672
- return new_shape
673
-
674
- def _postprocessing_by_level(self, locations, box_cls, box_reg, box_ctn,
675
- scale_factor):
676
- """
677
- Postprocess each layer of the output with corresponding locations.
678
- Args:
679
- locations (Tensor): anchor points for current layer, [H*W, 2]
680
- box_cls (Tensor): categories prediction, [N, C, H, W],
681
- C is the number of classes
682
- box_reg (Tensor): bounding box prediction, [N, 4, H, W]
683
- box_ctn (Tensor): centerness prediction, [N, 1, H, W]
684
- scale_factor (Tensor): [h_scale, w_scale] for input images
685
- Return:
686
- box_cls_ch_last (Tensor): score for each category, in [N, C, M]
687
- C is the number of classes and M is the number of anchor points
688
- box_reg_decoding (Tensor): decoded bounding box, in [N, M, 4]
689
- last dimension is [x1, y1, x2, y2]
690
- """
691
- act_shape_cls = self._merge_hw(box_cls)
692
- box_cls_ch_last = paddle.reshape(x=box_cls, shape=act_shape_cls)
693
- box_cls_ch_last = F.sigmoid(box_cls_ch_last)
694
-
695
- act_shape_reg = self._merge_hw(box_reg)
696
- box_reg_ch_last = paddle.reshape(x=box_reg, shape=act_shape_reg)
697
- box_reg_ch_last = paddle.transpose(box_reg_ch_last, perm=[0, 2, 1])
698
- box_reg_decoding = paddle.stack(
699
- [
700
- locations[:, 0] - box_reg_ch_last[:, :, 0],
701
- locations[:, 1] - box_reg_ch_last[:, :, 1],
702
- locations[:, 0] + box_reg_ch_last[:, :, 2],
703
- locations[:, 1] + box_reg_ch_last[:, :, 3]
704
- ],
705
- axis=1)
706
- box_reg_decoding = paddle.transpose(box_reg_decoding, perm=[0, 2, 1])
707
-
708
- act_shape_ctn = self._merge_hw(box_ctn)
709
- box_ctn_ch_last = paddle.reshape(x=box_ctn, shape=act_shape_ctn)
710
- box_ctn_ch_last = F.sigmoid(box_ctn_ch_last)
711
-
712
- # recover the location to original image
713
- im_scale = paddle.concat([scale_factor, scale_factor], axis=1)
714
- box_reg_decoding = box_reg_decoding / im_scale
715
- box_cls_ch_last = box_cls_ch_last * box_ctn_ch_last
716
- return box_cls_ch_last, box_reg_decoding
717
-
718
- def __call__(self, locations, cls_logits, bboxes_reg, centerness,
719
- scale_factor):
720
- pred_boxes_ = []
721
- pred_scores_ = []
722
- for pts, cls, box, ctn in zip(locations, cls_logits, bboxes_reg,
723
- centerness):
724
- pred_scores_lvl, pred_boxes_lvl = self._postprocessing_by_level(
725
- pts, cls, box, ctn, scale_factor)
726
- pred_boxes_.append(pred_boxes_lvl)
727
- pred_scores_.append(pred_scores_lvl)
728
- pred_boxes = paddle.concat(pred_boxes_, axis=1)
729
- pred_scores = paddle.concat(pred_scores_, axis=2)
730
- return pred_boxes, pred_scores
731
-
732
-
733
- @register
734
- class TTFBox(object):
735
- __shared__ = ['down_ratio']
736
-
737
- def __init__(self, max_per_img=100, score_thresh=0.01, down_ratio=4):
738
- super(TTFBox, self).__init__()
739
- self.max_per_img = max_per_img
740
- self.score_thresh = score_thresh
741
- self.down_ratio = down_ratio
742
-
743
- def _simple_nms(self, heat, kernel=3):
744
- """
745
- Use maxpool to filter the max score, get local peaks.
746
- """
747
- pad = (kernel - 1) // 2
748
- hmax = F.max_pool2d(heat, kernel, stride=1, padding=pad)
749
- keep = paddle.cast(hmax == heat, 'float32')
750
- return heat * keep
751
-
752
- def _topk(self, scores):
753
- """
754
- Select top k scores and decode to get xy coordinates.
755
- """
756
- k = self.max_per_img
757
- shape_fm = paddle.shape(scores)
758
- shape_fm.stop_gradient = True
759
- cat, height, width = shape_fm[1], shape_fm[2], shape_fm[3]
760
- # batch size is 1
761
- scores_r = paddle.reshape(scores, [cat, -1])
762
- topk_scores, topk_inds = paddle.topk(scores_r, k)
763
- topk_scores, topk_inds = paddle.topk(scores_r, k)
764
- topk_ys = topk_inds // width
765
- topk_xs = topk_inds % width
766
-
767
- topk_score_r = paddle.reshape(topk_scores, [-1])
768
- topk_score, topk_ind = paddle.topk(topk_score_r, k)
769
- k_t = paddle.full(paddle.shape(topk_ind), k, dtype='int64')
770
- topk_clses = paddle.cast(paddle.floor_divide(topk_ind, k_t), 'float32')
771
-
772
- topk_inds = paddle.reshape(topk_inds, [-1])
773
- topk_ys = paddle.reshape(topk_ys, [-1, 1])
774
- topk_xs = paddle.reshape(topk_xs, [-1, 1])
775
- topk_inds = paddle.gather(topk_inds, topk_ind)
776
- topk_ys = paddle.gather(topk_ys, topk_ind)
777
- topk_xs = paddle.gather(topk_xs, topk_ind)
778
-
779
- return topk_score, topk_inds, topk_clses, topk_ys, topk_xs
780
-
781
- def __call__(self, hm, wh, im_shape, scale_factor):
782
- heatmap = F.sigmoid(hm)
783
- heat = self._simple_nms(heatmap)
784
- scores, inds, clses, ys, xs = self._topk(heat)
785
- ys = paddle.cast(ys, 'float32') * self.down_ratio
786
- xs = paddle.cast(xs, 'float32') * self.down_ratio
787
- scores = paddle.tensor.unsqueeze(scores, [1])
788
- clses = paddle.tensor.unsqueeze(clses, [1])
789
-
790
- wh_t = paddle.transpose(wh, [0, 2, 3, 1])
791
- wh = paddle.reshape(wh_t, [-1, paddle.shape(wh_t)[-1]])
792
- wh = paddle.gather(wh, inds)
793
-
794
- x1 = xs - wh[:, 0:1]
795
- y1 = ys - wh[:, 1:2]
796
- x2 = xs + wh[:, 2:3]
797
- y2 = ys + wh[:, 3:4]
798
-
799
- bboxes = paddle.concat([x1, y1, x2, y2], axis=1)
800
-
801
- scale_y = scale_factor[:, 0:1]
802
- scale_x = scale_factor[:, 1:2]
803
- scale_expand = paddle.concat(
804
- [scale_x, scale_y, scale_x, scale_y], axis=1)
805
- boxes_shape = paddle.shape(bboxes)
806
- boxes_shape.stop_gradient = True
807
- scale_expand = paddle.expand(scale_expand, shape=boxes_shape)
808
- bboxes = paddle.divide(bboxes, scale_expand)
809
- results = paddle.concat([clses, scores, bboxes], axis=1)
810
- # hack: append result with cls=-1 and score=1. to avoid all scores
811
- # are less than score_thresh which may cause error in gather.
812
- fill_r = paddle.to_tensor(np.array([[-1, 1, 0, 0, 0, 0]]))
813
- fill_r = paddle.cast(fill_r, results.dtype)
814
- results = paddle.concat([results, fill_r])
815
- scores = results[:, 1]
816
- valid_ind = paddle.nonzero(scores > self.score_thresh)
817
- results = paddle.gather(results, valid_ind)
818
- return results, paddle.shape(results)[0:1]
819
-
820
-
821
- @register
822
- @serializable
823
- class JDEBox(object):
824
- __shared__ = ['num_classes']
825
-
826
- def __init__(self, num_classes=1, conf_thresh=0.3, downsample_ratio=32):
827
- self.num_classes = num_classes
828
- self.conf_thresh = conf_thresh
829
- self.downsample_ratio = downsample_ratio
830
-
831
- def generate_anchor(self, nGh, nGw, anchor_wh):
832
- nA = len(anchor_wh)
833
- yv, xv = paddle.meshgrid([paddle.arange(nGh), paddle.arange(nGw)])
834
- mesh = paddle.stack(
835
- (xv, yv), axis=0).cast(dtype='float32') # 2 x nGh x nGw
836
- meshs = paddle.tile(mesh, [nA, 1, 1, 1])
837
-
838
- anchor_offset_mesh = anchor_wh[:, :, None][:, :, :, None].repeat(
839
- int(nGh), axis=-2).repeat(
840
- int(nGw), axis=-1)
841
- anchor_offset_mesh = paddle.to_tensor(
842
- anchor_offset_mesh.astype(np.float32))
843
- # nA x 2 x nGh x nGw
844
-
845
- anchor_mesh = paddle.concat([meshs, anchor_offset_mesh], axis=1)
846
- anchor_mesh = paddle.transpose(anchor_mesh,
847
- [0, 2, 3, 1]) # (nA x nGh x nGw) x 4
848
- return anchor_mesh
849
-
850
- def decode_delta(self, delta, fg_anchor_list):
851
- px, py, pw, ph = fg_anchor_list[:, 0], fg_anchor_list[:,1], \
852
- fg_anchor_list[:, 2], fg_anchor_list[:,3]
853
- dx, dy, dw, dh = delta[:, 0], delta[:, 1], delta[:, 2], delta[:, 3]
854
- gx = pw * dx + px
855
- gy = ph * dy + py
856
- gw = pw * paddle.exp(dw)
857
- gh = ph * paddle.exp(dh)
858
- gx1 = gx - gw * 0.5
859
- gy1 = gy - gh * 0.5
860
- gx2 = gx + gw * 0.5
861
- gy2 = gy + gh * 0.5
862
- return paddle.stack([gx1, gy1, gx2, gy2], axis=1)
863
-
864
- def decode_delta_map(self, delta_map, anchors):
865
- delta_map_shape = paddle.shape(delta_map)
866
- delta_map_shape.stop_gradient = True
867
- nB, nA, nGh, nGw, _ = delta_map_shape[:]
868
- anchor_mesh = self.generate_anchor(nGh, nGw, anchors)
869
- # only support bs=1
870
- anchor_mesh = paddle.unsqueeze(anchor_mesh, 0)
871
-
872
- pred_list = self.decode_delta(
873
- paddle.reshape(
874
- delta_map, shape=[-1, 4]),
875
- paddle.reshape(
876
- anchor_mesh, shape=[-1, 4]))
877
- pred_map = paddle.reshape(pred_list, shape=[nB, -1, 4])
878
- return pred_map
879
-
880
- def __call__(self, yolo_head_out, anchors):
881
- bbox_pred_list = []
882
- for i, head_out in enumerate(yolo_head_out):
883
- stride = self.downsample_ratio // 2**i
884
- anc_w, anc_h = anchors[i][0::2], anchors[i][1::2]
885
- anchor_vec = np.stack((anc_w, anc_h), axis=1) / stride
886
- nA = len(anc_w)
887
- boxes_shape = paddle.shape(head_out)
888
- boxes_shape.stop_gradient = True
889
- nB, nGh, nGw = boxes_shape[0], boxes_shape[-2], boxes_shape[-1]
890
-
891
- p = head_out.reshape((nB, nA, self.num_classes + 5, nGh, nGw))
892
- p = paddle.transpose(p, perm=[0, 1, 3, 4, 2]) # [nB, 4, 19, 34, 6]
893
- p_box = p[:, :, :, :, :4] # [nB, 4, 19, 34, 4]
894
- boxes = self.decode_delta_map(p_box,
895
- anchor_vec) # [nB, 4*19*34, 4]
896
- boxes = boxes * stride
897
-
898
- p_conf = paddle.transpose(
899
- p[:, :, :, :, 4:6], perm=[0, 4, 1, 2, 3]) # [nB, 2, 4, 19, 34]
900
- p_conf = F.softmax(
901
- p_conf,
902
- axis=1)[:, 1, :, :, :].unsqueeze(-1) # [nB, 4, 19, 34, 1]
903
- scores = paddle.reshape(p_conf, shape=[nB, -1, 1])
904
-
905
- bbox_pred_list.append(paddle.concat([boxes, scores], axis=-1))
906
-
907
- yolo_boxes_pred = paddle.concat(bbox_pred_list, axis=1)
908
- boxes_idx = paddle.nonzero(
909
- yolo_boxes_pred[:, :, -1] > self.conf_thresh)
910
- boxes_idx.stop_gradient = True
911
- if boxes_idx.shape[0] == 0: # TODO: deploy
912
- boxes_idx = paddle.to_tensor(np.array([[0]], dtype='int64'))
913
- yolo_boxes_out = paddle.to_tensor(
914
- np.array(
915
- [[[0.0, 0.0, 0.0, 0.0]]], dtype='float32'))
916
- yolo_scores_out = paddle.to_tensor(
917
- np.array(
918
- [[[0.0]]], dtype='float32'))
919
- return boxes_idx, yolo_boxes_out, yolo_scores_out
920
-
921
- yolo_boxes = paddle.gather_nd(yolo_boxes_pred, boxes_idx)
922
- yolo_boxes_out = paddle.reshape(yolo_boxes[:, :4], shape=[nB, -1, 4])
923
- yolo_scores_out = paddle.reshape(yolo_boxes[:, 4:5], shape=[nB, 1, -1])
924
- boxes_idx = boxes_idx[:, 1:]
925
- return boxes_idx, yolo_boxes_out, yolo_scores_out # [163], [1, 163, 4], [1, 1, 163]
926
-
927
-
928
- @register
929
- @serializable
930
- class MaskMatrixNMS(object):
931
- """
932
- Matrix NMS for multi-class masks.
933
- Args:
934
- update_threshold (float): Updated threshold of categroy score in second time.
935
- pre_nms_top_n (int): Number of total instance to be kept per image before NMS
936
- post_nms_top_n (int): Number of total instance to be kept per image after NMS.
937
- kernel (str): 'linear' or 'gaussian'.
938
- sigma (float): std in gaussian method.
939
- Input:
940
- seg_preds (Variable): shape (n, h, w), segmentation feature maps
941
- seg_masks (Variable): shape (n, h, w), segmentation feature maps
942
- cate_labels (Variable): shape (n), mask labels in descending order
943
- cate_scores (Variable): shape (n), mask scores in descending order
944
- sum_masks (Variable): a float tensor of the sum of seg_masks
945
- Returns:
946
- Variable: cate_scores, tensors of shape (n)
947
- """
948
-
949
- def __init__(self,
950
- update_threshold=0.05,
951
- pre_nms_top_n=500,
952
- post_nms_top_n=100,
953
- kernel='gaussian',
954
- sigma=2.0):
955
- super(MaskMatrixNMS, self).__init__()
956
- self.update_threshold = update_threshold
957
- self.pre_nms_top_n = pre_nms_top_n
958
- self.post_nms_top_n = post_nms_top_n
959
- self.kernel = kernel
960
- self.sigma = sigma
961
-
962
- def _sort_score(self, scores, top_num):
963
- if paddle.shape(scores)[0] > top_num:
964
- return paddle.topk(scores, top_num)[1]
965
- else:
966
- return paddle.argsort(scores, descending=True)
967
-
968
- def __call__(self,
969
- seg_preds,
970
- seg_masks,
971
- cate_labels,
972
- cate_scores,
973
- sum_masks=None):
974
- # sort and keep top nms_pre
975
- sort_inds = self._sort_score(cate_scores, self.pre_nms_top_n)
976
- seg_masks = paddle.gather(seg_masks, index=sort_inds)
977
- seg_preds = paddle.gather(seg_preds, index=sort_inds)
978
- sum_masks = paddle.gather(sum_masks, index=sort_inds)
979
- cate_scores = paddle.gather(cate_scores, index=sort_inds)
980
- cate_labels = paddle.gather(cate_labels, index=sort_inds)
981
-
982
- seg_masks = paddle.flatten(seg_masks, start_axis=1, stop_axis=-1)
983
- # inter.
984
- inter_matrix = paddle.mm(seg_masks,
985
- paddle.transpose(seg_masks, [1, 0]))
986
- n_samples = paddle.shape(cate_labels)
987
- # union.
988
- sum_masks_x = paddle.expand(sum_masks, shape=[n_samples, n_samples])
989
- # iou.
990
- iou_matrix = (inter_matrix / (
991
- sum_masks_x + paddle.transpose(sum_masks_x, [1, 0]) - inter_matrix)
992
- )
993
- iou_matrix = paddle.triu(iou_matrix, diagonal=1)
994
- # label_specific matrix.
995
- cate_labels_x = paddle.expand(
996
- cate_labels, shape=[n_samples, n_samples])
997
- label_matrix = paddle.cast(
998
- (cate_labels_x == paddle.transpose(cate_labels_x, [1, 0])),
999
- 'float32')
1000
- label_matrix = paddle.triu(label_matrix, diagonal=1)
1001
-
1002
- # IoU compensation
1003
- compensate_iou = paddle.max((iou_matrix * label_matrix), axis=0)
1004
- compensate_iou = paddle.expand(
1005
- compensate_iou, shape=[n_samples, n_samples])
1006
- compensate_iou = paddle.transpose(compensate_iou, [1, 0])
1007
-
1008
- # IoU decay
1009
- decay_iou = iou_matrix * label_matrix
1010
-
1011
- # matrix nms
1012
- if self.kernel == 'gaussian':
1013
- decay_matrix = paddle.exp(-1 * self.sigma * (decay_iou**2))
1014
- compensate_matrix = paddle.exp(-1 * self.sigma *
1015
- (compensate_iou**2))
1016
- decay_coefficient = paddle.min(decay_matrix / compensate_matrix,
1017
- axis=0)
1018
- elif self.kernel == 'linear':
1019
- decay_matrix = (1 - decay_iou) / (1 - compensate_iou)
1020
- decay_coefficient = paddle.min(decay_matrix, axis=0)
1021
- else:
1022
- raise NotImplementedError
1023
-
1024
- # update the score.
1025
- cate_scores = cate_scores * decay_coefficient
1026
- y = paddle.zeros(shape=paddle.shape(cate_scores), dtype='float32')
1027
- keep = paddle.where(cate_scores >= self.update_threshold, cate_scores,
1028
- y)
1029
- keep = paddle.nonzero(keep)
1030
- keep = paddle.squeeze(keep, axis=[1])
1031
- # Prevent empty and increase fake data
1032
- keep = paddle.concat(
1033
- [keep, paddle.cast(paddle.shape(cate_scores)[0] - 1, 'int64')])
1034
-
1035
- seg_preds = paddle.gather(seg_preds, index=keep)
1036
- cate_scores = paddle.gather(cate_scores, index=keep)
1037
- cate_labels = paddle.gather(cate_labels, index=keep)
1038
-
1039
- # sort and keep top_k
1040
- sort_inds = self._sort_score(cate_scores, self.post_nms_top_n)
1041
- seg_preds = paddle.gather(seg_preds, index=sort_inds)
1042
- cate_scores = paddle.gather(cate_scores, index=sort_inds)
1043
- cate_labels = paddle.gather(cate_labels, index=sort_inds)
1044
- return seg_preds, cate_scores, cate_labels
1045
-
1046
-
1047
- def Conv2d(in_channels,
1048
- out_channels,
1049
- kernel_size,
1050
- stride=1,
1051
- padding=0,
1052
- dilation=1,
1053
- groups=1,
1054
- bias=True,
1055
- weight_init=Normal(std=0.001),
1056
- bias_init=Constant(0.)):
1057
- weight_attr = paddle.framework.ParamAttr(initializer=weight_init)
1058
- if bias:
1059
- bias_attr = paddle.framework.ParamAttr(initializer=bias_init)
1060
- else:
1061
- bias_attr = False
1062
- conv = nn.Conv2D(
1063
- in_channels,
1064
- out_channels,
1065
- kernel_size,
1066
- stride,
1067
- padding,
1068
- dilation,
1069
- groups,
1070
- weight_attr=weight_attr,
1071
- bias_attr=bias_attr)
1072
- return conv
1073
-
1074
-
1075
- def ConvTranspose2d(in_channels,
1076
- out_channels,
1077
- kernel_size,
1078
- stride=1,
1079
- padding=0,
1080
- output_padding=0,
1081
- groups=1,
1082
- bias=True,
1083
- dilation=1,
1084
- weight_init=Normal(std=0.001),
1085
- bias_init=Constant(0.)):
1086
- weight_attr = paddle.framework.ParamAttr(initializer=weight_init)
1087
- if bias:
1088
- bias_attr = paddle.framework.ParamAttr(initializer=bias_init)
1089
- else:
1090
- bias_attr = False
1091
- conv = nn.Conv2DTranspose(
1092
- in_channels,
1093
- out_channels,
1094
- kernel_size,
1095
- stride,
1096
- padding,
1097
- output_padding,
1098
- dilation,
1099
- groups,
1100
- weight_attr=weight_attr,
1101
- bias_attr=bias_attr)
1102
- return conv
1103
-
1104
-
1105
- def BatchNorm2d(num_features, eps=1e-05, momentum=0.9, affine=True):
1106
- if not affine:
1107
- weight_attr = False
1108
- bias_attr = False
1109
- else:
1110
- weight_attr = None
1111
- bias_attr = None
1112
- batchnorm = nn.BatchNorm2D(
1113
- num_features,
1114
- momentum,
1115
- eps,
1116
- weight_attr=weight_attr,
1117
- bias_attr=bias_attr)
1118
- return batchnorm
1119
-
1120
-
1121
- def ReLU():
1122
- return nn.ReLU()
1123
-
1124
-
1125
- def Upsample(scale_factor=None, mode='nearest', align_corners=False):
1126
- return nn.Upsample(None, scale_factor, mode, align_corners)
1127
-
1128
-
1129
- def MaxPool(kernel_size, stride, padding, ceil_mode=False):
1130
- return nn.MaxPool2D(kernel_size, stride, padding, ceil_mode=ceil_mode)
1131
-
1132
-
1133
- class Concat(nn.Layer):
1134
- def __init__(self, dim=0):
1135
- super(Concat, self).__init__()
1136
- self.dim = dim
1137
-
1138
- def forward(self, inputs):
1139
- return paddle.concat(inputs, axis=self.dim)
1140
-
1141
- def extra_repr(self):
1142
- return 'dim={}'.format(self.dim)