paddlex 2.1.0__py3-none-any.whl → 3.0.0rc0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1708) hide show
  1. paddlex/.version +1 -0
  2. paddlex/__init__.py +52 -19
  3. paddlex/__main__.py +39 -0
  4. paddlex/configs/modules/3d_bev_detection/BEVFusion.yaml +38 -0
  5. paddlex/configs/modules/doc_text_orientation/PP-LCNet_x1_0_doc_ori.yaml +41 -0
  6. paddlex/configs/modules/face_detection/BlazeFace-FPN-SSH.yaml +40 -0
  7. paddlex/configs/modules/face_detection/BlazeFace.yaml +40 -0
  8. paddlex/configs/modules/face_detection/PP-YOLOE_plus-S_face.yaml +40 -0
  9. paddlex/configs/modules/face_detection/PicoDet_LCNet_x2_5_face.yaml +40 -0
  10. paddlex/configs/modules/face_feature/MobileFaceNet.yaml +41 -0
  11. paddlex/configs/modules/face_feature/ResNet50_face.yaml +41 -0
  12. paddlex/configs/modules/formula_recognition/LaTeX_OCR_rec.yaml +40 -0
  13. paddlex/configs/modules/formula_recognition/PP-FormulaNet-L.yaml +40 -0
  14. paddlex/configs/modules/formula_recognition/PP-FormulaNet-S.yaml +40 -0
  15. paddlex/configs/modules/formula_recognition/UniMERNet.yaml +40 -0
  16. paddlex/configs/modules/human_detection/PP-YOLOE-L_human.yaml +42 -0
  17. paddlex/configs/modules/human_detection/PP-YOLOE-S_human.yaml +42 -0
  18. paddlex/configs/modules/image_anomaly_detection/STFPM.yaml +41 -0
  19. paddlex/configs/modules/image_classification/CLIP_vit_base_patch16_224.yaml +41 -0
  20. paddlex/configs/modules/image_classification/CLIP_vit_large_patch14_224.yaml +41 -0
  21. paddlex/configs/modules/image_classification/ConvNeXt_base_224.yaml +41 -0
  22. paddlex/configs/modules/image_classification/ConvNeXt_base_384.yaml +41 -0
  23. paddlex/configs/modules/image_classification/ConvNeXt_large_224.yaml +41 -0
  24. paddlex/configs/modules/image_classification/ConvNeXt_large_384.yaml +41 -0
  25. paddlex/configs/modules/image_classification/ConvNeXt_small.yaml +41 -0
  26. paddlex/configs/modules/image_classification/ConvNeXt_tiny.yaml +41 -0
  27. paddlex/configs/modules/image_classification/FasterNet-L.yaml +40 -0
  28. paddlex/configs/modules/image_classification/FasterNet-M.yaml +40 -0
  29. paddlex/configs/modules/image_classification/FasterNet-S.yaml +40 -0
  30. paddlex/configs/modules/image_classification/FasterNet-T0.yaml +40 -0
  31. paddlex/configs/modules/image_classification/FasterNet-T1.yaml +40 -0
  32. paddlex/configs/modules/image_classification/FasterNet-T2.yaml +40 -0
  33. paddlex/configs/modules/image_classification/MobileNetV1_x0_25.yaml +41 -0
  34. paddlex/configs/modules/image_classification/MobileNetV1_x0_5.yaml +41 -0
  35. paddlex/configs/modules/image_classification/MobileNetV1_x0_75.yaml +41 -0
  36. paddlex/configs/modules/image_classification/MobileNetV1_x1_0.yaml +41 -0
  37. paddlex/configs/modules/image_classification/MobileNetV2_x0_25.yaml +41 -0
  38. paddlex/configs/modules/image_classification/MobileNetV2_x0_5.yaml +41 -0
  39. paddlex/configs/modules/image_classification/MobileNetV2_x1_0.yaml +41 -0
  40. paddlex/configs/modules/image_classification/MobileNetV2_x1_5.yaml +41 -0
  41. paddlex/configs/modules/image_classification/MobileNetV2_x2_0.yaml +41 -0
  42. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_35.yaml +41 -0
  43. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_5.yaml +41 -0
  44. paddlex/configs/modules/image_classification/MobileNetV3_large_x0_75.yaml +41 -0
  45. paddlex/configs/modules/image_classification/MobileNetV3_large_x1_0.yaml +41 -0
  46. paddlex/configs/modules/image_classification/MobileNetV3_large_x1_25.yaml +41 -0
  47. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_35.yaml +41 -0
  48. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_5.yaml +41 -0
  49. paddlex/configs/modules/image_classification/MobileNetV3_small_x0_75.yaml +41 -0
  50. paddlex/configs/modules/image_classification/MobileNetV3_small_x1_0.yaml +41 -0
  51. paddlex/configs/modules/image_classification/MobileNetV3_small_x1_25.yaml +41 -0
  52. paddlex/configs/modules/image_classification/MobileNetV4_conv_large.yaml +41 -0
  53. paddlex/configs/modules/image_classification/MobileNetV4_conv_medium.yaml +41 -0
  54. paddlex/configs/modules/image_classification/MobileNetV4_conv_small.yaml +41 -0
  55. paddlex/configs/modules/image_classification/MobileNetV4_hybrid_large.yaml +41 -0
  56. paddlex/configs/modules/image_classification/MobileNetV4_hybrid_medium.yaml +41 -0
  57. paddlex/configs/modules/image_classification/PP-HGNetV2-B0.yaml +41 -0
  58. paddlex/configs/modules/image_classification/PP-HGNetV2-B1.yaml +41 -0
  59. paddlex/configs/modules/image_classification/PP-HGNetV2-B2.yaml +41 -0
  60. paddlex/configs/modules/image_classification/PP-HGNetV2-B3.yaml +41 -0
  61. paddlex/configs/modules/image_classification/PP-HGNetV2-B4.yaml +41 -0
  62. paddlex/configs/modules/image_classification/PP-HGNetV2-B5.yaml +41 -0
  63. paddlex/configs/modules/image_classification/PP-HGNetV2-B6.yaml +41 -0
  64. paddlex/configs/modules/image_classification/PP-HGNet_base.yaml +41 -0
  65. paddlex/configs/modules/image_classification/PP-HGNet_small.yaml +41 -0
  66. paddlex/configs/modules/image_classification/PP-HGNet_tiny.yaml +41 -0
  67. paddlex/configs/modules/image_classification/PP-LCNetV2_base.yaml +41 -0
  68. paddlex/configs/modules/image_classification/PP-LCNetV2_large.yaml +41 -0
  69. paddlex/configs/modules/image_classification/PP-LCNetV2_small.yaml +41 -0
  70. paddlex/configs/modules/image_classification/PP-LCNet_x0_25.yaml +41 -0
  71. paddlex/configs/modules/image_classification/PP-LCNet_x0_35.yaml +41 -0
  72. paddlex/configs/modules/image_classification/PP-LCNet_x0_5.yaml +41 -0
  73. paddlex/configs/modules/image_classification/PP-LCNet_x0_75.yaml +41 -0
  74. paddlex/configs/modules/image_classification/PP-LCNet_x1_0.yaml +41 -0
  75. paddlex/configs/modules/image_classification/PP-LCNet_x1_5.yaml +41 -0
  76. paddlex/configs/modules/image_classification/PP-LCNet_x2_0.yaml +41 -0
  77. paddlex/configs/modules/image_classification/PP-LCNet_x2_5.yaml +41 -0
  78. paddlex/configs/modules/image_classification/ResNet101.yaml +41 -0
  79. paddlex/configs/modules/image_classification/ResNet101_vd.yaml +41 -0
  80. paddlex/configs/modules/image_classification/ResNet152.yaml +41 -0
  81. paddlex/configs/modules/image_classification/ResNet152_vd.yaml +41 -0
  82. paddlex/configs/modules/image_classification/ResNet18.yaml +41 -0
  83. paddlex/configs/modules/image_classification/ResNet18_vd.yaml +41 -0
  84. paddlex/configs/modules/image_classification/ResNet200_vd.yaml +41 -0
  85. paddlex/configs/modules/image_classification/ResNet34.yaml +41 -0
  86. paddlex/configs/modules/image_classification/ResNet34_vd.yaml +41 -0
  87. paddlex/configs/modules/image_classification/ResNet50.yaml +41 -0
  88. paddlex/configs/modules/image_classification/ResNet50_vd.yaml +41 -0
  89. paddlex/configs/modules/image_classification/StarNet-S1.yaml +41 -0
  90. paddlex/configs/modules/image_classification/StarNet-S2.yaml +41 -0
  91. paddlex/configs/modules/image_classification/StarNet-S3.yaml +41 -0
  92. paddlex/configs/modules/image_classification/StarNet-S4.yaml +41 -0
  93. paddlex/configs/modules/image_classification/SwinTransformer_base_patch4_window12_384.yaml +41 -0
  94. paddlex/configs/modules/image_classification/SwinTransformer_base_patch4_window7_224.yaml +41 -0
  95. paddlex/configs/modules/image_classification/SwinTransformer_large_patch4_window12_384.yaml +41 -0
  96. paddlex/configs/modules/image_classification/SwinTransformer_large_patch4_window7_224.yaml +41 -0
  97. paddlex/configs/modules/image_classification/SwinTransformer_small_patch4_window7_224.yaml +41 -0
  98. paddlex/configs/modules/image_classification/SwinTransformer_tiny_patch4_window7_224.yaml +41 -0
  99. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec.yaml +42 -0
  100. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec_CLIP_vit_base.yaml +42 -0
  101. paddlex/configs/modules/image_feature/PP-ShiTuV2_rec_CLIP_vit_large.yaml +41 -0
  102. paddlex/configs/modules/image_multilabel_classification/CLIP_vit_base_patch16_448_ML.yaml +41 -0
  103. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B0_ML.yaml +41 -0
  104. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B4_ML.yaml +41 -0
  105. paddlex/configs/modules/image_multilabel_classification/PP-HGNetV2-B6_ML.yaml +41 -0
  106. paddlex/configs/modules/image_multilabel_classification/PP-LCNet_x1_0_ML.yaml +41 -0
  107. paddlex/configs/modules/image_multilabel_classification/ResNet50_ML.yaml +41 -0
  108. paddlex/configs/modules/image_unwarping/UVDoc.yaml +12 -0
  109. paddlex/configs/modules/instance_segmentation/Cascade-MaskRCNN-ResNet50-FPN.yaml +40 -0
  110. paddlex/configs/modules/instance_segmentation/Cascade-MaskRCNN-ResNet50-vd-SSLDv2-FPN.yaml +40 -0
  111. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-H.yaml +40 -0
  112. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-L.yaml +40 -0
  113. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-M.yaml +40 -0
  114. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-S.yaml +40 -0
  115. paddlex/configs/modules/instance_segmentation/Mask-RT-DETR-X.yaml +40 -0
  116. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNeXt101-vd-FPN.yaml +39 -0
  117. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet101-FPN.yaml +40 -0
  118. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet101-vd-FPN.yaml +40 -0
  119. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50-FPN.yaml +40 -0
  120. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50-vd-FPN.yaml +40 -0
  121. paddlex/configs/modules/instance_segmentation/MaskRCNN-ResNet50.yaml +40 -0
  122. paddlex/configs/modules/instance_segmentation/PP-YOLOE_seg-S.yaml +40 -0
  123. paddlex/configs/modules/instance_segmentation/SOLOv2.yaml +40 -0
  124. paddlex/configs/modules/keypoint_detection/PP-TinyPose_128x96.yaml +40 -0
  125. paddlex/configs/modules/keypoint_detection/PP-TinyPose_256x192.yaml +40 -0
  126. paddlex/configs/modules/layout_detection/PP-DocLayout-L.yaml +40 -0
  127. paddlex/configs/modules/layout_detection/PP-DocLayout-M.yaml +40 -0
  128. paddlex/configs/modules/layout_detection/PP-DocLayout-S.yaml +40 -0
  129. paddlex/configs/modules/layout_detection/PicoDet-L_layout_17cls.yaml +40 -0
  130. paddlex/configs/modules/layout_detection/PicoDet-L_layout_3cls.yaml +40 -0
  131. paddlex/configs/modules/layout_detection/PicoDet-S_layout_17cls.yaml +40 -0
  132. paddlex/configs/modules/layout_detection/PicoDet-S_layout_3cls.yaml +40 -0
  133. paddlex/configs/modules/layout_detection/PicoDet_layout_1x.yaml +40 -0
  134. paddlex/configs/modules/layout_detection/PicoDet_layout_1x_table.yaml +40 -0
  135. paddlex/configs/modules/layout_detection/RT-DETR-H_layout_17cls.yaml +40 -0
  136. paddlex/configs/modules/layout_detection/RT-DETR-H_layout_3cls.yaml +40 -0
  137. paddlex/configs/modules/mainbody_detection/PP-ShiTuV2_det.yaml +41 -0
  138. paddlex/configs/modules/multilingual_speech_recognition/whisper_base.yaml +12 -0
  139. paddlex/configs/modules/multilingual_speech_recognition/whisper_large.yaml +12 -0
  140. paddlex/configs/modules/multilingual_speech_recognition/whisper_medium.yaml +12 -0
  141. paddlex/configs/modules/multilingual_speech_recognition/whisper_small.yaml +12 -0
  142. paddlex/configs/modules/multilingual_speech_recognition/whisper_tiny.yaml +12 -0
  143. paddlex/configs/modules/object_detection/Cascade-FasterRCNN-ResNet50-FPN.yaml +41 -0
  144. paddlex/configs/modules/object_detection/Cascade-FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  145. paddlex/configs/modules/object_detection/CenterNet-DLA-34.yaml +41 -0
  146. paddlex/configs/modules/object_detection/CenterNet-ResNet50.yaml +41 -0
  147. paddlex/configs/modules/object_detection/Co-DINO-R50.yaml +40 -0
  148. paddlex/configs/modules/object_detection/Co-DINO-Swin-L.yaml +40 -0
  149. paddlex/configs/modules/object_detection/Co-Deformable-DETR-R50.yaml +40 -0
  150. paddlex/configs/modules/object_detection/Co-Deformable-DETR-Swin-T.yaml +40 -0
  151. paddlex/configs/modules/object_detection/DETR-R50.yaml +42 -0
  152. paddlex/configs/modules/object_detection/FCOS-ResNet50.yaml +41 -0
  153. paddlex/configs/modules/object_detection/FasterRCNN-ResNeXt101-vd-FPN.yaml +42 -0
  154. paddlex/configs/modules/object_detection/FasterRCNN-ResNet101-FPN.yaml +42 -0
  155. paddlex/configs/modules/object_detection/FasterRCNN-ResNet101.yaml +42 -0
  156. paddlex/configs/modules/object_detection/FasterRCNN-ResNet34-FPN.yaml +42 -0
  157. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-FPN.yaml +42 -0
  158. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-vd-FPN.yaml +42 -0
  159. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50-vd-SSLDv2-FPN.yaml +42 -0
  160. paddlex/configs/modules/object_detection/FasterRCNN-ResNet50.yaml +42 -0
  161. paddlex/configs/modules/object_detection/FasterRCNN-Swin-Tiny-FPN.yaml +42 -0
  162. paddlex/configs/modules/object_detection/PP-YOLOE_plus-L.yaml +40 -0
  163. paddlex/configs/modules/object_detection/PP-YOLOE_plus-M.yaml +40 -0
  164. paddlex/configs/modules/object_detection/PP-YOLOE_plus-S.yaml +40 -0
  165. paddlex/configs/modules/object_detection/PP-YOLOE_plus-X.yaml +40 -0
  166. paddlex/configs/modules/object_detection/PicoDet-L.yaml +40 -0
  167. paddlex/configs/modules/object_detection/PicoDet-M.yaml +42 -0
  168. paddlex/configs/modules/object_detection/PicoDet-S.yaml +40 -0
  169. paddlex/configs/modules/object_detection/PicoDet-XS.yaml +42 -0
  170. paddlex/configs/modules/object_detection/RT-DETR-H.yaml +40 -0
  171. paddlex/configs/modules/object_detection/RT-DETR-L.yaml +40 -0
  172. paddlex/configs/modules/object_detection/RT-DETR-R18.yaml +40 -0
  173. paddlex/configs/modules/object_detection/RT-DETR-R50.yaml +40 -0
  174. paddlex/configs/modules/object_detection/RT-DETR-X.yaml +40 -0
  175. paddlex/configs/modules/object_detection/YOLOX-L.yaml +40 -0
  176. paddlex/configs/modules/object_detection/YOLOX-M.yaml +40 -0
  177. paddlex/configs/modules/object_detection/YOLOX-N.yaml +40 -0
  178. paddlex/configs/modules/object_detection/YOLOX-S.yaml +40 -0
  179. paddlex/configs/modules/object_detection/YOLOX-T.yaml +40 -0
  180. paddlex/configs/modules/object_detection/YOLOX-X.yaml +40 -0
  181. paddlex/configs/modules/object_detection/YOLOv3-DarkNet53.yaml +40 -0
  182. paddlex/configs/modules/object_detection/YOLOv3-MobileNetV3.yaml +40 -0
  183. paddlex/configs/modules/object_detection/YOLOv3-ResNet50_vd_DCN.yaml +40 -0
  184. paddlex/configs/modules/open_vocabulary_detection/GroundingDINO-T.yaml +13 -0
  185. paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_box.yaml +17 -0
  186. paddlex/configs/modules/open_vocabulary_segmentation/SAM-H_point.yaml +15 -0
  187. paddlex/configs/modules/pedestrian_attribute_recognition/PP-LCNet_x1_0_pedestrian_attribute.yaml +41 -0
  188. paddlex/configs/modules/rotated_object_detection/PP-YOLOE-R-L.yaml +40 -0
  189. paddlex/configs/modules/seal_text_detection/PP-OCRv4_mobile_seal_det.yaml +40 -0
  190. paddlex/configs/modules/seal_text_detection/PP-OCRv4_server_seal_det.yaml +40 -0
  191. paddlex/configs/modules/semantic_segmentation/Deeplabv3-R101.yaml +40 -0
  192. paddlex/configs/modules/semantic_segmentation/Deeplabv3-R50.yaml +40 -0
  193. paddlex/configs/modules/semantic_segmentation/Deeplabv3_Plus-R101.yaml +40 -0
  194. paddlex/configs/modules/semantic_segmentation/Deeplabv3_Plus-R50.yaml +40 -0
  195. paddlex/configs/modules/semantic_segmentation/MaskFormer_small.yaml +42 -0
  196. paddlex/configs/modules/semantic_segmentation/MaskFormer_tiny.yaml +42 -0
  197. paddlex/configs/modules/semantic_segmentation/OCRNet_HRNet-W18.yaml +40 -0
  198. paddlex/configs/modules/semantic_segmentation/OCRNet_HRNet-W48.yaml +40 -0
  199. paddlex/configs/modules/semantic_segmentation/PP-LiteSeg-B.yaml +41 -0
  200. paddlex/configs/modules/semantic_segmentation/PP-LiteSeg-T.yaml +40 -0
  201. paddlex/configs/modules/semantic_segmentation/SeaFormer_base.yaml +40 -0
  202. paddlex/configs/modules/semantic_segmentation/SeaFormer_large.yaml +40 -0
  203. paddlex/configs/modules/semantic_segmentation/SeaFormer_small.yaml +40 -0
  204. paddlex/configs/modules/semantic_segmentation/SeaFormer_tiny.yaml +40 -0
  205. paddlex/configs/modules/semantic_segmentation/SegFormer-B0.yaml +40 -0
  206. paddlex/configs/modules/semantic_segmentation/SegFormer-B1.yaml +40 -0
  207. paddlex/configs/modules/semantic_segmentation/SegFormer-B2.yaml +40 -0
  208. paddlex/configs/modules/semantic_segmentation/SegFormer-B3.yaml +40 -0
  209. paddlex/configs/modules/semantic_segmentation/SegFormer-B4.yaml +40 -0
  210. paddlex/configs/modules/semantic_segmentation/SegFormer-B5.yaml +40 -0
  211. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-L.yaml +42 -0
  212. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-S.yaml +42 -0
  213. paddlex/configs/modules/small_object_detection/PP-YOLOE_plus_SOD-largesize-L.yaml +42 -0
  214. paddlex/configs/modules/table_cells_detection/RT-DETR-L_wired_table_cell_det.yaml +40 -0
  215. paddlex/configs/modules/table_cells_detection/RT-DETR-L_wireless_table_cell_det.yaml +40 -0
  216. paddlex/configs/modules/table_classification/PP-LCNet_x1_0_table_cls.yaml +41 -0
  217. paddlex/configs/modules/table_structure_recognition/SLANeXt_wired.yaml +39 -0
  218. paddlex/configs/modules/table_structure_recognition/SLANeXt_wireless.yaml +39 -0
  219. paddlex/configs/modules/table_structure_recognition/SLANet.yaml +39 -0
  220. paddlex/configs/modules/table_structure_recognition/SLANet_plus.yaml +39 -0
  221. paddlex/configs/modules/text_detection/PP-OCRv3_mobile_det.yaml +40 -0
  222. paddlex/configs/modules/text_detection/PP-OCRv3_server_det.yaml +40 -0
  223. paddlex/configs/modules/text_detection/PP-OCRv4_mobile_det.yaml +40 -0
  224. paddlex/configs/modules/text_detection/PP-OCRv4_server_det.yaml +40 -0
  225. paddlex/configs/modules/text_recognition/PP-OCRv3_mobile_rec.yaml +39 -0
  226. paddlex/configs/modules/text_recognition/PP-OCRv4_mobile_rec.yaml +39 -0
  227. paddlex/configs/modules/text_recognition/PP-OCRv4_server_rec.yaml +39 -0
  228. paddlex/configs/modules/text_recognition/PP-OCRv4_server_rec_doc.yaml +39 -0
  229. paddlex/configs/modules/text_recognition/arabic_PP-OCRv3_mobile_rec.yaml +39 -0
  230. paddlex/configs/modules/text_recognition/ch_RepSVTR_rec.yaml +39 -0
  231. paddlex/configs/modules/text_recognition/ch_SVTRv2_rec.yaml +39 -0
  232. paddlex/configs/modules/text_recognition/chinese_cht_PP-OCRv3_mobile_rec.yaml +39 -0
  233. paddlex/configs/modules/text_recognition/cyrillic_PP-OCRv3_mobile_rec.yaml +39 -0
  234. paddlex/configs/modules/text_recognition/devanagari_PP-OCRv3_mobile_rec.yaml +39 -0
  235. paddlex/configs/modules/text_recognition/en_PP-OCRv3_mobile_rec.yaml +39 -0
  236. paddlex/configs/modules/text_recognition/en_PP-OCRv4_mobile_rec.yaml +39 -0
  237. paddlex/configs/modules/text_recognition/japan_PP-OCRv3_mobile_rec.yaml +39 -0
  238. paddlex/configs/modules/text_recognition/ka_PP-OCRv3_mobile_rec.yaml +39 -0
  239. paddlex/configs/modules/text_recognition/korean_PP-OCRv3_mobile_rec.yaml +39 -0
  240. paddlex/configs/modules/text_recognition/latin_PP-OCRv3_mobile_rec.yaml +39 -0
  241. paddlex/configs/modules/text_recognition/ta_PP-OCRv3_mobile_rec.yaml +39 -0
  242. paddlex/configs/modules/text_recognition/te_PP-OCRv3_mobile_rec.yaml +39 -0
  243. paddlex/configs/modules/textline_orientation/PP-LCNet_x0_25_textline_ori.yaml +41 -0
  244. paddlex/configs/modules/ts_anomaly_detection/AutoEncoder_ad.yaml +37 -0
  245. paddlex/configs/modules/ts_anomaly_detection/DLinear_ad.yaml +37 -0
  246. paddlex/configs/modules/ts_anomaly_detection/Nonstationary_ad.yaml +37 -0
  247. paddlex/configs/modules/ts_anomaly_detection/PatchTST_ad.yaml +37 -0
  248. paddlex/configs/modules/ts_anomaly_detection/TimesNet_ad.yaml +37 -0
  249. paddlex/configs/modules/ts_classification/TimesNet_cls.yaml +37 -0
  250. paddlex/configs/modules/ts_forecast/DLinear.yaml +38 -0
  251. paddlex/configs/modules/ts_forecast/NLinear.yaml +38 -0
  252. paddlex/configs/modules/ts_forecast/Nonstationary.yaml +38 -0
  253. paddlex/configs/modules/ts_forecast/PatchTST.yaml +38 -0
  254. paddlex/configs/modules/ts_forecast/RLinear.yaml +38 -0
  255. paddlex/configs/modules/ts_forecast/TiDE.yaml +38 -0
  256. paddlex/configs/modules/ts_forecast/TimesNet.yaml +38 -0
  257. paddlex/configs/modules/vehicle_attribute_recognition/PP-LCNet_x1_0_vehicle_attribute.yaml +41 -0
  258. paddlex/configs/modules/vehicle_detection/PP-YOLOE-L_vehicle.yaml +41 -0
  259. paddlex/configs/modules/vehicle_detection/PP-YOLOE-S_vehicle.yaml +42 -0
  260. paddlex/configs/modules/video_classification/PP-TSM-R50_8frames_uniform.yaml +42 -0
  261. paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_16frames_uniform.yaml +42 -0
  262. paddlex/configs/modules/video_classification/PP-TSMv2-LCNetV2_8frames_uniform.yaml +42 -0
  263. paddlex/configs/modules/video_detection/YOWO.yaml +40 -0
  264. paddlex/configs/pipelines/3d_bev_detection.yaml +9 -0
  265. paddlex/configs/pipelines/OCR.yaml +44 -0
  266. paddlex/configs/pipelines/PP-ChatOCRv3-doc.yaml +149 -0
  267. paddlex/configs/pipelines/PP-ChatOCRv4-doc.yaml +184 -0
  268. paddlex/configs/pipelines/PP-ShiTuV2.yaml +18 -0
  269. paddlex/configs/pipelines/PP-StructureV3.yaml +226 -0
  270. paddlex/configs/pipelines/anomaly_detection.yaml +8 -0
  271. paddlex/configs/pipelines/doc_preprocessor.yaml +15 -0
  272. paddlex/configs/pipelines/face_recognition.yaml +18 -0
  273. paddlex/configs/pipelines/formula_recognition.yaml +39 -0
  274. paddlex/configs/pipelines/human_keypoint_detection.yaml +17 -0
  275. paddlex/configs/pipelines/image_classification.yaml +10 -0
  276. paddlex/configs/pipelines/image_multilabel_classification.yaml +9 -0
  277. paddlex/configs/pipelines/instance_segmentation.yaml +10 -0
  278. paddlex/configs/pipelines/layout_parsing.yaml +101 -0
  279. paddlex/configs/pipelines/multilingual_speech_recognition.yaml +9 -0
  280. paddlex/configs/pipelines/object_detection.yaml +10 -0
  281. paddlex/configs/pipelines/open_vocabulary_detection.yaml +12 -0
  282. paddlex/configs/pipelines/open_vocabulary_segmentation.yaml +13 -0
  283. paddlex/configs/pipelines/pedestrian_attribute_recognition.yaml +15 -0
  284. paddlex/configs/pipelines/rotated_object_detection.yaml +10 -0
  285. paddlex/configs/pipelines/seal_recognition.yaml +51 -0
  286. paddlex/configs/pipelines/semantic_segmentation.yaml +10 -0
  287. paddlex/configs/pipelines/small_object_detection.yaml +10 -0
  288. paddlex/configs/pipelines/table_recognition.yaml +56 -0
  289. paddlex/configs/pipelines/table_recognition_v2.yaml +76 -0
  290. paddlex/configs/pipelines/ts_anomaly_detection.yaml +8 -0
  291. paddlex/configs/pipelines/ts_classification.yaml +8 -0
  292. paddlex/configs/pipelines/ts_forecast.yaml +8 -0
  293. paddlex/configs/pipelines/vehicle_attribute_recognition.yaml +15 -0
  294. paddlex/configs/pipelines/video_classification.yaml +9 -0
  295. paddlex/configs/pipelines/video_detection.yaml +10 -0
  296. paddlex/engine.py +54 -0
  297. paddlex/hpip_links.html +19 -0
  298. paddlex/inference/__init__.py +19 -0
  299. paddlex/inference/common/__init__.py +13 -0
  300. paddlex/inference/common/batch_sampler/__init__.py +20 -0
  301. paddlex/inference/common/batch_sampler/audio_batch_sampler.py +84 -0
  302. paddlex/inference/common/batch_sampler/base_batch_sampler.py +90 -0
  303. paddlex/inference/common/batch_sampler/det_3d_batch_sampler.py +147 -0
  304. paddlex/inference/common/batch_sampler/image_batch_sampler.py +136 -0
  305. paddlex/inference/common/batch_sampler/ts_batch_sampler.py +110 -0
  306. paddlex/inference/common/batch_sampler/video_batch_sampler.py +94 -0
  307. paddlex/inference/common/reader/__init__.py +19 -0
  308. paddlex/inference/common/reader/audio_reader.py +46 -0
  309. paddlex/inference/common/reader/det_3d_reader.py +239 -0
  310. paddlex/inference/common/reader/image_reader.py +69 -0
  311. paddlex/inference/common/reader/ts_reader.py +45 -0
  312. paddlex/inference/common/reader/video_reader.py +42 -0
  313. paddlex/inference/common/result/__init__.py +29 -0
  314. paddlex/inference/common/result/base_cv_result.py +31 -0
  315. paddlex/inference/common/result/base_result.py +70 -0
  316. paddlex/inference/common/result/base_ts_result.py +42 -0
  317. paddlex/inference/common/result/base_video_result.py +36 -0
  318. paddlex/inference/common/result/mixin.py +703 -0
  319. paddlex/inference/models/3d_bev_detection/__init__.py +15 -0
  320. paddlex/inference/models/3d_bev_detection/predictor.py +314 -0
  321. paddlex/inference/models/3d_bev_detection/processors.py +978 -0
  322. paddlex/inference/models/3d_bev_detection/result.py +65 -0
  323. paddlex/inference/models/3d_bev_detection/visualizer_3d.py +131 -0
  324. paddlex/inference/models/__init__.py +130 -0
  325. paddlex/inference/models/anomaly_detection/__init__.py +15 -0
  326. paddlex/inference/models/anomaly_detection/predictor.py +145 -0
  327. paddlex/inference/models/anomaly_detection/processors.py +46 -0
  328. paddlex/inference/models/anomaly_detection/result.py +70 -0
  329. paddlex/inference/models/base/__init__.py +15 -0
  330. paddlex/inference/models/base/predictor/__init__.py +16 -0
  331. paddlex/inference/models/base/predictor/base_predictor.py +175 -0
  332. paddlex/inference/models/base/predictor/basic_predictor.py +139 -0
  333. paddlex/inference/models/common/__init__.py +35 -0
  334. paddlex/inference/models/common/static_infer.py +329 -0
  335. paddlex/inference/models/common/tokenizer/__init__.py +17 -0
  336. paddlex/inference/models/common/tokenizer/bert_tokenizer.py +655 -0
  337. paddlex/inference/models/common/tokenizer/gpt_tokenizer.py +451 -0
  338. paddlex/inference/models/common/tokenizer/tokenizer_utils.py +2141 -0
  339. paddlex/inference/models/common/tokenizer/tokenizer_utils_base.py +3504 -0
  340. paddlex/inference/models/common/tokenizer/utils.py +66 -0
  341. paddlex/inference/models/common/tokenizer/vocab.py +647 -0
  342. paddlex/inference/models/common/ts/__init__.py +15 -0
  343. paddlex/inference/models/common/ts/funcs.py +533 -0
  344. paddlex/inference/models/common/ts/processors.py +313 -0
  345. paddlex/inference/models/common/vision/__init__.py +23 -0
  346. paddlex/inference/models/common/vision/funcs.py +93 -0
  347. paddlex/inference/models/common/vision/processors.py +270 -0
  348. paddlex/inference/models/face_feature/__init__.py +15 -0
  349. paddlex/inference/models/face_feature/predictor.py +65 -0
  350. paddlex/inference/models/formula_recognition/__init__.py +15 -0
  351. paddlex/inference/models/formula_recognition/predictor.py +203 -0
  352. paddlex/inference/models/formula_recognition/processors.py +986 -0
  353. paddlex/inference/models/formula_recognition/result.py +403 -0
  354. paddlex/inference/models/image_classification/__init__.py +15 -0
  355. paddlex/inference/models/image_classification/predictor.py +182 -0
  356. paddlex/inference/models/image_classification/processors.py +87 -0
  357. paddlex/inference/models/image_classification/result.py +92 -0
  358. paddlex/inference/models/image_feature/__init__.py +15 -0
  359. paddlex/inference/models/image_feature/predictor.py +156 -0
  360. paddlex/inference/models/image_feature/processors.py +29 -0
  361. paddlex/inference/models/image_feature/result.py +33 -0
  362. paddlex/inference/models/image_multilabel_classification/__init__.py +15 -0
  363. paddlex/inference/models/image_multilabel_classification/predictor.py +94 -0
  364. paddlex/inference/models/image_multilabel_classification/processors.py +85 -0
  365. paddlex/inference/models/image_multilabel_classification/result.py +95 -0
  366. paddlex/inference/models/image_unwarping/__init__.py +15 -0
  367. paddlex/inference/models/image_unwarping/predictor.py +105 -0
  368. paddlex/inference/models/image_unwarping/processors.py +88 -0
  369. paddlex/inference/models/image_unwarping/result.py +45 -0
  370. paddlex/inference/models/instance_segmentation/__init__.py +15 -0
  371. paddlex/inference/models/instance_segmentation/predictor.py +210 -0
  372. paddlex/inference/models/instance_segmentation/processors.py +105 -0
  373. paddlex/inference/models/instance_segmentation/result.py +161 -0
  374. paddlex/inference/models/keypoint_detection/__init__.py +15 -0
  375. paddlex/inference/models/keypoint_detection/predictor.py +188 -0
  376. paddlex/inference/models/keypoint_detection/processors.py +359 -0
  377. paddlex/inference/models/keypoint_detection/result.py +192 -0
  378. paddlex/inference/models/multilingual_speech_recognition/__init__.py +15 -0
  379. paddlex/inference/models/multilingual_speech_recognition/predictor.py +141 -0
  380. paddlex/inference/models/multilingual_speech_recognition/processors.py +1941 -0
  381. paddlex/inference/models/multilingual_speech_recognition/result.py +21 -0
  382. paddlex/inference/models/object_detection/__init__.py +15 -0
  383. paddlex/inference/models/object_detection/predictor.py +348 -0
  384. paddlex/inference/models/object_detection/processors.py +855 -0
  385. paddlex/inference/models/object_detection/result.py +113 -0
  386. paddlex/inference/models/object_detection/utils.py +68 -0
  387. paddlex/inference/models/open_vocabulary_detection/__init__.py +15 -0
  388. paddlex/inference/models/open_vocabulary_detection/predictor.py +155 -0
  389. paddlex/inference/models/open_vocabulary_detection/processors/__init__.py +15 -0
  390. paddlex/inference/models/open_vocabulary_detection/processors/groundingdino_processors.py +485 -0
  391. paddlex/inference/models/open_vocabulary_segmentation/__init__.py +15 -0
  392. paddlex/inference/models/open_vocabulary_segmentation/predictor.py +120 -0
  393. paddlex/inference/models/open_vocabulary_segmentation/processors/__init__.py +15 -0
  394. paddlex/inference/models/open_vocabulary_segmentation/processors/sam_processer.py +249 -0
  395. paddlex/inference/models/open_vocabulary_segmentation/results/__init__.py +15 -0
  396. paddlex/inference/models/open_vocabulary_segmentation/results/sam_result.py +147 -0
  397. paddlex/inference/models/semantic_segmentation/__init__.py +15 -0
  398. paddlex/inference/models/semantic_segmentation/predictor.py +167 -0
  399. paddlex/inference/models/semantic_segmentation/processors.py +114 -0
  400. paddlex/inference/models/semantic_segmentation/result.py +72 -0
  401. paddlex/inference/models/table_structure_recognition/__init__.py +15 -0
  402. paddlex/inference/models/table_structure_recognition/predictor.py +171 -0
  403. paddlex/inference/models/table_structure_recognition/processors.py +235 -0
  404. paddlex/inference/models/table_structure_recognition/result.py +70 -0
  405. paddlex/inference/models/text_detection/__init__.py +15 -0
  406. paddlex/inference/models/text_detection/predictor.py +191 -0
  407. paddlex/inference/models/text_detection/processors.py +466 -0
  408. paddlex/inference/models/text_detection/result.py +51 -0
  409. paddlex/inference/models/text_recognition/__init__.py +15 -0
  410. paddlex/inference/models/text_recognition/predictor.py +106 -0
  411. paddlex/inference/models/text_recognition/processors.py +231 -0
  412. paddlex/inference/models/text_recognition/result.py +75 -0
  413. paddlex/inference/models/ts_anomaly_detection/__init__.py +15 -0
  414. paddlex/inference/models/ts_anomaly_detection/predictor.py +146 -0
  415. paddlex/inference/models/ts_anomaly_detection/processors.py +94 -0
  416. paddlex/inference/models/ts_anomaly_detection/result.py +72 -0
  417. paddlex/inference/models/ts_classification/__init__.py +15 -0
  418. paddlex/inference/models/ts_classification/predictor.py +135 -0
  419. paddlex/inference/models/ts_classification/processors.py +117 -0
  420. paddlex/inference/models/ts_classification/result.py +78 -0
  421. paddlex/inference/models/ts_forecasting/__init__.py +15 -0
  422. paddlex/inference/models/ts_forecasting/predictor.py +159 -0
  423. paddlex/inference/models/ts_forecasting/processors.py +149 -0
  424. paddlex/inference/models/ts_forecasting/result.py +83 -0
  425. paddlex/inference/models/video_classification/__init__.py +15 -0
  426. paddlex/inference/models/video_classification/predictor.py +147 -0
  427. paddlex/inference/models/video_classification/processors.py +409 -0
  428. paddlex/inference/models/video_classification/result.py +92 -0
  429. paddlex/inference/models/video_detection/__init__.py +15 -0
  430. paddlex/inference/models/video_detection/predictor.py +136 -0
  431. paddlex/inference/models/video_detection/processors.py +450 -0
  432. paddlex/inference/models/video_detection/result.py +104 -0
  433. paddlex/inference/pipelines/3d_bev_detection/__init__.py +15 -0
  434. paddlex/inference/pipelines/3d_bev_detection/pipeline.py +67 -0
  435. paddlex/inference/pipelines/__init__.py +228 -0
  436. paddlex/inference/pipelines/anomaly_detection/__init__.py +15 -0
  437. paddlex/inference/pipelines/anomaly_detection/pipeline.py +62 -0
  438. paddlex/inference/pipelines/attribute_recognition/__init__.py +15 -0
  439. paddlex/inference/pipelines/attribute_recognition/pipeline.py +105 -0
  440. paddlex/inference/pipelines/attribute_recognition/result.py +100 -0
  441. paddlex/inference/pipelines/base.py +132 -0
  442. paddlex/inference/pipelines/components/__init__.py +23 -0
  443. paddlex/inference/pipelines/components/chat_server/__init__.py +16 -0
  444. paddlex/inference/pipelines/components/chat_server/base.py +39 -0
  445. paddlex/inference/pipelines/components/chat_server/openai_bot_chat.py +236 -0
  446. paddlex/inference/pipelines/components/common/__init__.py +18 -0
  447. paddlex/inference/pipelines/components/common/base_operator.py +36 -0
  448. paddlex/inference/pipelines/components/common/base_result.py +65 -0
  449. paddlex/inference/pipelines/components/common/convert_points_and_boxes.py +46 -0
  450. paddlex/inference/pipelines/components/common/crop_image_regions.py +550 -0
  451. paddlex/inference/pipelines/components/common/seal_det_warp.py +941 -0
  452. paddlex/inference/pipelines/components/common/sort_boxes.py +83 -0
  453. paddlex/inference/pipelines/components/faisser.py +352 -0
  454. paddlex/inference/pipelines/components/prompt_engineering/__init__.py +16 -0
  455. paddlex/inference/pipelines/components/prompt_engineering/base.py +35 -0
  456. paddlex/inference/pipelines/components/prompt_engineering/generate_ensemble_prompt.py +127 -0
  457. paddlex/inference/pipelines/components/prompt_engineering/generate_kie_prompt.py +148 -0
  458. paddlex/inference/pipelines/components/retriever/__init__.py +16 -0
  459. paddlex/inference/pipelines/components/retriever/base.py +226 -0
  460. paddlex/inference/pipelines/components/retriever/openai_bot_retriever.py +70 -0
  461. paddlex/inference/pipelines/components/retriever/qianfan_bot_retriever.py +163 -0
  462. paddlex/inference/pipelines/components/utils/__init__.py +13 -0
  463. paddlex/inference/pipelines/components/utils/mixin.py +206 -0
  464. paddlex/inference/pipelines/doc_preprocessor/__init__.py +15 -0
  465. paddlex/inference/pipelines/doc_preprocessor/pipeline.py +190 -0
  466. paddlex/inference/pipelines/doc_preprocessor/result.py +103 -0
  467. paddlex/inference/pipelines/face_recognition/__init__.py +15 -0
  468. paddlex/inference/pipelines/face_recognition/pipeline.py +61 -0
  469. paddlex/inference/pipelines/face_recognition/result.py +43 -0
  470. paddlex/inference/pipelines/formula_recognition/__init__.py +15 -0
  471. paddlex/inference/pipelines/formula_recognition/pipeline.py +303 -0
  472. paddlex/inference/pipelines/formula_recognition/result.py +291 -0
  473. paddlex/inference/pipelines/image_classification/__init__.py +15 -0
  474. paddlex/inference/pipelines/image_classification/pipeline.py +71 -0
  475. paddlex/inference/pipelines/image_multilabel_classification/__init__.py +15 -0
  476. paddlex/inference/pipelines/image_multilabel_classification/pipeline.py +78 -0
  477. paddlex/inference/pipelines/instance_segmentation/__init__.py +15 -0
  478. paddlex/inference/pipelines/instance_segmentation/pipeline.py +70 -0
  479. paddlex/inference/pipelines/keypoint_detection/__init__.py +15 -0
  480. paddlex/inference/pipelines/keypoint_detection/pipeline.py +137 -0
  481. paddlex/inference/pipelines/layout_parsing/__init__.py +16 -0
  482. paddlex/inference/pipelines/layout_parsing/pipeline.py +570 -0
  483. paddlex/inference/pipelines/layout_parsing/pipeline_v2.py +739 -0
  484. paddlex/inference/pipelines/layout_parsing/result.py +203 -0
  485. paddlex/inference/pipelines/layout_parsing/result_v2.py +470 -0
  486. paddlex/inference/pipelines/layout_parsing/utils.py +2385 -0
  487. paddlex/inference/pipelines/multilingual_speech_recognition/__init__.py +15 -0
  488. paddlex/inference/pipelines/multilingual_speech_recognition/pipeline.py +67 -0
  489. paddlex/inference/pipelines/object_detection/__init__.py +15 -0
  490. paddlex/inference/pipelines/object_detection/pipeline.py +95 -0
  491. paddlex/inference/pipelines/ocr/__init__.py +15 -0
  492. paddlex/inference/pipelines/ocr/pipeline.py +389 -0
  493. paddlex/inference/pipelines/ocr/result.py +248 -0
  494. paddlex/inference/pipelines/open_vocabulary_detection/__init__.py +15 -0
  495. paddlex/inference/pipelines/open_vocabulary_detection/pipeline.py +75 -0
  496. paddlex/inference/pipelines/open_vocabulary_segmentation/__init__.py +15 -0
  497. paddlex/inference/pipelines/open_vocabulary_segmentation/pipeline.py +89 -0
  498. paddlex/inference/pipelines/pp_chatocr/__init__.py +16 -0
  499. paddlex/inference/pipelines/pp_chatocr/pipeline_base.py +102 -0
  500. paddlex/inference/pipelines/pp_chatocr/pipeline_v3.py +773 -0
  501. paddlex/inference/pipelines/pp_chatocr/pipeline_v4.py +977 -0
  502. paddlex/inference/pipelines/pp_shitu_v2/__init__.py +15 -0
  503. paddlex/inference/pipelines/pp_shitu_v2/pipeline.py +152 -0
  504. paddlex/inference/pipelines/pp_shitu_v2/result.py +126 -0
  505. paddlex/inference/pipelines/rotated_object_detection/__init__.py +15 -0
  506. paddlex/inference/pipelines/rotated_object_detection/pipeline.py +74 -0
  507. paddlex/inference/pipelines/seal_recognition/__init__.py +15 -0
  508. paddlex/inference/pipelines/seal_recognition/pipeline.py +271 -0
  509. paddlex/inference/pipelines/seal_recognition/result.py +87 -0
  510. paddlex/inference/pipelines/semantic_segmentation/__init__.py +15 -0
  511. paddlex/inference/pipelines/semantic_segmentation/pipeline.py +74 -0
  512. paddlex/inference/pipelines/small_object_detection/__init__.py +15 -0
  513. paddlex/inference/pipelines/small_object_detection/pipeline.py +74 -0
  514. paddlex/inference/pipelines/table_recognition/__init__.py +16 -0
  515. paddlex/inference/pipelines/table_recognition/pipeline.py +462 -0
  516. paddlex/inference/pipelines/table_recognition/pipeline_v2.py +792 -0
  517. paddlex/inference/pipelines/table_recognition/result.py +216 -0
  518. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing.py +362 -0
  519. paddlex/inference/pipelines/table_recognition/table_recognition_post_processing_v2.py +470 -0
  520. paddlex/inference/pipelines/table_recognition/utils.py +44 -0
  521. paddlex/inference/pipelines/ts_anomaly_detection/__init__.py +15 -0
  522. paddlex/inference/pipelines/ts_anomaly_detection/pipeline.py +62 -0
  523. paddlex/inference/pipelines/ts_classification/__init__.py +15 -0
  524. paddlex/inference/pipelines/ts_classification/pipeline.py +62 -0
  525. paddlex/inference/pipelines/ts_forecasting/__init__.py +15 -0
  526. paddlex/inference/pipelines/ts_forecasting/pipeline.py +62 -0
  527. paddlex/inference/pipelines/video_classification/__init__.py +15 -0
  528. paddlex/inference/pipelines/video_classification/pipeline.py +68 -0
  529. paddlex/inference/pipelines/video_detection/__init__.py +15 -0
  530. paddlex/inference/pipelines/video_detection/pipeline.py +73 -0
  531. paddlex/inference/serving/__init__.py +13 -0
  532. paddlex/inference/serving/basic_serving/__init__.py +18 -0
  533. paddlex/inference/serving/basic_serving/_app.py +209 -0
  534. paddlex/inference/serving/basic_serving/_pipeline_apps/__init__.py +41 -0
  535. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/__init__.py +13 -0
  536. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/common.py +96 -0
  537. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/image_recognition.py +36 -0
  538. paddlex/inference/serving/basic_serving/_pipeline_apps/_common/ocr.py +90 -0
  539. paddlex/inference/serving/basic_serving/_pipeline_apps/anomaly_detection.py +64 -0
  540. paddlex/inference/serving/basic_serving/_pipeline_apps/doc_preprocessor.py +97 -0
  541. paddlex/inference/serving/basic_serving/_pipeline_apps/face_recognition.py +223 -0
  542. paddlex/inference/serving/basic_serving/_pipeline_apps/formula_recognition.py +97 -0
  543. paddlex/inference/serving/basic_serving/_pipeline_apps/human_keypoint_detection.py +78 -0
  544. paddlex/inference/serving/basic_serving/_pipeline_apps/image_classification.py +66 -0
  545. paddlex/inference/serving/basic_serving/_pipeline_apps/image_multilabel_classification.py +70 -0
  546. paddlex/inference/serving/basic_serving/_pipeline_apps/instance_segmentation.py +81 -0
  547. paddlex/inference/serving/basic_serving/_pipeline_apps/layout_parsing.py +115 -0
  548. paddlex/inference/serving/basic_serving/_pipeline_apps/m_3d_bev_detection.py +76 -0
  549. paddlex/inference/serving/basic_serving/_pipeline_apps/multilingual_speech_recognition.py +89 -0
  550. paddlex/inference/serving/basic_serving/_pipeline_apps/object_detection.py +74 -0
  551. paddlex/inference/serving/basic_serving/_pipeline_apps/ocr.py +99 -0
  552. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_detection.py +78 -0
  553. paddlex/inference/serving/basic_serving/_pipeline_apps/open_vocabulary_segmentation.py +85 -0
  554. paddlex/inference/serving/basic_serving/_pipeline_apps/pedestrian_attribute_recognition.py +81 -0
  555. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv3_doc.py +191 -0
  556. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_chatocrv4_doc.py +221 -0
  557. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_shituv2.py +218 -0
  558. paddlex/inference/serving/basic_serving/_pipeline_apps/pp_structurev3.py +136 -0
  559. paddlex/inference/serving/basic_serving/_pipeline_apps/rotated_object_detection.py +78 -0
  560. paddlex/inference/serving/basic_serving/_pipeline_apps/seal_recognition.py +103 -0
  561. paddlex/inference/serving/basic_serving/_pipeline_apps/semantic_segmentation.py +64 -0
  562. paddlex/inference/serving/basic_serving/_pipeline_apps/small_object_detection.py +69 -0
  563. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition.py +105 -0
  564. paddlex/inference/serving/basic_serving/_pipeline_apps/table_recognition_v2.py +107 -0
  565. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_anomaly_detection.py +62 -0
  566. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_classification.py +61 -0
  567. paddlex/inference/serving/basic_serving/_pipeline_apps/ts_forecast.py +62 -0
  568. paddlex/inference/serving/basic_serving/_pipeline_apps/vehicle_attribute_recognition.py +81 -0
  569. paddlex/inference/serving/basic_serving/_pipeline_apps/video_classification.py +73 -0
  570. paddlex/inference/serving/basic_serving/_pipeline_apps/video_detection.py +89 -0
  571. paddlex/inference/serving/basic_serving/_server.py +35 -0
  572. paddlex/inference/serving/infra/__init__.py +13 -0
  573. paddlex/inference/serving/infra/config.py +36 -0
  574. paddlex/inference/serving/infra/models.py +72 -0
  575. paddlex/inference/serving/infra/storage.py +175 -0
  576. paddlex/inference/serving/infra/utils.py +259 -0
  577. paddlex/inference/serving/schemas/__init__.py +13 -0
  578. paddlex/inference/serving/schemas/anomaly_detection.py +39 -0
  579. paddlex/inference/serving/schemas/doc_preprocessor.py +54 -0
  580. paddlex/inference/serving/schemas/face_recognition.py +124 -0
  581. paddlex/inference/serving/schemas/formula_recognition.py +56 -0
  582. paddlex/inference/serving/schemas/human_keypoint_detection.py +55 -0
  583. paddlex/inference/serving/schemas/image_classification.py +45 -0
  584. paddlex/inference/serving/schemas/image_multilabel_classification.py +47 -0
  585. paddlex/inference/serving/schemas/instance_segmentation.py +53 -0
  586. paddlex/inference/serving/schemas/layout_parsing.py +72 -0
  587. paddlex/inference/serving/schemas/m_3d_bev_detection.py +48 -0
  588. paddlex/inference/serving/schemas/multilingual_speech_recognition.py +57 -0
  589. paddlex/inference/serving/schemas/object_detection.py +52 -0
  590. paddlex/inference/serving/schemas/ocr.py +60 -0
  591. paddlex/inference/serving/schemas/open_vocabulary_detection.py +52 -0
  592. paddlex/inference/serving/schemas/open_vocabulary_segmentation.py +52 -0
  593. paddlex/inference/serving/schemas/pedestrian_attribute_recognition.py +61 -0
  594. paddlex/inference/serving/schemas/pp_chatocrv3_doc.py +134 -0
  595. paddlex/inference/serving/schemas/pp_chatocrv4_doc.py +151 -0
  596. paddlex/inference/serving/schemas/pp_shituv2.py +124 -0
  597. paddlex/inference/serving/schemas/pp_structurev3.py +84 -0
  598. paddlex/inference/serving/schemas/rotated_object_detection.py +52 -0
  599. paddlex/inference/serving/schemas/seal_recognition.py +62 -0
  600. paddlex/inference/serving/schemas/semantic_segmentation.py +45 -0
  601. paddlex/inference/serving/schemas/shared/__init__.py +13 -0
  602. paddlex/inference/serving/schemas/shared/classification.py +23 -0
  603. paddlex/inference/serving/schemas/shared/image_segmentation.py +28 -0
  604. paddlex/inference/serving/schemas/shared/object_detection.py +24 -0
  605. paddlex/inference/serving/schemas/shared/ocr.py +25 -0
  606. paddlex/inference/serving/schemas/small_object_detection.py +52 -0
  607. paddlex/inference/serving/schemas/table_recognition.py +64 -0
  608. paddlex/inference/serving/schemas/table_recognition_v2.py +66 -0
  609. paddlex/inference/serving/schemas/ts_anomaly_detection.py +37 -0
  610. paddlex/inference/serving/schemas/ts_classification.py +38 -0
  611. paddlex/inference/serving/schemas/ts_forecast.py +37 -0
  612. paddlex/inference/serving/schemas/vehicle_attribute_recognition.py +61 -0
  613. paddlex/inference/serving/schemas/video_classification.py +44 -0
  614. paddlex/inference/serving/schemas/video_detection.py +56 -0
  615. paddlex/inference/utils/__init__.py +13 -0
  616. paddlex/inference/utils/benchmark.py +226 -0
  617. paddlex/inference/utils/color_map.py +123 -0
  618. paddlex/inference/utils/get_pipeline_path.py +27 -0
  619. paddlex/inference/utils/io/__init__.py +36 -0
  620. paddlex/inference/utils/io/readers.py +500 -0
  621. paddlex/inference/utils/io/style.py +374 -0
  622. paddlex/inference/utils/io/tablepyxl.py +149 -0
  623. paddlex/inference/utils/io/writers.py +459 -0
  624. paddlex/inference/utils/new_ir_blacklist.py +28 -0
  625. paddlex/inference/utils/official_models.py +352 -0
  626. paddlex/inference/utils/pp_option.py +256 -0
  627. paddlex/model.py +113 -0
  628. paddlex/modules/3d_bev_detection/__init__.py +18 -0
  629. paddlex/modules/3d_bev_detection/dataset_checker/__init__.py +95 -0
  630. paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/__init__.py +17 -0
  631. paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/analyse_dataset.py +106 -0
  632. paddlex/modules/3d_bev_detection/dataset_checker/dataset_src/check_dataset.py +102 -0
  633. paddlex/modules/3d_bev_detection/evaluator.py +46 -0
  634. paddlex/modules/3d_bev_detection/exportor.py +22 -0
  635. paddlex/modules/3d_bev_detection/model_list.py +18 -0
  636. paddlex/modules/3d_bev_detection/trainer.py +70 -0
  637. paddlex/modules/__init__.py +138 -0
  638. paddlex/modules/anomaly_detection/__init__.py +18 -0
  639. paddlex/modules/anomaly_detection/dataset_checker/__init__.py +95 -0
  640. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  641. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +79 -0
  642. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/check_dataset.py +87 -0
  643. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +230 -0
  644. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/split_dataset.py +87 -0
  645. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  646. paddlex/modules/anomaly_detection/dataset_checker/dataset_src/utils/visualizer.py +71 -0
  647. paddlex/modules/anomaly_detection/evaluator.py +58 -0
  648. paddlex/modules/anomaly_detection/exportor.py +22 -0
  649. paddlex/modules/anomaly_detection/model_list.py +16 -0
  650. paddlex/modules/anomaly_detection/trainer.py +71 -0
  651. paddlex/modules/base/__init__.py +18 -0
  652. paddlex/modules/base/build_model.py +34 -0
  653. paddlex/modules/base/dataset_checker/__init__.py +16 -0
  654. paddlex/modules/base/dataset_checker/dataset_checker.py +169 -0
  655. paddlex/modules/base/dataset_checker/utils.py +110 -0
  656. paddlex/modules/base/evaluator.py +170 -0
  657. paddlex/modules/base/exportor.py +146 -0
  658. paddlex/modules/base/trainer.py +134 -0
  659. paddlex/modules/face_recognition/__init__.py +18 -0
  660. paddlex/modules/face_recognition/dataset_checker/__init__.py +71 -0
  661. paddlex/modules/face_recognition/dataset_checker/dataset_src/__init__.py +16 -0
  662. paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py +174 -0
  663. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  664. paddlex/modules/face_recognition/dataset_checker/dataset_src/utils/visualizer.py +156 -0
  665. paddlex/modules/face_recognition/evaluator.py +52 -0
  666. paddlex/modules/face_recognition/exportor.py +22 -0
  667. paddlex/modules/face_recognition/model_list.py +15 -0
  668. paddlex/modules/face_recognition/trainer.py +75 -0
  669. paddlex/modules/formula_recognition/__init__.py +18 -0
  670. paddlex/modules/formula_recognition/dataset_checker/__init__.py +113 -0
  671. paddlex/modules/formula_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  672. paddlex/modules/formula_recognition/dataset_checker/dataset_src/analyse_dataset.py +157 -0
  673. paddlex/modules/formula_recognition/dataset_checker/dataset_src/check_dataset.py +80 -0
  674. paddlex/modules/formula_recognition/dataset_checker/dataset_src/convert_dataset.py +94 -0
  675. paddlex/modules/formula_recognition/dataset_checker/dataset_src/split_dataset.py +81 -0
  676. paddlex/modules/formula_recognition/evaluator.py +77 -0
  677. paddlex/modules/formula_recognition/exportor.py +22 -0
  678. paddlex/modules/formula_recognition/model_list.py +20 -0
  679. paddlex/modules/formula_recognition/trainer.py +121 -0
  680. paddlex/modules/general_recognition/__init__.py +18 -0
  681. paddlex/modules/general_recognition/dataset_checker/__init__.py +107 -0
  682. paddlex/modules/general_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  683. paddlex/modules/general_recognition/dataset_checker/dataset_src/analyse_dataset.py +98 -0
  684. paddlex/modules/general_recognition/dataset_checker/dataset_src/check_dataset.py +100 -0
  685. paddlex/modules/general_recognition/dataset_checker/dataset_src/convert_dataset.py +99 -0
  686. paddlex/modules/general_recognition/dataset_checker/dataset_src/split_dataset.py +82 -0
  687. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/__init__.py +13 -0
  688. paddlex/modules/general_recognition/dataset_checker/dataset_src/utils/visualizer.py +150 -0
  689. paddlex/modules/general_recognition/evaluator.py +31 -0
  690. paddlex/modules/general_recognition/exportor.py +22 -0
  691. paddlex/modules/general_recognition/model_list.py +19 -0
  692. paddlex/modules/general_recognition/trainer.py +52 -0
  693. paddlex/modules/image_classification/__init__.py +18 -0
  694. paddlex/modules/image_classification/dataset_checker/__init__.py +104 -0
  695. paddlex/modules/image_classification/dataset_checker/dataset_src/__init__.py +19 -0
  696. paddlex/modules/image_classification/dataset_checker/dataset_src/analyse_dataset.py +93 -0
  697. paddlex/modules/image_classification/dataset_checker/dataset_src/check_dataset.py +131 -0
  698. paddlex/modules/image_classification/dataset_checker/dataset_src/convert_dataset.py +51 -0
  699. paddlex/modules/image_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  700. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  701. paddlex/modules/image_classification/dataset_checker/dataset_src/utils/visualizer.py +156 -0
  702. paddlex/modules/image_classification/evaluator.py +43 -0
  703. paddlex/modules/image_classification/exportor.py +22 -0
  704. paddlex/modules/image_classification/model_list.py +99 -0
  705. paddlex/modules/image_classification/trainer.py +82 -0
  706. paddlex/modules/image_unwarping/__init__.py +13 -0
  707. paddlex/modules/image_unwarping/model_list.py +17 -0
  708. paddlex/modules/instance_segmentation/__init__.py +18 -0
  709. paddlex/modules/instance_segmentation/dataset_checker/__init__.py +108 -0
  710. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  711. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/analyse_dataset.py +78 -0
  712. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/check_dataset.py +92 -0
  713. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/convert_dataset.py +241 -0
  714. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/split_dataset.py +119 -0
  715. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  716. paddlex/modules/instance_segmentation/dataset_checker/dataset_src/utils/visualizer.py +221 -0
  717. paddlex/modules/instance_segmentation/evaluator.py +32 -0
  718. paddlex/modules/instance_segmentation/exportor.py +22 -0
  719. paddlex/modules/instance_segmentation/model_list.py +33 -0
  720. paddlex/modules/instance_segmentation/trainer.py +31 -0
  721. paddlex/modules/keypoint_detection/__init__.py +18 -0
  722. paddlex/modules/keypoint_detection/dataset_checker/__init__.py +56 -0
  723. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/__init__.py +15 -0
  724. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/check_dataset.py +86 -0
  725. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  726. paddlex/modules/keypoint_detection/dataset_checker/dataset_src/utils/visualizer.py +119 -0
  727. paddlex/modules/keypoint_detection/evaluator.py +41 -0
  728. paddlex/modules/keypoint_detection/exportor.py +22 -0
  729. paddlex/modules/keypoint_detection/model_list.py +16 -0
  730. paddlex/modules/keypoint_detection/trainer.py +39 -0
  731. paddlex/modules/multilabel_classification/__init__.py +18 -0
  732. paddlex/modules/multilabel_classification/dataset_checker/__init__.py +106 -0
  733. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/__init__.py +19 -0
  734. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/analyse_dataset.py +95 -0
  735. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/check_dataset.py +131 -0
  736. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/convert_dataset.py +117 -0
  737. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/split_dataset.py +81 -0
  738. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/__init__.py +13 -0
  739. paddlex/modules/multilabel_classification/dataset_checker/dataset_src/utils/visualizer.py +153 -0
  740. paddlex/modules/multilabel_classification/evaluator.py +43 -0
  741. paddlex/modules/multilabel_classification/exportor.py +22 -0
  742. paddlex/modules/multilabel_classification/model_list.py +24 -0
  743. paddlex/modules/multilabel_classification/trainer.py +85 -0
  744. paddlex/modules/multilingual_speech_recognition/__init__.py +18 -0
  745. paddlex/modules/multilingual_speech_recognition/dataset_checker.py +27 -0
  746. paddlex/modules/multilingual_speech_recognition/evaluator.py +27 -0
  747. paddlex/modules/multilingual_speech_recognition/exportor.py +27 -0
  748. paddlex/modules/multilingual_speech_recognition/model_list.py +22 -0
  749. paddlex/modules/multilingual_speech_recognition/trainer.py +40 -0
  750. paddlex/modules/object_detection/__init__.py +18 -0
  751. paddlex/modules/object_detection/dataset_checker/__init__.py +115 -0
  752. paddlex/modules/object_detection/dataset_checker/dataset_src/__init__.py +19 -0
  753. paddlex/modules/object_detection/dataset_checker/dataset_src/analyse_dataset.py +80 -0
  754. paddlex/modules/object_detection/dataset_checker/dataset_src/check_dataset.py +86 -0
  755. paddlex/modules/object_detection/dataset_checker/dataset_src/convert_dataset.py +433 -0
  756. paddlex/modules/object_detection/dataset_checker/dataset_src/split_dataset.py +119 -0
  757. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/__init__.py +13 -0
  758. paddlex/modules/object_detection/dataset_checker/dataset_src/utils/visualizer.py +192 -0
  759. paddlex/modules/object_detection/evaluator.py +52 -0
  760. paddlex/modules/object_detection/exportor.py +22 -0
  761. paddlex/modules/object_detection/model_list.py +84 -0
  762. paddlex/modules/object_detection/trainer.py +99 -0
  763. paddlex/modules/open_vocabulary_detection/__init__.py +18 -0
  764. paddlex/modules/open_vocabulary_detection/dataset_checker.py +29 -0
  765. paddlex/modules/open_vocabulary_detection/evaluator.py +29 -0
  766. paddlex/modules/open_vocabulary_detection/exportor.py +29 -0
  767. paddlex/modules/open_vocabulary_detection/model_list.py +18 -0
  768. paddlex/modules/open_vocabulary_detection/trainer.py +42 -0
  769. paddlex/modules/open_vocabulary_segmentation/__init__.py +18 -0
  770. paddlex/modules/open_vocabulary_segmentation/dataset_checker.py +29 -0
  771. paddlex/modules/open_vocabulary_segmentation/evaluator.py +29 -0
  772. paddlex/modules/open_vocabulary_segmentation/exportor.py +29 -0
  773. paddlex/modules/open_vocabulary_segmentation/model_list.py +19 -0
  774. paddlex/modules/open_vocabulary_segmentation/trainer.py +42 -0
  775. paddlex/modules/semantic_segmentation/__init__.py +18 -0
  776. paddlex/modules/semantic_segmentation/dataset_checker/__init__.py +110 -0
  777. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/__init__.py +19 -0
  778. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/analyse_dataset.py +73 -0
  779. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/check_dataset.py +80 -0
  780. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/convert_dataset.py +162 -0
  781. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/split_dataset.py +87 -0
  782. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/__init__.py +13 -0
  783. paddlex/modules/semantic_segmentation/dataset_checker/dataset_src/utils/visualizer.py +71 -0
  784. paddlex/modules/semantic_segmentation/evaluator.py +58 -0
  785. paddlex/modules/semantic_segmentation/exportor.py +31 -0
  786. paddlex/modules/semantic_segmentation/model_list.py +37 -0
  787. paddlex/modules/semantic_segmentation/trainer.py +73 -0
  788. paddlex/modules/table_recognition/__init__.py +18 -0
  789. paddlex/modules/table_recognition/dataset_checker/__init__.py +98 -0
  790. paddlex/modules/table_recognition/dataset_checker/dataset_src/__init__.py +18 -0
  791. paddlex/modules/table_recognition/dataset_checker/dataset_src/analyse_dataset.py +58 -0
  792. paddlex/modules/table_recognition/dataset_checker/dataset_src/check_dataset.py +86 -0
  793. paddlex/modules/table_recognition/dataset_checker/dataset_src/split_dataset.py +79 -0
  794. paddlex/modules/table_recognition/evaluator.py +43 -0
  795. paddlex/modules/table_recognition/exportor.py +22 -0
  796. paddlex/modules/table_recognition/model_list.py +21 -0
  797. paddlex/modules/table_recognition/trainer.py +70 -0
  798. paddlex/modules/text_detection/__init__.py +18 -0
  799. paddlex/modules/text_detection/dataset_checker/__init__.py +109 -0
  800. paddlex/modules/text_detection/dataset_checker/dataset_src/__init__.py +18 -0
  801. paddlex/modules/text_detection/dataset_checker/dataset_src/analyse_dataset.py +217 -0
  802. paddlex/modules/text_detection/dataset_checker/dataset_src/check_dataset.py +106 -0
  803. paddlex/modules/text_detection/dataset_checker/dataset_src/split_dataset.py +140 -0
  804. paddlex/modules/text_detection/evaluator.py +41 -0
  805. paddlex/modules/text_detection/exportor.py +22 -0
  806. paddlex/modules/text_detection/model_list.py +24 -0
  807. paddlex/modules/text_detection/trainer.py +68 -0
  808. paddlex/modules/text_recognition/__init__.py +18 -0
  809. paddlex/modules/text_recognition/dataset_checker/__init__.py +126 -0
  810. paddlex/modules/text_recognition/dataset_checker/dataset_src/__init__.py +19 -0
  811. paddlex/modules/text_recognition/dataset_checker/dataset_src/analyse_dataset.py +161 -0
  812. paddlex/modules/text_recognition/dataset_checker/dataset_src/check_dataset.py +107 -0
  813. paddlex/modules/text_recognition/dataset_checker/dataset_src/convert_dataset.py +94 -0
  814. paddlex/modules/text_recognition/dataset_checker/dataset_src/split_dataset.py +81 -0
  815. paddlex/modules/text_recognition/evaluator.py +64 -0
  816. paddlex/modules/text_recognition/exportor.py +22 -0
  817. paddlex/modules/text_recognition/model_list.py +34 -0
  818. paddlex/modules/text_recognition/trainer.py +106 -0
  819. paddlex/modules/ts_anomaly_detection/__init__.py +19 -0
  820. paddlex/modules/ts_anomaly_detection/dataset_checker/__init__.py +112 -0
  821. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/__init__.py +19 -0
  822. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/analyse_dataset.py +27 -0
  823. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/check_dataset.py +64 -0
  824. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/convert_dataset.py +78 -0
  825. paddlex/modules/ts_anomaly_detection/dataset_checker/dataset_src/split_dataset.py +63 -0
  826. paddlex/modules/ts_anomaly_detection/evaluator.py +67 -0
  827. paddlex/modules/ts_anomaly_detection/exportor.py +45 -0
  828. paddlex/modules/ts_anomaly_detection/model_list.py +22 -0
  829. paddlex/modules/ts_anomaly_detection/trainer.py +113 -0
  830. paddlex/modules/ts_classification/__init__.py +19 -0
  831. paddlex/modules/ts_classification/dataset_checker/__init__.py +112 -0
  832. paddlex/modules/ts_classification/dataset_checker/dataset_src/__init__.py +19 -0
  833. paddlex/modules/ts_classification/dataset_checker/dataset_src/analyse_dataset.py +74 -0
  834. paddlex/modules/ts_classification/dataset_checker/dataset_src/check_dataset.py +64 -0
  835. paddlex/modules/ts_classification/dataset_checker/dataset_src/convert_dataset.py +78 -0
  836. paddlex/modules/ts_classification/dataset_checker/dataset_src/split_dataset.py +88 -0
  837. paddlex/modules/ts_classification/evaluator.py +66 -0
  838. paddlex/modules/ts_classification/exportor.py +45 -0
  839. paddlex/modules/ts_classification/model_list.py +18 -0
  840. paddlex/modules/ts_classification/trainer.py +108 -0
  841. paddlex/modules/ts_forecast/__init__.py +19 -0
  842. paddlex/modules/ts_forecast/dataset_checker/__init__.py +112 -0
  843. paddlex/modules/ts_forecast/dataset_checker/dataset_src/__init__.py +19 -0
  844. paddlex/modules/ts_forecast/dataset_checker/dataset_src/analyse_dataset.py +27 -0
  845. paddlex/modules/ts_forecast/dataset_checker/dataset_src/check_dataset.py +64 -0
  846. paddlex/modules/ts_forecast/dataset_checker/dataset_src/convert_dataset.py +77 -0
  847. paddlex/modules/ts_forecast/dataset_checker/dataset_src/split_dataset.py +63 -0
  848. paddlex/modules/ts_forecast/evaluator.py +66 -0
  849. paddlex/modules/ts_forecast/exportor.py +45 -0
  850. paddlex/modules/ts_forecast/model_list.py +24 -0
  851. paddlex/modules/ts_forecast/trainer.py +108 -0
  852. paddlex/modules/video_classification/__init__.py +18 -0
  853. paddlex/modules/video_classification/dataset_checker/__init__.py +93 -0
  854. paddlex/modules/video_classification/dataset_checker/dataset_src/__init__.py +18 -0
  855. paddlex/modules/video_classification/dataset_checker/dataset_src/analyse_dataset.py +93 -0
  856. paddlex/modules/video_classification/dataset_checker/dataset_src/check_dataset.py +121 -0
  857. paddlex/modules/video_classification/dataset_checker/dataset_src/split_dataset.py +82 -0
  858. paddlex/modules/video_classification/evaluator.py +44 -0
  859. paddlex/modules/video_classification/exportor.py +22 -0
  860. paddlex/modules/video_classification/model_list.py +19 -0
  861. paddlex/modules/video_classification/trainer.py +88 -0
  862. paddlex/modules/video_detection/__init__.py +18 -0
  863. paddlex/modules/video_detection/dataset_checker/__init__.py +86 -0
  864. paddlex/modules/video_detection/dataset_checker/dataset_src/__init__.py +17 -0
  865. paddlex/modules/video_detection/dataset_checker/dataset_src/analyse_dataset.py +101 -0
  866. paddlex/modules/video_detection/dataset_checker/dataset_src/check_dataset.py +134 -0
  867. paddlex/modules/video_detection/evaluator.py +42 -0
  868. paddlex/modules/video_detection/exportor.py +22 -0
  869. paddlex/modules/video_detection/model_list.py +15 -0
  870. paddlex/modules/video_detection/trainer.py +82 -0
  871. paddlex/ops/__init__.py +149 -0
  872. paddlex/ops/iou3d_nms/iou3d_cpu.cpp +264 -0
  873. paddlex/ops/iou3d_nms/iou3d_cpu.h +27 -0
  874. paddlex/ops/iou3d_nms/iou3d_nms.cpp +204 -0
  875. paddlex/ops/iou3d_nms/iou3d_nms.h +33 -0
  876. paddlex/ops/iou3d_nms/iou3d_nms_api.cpp +108 -0
  877. paddlex/ops/iou3d_nms/iou3d_nms_kernel.cu +482 -0
  878. paddlex/ops/setup.py +37 -0
  879. paddlex/ops/voxel/voxelize_op.cc +191 -0
  880. paddlex/ops/voxel/voxelize_op.cu +346 -0
  881. paddlex/paddle2onnx_requirements.txt +1 -0
  882. paddlex/paddlex_cli.py +464 -0
  883. paddlex/repo_apis/Paddle3D_api/__init__.py +17 -0
  884. paddlex/repo_apis/Paddle3D_api/bev_fusion/__init__.py +18 -0
  885. paddlex/repo_apis/Paddle3D_api/bev_fusion/config.py +118 -0
  886. paddlex/repo_apis/Paddle3D_api/bev_fusion/model.py +238 -0
  887. paddlex/repo_apis/Paddle3D_api/bev_fusion/register.py +55 -0
  888. paddlex/repo_apis/Paddle3D_api/bev_fusion/runner.py +104 -0
  889. paddlex/repo_apis/Paddle3D_api/pp3d_config.py +144 -0
  890. paddlex/repo_apis/PaddleClas_api/__init__.py +17 -0
  891. paddlex/repo_apis/PaddleClas_api/cls/__init__.py +19 -0
  892. paddlex/repo_apis/PaddleClas_api/cls/config.py +594 -0
  893. paddlex/repo_apis/PaddleClas_api/cls/model.py +355 -0
  894. paddlex/repo_apis/PaddleClas_api/cls/register.py +908 -0
  895. paddlex/repo_apis/PaddleClas_api/cls/runner.py +219 -0
  896. paddlex/repo_apis/PaddleClas_api/shitu_rec/__init__.py +18 -0
  897. paddlex/repo_apis/PaddleClas_api/shitu_rec/config.py +141 -0
  898. paddlex/repo_apis/PaddleClas_api/shitu_rec/model.py +23 -0
  899. paddlex/repo_apis/PaddleClas_api/shitu_rec/register.py +68 -0
  900. paddlex/repo_apis/PaddleClas_api/shitu_rec/runner.py +55 -0
  901. paddlex/repo_apis/PaddleDetection_api/__init__.py +17 -0
  902. paddlex/repo_apis/PaddleDetection_api/config_helper.py +280 -0
  903. paddlex/repo_apis/PaddleDetection_api/instance_seg/__init__.py +18 -0
  904. paddlex/repo_apis/PaddleDetection_api/instance_seg/config.py +458 -0
  905. paddlex/repo_apis/PaddleDetection_api/instance_seg/model.py +403 -0
  906. paddlex/repo_apis/PaddleDetection_api/instance_seg/register.py +263 -0
  907. paddlex/repo_apis/PaddleDetection_api/instance_seg/runner.py +226 -0
  908. paddlex/repo_apis/PaddleDetection_api/object_det/__init__.py +19 -0
  909. paddlex/repo_apis/PaddleDetection_api/object_det/config.py +539 -0
  910. paddlex/repo_apis/PaddleDetection_api/object_det/model.py +430 -0
  911. paddlex/repo_apis/PaddleDetection_api/object_det/official_categories.py +220 -0
  912. paddlex/repo_apis/PaddleDetection_api/object_det/register.py +1106 -0
  913. paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +226 -0
  914. paddlex/repo_apis/PaddleNLP_api/__init__.py +13 -0
  915. paddlex/repo_apis/PaddleOCR_api/__init__.py +21 -0
  916. paddlex/repo_apis/PaddleOCR_api/config_utils.py +53 -0
  917. paddlex/repo_apis/PaddleOCR_api/formula_rec/__init__.py +16 -0
  918. paddlex/repo_apis/PaddleOCR_api/formula_rec/config.py +570 -0
  919. paddlex/repo_apis/PaddleOCR_api/formula_rec/model.py +402 -0
  920. paddlex/repo_apis/PaddleOCR_api/formula_rec/register.py +73 -0
  921. paddlex/repo_apis/PaddleOCR_api/formula_rec/runner.py +240 -0
  922. paddlex/repo_apis/PaddleOCR_api/table_rec/__init__.py +16 -0
  923. paddlex/repo_apis/PaddleOCR_api/table_rec/config.py +64 -0
  924. paddlex/repo_apis/PaddleOCR_api/table_rec/model.py +126 -0
  925. paddlex/repo_apis/PaddleOCR_api/table_rec/register.py +71 -0
  926. paddlex/repo_apis/PaddleOCR_api/table_rec/runner.py +51 -0
  927. paddlex/repo_apis/PaddleOCR_api/text_det/__init__.py +16 -0
  928. paddlex/repo_apis/PaddleOCR_api/text_det/config.py +62 -0
  929. paddlex/repo_apis/PaddleOCR_api/text_det/model.py +72 -0
  930. paddlex/repo_apis/PaddleOCR_api/text_det/register.py +90 -0
  931. paddlex/repo_apis/PaddleOCR_api/text_det/runner.py +53 -0
  932. paddlex/repo_apis/PaddleOCR_api/text_rec/__init__.py +16 -0
  933. paddlex/repo_apis/PaddleOCR_api/text_rec/config.py +563 -0
  934. paddlex/repo_apis/PaddleOCR_api/text_rec/model.py +402 -0
  935. paddlex/repo_apis/PaddleOCR_api/text_rec/register.py +199 -0
  936. paddlex/repo_apis/PaddleOCR_api/text_rec/runner.py +240 -0
  937. paddlex/repo_apis/PaddleSeg_api/__init__.py +16 -0
  938. paddlex/repo_apis/PaddleSeg_api/base_seg_config.py +134 -0
  939. paddlex/repo_apis/PaddleSeg_api/seg/__init__.py +16 -0
  940. paddlex/repo_apis/PaddleSeg_api/seg/config.py +186 -0
  941. paddlex/repo_apis/PaddleSeg_api/seg/model.py +491 -0
  942. paddlex/repo_apis/PaddleSeg_api/seg/register.py +273 -0
  943. paddlex/repo_apis/PaddleSeg_api/seg/runner.py +262 -0
  944. paddlex/repo_apis/PaddleTS_api/__init__.py +19 -0
  945. paddlex/repo_apis/PaddleTS_api/ts_ad/__init__.py +16 -0
  946. paddlex/repo_apis/PaddleTS_api/ts_ad/config.py +89 -0
  947. paddlex/repo_apis/PaddleTS_api/ts_ad/register.py +146 -0
  948. paddlex/repo_apis/PaddleTS_api/ts_ad/runner.py +158 -0
  949. paddlex/repo_apis/PaddleTS_api/ts_base/__init__.py +13 -0
  950. paddlex/repo_apis/PaddleTS_api/ts_base/config.py +246 -0
  951. paddlex/repo_apis/PaddleTS_api/ts_base/model.py +276 -0
  952. paddlex/repo_apis/PaddleTS_api/ts_base/runner.py +158 -0
  953. paddlex/repo_apis/PaddleTS_api/ts_cls/__init__.py +16 -0
  954. paddlex/repo_apis/PaddleTS_api/ts_cls/config.py +73 -0
  955. paddlex/repo_apis/PaddleTS_api/ts_cls/register.py +59 -0
  956. paddlex/repo_apis/PaddleTS_api/ts_cls/runner.py +158 -0
  957. paddlex/repo_apis/PaddleTS_api/ts_fc/__init__.py +16 -0
  958. paddlex/repo_apis/PaddleTS_api/ts_fc/config.py +137 -0
  959. paddlex/repo_apis/PaddleTS_api/ts_fc/register.py +186 -0
  960. paddlex/repo_apis/PaddleVideo_api/__init__.py +17 -0
  961. paddlex/repo_apis/PaddleVideo_api/config_utils.py +51 -0
  962. paddlex/repo_apis/PaddleVideo_api/video_cls/__init__.py +19 -0
  963. paddlex/repo_apis/PaddleVideo_api/video_cls/config.py +547 -0
  964. paddlex/repo_apis/PaddleVideo_api/video_cls/model.py +346 -0
  965. paddlex/repo_apis/PaddleVideo_api/video_cls/register.py +71 -0
  966. paddlex/repo_apis/PaddleVideo_api/video_cls/runner.py +205 -0
  967. paddlex/repo_apis/PaddleVideo_api/video_det/__init__.py +19 -0
  968. paddlex/repo_apis/PaddleVideo_api/video_det/config.py +548 -0
  969. paddlex/repo_apis/PaddleVideo_api/video_det/model.py +298 -0
  970. paddlex/repo_apis/PaddleVideo_api/video_det/register.py +45 -0
  971. paddlex/repo_apis/PaddleVideo_api/video_det/runner.py +200 -0
  972. paddlex/repo_apis/__init__.py +13 -0
  973. paddlex/repo_apis/base/__init__.py +23 -0
  974. paddlex/repo_apis/base/config.py +238 -0
  975. paddlex/repo_apis/base/model.py +571 -0
  976. paddlex/repo_apis/base/register.py +135 -0
  977. paddlex/repo_apis/base/runner.py +391 -0
  978. paddlex/repo_apis/base/utils/__init__.py +13 -0
  979. paddlex/repo_apis/base/utils/arg.py +64 -0
  980. paddlex/repo_apis/base/utils/subprocess.py +107 -0
  981. paddlex/repo_manager/__init__.py +24 -0
  982. paddlex/repo_manager/core.py +271 -0
  983. paddlex/repo_manager/meta.py +170 -0
  984. paddlex/repo_manager/repo.py +415 -0
  985. paddlex/repo_manager/requirements.txt +21 -0
  986. paddlex/repo_manager/utils.py +359 -0
  987. paddlex/serving_requirements.txt +9 -0
  988. paddlex/utils/__init__.py +1 -12
  989. paddlex/utils/cache.py +148 -0
  990. paddlex/utils/config.py +215 -0
  991. paddlex/utils/custom_device_whitelist.py +457 -0
  992. paddlex/utils/device.py +151 -0
  993. paddlex/utils/download.py +168 -182
  994. paddlex/utils/env.py +11 -50
  995. paddlex/utils/errors/__init__.py +17 -0
  996. paddlex/utils/errors/dataset_checker.py +78 -0
  997. paddlex/utils/errors/others.py +152 -0
  998. paddlex/utils/file_interface.py +212 -0
  999. paddlex/utils/flags.py +65 -0
  1000. paddlex/utils/fonts/__init__.py +67 -0
  1001. paddlex/utils/func_register.py +41 -0
  1002. paddlex/utils/interactive_get_pipeline.py +55 -0
  1003. paddlex/utils/lazy_loader.py +68 -0
  1004. paddlex/utils/logging.py +131 -33
  1005. paddlex/utils/misc.py +201 -0
  1006. paddlex/utils/pipeline_arguments.py +711 -0
  1007. paddlex/utils/result_saver.py +59 -0
  1008. paddlex/utils/subclass_register.py +101 -0
  1009. paddlex/version.py +54 -0
  1010. paddlex-3.0.0rc0.dist-info/LICENSE +169 -0
  1011. paddlex-3.0.0rc0.dist-info/METADATA +1035 -0
  1012. paddlex-3.0.0rc0.dist-info/RECORD +1015 -0
  1013. paddlex-3.0.0rc0.dist-info/WHEEL +5 -0
  1014. paddlex-3.0.0rc0.dist-info/entry_points.txt +2 -0
  1015. paddlex-3.0.0rc0.dist-info/top_level.txt +1 -0
  1016. PaddleClas/__init__.py +0 -16
  1017. PaddleClas/deploy/__init__.py +0 -1
  1018. PaddleClas/deploy/paddleserving/__init__.py +0 -0
  1019. PaddleClas/deploy/paddleserving/classification_web_service.py +0 -74
  1020. PaddleClas/deploy/paddleserving/cpu_utilization.py +0 -4
  1021. PaddleClas/deploy/paddleserving/pipeline_http_client.py +0 -20
  1022. PaddleClas/deploy/paddleserving/pipeline_rpc_client.py +0 -33
  1023. PaddleClas/deploy/paddleserving/recognition/__init__.py +0 -0
  1024. PaddleClas/deploy/paddleserving/recognition/pipeline_http_client.py +0 -21
  1025. PaddleClas/deploy/paddleserving/recognition/pipeline_rpc_client.py +0 -34
  1026. PaddleClas/deploy/paddleserving/recognition/recognition_web_service.py +0 -209
  1027. PaddleClas/deploy/python/__init__.py +0 -0
  1028. PaddleClas/deploy/python/build_gallery.py +0 -214
  1029. PaddleClas/deploy/python/det_preprocess.py +0 -205
  1030. PaddleClas/deploy/python/postprocess.py +0 -161
  1031. PaddleClas/deploy/python/predict_cls.py +0 -142
  1032. PaddleClas/deploy/python/predict_det.py +0 -158
  1033. PaddleClas/deploy/python/predict_rec.py +0 -138
  1034. PaddleClas/deploy/python/predict_system.py +0 -144
  1035. PaddleClas/deploy/python/preprocess.py +0 -337
  1036. PaddleClas/deploy/utils/__init__.py +0 -5
  1037. PaddleClas/deploy/utils/config.py +0 -197
  1038. PaddleClas/deploy/utils/draw_bbox.py +0 -61
  1039. PaddleClas/deploy/utils/encode_decode.py +0 -31
  1040. PaddleClas/deploy/utils/get_image_list.py +0 -49
  1041. PaddleClas/deploy/utils/logger.py +0 -120
  1042. PaddleClas/deploy/utils/predictor.py +0 -71
  1043. PaddleClas/deploy/vector_search/__init__.py +0 -1
  1044. PaddleClas/deploy/vector_search/interface.py +0 -272
  1045. PaddleClas/deploy/vector_search/test.py +0 -34
  1046. PaddleClas/hubconf.py +0 -788
  1047. PaddleClas/paddleclas.py +0 -552
  1048. PaddleClas/ppcls/__init__.py +0 -20
  1049. PaddleClas/ppcls/arch/__init__.py +0 -127
  1050. PaddleClas/ppcls/arch/backbone/__init__.py +0 -80
  1051. PaddleClas/ppcls/arch/backbone/base/__init__.py +0 -0
  1052. PaddleClas/ppcls/arch/backbone/base/theseus_layer.py +0 -126
  1053. PaddleClas/ppcls/arch/backbone/legendary_models/__init__.py +0 -6
  1054. PaddleClas/ppcls/arch/backbone/legendary_models/esnet.py +0 -355
  1055. PaddleClas/ppcls/arch/backbone/legendary_models/hrnet.py +0 -744
  1056. PaddleClas/ppcls/arch/backbone/legendary_models/inception_v3.py +0 -539
  1057. PaddleClas/ppcls/arch/backbone/legendary_models/mobilenet_v1.py +0 -234
  1058. PaddleClas/ppcls/arch/backbone/legendary_models/mobilenet_v3.py +0 -561
  1059. PaddleClas/ppcls/arch/backbone/legendary_models/pp_lcnet.py +0 -399
  1060. PaddleClas/ppcls/arch/backbone/legendary_models/resnet.py +0 -534
  1061. PaddleClas/ppcls/arch/backbone/legendary_models/vgg.py +0 -231
  1062. PaddleClas/ppcls/arch/backbone/model_zoo/__init__.py +0 -0
  1063. PaddleClas/ppcls/arch/backbone/model_zoo/alexnet.py +0 -168
  1064. PaddleClas/ppcls/arch/backbone/model_zoo/cspnet.py +0 -376
  1065. PaddleClas/ppcls/arch/backbone/model_zoo/darknet.py +0 -197
  1066. PaddleClas/ppcls/arch/backbone/model_zoo/densenet.py +0 -344
  1067. PaddleClas/ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py +0 -272
  1068. PaddleClas/ppcls/arch/backbone/model_zoo/dla.py +0 -528
  1069. PaddleClas/ppcls/arch/backbone/model_zoo/dpn.py +0 -451
  1070. PaddleClas/ppcls/arch/backbone/model_zoo/efficientnet.py +0 -976
  1071. PaddleClas/ppcls/arch/backbone/model_zoo/ghostnet.py +0 -363
  1072. PaddleClas/ppcls/arch/backbone/model_zoo/googlenet.py +0 -229
  1073. PaddleClas/ppcls/arch/backbone/model_zoo/gvt.py +0 -693
  1074. PaddleClas/ppcls/arch/backbone/model_zoo/hardnet.py +0 -293
  1075. PaddleClas/ppcls/arch/backbone/model_zoo/inception_v4.py +0 -477
  1076. PaddleClas/ppcls/arch/backbone/model_zoo/levit.py +0 -589
  1077. PaddleClas/ppcls/arch/backbone/model_zoo/mixnet.py +0 -815
  1078. PaddleClas/ppcls/arch/backbone/model_zoo/mobilenet_v2.py +0 -287
  1079. PaddleClas/ppcls/arch/backbone/model_zoo/rednet.py +0 -203
  1080. PaddleClas/ppcls/arch/backbone/model_zoo/regnet.py +0 -431
  1081. PaddleClas/ppcls/arch/backbone/model_zoo/repvgg.py +0 -422
  1082. PaddleClas/ppcls/arch/backbone/model_zoo/res2net.py +0 -264
  1083. PaddleClas/ppcls/arch/backbone/model_zoo/res2net_vd.py +0 -305
  1084. PaddleClas/ppcls/arch/backbone/model_zoo/resnest.py +0 -740
  1085. PaddleClas/ppcls/arch/backbone/model_zoo/resnet_vc.py +0 -309
  1086. PaddleClas/ppcls/arch/backbone/model_zoo/resnext.py +0 -298
  1087. PaddleClas/ppcls/arch/backbone/model_zoo/resnext101_wsl.py +0 -490
  1088. PaddleClas/ppcls/arch/backbone/model_zoo/resnext_vd.py +0 -317
  1089. PaddleClas/ppcls/arch/backbone/model_zoo/rexnet.py +0 -281
  1090. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnet_vd.py +0 -390
  1091. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnext.py +0 -364
  1092. PaddleClas/ppcls/arch/backbone/model_zoo/se_resnext_vd.py +0 -309
  1093. PaddleClas/ppcls/arch/backbone/model_zoo/shufflenet_v2.py +0 -362
  1094. PaddleClas/ppcls/arch/backbone/model_zoo/squeezenet.py +0 -194
  1095. PaddleClas/ppcls/arch/backbone/model_zoo/swin_transformer.py +0 -857
  1096. PaddleClas/ppcls/arch/backbone/model_zoo/tnt.py +0 -385
  1097. PaddleClas/ppcls/arch/backbone/model_zoo/vision_transformer.py +0 -495
  1098. PaddleClas/ppcls/arch/backbone/model_zoo/xception.py +0 -377
  1099. PaddleClas/ppcls/arch/backbone/model_zoo/xception_deeplab.py +0 -421
  1100. PaddleClas/ppcls/arch/backbone/variant_models/__init__.py +0 -3
  1101. PaddleClas/ppcls/arch/backbone/variant_models/pp_lcnet_variant.py +0 -29
  1102. PaddleClas/ppcls/arch/backbone/variant_models/resnet_variant.py +0 -23
  1103. PaddleClas/ppcls/arch/backbone/variant_models/vgg_variant.py +0 -28
  1104. PaddleClas/ppcls/arch/gears/__init__.py +0 -32
  1105. PaddleClas/ppcls/arch/gears/arcmargin.py +0 -72
  1106. PaddleClas/ppcls/arch/gears/circlemargin.py +0 -59
  1107. PaddleClas/ppcls/arch/gears/cosmargin.py +0 -55
  1108. PaddleClas/ppcls/arch/gears/fc.py +0 -35
  1109. PaddleClas/ppcls/arch/gears/identity_head.py +0 -9
  1110. PaddleClas/ppcls/arch/gears/vehicle_neck.py +0 -52
  1111. PaddleClas/ppcls/arch/utils.py +0 -53
  1112. PaddleClas/ppcls/data/__init__.py +0 -144
  1113. PaddleClas/ppcls/data/dataloader/DistributedRandomIdentitySampler.py +0 -90
  1114. PaddleClas/ppcls/data/dataloader/__init__.py +0 -9
  1115. PaddleClas/ppcls/data/dataloader/common_dataset.py +0 -84
  1116. PaddleClas/ppcls/data/dataloader/dali.py +0 -319
  1117. PaddleClas/ppcls/data/dataloader/icartoon_dataset.py +0 -36
  1118. PaddleClas/ppcls/data/dataloader/imagenet_dataset.py +0 -38
  1119. PaddleClas/ppcls/data/dataloader/logo_dataset.py +0 -46
  1120. PaddleClas/ppcls/data/dataloader/mix_dataset.py +0 -49
  1121. PaddleClas/ppcls/data/dataloader/mix_sampler.py +0 -79
  1122. PaddleClas/ppcls/data/dataloader/multilabel_dataset.py +0 -59
  1123. PaddleClas/ppcls/data/dataloader/pk_sampler.py +0 -105
  1124. PaddleClas/ppcls/data/dataloader/vehicle_dataset.py +0 -138
  1125. PaddleClas/ppcls/data/postprocess/__init__.py +0 -41
  1126. PaddleClas/ppcls/data/postprocess/topk.py +0 -85
  1127. PaddleClas/ppcls/data/preprocess/__init__.py +0 -100
  1128. PaddleClas/ppcls/data/preprocess/batch_ops/__init__.py +0 -1
  1129. PaddleClas/ppcls/data/preprocess/batch_ops/batch_operators.py +0 -231
  1130. PaddleClas/ppcls/data/preprocess/ops/__init__.py +0 -1
  1131. PaddleClas/ppcls/data/preprocess/ops/autoaugment.py +0 -264
  1132. PaddleClas/ppcls/data/preprocess/ops/cutout.py +0 -41
  1133. PaddleClas/ppcls/data/preprocess/ops/fmix.py +0 -217
  1134. PaddleClas/ppcls/data/preprocess/ops/functional.py +0 -138
  1135. PaddleClas/ppcls/data/preprocess/ops/grid.py +0 -89
  1136. PaddleClas/ppcls/data/preprocess/ops/hide_and_seek.py +0 -44
  1137. PaddleClas/ppcls/data/preprocess/ops/operators.py +0 -384
  1138. PaddleClas/ppcls/data/preprocess/ops/randaugment.py +0 -106
  1139. PaddleClas/ppcls/data/preprocess/ops/random_erasing.py +0 -90
  1140. PaddleClas/ppcls/data/preprocess/ops/timm_autoaugment.py +0 -877
  1141. PaddleClas/ppcls/data/utils/__init__.py +0 -13
  1142. PaddleClas/ppcls/data/utils/get_image_list.py +0 -49
  1143. PaddleClas/ppcls/engine/__init__.py +0 -0
  1144. PaddleClas/ppcls/engine/engine.py +0 -436
  1145. PaddleClas/ppcls/engine/evaluation/__init__.py +0 -16
  1146. PaddleClas/ppcls/engine/evaluation/classification.py +0 -143
  1147. PaddleClas/ppcls/engine/evaluation/retrieval.py +0 -169
  1148. PaddleClas/ppcls/engine/slim/__init__.py +0 -16
  1149. PaddleClas/ppcls/engine/slim/prune.py +0 -66
  1150. PaddleClas/ppcls/engine/slim/quant.py +0 -55
  1151. PaddleClas/ppcls/engine/train/__init__.py +0 -14
  1152. PaddleClas/ppcls/engine/train/train.py +0 -79
  1153. PaddleClas/ppcls/engine/train/utils.py +0 -72
  1154. PaddleClas/ppcls/loss/__init__.py +0 -65
  1155. PaddleClas/ppcls/loss/celoss.py +0 -67
  1156. PaddleClas/ppcls/loss/centerloss.py +0 -54
  1157. PaddleClas/ppcls/loss/comfunc.py +0 -45
  1158. PaddleClas/ppcls/loss/deephashloss.py +0 -92
  1159. PaddleClas/ppcls/loss/distanceloss.py +0 -43
  1160. PaddleClas/ppcls/loss/distillationloss.py +0 -141
  1161. PaddleClas/ppcls/loss/dmlloss.py +0 -46
  1162. PaddleClas/ppcls/loss/emlloss.py +0 -97
  1163. PaddleClas/ppcls/loss/googlenetloss.py +0 -41
  1164. PaddleClas/ppcls/loss/msmloss.py +0 -78
  1165. PaddleClas/ppcls/loss/multilabelloss.py +0 -43
  1166. PaddleClas/ppcls/loss/npairsloss.py +0 -38
  1167. PaddleClas/ppcls/loss/pairwisecosface.py +0 -55
  1168. PaddleClas/ppcls/loss/supconloss.py +0 -108
  1169. PaddleClas/ppcls/loss/trihardloss.py +0 -82
  1170. PaddleClas/ppcls/loss/triplet.py +0 -137
  1171. PaddleClas/ppcls/metric/__init__.py +0 -51
  1172. PaddleClas/ppcls/metric/metrics.py +0 -308
  1173. PaddleClas/ppcls/optimizer/__init__.py +0 -72
  1174. PaddleClas/ppcls/optimizer/learning_rate.py +0 -326
  1175. PaddleClas/ppcls/optimizer/optimizer.py +0 -207
  1176. PaddleClas/ppcls/utils/__init__.py +0 -27
  1177. PaddleClas/ppcls/utils/check.py +0 -151
  1178. PaddleClas/ppcls/utils/config.py +0 -210
  1179. PaddleClas/ppcls/utils/download.py +0 -319
  1180. PaddleClas/ppcls/utils/ema.py +0 -63
  1181. PaddleClas/ppcls/utils/logger.py +0 -137
  1182. PaddleClas/ppcls/utils/metrics.py +0 -107
  1183. PaddleClas/ppcls/utils/misc.py +0 -63
  1184. PaddleClas/ppcls/utils/model_zoo.py +0 -213
  1185. PaddleClas/ppcls/utils/profiler.py +0 -111
  1186. PaddleClas/ppcls/utils/save_load.py +0 -136
  1187. PaddleClas/setup.py +0 -58
  1188. PaddleClas/tools/__init__.py +0 -15
  1189. PaddleClas/tools/eval.py +0 -31
  1190. PaddleClas/tools/export_model.py +0 -34
  1191. PaddleClas/tools/infer.py +0 -31
  1192. PaddleClas/tools/train.py +0 -32
  1193. paddlex/cls.py +0 -82
  1194. paddlex/command.py +0 -215
  1195. paddlex/cv/__init__.py +0 -17
  1196. paddlex/cv/datasets/__init__.py +0 -18
  1197. paddlex/cv/datasets/coco.py +0 -208
  1198. paddlex/cv/datasets/imagenet.py +0 -88
  1199. paddlex/cv/datasets/seg_dataset.py +0 -91
  1200. paddlex/cv/datasets/voc.py +0 -445
  1201. paddlex/cv/models/__init__.py +0 -18
  1202. paddlex/cv/models/base.py +0 -631
  1203. paddlex/cv/models/classifier.py +0 -989
  1204. paddlex/cv/models/detector.py +0 -2292
  1205. paddlex/cv/models/load_model.py +0 -148
  1206. paddlex/cv/models/segmenter.py +0 -768
  1207. paddlex/cv/models/slim/__init__.py +0 -13
  1208. paddlex/cv/models/slim/prune.py +0 -55
  1209. paddlex/cv/models/utils/__init__.py +0 -13
  1210. paddlex/cv/models/utils/det_metrics/__init__.py +0 -15
  1211. paddlex/cv/models/utils/det_metrics/coco_utils.py +0 -476
  1212. paddlex/cv/models/utils/det_metrics/metrics.py +0 -220
  1213. paddlex/cv/models/utils/infer_nets.py +0 -45
  1214. paddlex/cv/models/utils/seg_metrics.py +0 -62
  1215. paddlex/cv/models/utils/visualize.py +0 -399
  1216. paddlex/cv/transforms/__init__.py +0 -46
  1217. paddlex/cv/transforms/batch_operators.py +0 -286
  1218. paddlex/cv/transforms/box_utils.py +0 -41
  1219. paddlex/cv/transforms/functions.py +0 -193
  1220. paddlex/cv/transforms/operators.py +0 -1402
  1221. paddlex/deploy.py +0 -268
  1222. paddlex/det.py +0 -49
  1223. paddlex/paddleseg/__init__.py +0 -17
  1224. paddlex/paddleseg/core/__init__.py +0 -20
  1225. paddlex/paddleseg/core/infer.py +0 -289
  1226. paddlex/paddleseg/core/predict.py +0 -145
  1227. paddlex/paddleseg/core/train.py +0 -258
  1228. paddlex/paddleseg/core/val.py +0 -172
  1229. paddlex/paddleseg/cvlibs/__init__.py +0 -17
  1230. paddlex/paddleseg/cvlibs/callbacks.py +0 -279
  1231. paddlex/paddleseg/cvlibs/config.py +0 -359
  1232. paddlex/paddleseg/cvlibs/manager.py +0 -142
  1233. paddlex/paddleseg/cvlibs/param_init.py +0 -91
  1234. paddlex/paddleseg/datasets/__init__.py +0 -21
  1235. paddlex/paddleseg/datasets/ade.py +0 -112
  1236. paddlex/paddleseg/datasets/cityscapes.py +0 -86
  1237. paddlex/paddleseg/datasets/cocostuff.py +0 -79
  1238. paddlex/paddleseg/datasets/dataset.py +0 -164
  1239. paddlex/paddleseg/datasets/mini_deep_globe_road_extraction.py +0 -95
  1240. paddlex/paddleseg/datasets/optic_disc_seg.py +0 -97
  1241. paddlex/paddleseg/datasets/pascal_context.py +0 -80
  1242. paddlex/paddleseg/datasets/voc.py +0 -113
  1243. paddlex/paddleseg/models/__init__.py +0 -39
  1244. paddlex/paddleseg/models/ann.py +0 -436
  1245. paddlex/paddleseg/models/attention_unet.py +0 -189
  1246. paddlex/paddleseg/models/backbones/__init__.py +0 -18
  1247. paddlex/paddleseg/models/backbones/hrnet.py +0 -815
  1248. paddlex/paddleseg/models/backbones/mobilenetv3.py +0 -365
  1249. paddlex/paddleseg/models/backbones/resnet_vd.py +0 -364
  1250. paddlex/paddleseg/models/backbones/xception_deeplab.py +0 -415
  1251. paddlex/paddleseg/models/bisenet.py +0 -311
  1252. paddlex/paddleseg/models/danet.py +0 -220
  1253. paddlex/paddleseg/models/decoupled_segnet.py +0 -233
  1254. paddlex/paddleseg/models/deeplab.py +0 -258
  1255. paddlex/paddleseg/models/dnlnet.py +0 -231
  1256. paddlex/paddleseg/models/emanet.py +0 -219
  1257. paddlex/paddleseg/models/fast_scnn.py +0 -318
  1258. paddlex/paddleseg/models/fcn.py +0 -135
  1259. paddlex/paddleseg/models/gcnet.py +0 -223
  1260. paddlex/paddleseg/models/gscnn.py +0 -357
  1261. paddlex/paddleseg/models/hardnet.py +0 -309
  1262. paddlex/paddleseg/models/isanet.py +0 -202
  1263. paddlex/paddleseg/models/layers/__init__.py +0 -19
  1264. paddlex/paddleseg/models/layers/activation.py +0 -73
  1265. paddlex/paddleseg/models/layers/attention.py +0 -146
  1266. paddlex/paddleseg/models/layers/layer_libs.py +0 -168
  1267. paddlex/paddleseg/models/layers/nonlocal2d.py +0 -155
  1268. paddlex/paddleseg/models/layers/pyramid_pool.py +0 -182
  1269. paddlex/paddleseg/models/losses/__init__.py +0 -27
  1270. paddlex/paddleseg/models/losses/binary_cross_entropy_loss.py +0 -174
  1271. paddlex/paddleseg/models/losses/bootstrapped_cross_entropy.py +0 -73
  1272. paddlex/paddleseg/models/losses/cross_entropy_loss.py +0 -94
  1273. paddlex/paddleseg/models/losses/decoupledsegnet_relax_boundary_loss.py +0 -129
  1274. paddlex/paddleseg/models/losses/dice_loss.py +0 -61
  1275. paddlex/paddleseg/models/losses/edge_attention_loss.py +0 -78
  1276. paddlex/paddleseg/models/losses/gscnn_dual_task_loss.py +0 -141
  1277. paddlex/paddleseg/models/losses/l1_loss.py +0 -76
  1278. paddlex/paddleseg/models/losses/lovasz_loss.py +0 -222
  1279. paddlex/paddleseg/models/losses/mean_square_error_loss.py +0 -65
  1280. paddlex/paddleseg/models/losses/mixed_loss.py +0 -58
  1281. paddlex/paddleseg/models/losses/ohem_cross_entropy_loss.py +0 -99
  1282. paddlex/paddleseg/models/losses/ohem_edge_attention_loss.py +0 -114
  1283. paddlex/paddleseg/models/ocrnet.py +0 -248
  1284. paddlex/paddleseg/models/pspnet.py +0 -147
  1285. paddlex/paddleseg/models/sfnet.py +0 -236
  1286. paddlex/paddleseg/models/shufflenet_slim.py +0 -268
  1287. paddlex/paddleseg/models/u2net.py +0 -574
  1288. paddlex/paddleseg/models/unet.py +0 -155
  1289. paddlex/paddleseg/models/unet_3plus.py +0 -316
  1290. paddlex/paddleseg/models/unet_plusplus.py +0 -237
  1291. paddlex/paddleseg/transforms/__init__.py +0 -16
  1292. paddlex/paddleseg/transforms/functional.py +0 -161
  1293. paddlex/paddleseg/transforms/transforms.py +0 -937
  1294. paddlex/paddleseg/utils/__init__.py +0 -22
  1295. paddlex/paddleseg/utils/config_check.py +0 -60
  1296. paddlex/paddleseg/utils/download.py +0 -163
  1297. paddlex/paddleseg/utils/env/__init__.py +0 -16
  1298. paddlex/paddleseg/utils/env/seg_env.py +0 -56
  1299. paddlex/paddleseg/utils/env/sys_env.py +0 -122
  1300. paddlex/paddleseg/utils/logger.py +0 -48
  1301. paddlex/paddleseg/utils/metrics.py +0 -146
  1302. paddlex/paddleseg/utils/progbar.py +0 -212
  1303. paddlex/paddleseg/utils/timer.py +0 -53
  1304. paddlex/paddleseg/utils/utils.py +0 -120
  1305. paddlex/paddleseg/utils/visualize.py +0 -90
  1306. paddlex/ppcls/__init__.py +0 -20
  1307. paddlex/ppcls/arch/__init__.py +0 -127
  1308. paddlex/ppcls/arch/backbone/__init__.py +0 -80
  1309. paddlex/ppcls/arch/backbone/base/__init__.py +0 -0
  1310. paddlex/ppcls/arch/backbone/base/theseus_layer.py +0 -130
  1311. paddlex/ppcls/arch/backbone/legendary_models/__init__.py +0 -6
  1312. paddlex/ppcls/arch/backbone/legendary_models/esnet.py +0 -355
  1313. paddlex/ppcls/arch/backbone/legendary_models/hrnet.py +0 -748
  1314. paddlex/ppcls/arch/backbone/legendary_models/inception_v3.py +0 -539
  1315. paddlex/ppcls/arch/backbone/legendary_models/mobilenet_v1.py +0 -234
  1316. paddlex/ppcls/arch/backbone/legendary_models/mobilenet_v3.py +0 -561
  1317. paddlex/ppcls/arch/backbone/legendary_models/pp_lcnet.py +0 -399
  1318. paddlex/ppcls/arch/backbone/legendary_models/resnet.py +0 -534
  1319. paddlex/ppcls/arch/backbone/legendary_models/vgg.py +0 -235
  1320. paddlex/ppcls/arch/backbone/model_zoo/__init__.py +0 -0
  1321. paddlex/ppcls/arch/backbone/model_zoo/alexnet.py +0 -168
  1322. paddlex/ppcls/arch/backbone/model_zoo/cspnet.py +0 -376
  1323. paddlex/ppcls/arch/backbone/model_zoo/darknet.py +0 -197
  1324. paddlex/ppcls/arch/backbone/model_zoo/densenet.py +0 -344
  1325. paddlex/ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py +0 -272
  1326. paddlex/ppcls/arch/backbone/model_zoo/dla.py +0 -528
  1327. paddlex/ppcls/arch/backbone/model_zoo/dpn.py +0 -451
  1328. paddlex/ppcls/arch/backbone/model_zoo/efficientnet.py +0 -976
  1329. paddlex/ppcls/arch/backbone/model_zoo/ghostnet.py +0 -363
  1330. paddlex/ppcls/arch/backbone/model_zoo/googlenet.py +0 -229
  1331. paddlex/ppcls/arch/backbone/model_zoo/gvt.py +0 -693
  1332. paddlex/ppcls/arch/backbone/model_zoo/hardnet.py +0 -293
  1333. paddlex/ppcls/arch/backbone/model_zoo/inception_v4.py +0 -477
  1334. paddlex/ppcls/arch/backbone/model_zoo/levit.py +0 -589
  1335. paddlex/ppcls/arch/backbone/model_zoo/mixnet.py +0 -815
  1336. paddlex/ppcls/arch/backbone/model_zoo/mobilenet_v2.py +0 -287
  1337. paddlex/ppcls/arch/backbone/model_zoo/rednet.py +0 -203
  1338. paddlex/ppcls/arch/backbone/model_zoo/regnet.py +0 -431
  1339. paddlex/ppcls/arch/backbone/model_zoo/repvgg.py +0 -422
  1340. paddlex/ppcls/arch/backbone/model_zoo/res2net.py +0 -264
  1341. paddlex/ppcls/arch/backbone/model_zoo/res2net_vd.py +0 -305
  1342. paddlex/ppcls/arch/backbone/model_zoo/resnest.py +0 -740
  1343. paddlex/ppcls/arch/backbone/model_zoo/resnet_vc.py +0 -309
  1344. paddlex/ppcls/arch/backbone/model_zoo/resnext.py +0 -298
  1345. paddlex/ppcls/arch/backbone/model_zoo/resnext101_wsl.py +0 -490
  1346. paddlex/ppcls/arch/backbone/model_zoo/resnext_vd.py +0 -317
  1347. paddlex/ppcls/arch/backbone/model_zoo/rexnet.py +0 -281
  1348. paddlex/ppcls/arch/backbone/model_zoo/se_resnet_vd.py +0 -390
  1349. paddlex/ppcls/arch/backbone/model_zoo/se_resnext.py +0 -364
  1350. paddlex/ppcls/arch/backbone/model_zoo/se_resnext_vd.py +0 -309
  1351. paddlex/ppcls/arch/backbone/model_zoo/shufflenet_v2.py +0 -362
  1352. paddlex/ppcls/arch/backbone/model_zoo/squeezenet.py +0 -194
  1353. paddlex/ppcls/arch/backbone/model_zoo/swin_transformer.py +0 -857
  1354. paddlex/ppcls/arch/backbone/model_zoo/tnt.py +0 -385
  1355. paddlex/ppcls/arch/backbone/model_zoo/vision_transformer.py +0 -495
  1356. paddlex/ppcls/arch/backbone/model_zoo/xception.py +0 -377
  1357. paddlex/ppcls/arch/backbone/model_zoo/xception_deeplab.py +0 -421
  1358. paddlex/ppcls/arch/backbone/variant_models/__init__.py +0 -3
  1359. paddlex/ppcls/arch/backbone/variant_models/pp_lcnet_variant.py +0 -29
  1360. paddlex/ppcls/arch/backbone/variant_models/resnet_variant.py +0 -23
  1361. paddlex/ppcls/arch/backbone/variant_models/vgg_variant.py +0 -28
  1362. paddlex/ppcls/arch/gears/__init__.py +0 -32
  1363. paddlex/ppcls/arch/gears/arcmargin.py +0 -72
  1364. paddlex/ppcls/arch/gears/circlemargin.py +0 -59
  1365. paddlex/ppcls/arch/gears/cosmargin.py +0 -55
  1366. paddlex/ppcls/arch/gears/fc.py +0 -35
  1367. paddlex/ppcls/arch/gears/identity_head.py +0 -9
  1368. paddlex/ppcls/arch/gears/vehicle_neck.py +0 -52
  1369. paddlex/ppcls/arch/utils.py +0 -53
  1370. paddlex/ppcls/data/__init__.py +0 -144
  1371. paddlex/ppcls/data/dataloader/DistributedRandomIdentitySampler.py +0 -90
  1372. paddlex/ppcls/data/dataloader/__init__.py +0 -9
  1373. paddlex/ppcls/data/dataloader/common_dataset.py +0 -84
  1374. paddlex/ppcls/data/dataloader/dali.py +0 -319
  1375. paddlex/ppcls/data/dataloader/icartoon_dataset.py +0 -36
  1376. paddlex/ppcls/data/dataloader/imagenet_dataset.py +0 -38
  1377. paddlex/ppcls/data/dataloader/logo_dataset.py +0 -46
  1378. paddlex/ppcls/data/dataloader/mix_dataset.py +0 -49
  1379. paddlex/ppcls/data/dataloader/mix_sampler.py +0 -79
  1380. paddlex/ppcls/data/dataloader/multilabel_dataset.py +0 -59
  1381. paddlex/ppcls/data/dataloader/pk_sampler.py +0 -105
  1382. paddlex/ppcls/data/dataloader/vehicle_dataset.py +0 -138
  1383. paddlex/ppcls/data/postprocess/__init__.py +0 -41
  1384. paddlex/ppcls/data/postprocess/topk.py +0 -85
  1385. paddlex/ppcls/data/preprocess/__init__.py +0 -100
  1386. paddlex/ppcls/data/preprocess/batch_ops/__init__.py +0 -0
  1387. paddlex/ppcls/data/preprocess/batch_ops/batch_operators.py +0 -231
  1388. paddlex/ppcls/data/preprocess/ops/__init__.py +0 -0
  1389. paddlex/ppcls/data/preprocess/ops/autoaugment.py +0 -264
  1390. paddlex/ppcls/data/preprocess/ops/cutout.py +0 -41
  1391. paddlex/ppcls/data/preprocess/ops/fmix.py +0 -217
  1392. paddlex/ppcls/data/preprocess/ops/functional.py +0 -141
  1393. paddlex/ppcls/data/preprocess/ops/grid.py +0 -89
  1394. paddlex/ppcls/data/preprocess/ops/hide_and_seek.py +0 -44
  1395. paddlex/ppcls/data/preprocess/ops/operators.py +0 -384
  1396. paddlex/ppcls/data/preprocess/ops/randaugment.py +0 -106
  1397. paddlex/ppcls/data/preprocess/ops/random_erasing.py +0 -90
  1398. paddlex/ppcls/data/preprocess/ops/timm_autoaugment.py +0 -877
  1399. paddlex/ppcls/data/utils/__init__.py +0 -13
  1400. paddlex/ppcls/data/utils/get_image_list.py +0 -49
  1401. paddlex/ppcls/engine/__init__.py +0 -0
  1402. paddlex/ppcls/engine/engine.py +0 -436
  1403. paddlex/ppcls/engine/evaluation/__init__.py +0 -16
  1404. paddlex/ppcls/engine/evaluation/classification.py +0 -143
  1405. paddlex/ppcls/engine/evaluation/retrieval.py +0 -169
  1406. paddlex/ppcls/engine/slim/__init__.py +0 -16
  1407. paddlex/ppcls/engine/slim/prune.py +0 -66
  1408. paddlex/ppcls/engine/slim/quant.py +0 -55
  1409. paddlex/ppcls/engine/train/__init__.py +0 -14
  1410. paddlex/ppcls/engine/train/train.py +0 -79
  1411. paddlex/ppcls/engine/train/utils.py +0 -72
  1412. paddlex/ppcls/loss/__init__.py +0 -65
  1413. paddlex/ppcls/loss/celoss.py +0 -67
  1414. paddlex/ppcls/loss/centerloss.py +0 -54
  1415. paddlex/ppcls/loss/comfunc.py +0 -45
  1416. paddlex/ppcls/loss/deephashloss.py +0 -96
  1417. paddlex/ppcls/loss/distanceloss.py +0 -43
  1418. paddlex/ppcls/loss/distillationloss.py +0 -141
  1419. paddlex/ppcls/loss/dmlloss.py +0 -46
  1420. paddlex/ppcls/loss/emlloss.py +0 -97
  1421. paddlex/ppcls/loss/googlenetloss.py +0 -42
  1422. paddlex/ppcls/loss/msmloss.py +0 -78
  1423. paddlex/ppcls/loss/multilabelloss.py +0 -43
  1424. paddlex/ppcls/loss/npairsloss.py +0 -38
  1425. paddlex/ppcls/loss/pairwisecosface.py +0 -59
  1426. paddlex/ppcls/loss/supconloss.py +0 -108
  1427. paddlex/ppcls/loss/trihardloss.py +0 -82
  1428. paddlex/ppcls/loss/triplet.py +0 -137
  1429. paddlex/ppcls/metric/__init__.py +0 -51
  1430. paddlex/ppcls/metric/metrics.py +0 -308
  1431. paddlex/ppcls/optimizer/__init__.py +0 -72
  1432. paddlex/ppcls/optimizer/learning_rate.py +0 -326
  1433. paddlex/ppcls/optimizer/optimizer.py +0 -208
  1434. paddlex/ppcls/utils/__init__.py +0 -27
  1435. paddlex/ppcls/utils/check.py +0 -151
  1436. paddlex/ppcls/utils/config.py +0 -210
  1437. paddlex/ppcls/utils/download.py +0 -319
  1438. paddlex/ppcls/utils/ema.py +0 -63
  1439. paddlex/ppcls/utils/logger.py +0 -137
  1440. paddlex/ppcls/utils/metrics.py +0 -112
  1441. paddlex/ppcls/utils/misc.py +0 -63
  1442. paddlex/ppcls/utils/model_zoo.py +0 -213
  1443. paddlex/ppcls/utils/profiler.py +0 -111
  1444. paddlex/ppcls/utils/save_load.py +0 -136
  1445. paddlex/ppdet/__init__.py +0 -16
  1446. paddlex/ppdet/core/__init__.py +0 -15
  1447. paddlex/ppdet/core/config/__init__.py +0 -13
  1448. paddlex/ppdet/core/config/schema.py +0 -248
  1449. paddlex/ppdet/core/config/yaml_helpers.py +0 -118
  1450. paddlex/ppdet/core/workspace.py +0 -278
  1451. paddlex/ppdet/data/__init__.py +0 -21
  1452. paddlex/ppdet/data/crop_utils/__init__.py +0 -13
  1453. paddlex/ppdet/data/crop_utils/annotation_cropper.py +0 -585
  1454. paddlex/ppdet/data/crop_utils/chip_box_utils.py +0 -170
  1455. paddlex/ppdet/data/reader.py +0 -302
  1456. paddlex/ppdet/data/shm_utils.py +0 -67
  1457. paddlex/ppdet/data/source/__init__.py +0 -29
  1458. paddlex/ppdet/data/source/category.py +0 -904
  1459. paddlex/ppdet/data/source/coco.py +0 -251
  1460. paddlex/ppdet/data/source/dataset.py +0 -197
  1461. paddlex/ppdet/data/source/keypoint_coco.py +0 -669
  1462. paddlex/ppdet/data/source/mot.py +0 -636
  1463. paddlex/ppdet/data/source/sniper_coco.py +0 -191
  1464. paddlex/ppdet/data/source/voc.py +0 -231
  1465. paddlex/ppdet/data/source/widerface.py +0 -180
  1466. paddlex/ppdet/data/transform/__init__.py +0 -28
  1467. paddlex/ppdet/data/transform/atss_assigner.py +0 -270
  1468. paddlex/ppdet/data/transform/autoaugment_utils.py +0 -1591
  1469. paddlex/ppdet/data/transform/batch_operators.py +0 -1080
  1470. paddlex/ppdet/data/transform/gridmask_utils.py +0 -86
  1471. paddlex/ppdet/data/transform/keypoint_operators.py +0 -868
  1472. paddlex/ppdet/data/transform/mot_operators.py +0 -628
  1473. paddlex/ppdet/data/transform/op_helper.py +0 -498
  1474. paddlex/ppdet/data/transform/operators.py +0 -3025
  1475. paddlex/ppdet/engine/__init__.py +0 -30
  1476. paddlex/ppdet/engine/callbacks.py +0 -340
  1477. paddlex/ppdet/engine/env.py +0 -50
  1478. paddlex/ppdet/engine/export_utils.py +0 -177
  1479. paddlex/ppdet/engine/tracker.py +0 -538
  1480. paddlex/ppdet/engine/trainer.py +0 -723
  1481. paddlex/ppdet/metrics/__init__.py +0 -29
  1482. paddlex/ppdet/metrics/coco_utils.py +0 -184
  1483. paddlex/ppdet/metrics/json_results.py +0 -149
  1484. paddlex/ppdet/metrics/keypoint_metrics.py +0 -401
  1485. paddlex/ppdet/metrics/map_utils.py +0 -444
  1486. paddlex/ppdet/metrics/mcmot_metrics.py +0 -470
  1487. paddlex/ppdet/metrics/metrics.py +0 -434
  1488. paddlex/ppdet/metrics/mot_metrics.py +0 -1236
  1489. paddlex/ppdet/metrics/munkres.py +0 -428
  1490. paddlex/ppdet/metrics/widerface_utils.py +0 -393
  1491. paddlex/ppdet/model_zoo/__init__.py +0 -18
  1492. paddlex/ppdet/model_zoo/model_zoo.py +0 -84
  1493. paddlex/ppdet/modeling/__init__.py +0 -45
  1494. paddlex/ppdet/modeling/architectures/__init__.py +0 -51
  1495. paddlex/ppdet/modeling/architectures/blazeface.py +0 -91
  1496. paddlex/ppdet/modeling/architectures/cascade_rcnn.py +0 -144
  1497. paddlex/ppdet/modeling/architectures/centernet.py +0 -108
  1498. paddlex/ppdet/modeling/architectures/deepsort.py +0 -69
  1499. paddlex/ppdet/modeling/architectures/detr.py +0 -93
  1500. paddlex/ppdet/modeling/architectures/fairmot.py +0 -100
  1501. paddlex/ppdet/modeling/architectures/faster_rcnn.py +0 -106
  1502. paddlex/ppdet/modeling/architectures/fcos.py +0 -105
  1503. paddlex/ppdet/modeling/architectures/gfl.py +0 -87
  1504. paddlex/ppdet/modeling/architectures/jde.py +0 -111
  1505. paddlex/ppdet/modeling/architectures/keypoint_hrhrnet.py +0 -287
  1506. paddlex/ppdet/modeling/architectures/keypoint_hrnet.py +0 -267
  1507. paddlex/ppdet/modeling/architectures/mask_rcnn.py +0 -135
  1508. paddlex/ppdet/modeling/architectures/meta_arch.py +0 -128
  1509. paddlex/ppdet/modeling/architectures/picodet.py +0 -91
  1510. paddlex/ppdet/modeling/architectures/s2anet.py +0 -102
  1511. paddlex/ppdet/modeling/architectures/solov2.py +0 -110
  1512. paddlex/ppdet/modeling/architectures/sparse_rcnn.py +0 -99
  1513. paddlex/ppdet/modeling/architectures/ssd.py +0 -93
  1514. paddlex/ppdet/modeling/architectures/tood.py +0 -78
  1515. paddlex/ppdet/modeling/architectures/ttfnet.py +0 -98
  1516. paddlex/ppdet/modeling/architectures/yolo.py +0 -124
  1517. paddlex/ppdet/modeling/assigners/__init__.py +0 -23
  1518. paddlex/ppdet/modeling/assigners/atss_assigner.py +0 -211
  1519. paddlex/ppdet/modeling/assigners/simota_assigner.py +0 -262
  1520. paddlex/ppdet/modeling/assigners/task_aligned_assigner.py +0 -158
  1521. paddlex/ppdet/modeling/assigners/utils.py +0 -195
  1522. paddlex/ppdet/modeling/backbones/__init__.py +0 -49
  1523. paddlex/ppdet/modeling/backbones/blazenet.py +0 -323
  1524. paddlex/ppdet/modeling/backbones/darknet.py +0 -340
  1525. paddlex/ppdet/modeling/backbones/dla.py +0 -244
  1526. paddlex/ppdet/modeling/backbones/esnet.py +0 -290
  1527. paddlex/ppdet/modeling/backbones/ghostnet.py +0 -470
  1528. paddlex/ppdet/modeling/backbones/hardnet.py +0 -224
  1529. paddlex/ppdet/modeling/backbones/hrnet.py +0 -727
  1530. paddlex/ppdet/modeling/backbones/lcnet.py +0 -259
  1531. paddlex/ppdet/modeling/backbones/lite_hrnet.py +0 -886
  1532. paddlex/ppdet/modeling/backbones/mobilenet_v1.py +0 -418
  1533. paddlex/ppdet/modeling/backbones/mobilenet_v3.py +0 -483
  1534. paddlex/ppdet/modeling/backbones/name_adapter.py +0 -69
  1535. paddlex/ppdet/modeling/backbones/res2net.py +0 -358
  1536. paddlex/ppdet/modeling/backbones/resnet.py +0 -613
  1537. paddlex/ppdet/modeling/backbones/senet.py +0 -139
  1538. paddlex/ppdet/modeling/backbones/shufflenet_v2.py +0 -246
  1539. paddlex/ppdet/modeling/backbones/swin_transformer.py +0 -743
  1540. paddlex/ppdet/modeling/backbones/vgg.py +0 -210
  1541. paddlex/ppdet/modeling/bbox_utils.py +0 -778
  1542. paddlex/ppdet/modeling/heads/__init__.py +0 -53
  1543. paddlex/ppdet/modeling/heads/bbox_head.py +0 -377
  1544. paddlex/ppdet/modeling/heads/cascade_head.py +0 -284
  1545. paddlex/ppdet/modeling/heads/centernet_head.py +0 -292
  1546. paddlex/ppdet/modeling/heads/detr_head.py +0 -368
  1547. paddlex/ppdet/modeling/heads/face_head.py +0 -110
  1548. paddlex/ppdet/modeling/heads/fcos_head.py +0 -259
  1549. paddlex/ppdet/modeling/heads/gfl_head.py +0 -487
  1550. paddlex/ppdet/modeling/heads/keypoint_hrhrnet_head.py +0 -108
  1551. paddlex/ppdet/modeling/heads/mask_head.py +0 -250
  1552. paddlex/ppdet/modeling/heads/pico_head.py +0 -278
  1553. paddlex/ppdet/modeling/heads/roi_extractor.py +0 -111
  1554. paddlex/ppdet/modeling/heads/s2anet_head.py +0 -1056
  1555. paddlex/ppdet/modeling/heads/simota_head.py +0 -506
  1556. paddlex/ppdet/modeling/heads/solov2_head.py +0 -560
  1557. paddlex/ppdet/modeling/heads/sparsercnn_head.py +0 -375
  1558. paddlex/ppdet/modeling/heads/ssd_head.py +0 -215
  1559. paddlex/ppdet/modeling/heads/tood_head.py +0 -366
  1560. paddlex/ppdet/modeling/heads/ttf_head.py +0 -316
  1561. paddlex/ppdet/modeling/heads/yolo_head.py +0 -124
  1562. paddlex/ppdet/modeling/initializer.py +0 -317
  1563. paddlex/ppdet/modeling/keypoint_utils.py +0 -342
  1564. paddlex/ppdet/modeling/layers.py +0 -1430
  1565. paddlex/ppdet/modeling/losses/__init__.py +0 -43
  1566. paddlex/ppdet/modeling/losses/ctfocal_loss.py +0 -68
  1567. paddlex/ppdet/modeling/losses/detr_loss.py +0 -233
  1568. paddlex/ppdet/modeling/losses/fairmot_loss.py +0 -41
  1569. paddlex/ppdet/modeling/losses/fcos_loss.py +0 -225
  1570. paddlex/ppdet/modeling/losses/gfocal_loss.py +0 -217
  1571. paddlex/ppdet/modeling/losses/iou_aware_loss.py +0 -47
  1572. paddlex/ppdet/modeling/losses/iou_loss.py +0 -210
  1573. paddlex/ppdet/modeling/losses/jde_loss.py +0 -193
  1574. paddlex/ppdet/modeling/losses/keypoint_loss.py +0 -229
  1575. paddlex/ppdet/modeling/losses/solov2_loss.py +0 -101
  1576. paddlex/ppdet/modeling/losses/sparsercnn_loss.py +0 -425
  1577. paddlex/ppdet/modeling/losses/ssd_loss.py +0 -170
  1578. paddlex/ppdet/modeling/losses/varifocal_loss.py +0 -152
  1579. paddlex/ppdet/modeling/losses/yolo_loss.py +0 -212
  1580. paddlex/ppdet/modeling/mot/__init__.py +0 -25
  1581. paddlex/ppdet/modeling/mot/matching/__init__.py +0 -19
  1582. paddlex/ppdet/modeling/mot/matching/deepsort_matching.py +0 -382
  1583. paddlex/ppdet/modeling/mot/matching/jde_matching.py +0 -144
  1584. paddlex/ppdet/modeling/mot/motion/__init__.py +0 -17
  1585. paddlex/ppdet/modeling/mot/motion/kalman_filter.py +0 -270
  1586. paddlex/ppdet/modeling/mot/tracker/__init__.py +0 -23
  1587. paddlex/ppdet/modeling/mot/tracker/base_jde_tracker.py +0 -297
  1588. paddlex/ppdet/modeling/mot/tracker/base_sde_tracker.py +0 -156
  1589. paddlex/ppdet/modeling/mot/tracker/deepsort_tracker.py +0 -188
  1590. paddlex/ppdet/modeling/mot/tracker/jde_tracker.py +0 -277
  1591. paddlex/ppdet/modeling/mot/utils.py +0 -263
  1592. paddlex/ppdet/modeling/mot/visualization.py +0 -150
  1593. paddlex/ppdet/modeling/necks/__init__.py +0 -30
  1594. paddlex/ppdet/modeling/necks/bifpn.py +0 -302
  1595. paddlex/ppdet/modeling/necks/blazeface_fpn.py +0 -216
  1596. paddlex/ppdet/modeling/necks/centernet_fpn.py +0 -426
  1597. paddlex/ppdet/modeling/necks/csp_pan.py +0 -364
  1598. paddlex/ppdet/modeling/necks/fpn.py +0 -231
  1599. paddlex/ppdet/modeling/necks/hrfpn.py +0 -126
  1600. paddlex/ppdet/modeling/necks/ttf_fpn.py +0 -242
  1601. paddlex/ppdet/modeling/necks/yolo_fpn.py +0 -988
  1602. paddlex/ppdet/modeling/ops.py +0 -1611
  1603. paddlex/ppdet/modeling/post_process.py +0 -731
  1604. paddlex/ppdet/modeling/proposal_generator/__init__.py +0 -2
  1605. paddlex/ppdet/modeling/proposal_generator/anchor_generator.py +0 -135
  1606. paddlex/ppdet/modeling/proposal_generator/proposal_generator.py +0 -77
  1607. paddlex/ppdet/modeling/proposal_generator/rpn_head.py +0 -260
  1608. paddlex/ppdet/modeling/proposal_generator/target.py +0 -681
  1609. paddlex/ppdet/modeling/proposal_generator/target_layer.py +0 -491
  1610. paddlex/ppdet/modeling/reid/__init__.py +0 -25
  1611. paddlex/ppdet/modeling/reid/fairmot_embedding_head.py +0 -225
  1612. paddlex/ppdet/modeling/reid/jde_embedding_head.py +0 -214
  1613. paddlex/ppdet/modeling/reid/pplcnet_embedding.py +0 -282
  1614. paddlex/ppdet/modeling/reid/pyramidal_embedding.py +0 -144
  1615. paddlex/ppdet/modeling/reid/resnet.py +0 -310
  1616. paddlex/ppdet/modeling/shape_spec.py +0 -25
  1617. paddlex/ppdet/modeling/transformers/__init__.py +0 -25
  1618. paddlex/ppdet/modeling/transformers/deformable_transformer.py +0 -517
  1619. paddlex/ppdet/modeling/transformers/detr_transformer.py +0 -353
  1620. paddlex/ppdet/modeling/transformers/matchers.py +0 -127
  1621. paddlex/ppdet/modeling/transformers/position_encoding.py +0 -108
  1622. paddlex/ppdet/modeling/transformers/utils.py +0 -110
  1623. paddlex/ppdet/optimizer.py +0 -335
  1624. paddlex/ppdet/slim/__init__.py +0 -82
  1625. paddlex/ppdet/slim/distill.py +0 -110
  1626. paddlex/ppdet/slim/prune.py +0 -85
  1627. paddlex/ppdet/slim/quant.py +0 -84
  1628. paddlex/ppdet/slim/unstructured_prune.py +0 -66
  1629. paddlex/ppdet/utils/__init__.py +0 -13
  1630. paddlex/ppdet/utils/check.py +0 -112
  1631. paddlex/ppdet/utils/checkpoint.py +0 -226
  1632. paddlex/ppdet/utils/cli.py +0 -151
  1633. paddlex/ppdet/utils/colormap.py +0 -58
  1634. paddlex/ppdet/utils/download.py +0 -558
  1635. paddlex/ppdet/utils/logger.py +0 -70
  1636. paddlex/ppdet/utils/profiler.py +0 -111
  1637. paddlex/ppdet/utils/stats.py +0 -94
  1638. paddlex/ppdet/utils/visualizer.py +0 -321
  1639. paddlex/ppdet/utils/voc_utils.py +0 -86
  1640. paddlex/seg.py +0 -41
  1641. paddlex/tools/__init__.py +0 -17
  1642. paddlex/tools/anchor_clustering/__init__.py +0 -15
  1643. paddlex/tools/anchor_clustering/yolo_cluster.py +0 -178
  1644. paddlex/tools/convert.py +0 -52
  1645. paddlex/tools/dataset_conversion/__init__.py +0 -24
  1646. paddlex/tools/dataset_conversion/x2coco.py +0 -379
  1647. paddlex/tools/dataset_conversion/x2imagenet.py +0 -82
  1648. paddlex/tools/dataset_conversion/x2seg.py +0 -343
  1649. paddlex/tools/dataset_conversion/x2voc.py +0 -230
  1650. paddlex/tools/dataset_split/__init__.py +0 -23
  1651. paddlex/tools/dataset_split/coco_split.py +0 -69
  1652. paddlex/tools/dataset_split/imagenet_split.py +0 -75
  1653. paddlex/tools/dataset_split/seg_split.py +0 -96
  1654. paddlex/tools/dataset_split/utils.py +0 -75
  1655. paddlex/tools/dataset_split/voc_split.py +0 -91
  1656. paddlex/tools/split.py +0 -41
  1657. paddlex/utils/checkpoint.py +0 -492
  1658. paddlex/utils/shm.py +0 -67
  1659. paddlex/utils/stats.py +0 -68
  1660. paddlex/utils/utils.py +0 -229
  1661. paddlex-2.1.0.data/data/paddlex_restful/restful/templates/paddlex_restful_demo.html +0 -5205
  1662. paddlex-2.1.0.dist-info/LICENSE +0 -201
  1663. paddlex-2.1.0.dist-info/METADATA +0 -32
  1664. paddlex-2.1.0.dist-info/RECORD +0 -698
  1665. paddlex-2.1.0.dist-info/WHEEL +0 -5
  1666. paddlex-2.1.0.dist-info/entry_points.txt +0 -4
  1667. paddlex-2.1.0.dist-info/top_level.txt +0 -3
  1668. paddlex_restful/__init__.py +0 -15
  1669. paddlex_restful/command.py +0 -63
  1670. paddlex_restful/restful/__init__.py +0 -15
  1671. paddlex_restful/restful/app.py +0 -969
  1672. paddlex_restful/restful/dataset/__init__.py +0 -13
  1673. paddlex_restful/restful/dataset/cls_dataset.py +0 -159
  1674. paddlex_restful/restful/dataset/dataset.py +0 -266
  1675. paddlex_restful/restful/dataset/datasetbase.py +0 -86
  1676. paddlex_restful/restful/dataset/det_dataset.py +0 -190
  1677. paddlex_restful/restful/dataset/ins_seg_dataset.py +0 -312
  1678. paddlex_restful/restful/dataset/operate.py +0 -155
  1679. paddlex_restful/restful/dataset/seg_dataset.py +0 -222
  1680. paddlex_restful/restful/dataset/utils.py +0 -267
  1681. paddlex_restful/restful/demo.py +0 -202
  1682. paddlex_restful/restful/dir.py +0 -45
  1683. paddlex_restful/restful/model.py +0 -312
  1684. paddlex_restful/restful/project/__init__.py +0 -13
  1685. paddlex_restful/restful/project/evaluate/__init__.py +0 -13
  1686. paddlex_restful/restful/project/evaluate/classification.py +0 -126
  1687. paddlex_restful/restful/project/evaluate/detection.py +0 -789
  1688. paddlex_restful/restful/project/evaluate/draw_pred_result.py +0 -181
  1689. paddlex_restful/restful/project/evaluate/segmentation.py +0 -122
  1690. paddlex_restful/restful/project/operate.py +0 -931
  1691. paddlex_restful/restful/project/project.py +0 -143
  1692. paddlex_restful/restful/project/prune/__init__.py +0 -13
  1693. paddlex_restful/restful/project/prune/classification.py +0 -32
  1694. paddlex_restful/restful/project/prune/detection.py +0 -48
  1695. paddlex_restful/restful/project/prune/segmentation.py +0 -34
  1696. paddlex_restful/restful/project/task.py +0 -884
  1697. paddlex_restful/restful/project/train/__init__.py +0 -13
  1698. paddlex_restful/restful/project/train/classification.py +0 -141
  1699. paddlex_restful/restful/project/train/detection.py +0 -263
  1700. paddlex_restful/restful/project/train/params.py +0 -432
  1701. paddlex_restful/restful/project/train/params_v2.py +0 -326
  1702. paddlex_restful/restful/project/train/segmentation.py +0 -191
  1703. paddlex_restful/restful/project/visualize.py +0 -244
  1704. paddlex_restful/restful/system.py +0 -102
  1705. paddlex_restful/restful/templates/paddlex_restful_demo.html +0 -5205
  1706. paddlex_restful/restful/utils.py +0 -841
  1707. paddlex_restful/restful/workspace.py +0 -343
  1708. paddlex_restful/restful/workspace_pb2.py +0 -1411
@@ -1,2292 +0,0 @@
1
- # Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from __future__ import absolute_import
16
-
17
- import collections
18
- import copy
19
- import os
20
- import os.path as osp
21
- import numpy as np
22
- import paddle
23
- from paddle.static import InputSpec
24
- import paddlex.ppdet as ppdet
25
- from paddlex.ppdet.modeling.proposal_generator.target_layer import BBoxAssigner, MaskAssigner
26
- import paddlex
27
- import paddlex.utils.logging as logging
28
- from paddlex.cv.transforms.operators import _NormalizeBox, _PadBox, _BboxXYXY2XYWH, Resize, Padding
29
- from paddlex.cv.transforms.batch_operators import BatchCompose, BatchRandomResize, BatchRandomResizeByShort, \
30
- _BatchPadding, _Gt2YoloTarget
31
- from paddlex.cv.transforms import arrange_transforms
32
- from .base import BaseModel
33
- from .utils.det_metrics import VOCMetric, COCOMetric
34
- from paddlex.ppdet.optimizer import ModelEMA
35
- from paddlex.utils.checkpoint import det_pretrain_weights_dict
36
-
37
- __all__ = [
38
- "YOLOv3", "FasterRCNN", "PPYOLO", "PPYOLOTiny", "PPYOLOv2", "MaskRCNN",
39
- "PicoDet"
40
- ]
41
-
42
-
43
- class BaseDetector(BaseModel):
44
- def __init__(self, model_name, num_classes=80, **params):
45
- self.init_params.update(locals())
46
- if 'with_net' in self.init_params:
47
- del self.init_params['with_net']
48
- super(BaseDetector, self).__init__('detector')
49
- if not hasattr(ppdet.modeling, model_name):
50
- raise Exception("ERROR: There's no model named {}.".format(
51
- model_name))
52
-
53
- self.model_name = model_name
54
- self.num_classes = num_classes
55
- self.labels = None
56
- if params.get('with_net', True):
57
- params.pop('with_net', None)
58
- self.net = self.build_net(**params)
59
-
60
- def build_net(self, **params):
61
- with paddle.utils.unique_name.guard():
62
- net = ppdet.modeling.__dict__[self.model_name](**params)
63
- return net
64
-
65
- def _fix_transforms_shape(self, image_shape):
66
- raise NotImplementedError("_fix_transforms_shape: not implemented!")
67
-
68
- def _define_input_spec(self, image_shape):
69
- input_spec = [{
70
- "image": InputSpec(
71
- shape=image_shape, name='image', dtype='float32'),
72
- "im_shape": InputSpec(
73
- shape=[image_shape[0], 2], name='im_shape', dtype='float32'),
74
- "scale_factor": InputSpec(
75
- shape=[image_shape[0], 2],
76
- name='scale_factor',
77
- dtype='float32')
78
- }]
79
- return input_spec
80
-
81
- def _check_image_shape(self, image_shape):
82
- if len(image_shape) == 2:
83
- image_shape = [1, 3] + image_shape
84
- if image_shape[-2] % 32 > 0 or image_shape[-1] % 32 > 0:
85
- raise Exception(
86
- "Height and width in fixed_input_shape must be a multiple of 32, but received {}.".
87
- format(image_shape[-2:]))
88
- return image_shape
89
-
90
- def _get_test_inputs(self, image_shape):
91
- if image_shape is not None:
92
- image_shape = self._check_image_shape(image_shape)
93
- self._fix_transforms_shape(image_shape[-2:])
94
- else:
95
- image_shape = [None, 3, -1, -1]
96
- self.fixed_input_shape = image_shape
97
-
98
- return self._define_input_spec(image_shape)
99
-
100
- def _get_backbone(self, backbone_name, **params):
101
- backbone = getattr(ppdet.modeling, backbone_name)(**params)
102
- return backbone
103
-
104
- def run(self, net, inputs, mode):
105
- net_out = net(inputs)
106
- if mode in ['train', 'eval']:
107
- outputs = net_out
108
- else:
109
- outputs = dict()
110
- for key in net_out:
111
- outputs[key] = net_out[key].numpy()
112
-
113
- return outputs
114
-
115
- def default_optimizer(self,
116
- parameters,
117
- learning_rate,
118
- warmup_steps,
119
- warmup_start_lr,
120
- lr_decay_epochs,
121
- lr_decay_gamma,
122
- num_steps_each_epoch,
123
- reg_coeff=1e-04,
124
- scheduler='Piecewise',
125
- num_epochs=None):
126
- if scheduler.lower() == 'piecewise':
127
- if warmup_steps > 0 and warmup_steps > lr_decay_epochs[
128
- 0] * num_steps_each_epoch:
129
- logging.error(
130
- "In function train(), parameters must satisfy: "
131
- "warmup_steps <= lr_decay_epochs[0] * num_samples_in_train_dataset. "
132
- "See this doc for more information: "
133
- "https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/parameters.md",
134
- exit=False)
135
- logging.error(
136
- "Either `warmup_steps` be less than {} or lr_decay_epochs[0] be greater than {} "
137
- "must be satisfied, please modify 'warmup_steps' or 'lr_decay_epochs' in train function".
138
- format(lr_decay_epochs[0] * num_steps_each_epoch,
139
- warmup_steps // num_steps_each_epoch),
140
- exit=True)
141
- boundaries = [b * num_steps_each_epoch for b in lr_decay_epochs]
142
- values = [(lr_decay_gamma**i) * learning_rate
143
- for i in range(len(lr_decay_epochs) + 1)]
144
- scheduler = paddle.optimizer.lr.PiecewiseDecay(boundaries, values)
145
- elif scheduler.lower() == 'cosine':
146
- if num_epochs is None:
147
- logging.error(
148
- "`num_epochs` must be set while using cosine annealing decay scheduler, but received {}".
149
- format(num_epochs),
150
- exit=False)
151
- if warmup_steps > 0 and warmup_steps > num_epochs * num_steps_each_epoch:
152
- logging.error(
153
- "In function train(), parameters must satisfy: "
154
- "warmup_steps <= num_epochs * num_samples_in_train_dataset. "
155
- "See this doc for more information: "
156
- "https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/parameters.md",
157
- exit=False)
158
- logging.error(
159
- "`warmup_steps` must be less than the total number of steps({}), "
160
- "please modify 'num_epochs' or 'warmup_steps' in train function".
161
- format(num_epochs * num_steps_each_epoch),
162
- exit=True)
163
- T_max = num_epochs * num_steps_each_epoch - warmup_steps
164
- scheduler = paddle.optimizer.lr.CosineAnnealingDecay(
165
- learning_rate=learning_rate,
166
- T_max=T_max,
167
- eta_min=0.0,
168
- last_epoch=-1)
169
- else:
170
- logging.error(
171
- "Invalid learning rate scheduler: {}!".format(scheduler),
172
- exit=True)
173
-
174
- if warmup_steps > 0:
175
- scheduler = paddle.optimizer.lr.LinearWarmup(
176
- learning_rate=scheduler,
177
- warmup_steps=warmup_steps,
178
- start_lr=warmup_start_lr,
179
- end_lr=learning_rate)
180
- optimizer = paddle.optimizer.Momentum(
181
- scheduler,
182
- momentum=.9,
183
- weight_decay=paddle.regularizer.L2Decay(coeff=reg_coeff),
184
- parameters=parameters)
185
- return optimizer
186
-
187
- def train(self,
188
- num_epochs,
189
- train_dataset,
190
- train_batch_size=64,
191
- eval_dataset=None,
192
- optimizer=None,
193
- save_interval_epochs=1,
194
- log_interval_steps=10,
195
- save_dir='output',
196
- pretrain_weights='IMAGENET',
197
- learning_rate=.001,
198
- warmup_steps=0,
199
- warmup_start_lr=0.0,
200
- lr_decay_epochs=(216, 243),
201
- lr_decay_gamma=0.1,
202
- metric=None,
203
- use_ema=False,
204
- early_stop=False,
205
- early_stop_patience=5,
206
- use_vdl=True,
207
- resume_checkpoint=None):
208
- """
209
- Train the model.
210
- Args:
211
- num_epochs(int): The number of epochs.
212
- train_dataset(paddlex.dataset): Training dataset.
213
- train_batch_size(int, optional): Total batch size among all cards used in training. Defaults to 64.
214
- eval_dataset(paddlex.dataset, optional):
215
- Evaluation dataset. If None, the model will not be evaluated during training process. Defaults to None.
216
- optimizer(paddle.optimizer.Optimizer or None, optional):
217
- Optimizer used for training. If None, a default optimizer is used. Defaults to None.
218
- save_interval_epochs(int, optional): Epoch interval for saving the model. Defaults to 1.
219
- log_interval_steps(int, optional): Step interval for printing training information. Defaults to 10.
220
- save_dir(str, optional): Directory to save the model. Defaults to 'output'.
221
- pretrain_weights(str or None, optional):
222
- None or name/path of pretrained weights. If None, no pretrained weights will be loaded. Defaults to 'IMAGENET'.
223
- learning_rate(float, optional): Learning rate for training. Defaults to .001.
224
- warmup_steps(int, optional): The number of steps of warm-up training. Defaults to 0.
225
- warmup_start_lr(float, optional): Start learning rate of warm-up training. Defaults to 0..
226
- lr_decay_epochs(list or tuple, optional): Epoch milestones for learning rate decay. Defaults to (216, 243).
227
- lr_decay_gamma(float, optional): Gamma coefficient of learning rate decay. Defaults to .1.
228
- metric({'VOC', 'COCO', None}, optional):
229
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
230
- use_ema(bool, optional): Whether to use exponential moving average strategy. Defaults to False.
231
- early_stop(bool, optional): Whether to adopt early stop strategy. Defaults to False.
232
- early_stop_patience(int, optional): Early stop patience. Defaults to 5.
233
- use_vdl(bool, optional): Whether to use VisualDL to monitor the training process. Defaults to True.
234
- resume_checkpoint(str or None, optional): The path of the checkpoint to resume training from.
235
- If None, no training checkpoint will be resumed. At most one of `resume_checkpoint` and
236
- `pretrain_weights` can be set simultaneously. Defaults to None.
237
- """
238
- if self.status == 'Infer':
239
- logging.error(
240
- "Exported inference model does not support training.",
241
- exit=True)
242
- if pretrain_weights is not None and resume_checkpoint is not None:
243
- logging.error(
244
- "pretrain_weights and resume_checkpoint cannot be set simultaneously.",
245
- exit=True)
246
- if train_dataset.__class__.__name__ == 'VOCDetection':
247
- train_dataset.data_fields = {
248
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
249
- 'difficult'
250
- }
251
- elif train_dataset.__class__.__name__ == 'CocoDetection':
252
- if self.__class__.__name__ == 'MaskRCNN':
253
- train_dataset.data_fields = {
254
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
255
- 'gt_poly', 'is_crowd'
256
- }
257
- else:
258
- train_dataset.data_fields = {
259
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
260
- 'is_crowd'
261
- }
262
-
263
- if metric is None:
264
- if eval_dataset.__class__.__name__ == 'VOCDetection':
265
- self.metric = 'voc'
266
- elif eval_dataset.__class__.__name__ == 'CocoDetection':
267
- self.metric = 'coco'
268
- else:
269
- assert metric.lower() in ['coco', 'voc'], \
270
- "Evaluation metric {} is not supported, please choose form 'COCO' and 'VOC'"
271
- self.metric = metric.lower()
272
-
273
- self.labels = train_dataset.labels
274
- self.num_max_boxes = train_dataset.num_max_boxes
275
- train_dataset.batch_transforms = self._compose_batch_transform(
276
- train_dataset.transforms, mode='train')
277
-
278
- # build optimizer if not defined
279
- if optimizer is None:
280
- num_steps_each_epoch = len(train_dataset) // train_batch_size
281
- self.optimizer = self.default_optimizer(
282
- parameters=self.net.parameters(),
283
- learning_rate=learning_rate,
284
- warmup_steps=warmup_steps,
285
- warmup_start_lr=warmup_start_lr,
286
- lr_decay_epochs=lr_decay_epochs,
287
- lr_decay_gamma=lr_decay_gamma,
288
- num_steps_each_epoch=num_steps_each_epoch)
289
- else:
290
- self.optimizer = optimizer
291
-
292
- # initiate weights
293
- if pretrain_weights is not None and not osp.exists(pretrain_weights):
294
- if pretrain_weights not in det_pretrain_weights_dict['_'.join(
295
- [self.model_name, self.backbone_name])]:
296
- logging.warning(
297
- "Path of pretrain_weights('{}') does not exist!".format(
298
- pretrain_weights))
299
- pretrain_weights = det_pretrain_weights_dict['_'.join(
300
- [self.model_name, self.backbone_name])][0]
301
- logging.warning("Pretrain_weights is forcibly set to '{}'. "
302
- "If you don't want to use pretrain weights, "
303
- "set pretrain_weights to be None.".format(
304
- pretrain_weights))
305
- elif pretrain_weights is not None and osp.exists(pretrain_weights):
306
- if osp.splitext(pretrain_weights)[-1] != '.pdparams':
307
- logging.error(
308
- "Invalid pretrain weights. Please specify a '.pdparams' file.",
309
- exit=True)
310
- pretrained_dir = osp.join(save_dir, 'pretrain')
311
- self.net_initialize(
312
- pretrain_weights=pretrain_weights,
313
- save_dir=pretrained_dir,
314
- resume_checkpoint=resume_checkpoint,
315
- is_backbone_weights=(pretrain_weights == 'IMAGENET' and
316
- 'ESNet_' in self.backbone_name))
317
-
318
- if use_ema:
319
- ema = ModelEMA(model=self.net, decay=.9998, use_thres_step=True)
320
- else:
321
- ema = None
322
- # start train loop
323
- self.train_loop(
324
- num_epochs=num_epochs,
325
- train_dataset=train_dataset,
326
- train_batch_size=train_batch_size,
327
- eval_dataset=eval_dataset,
328
- save_interval_epochs=save_interval_epochs,
329
- log_interval_steps=log_interval_steps,
330
- save_dir=save_dir,
331
- ema=ema,
332
- early_stop=early_stop,
333
- early_stop_patience=early_stop_patience,
334
- use_vdl=use_vdl)
335
-
336
- def quant_aware_train(self,
337
- num_epochs,
338
- train_dataset,
339
- train_batch_size=64,
340
- eval_dataset=None,
341
- optimizer=None,
342
- save_interval_epochs=1,
343
- log_interval_steps=10,
344
- save_dir='output',
345
- learning_rate=.00001,
346
- warmup_steps=0,
347
- warmup_start_lr=0.0,
348
- lr_decay_epochs=(216, 243),
349
- lr_decay_gamma=0.1,
350
- metric=None,
351
- use_ema=False,
352
- early_stop=False,
353
- early_stop_patience=5,
354
- use_vdl=True,
355
- resume_checkpoint=None,
356
- quant_config=None):
357
- """
358
- Quantization-aware training.
359
- Args:
360
- num_epochs(int): The number of epochs.
361
- train_dataset(paddlex.dataset): Training dataset.
362
- train_batch_size(int, optional): Total batch size among all cards used in training. Defaults to 64.
363
- eval_dataset(paddlex.dataset, optional):
364
- Evaluation dataset. If None, the model will not be evaluated during training process. Defaults to None.
365
- optimizer(paddle.optimizer.Optimizer or None, optional):
366
- Optimizer used for training. If None, a default optimizer is used. Defaults to None.
367
- save_interval_epochs(int, optional): Epoch interval for saving the model. Defaults to 1.
368
- log_interval_steps(int, optional): Step interval for printing training information. Defaults to 10.
369
- save_dir(str, optional): Directory to save the model. Defaults to 'output'.
370
- learning_rate(float, optional): Learning rate for training. Defaults to .001.
371
- warmup_steps(int, optional): The number of steps of warm-up training. Defaults to 0.
372
- warmup_start_lr(float, optional): Start learning rate of warm-up training. Defaults to 0..
373
- lr_decay_epochs(list or tuple, optional): Epoch milestones for learning rate decay. Defaults to (216, 243).
374
- lr_decay_gamma(float, optional): Gamma coefficient of learning rate decay. Defaults to .1.
375
- metric({'VOC', 'COCO', None}, optional):
376
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
377
- use_ema(bool, optional): Whether to use exponential moving average strategy. Defaults to False.
378
- early_stop(bool, optional): Whether to adopt early stop strategy. Defaults to False.
379
- early_stop_patience(int, optional): Early stop patience. Defaults to 5.
380
- use_vdl(bool, optional): Whether to use VisualDL to monitor the training process. Defaults to True.
381
- quant_config(dict or None, optional): Quantization configuration. If None, a default rule of thumb
382
- configuration will be used. Defaults to None.
383
- resume_checkpoint(str or None, optional): The path of the checkpoint to resume quantization-aware training
384
- from. If None, no training checkpoint will be resumed. Defaults to None.
385
- """
386
- self._prepare_qat(quant_config)
387
- self.train(
388
- num_epochs=num_epochs,
389
- train_dataset=train_dataset,
390
- train_batch_size=train_batch_size,
391
- eval_dataset=eval_dataset,
392
- optimizer=optimizer,
393
- save_interval_epochs=save_interval_epochs,
394
- log_interval_steps=log_interval_steps,
395
- save_dir=save_dir,
396
- pretrain_weights=None,
397
- learning_rate=learning_rate,
398
- warmup_steps=warmup_steps,
399
- warmup_start_lr=warmup_start_lr,
400
- lr_decay_epochs=lr_decay_epochs,
401
- lr_decay_gamma=lr_decay_gamma,
402
- metric=metric,
403
- use_ema=use_ema,
404
- early_stop=early_stop,
405
- early_stop_patience=early_stop_patience,
406
- use_vdl=use_vdl,
407
- resume_checkpoint=resume_checkpoint)
408
-
409
- def evaluate(self,
410
- eval_dataset,
411
- batch_size=1,
412
- metric=None,
413
- return_details=False):
414
- """
415
- Evaluate the model.
416
- Args:
417
- eval_dataset(paddlex.dataset): Evaluation dataset.
418
- batch_size(int, optional): Total batch size among all cards used for evaluation. Defaults to 1.
419
- metric({'VOC', 'COCO', None}, optional):
420
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
421
- return_details(bool, optional): Whether to return evaluation details. Defaults to False.
422
- Returns:
423
- collections.OrderedDict with key-value pairs: {"mAP(0.50, 11point)":`mean average precision`}.
424
- """
425
-
426
- if metric is None:
427
- if not hasattr(self, 'metric'):
428
- if eval_dataset.__class__.__name__ == 'VOCDetection':
429
- self.metric = 'voc'
430
- elif eval_dataset.__class__.__name__ == 'CocoDetection':
431
- self.metric = 'coco'
432
- else:
433
- assert metric.lower() in ['coco', 'voc'], \
434
- "Evaluation metric {} is not supported, please choose form 'COCO' and 'VOC'"
435
- self.metric = metric.lower()
436
-
437
- if self.metric == 'voc':
438
- eval_dataset.data_fields = {
439
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
440
- 'difficult'
441
- }
442
- elif self.metric == 'coco':
443
- if self.__class__.__name__ == 'MaskRCNN':
444
- eval_dataset.data_fields = {
445
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
446
- 'gt_poly', 'is_crowd'
447
- }
448
- else:
449
- eval_dataset.data_fields = {
450
- 'im_id', 'image_shape', 'image', 'gt_bbox', 'gt_class',
451
- 'is_crowd'
452
- }
453
- eval_dataset.batch_transforms = self._compose_batch_transform(
454
- eval_dataset.transforms, mode='eval')
455
- arrange_transforms(
456
- model_type=self.model_type,
457
- transforms=eval_dataset.transforms,
458
- mode='eval')
459
-
460
- self.net.eval()
461
- nranks = paddle.distributed.get_world_size()
462
- local_rank = paddle.distributed.get_rank()
463
- if nranks > 1:
464
- # Initialize parallel environment if not done.
465
- if not paddle.distributed.parallel.parallel_helper._is_parallel_ctx_initialized(
466
- ):
467
- paddle.distributed.init_parallel_env()
468
-
469
- if batch_size > 1:
470
- logging.warning(
471
- "Detector only supports single card evaluation with batch_size=1 "
472
- "during evaluation, so batch_size is forcibly set to 1.")
473
- batch_size = 1
474
-
475
- if nranks < 2 or local_rank == 0:
476
- self.eval_data_loader = self.build_data_loader(
477
- eval_dataset, batch_size=batch_size, mode='eval')
478
- is_bbox_normalized = False
479
- if eval_dataset.batch_transforms is not None:
480
- is_bbox_normalized = any(
481
- isinstance(t, _NormalizeBox)
482
- for t in eval_dataset.batch_transforms.batch_transforms)
483
- if self.metric == 'voc':
484
- eval_metric = VOCMetric(
485
- labels=eval_dataset.labels,
486
- coco_gt=copy.deepcopy(eval_dataset.coco_gt),
487
- is_bbox_normalized=is_bbox_normalized,
488
- classwise=False)
489
- else:
490
- eval_metric = COCOMetric(
491
- coco_gt=copy.deepcopy(eval_dataset.coco_gt),
492
- classwise=False)
493
- scores = collections.OrderedDict()
494
- logging.info(
495
- "Start to evaluate(total_samples={}, total_steps={})...".
496
- format(eval_dataset.num_samples, eval_dataset.num_samples))
497
- with paddle.no_grad():
498
- for step, data in enumerate(self.eval_data_loader):
499
- outputs = self.run(self.net, data, 'eval')
500
- eval_metric.update(data, outputs)
501
- eval_metric.accumulate()
502
- self.eval_details = eval_metric.details
503
- scores.update(eval_metric.get())
504
- eval_metric.reset()
505
-
506
- if return_details:
507
- return scores, self.eval_details
508
- return scores
509
-
510
- def predict(self, img_file, transforms=None):
511
- """
512
- Do inference.
513
- Args:
514
- img_file(List[np.ndarray or str], str or np.ndarray):
515
- Image path or decoded image data in a BGR format, which also could constitute a list,
516
- meaning all images to be predicted as a mini-batch.
517
- transforms(paddlex.transforms.Compose or None, optional):
518
- Transforms for inputs. If None, the transforms for evaluation process will be used. Defaults to None.
519
- Returns:
520
- If img_file is a string or np.array, the result is a list of dict with key-value pairs:
521
- {"category_id": `category_id`, "category": `category`, "bbox": `[x, y, w, h]`, "score": `score`}.
522
- If img_file is a list, the result is a list composed of dicts with the corresponding fields:
523
- category_id(int): the predicted category ID. 0 represents the first category in the dataset, and so on.
524
- category(str): category name
525
- bbox(list): bounding box in [x, y, w, h] format
526
- score(str): confidence
527
- mask(dict): Only for instance segmentation task. Mask of the object in RLE format
528
- """
529
- if transforms is None and not hasattr(self, 'test_transforms'):
530
- raise Exception("transforms need to be defined, now is None.")
531
- if transforms is None:
532
- transforms = self.test_transforms
533
- if isinstance(img_file, (str, np.ndarray)):
534
- images = [img_file]
535
- else:
536
- images = img_file
537
-
538
- batch_samples = self._preprocess(images, transforms)
539
- self.net.eval()
540
- outputs = self.run(self.net, batch_samples, 'test')
541
- prediction = self._postprocess(outputs)
542
-
543
- if isinstance(img_file, (str, np.ndarray)):
544
- prediction = prediction[0]
545
- return prediction
546
-
547
- def _preprocess(self, images, transforms, to_tensor=True):
548
- arrange_transforms(
549
- model_type=self.model_type, transforms=transforms, mode='test')
550
- batch_samples = list()
551
- for im in images:
552
- sample = {'image': im}
553
- batch_samples.append(transforms(sample))
554
- batch_transforms = self._compose_batch_transform(transforms, 'test')
555
- batch_samples = batch_transforms(batch_samples)
556
- if to_tensor:
557
- for k in batch_samples:
558
- batch_samples[k] = paddle.to_tensor(batch_samples[k])
559
-
560
- return batch_samples
561
-
562
- def _postprocess(self, batch_pred):
563
- infer_result = {}
564
- if 'bbox' in batch_pred:
565
- bboxes = batch_pred['bbox']
566
- bbox_nums = batch_pred['bbox_num']
567
- det_res = []
568
- k = 0
569
- for i in range(len(bbox_nums)):
570
- det_nums = bbox_nums[i]
571
- for j in range(det_nums):
572
- dt = bboxes[k]
573
- k = k + 1
574
- num_id, score, xmin, ymin, xmax, ymax = dt.tolist()
575
- if int(num_id) < 0:
576
- continue
577
- category = self.labels[int(num_id)]
578
- w = xmax - xmin
579
- h = ymax - ymin
580
- bbox = [xmin, ymin, w, h]
581
- dt_res = {
582
- 'category_id': int(num_id),
583
- 'category': category,
584
- 'bbox': bbox,
585
- 'score': score
586
- }
587
- det_res.append(dt_res)
588
- infer_result['bbox'] = det_res
589
-
590
- if 'mask' in batch_pred:
591
- masks = batch_pred['mask']
592
- bboxes = batch_pred['bbox']
593
- mask_nums = batch_pred['bbox_num']
594
- seg_res = []
595
- k = 0
596
- for i in range(len(mask_nums)):
597
- det_nums = mask_nums[i]
598
- for j in range(det_nums):
599
- mask = masks[k].astype(np.uint8)
600
- score = float(bboxes[k][1])
601
- label = int(bboxes[k][0])
602
- k = k + 1
603
- if label == -1:
604
- continue
605
- category = self.labels[int(label)]
606
- sg_res = {
607
- 'category_id': int(label),
608
- 'category': category,
609
- 'mask': mask.astype('uint8'),
610
- 'score': score
611
- }
612
- seg_res.append(sg_res)
613
- infer_result['mask'] = seg_res
614
-
615
- bbox_num = batch_pred['bbox_num']
616
- results = []
617
- start = 0
618
- for num in bbox_num:
619
- end = start + num
620
- curr_res = infer_result['bbox'][start:end]
621
- if 'mask' in infer_result:
622
- mask_res = infer_result['mask'][start:end]
623
- for box, mask in zip(curr_res, mask_res):
624
- box.update(mask)
625
- results.append(curr_res)
626
- start = end
627
-
628
- return results
629
-
630
-
631
- class PicoDet(BaseDetector):
632
- def __init__(self,
633
- num_classes=80,
634
- backbone='ESNet_m',
635
- nms_score_threshold=.025,
636
- nms_topk=1000,
637
- nms_keep_topk=100,
638
- nms_iou_threshold=.6,
639
- **params):
640
- self.init_params = locals()
641
- if backbone not in {
642
- 'ESNet_s', 'ESNet_m', 'ESNet_l', 'LCNet', 'MobileNetV3',
643
- 'ResNet18_vd'
644
- }:
645
- raise ValueError(
646
- "backbone: {} is not supported. Please choose one of "
647
- "('ESNet_s', 'ESNet_m', 'ESNet_l', 'LCNet', 'MobileNetV3', 'ResNet18_vd')".
648
- format(backbone))
649
- self.backbone_name = backbone
650
- if params.get('with_net', True):
651
- if backbone == 'ESNet_s':
652
- backbone = self._get_backbone(
653
- 'ESNet',
654
- scale=.75,
655
- feature_maps=[4, 11, 14],
656
- act="hard_swish",
657
- channel_ratio=[
658
- 0.875, 0.5, 0.5, 0.5, 0.625, 0.5, 0.625, 0.5, 0.5, 0.5,
659
- 0.5, 0.5, 0.5
660
- ])
661
- neck_out_channels = 96
662
- head_num_convs = 2
663
- elif backbone == 'ESNet_m':
664
- backbone = self._get_backbone(
665
- 'ESNet',
666
- scale=1.0,
667
- feature_maps=[4, 11, 14],
668
- act="hard_swish",
669
- channel_ratio=[
670
- 0.875, 0.5, 1.0, 0.625, 0.5, 0.75, 0.625, 0.625, 0.5,
671
- 0.625, 1.0, 0.625, 0.75
672
- ])
673
- neck_out_channels = 128
674
- head_num_convs = 4
675
- elif backbone == 'ESNet_l':
676
- backbone = self._get_backbone(
677
- 'ESNet',
678
- scale=1.25,
679
- feature_maps=[4, 11, 14],
680
- act="hard_swish",
681
- channel_ratio=[
682
- 0.875, 0.5, 1.0, 0.625, 0.5, 0.75, 0.625, 0.625, 0.5,
683
- 0.625, 1.0, 0.625, 0.75
684
- ])
685
- neck_out_channels = 160
686
- head_num_convs = 4
687
- elif backbone == 'LCNet':
688
- backbone = self._get_backbone(
689
- 'LCNet', scale=1.5, feature_maps=[3, 4, 5])
690
- neck_out_channels = 128
691
- head_num_convs = 4
692
- elif backbone == 'MobileNetV3':
693
- backbone = self._get_backbone(
694
- 'MobileNetV3',
695
- scale=1.0,
696
- with_extra_blocks=False,
697
- extra_block_filters=[],
698
- feature_maps=[7, 13, 16])
699
- neck_out_channels = 128
700
- head_num_convs = 4
701
- else:
702
- backbone = self._get_backbone(
703
- 'ResNet',
704
- depth=18,
705
- variant='d',
706
- return_idx=[1, 2, 3],
707
- freeze_at=-1,
708
- freeze_norm=False,
709
- norm_decay=0.)
710
- neck_out_channels = 128
711
- head_num_convs = 4
712
-
713
- neck = ppdet.modeling.CSPPAN(
714
- in_channels=[i.channels for i in backbone.out_shape],
715
- out_channels=neck_out_channels,
716
- num_features=4,
717
- num_csp_blocks=1,
718
- use_depthwise=True)
719
-
720
- head_conv_feat = ppdet.modeling.PicoFeat(
721
- feat_in=neck_out_channels,
722
- feat_out=neck_out_channels,
723
- num_fpn_stride=4,
724
- num_convs=head_num_convs,
725
- norm_type='bn',
726
- share_cls_reg=True, )
727
- loss_class = ppdet.modeling.VarifocalLoss(
728
- use_sigmoid=True, iou_weighted=True, loss_weight=1.0)
729
- loss_dfl = ppdet.modeling.DistributionFocalLoss(loss_weight=.25)
730
- loss_bbox = ppdet.modeling.GIoULoss(loss_weight=2.0)
731
- assigner = ppdet.modeling.SimOTAAssigner(
732
- candidate_topk=10, iou_weight=6, num_classes=num_classes)
733
- nms = ppdet.modeling.MultiClassNMS(
734
- nms_top_k=nms_topk,
735
- keep_top_k=nms_keep_topk,
736
- score_threshold=nms_score_threshold,
737
- nms_threshold=nms_iou_threshold)
738
- head = ppdet.modeling.PicoHead(
739
- conv_feat=head_conv_feat,
740
- num_classes=num_classes,
741
- fpn_stride=[8, 16, 32, 64],
742
- prior_prob=0.01,
743
- reg_max=7,
744
- cell_offset=.5,
745
- loss_class=loss_class,
746
- loss_dfl=loss_dfl,
747
- loss_bbox=loss_bbox,
748
- assigner=assigner,
749
- feat_in_chan=neck_out_channels,
750
- nms=nms)
751
- params.update({
752
- 'backbone': backbone,
753
- 'neck': neck,
754
- 'head': head,
755
- })
756
- super(PicoDet, self).__init__(
757
- model_name='PicoDet', num_classes=num_classes, **params)
758
-
759
- def _compose_batch_transform(self, transforms, mode='train'):
760
- default_batch_transforms = [_BatchPadding(pad_to_stride=32)]
761
- if mode == 'eval':
762
- collate_batch = True
763
- else:
764
- collate_batch = False
765
-
766
- custom_batch_transforms = []
767
- for i, op in enumerate(transforms.transforms):
768
- if isinstance(op, (BatchRandomResize, BatchRandomResizeByShort)):
769
- if mode != 'train':
770
- raise Exception(
771
- "{} cannot be present in the {} transforms. ".format(
772
- op.__class__.__name__, mode) +
773
- "Please check the {} transforms.".format(mode))
774
- custom_batch_transforms.insert(0, copy.deepcopy(op))
775
-
776
- batch_transforms = BatchCompose(
777
- custom_batch_transforms + default_batch_transforms,
778
- collate_batch=collate_batch)
779
-
780
- return batch_transforms
781
-
782
- def _fix_transforms_shape(self, image_shape):
783
- if getattr(self, 'test_transforms', None):
784
- has_resize_op = False
785
- resize_op_idx = -1
786
- normalize_op_idx = len(self.test_transforms.transforms)
787
- for idx, op in enumerate(self.test_transforms.transforms):
788
- name = op.__class__.__name__
789
- if name == 'Resize':
790
- has_resize_op = True
791
- resize_op_idx = idx
792
- if name == 'Normalize':
793
- normalize_op_idx = idx
794
-
795
- if not has_resize_op:
796
- self.test_transforms.transforms.insert(
797
- normalize_op_idx,
798
- Resize(
799
- target_size=image_shape, interp='CUBIC'))
800
- else:
801
- self.test_transforms.transforms[
802
- resize_op_idx].target_size = image_shape
803
-
804
- def _get_test_inputs(self, image_shape):
805
- if image_shape is not None:
806
- image_shape = self._check_image_shape(image_shape)
807
- self._fix_transforms_shape(image_shape[-2:])
808
- else:
809
- image_shape = [None, 3, 320, 320]
810
- if getattr(self, 'test_transforms', None):
811
- for idx, op in enumerate(self.test_transforms.transforms):
812
- name = op.__class__.__name__
813
- if name == 'Resize':
814
- image_shape = [None, 3] + list(
815
- self.test_transforms.transforms[idx].target_size)
816
- logging.warning(
817
- '[Important!!!] When exporting inference model for {}, '
818
- 'if fixed_input_shape is not set, it will be forcibly set to {}. '
819
- 'Please ensure image shape after transforms is {}, if not, '
820
- 'fixed_input_shape should be specified manually.'
821
- .format(self.__class__.__name__, image_shape, image_shape[1:]))
822
-
823
- self.fixed_input_shape = image_shape
824
- return self._define_input_spec(image_shape)
825
-
826
- def train(self,
827
- num_epochs,
828
- train_dataset,
829
- train_batch_size=64,
830
- eval_dataset=None,
831
- optimizer=None,
832
- save_interval_epochs=1,
833
- log_interval_steps=10,
834
- save_dir='output',
835
- pretrain_weights='IMAGENET',
836
- learning_rate=.001,
837
- warmup_steps=0,
838
- warmup_start_lr=0.0,
839
- lr_decay_epochs=(216, 243),
840
- lr_decay_gamma=0.1,
841
- metric=None,
842
- use_ema=False,
843
- early_stop=False,
844
- early_stop_patience=5,
845
- use_vdl=True,
846
- resume_checkpoint=None):
847
- """
848
- Train the model.
849
- Args:
850
- num_epochs(int): The number of epochs.
851
- train_dataset(paddlex.dataset): Training dataset.
852
- train_batch_size(int, optional): Total batch size among all cards used in training. Defaults to 64.
853
- eval_dataset(paddlex.dataset, optional):
854
- Evaluation dataset. If None, the model will not be evaluated during training process. Defaults to None.
855
- optimizer(paddle.optimizer.Optimizer or None, optional):
856
- Optimizer used for training. If None, a default optimizer is used. Defaults to None.
857
- save_interval_epochs(int, optional): Epoch interval for saving the model. Defaults to 1.
858
- log_interval_steps(int, optional): Step interval for printing training information. Defaults to 10.
859
- save_dir(str, optional): Directory to save the model. Defaults to 'output'.
860
- pretrain_weights(str or None, optional):
861
- None or name/path of pretrained weights. If None, no pretrained weights will be loaded. Defaults to 'IMAGENET'.
862
- learning_rate(float, optional): Learning rate for training. Defaults to .001.
863
- warmup_steps(int, optional): The number of steps of warm-up training. Defaults to 0.
864
- warmup_start_lr(float, optional): Start learning rate of warm-up training. Defaults to 0..
865
- lr_decay_epochs(list or tuple, optional): Epoch milestones for learning rate decay. Defaults to (216, 243).
866
- lr_decay_gamma(float, optional): Gamma coefficient of learning rate decay. Defaults to .1.
867
- metric({'VOC', 'COCO', None}, optional):
868
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
869
- use_ema(bool, optional): Whether to use exponential moving average strategy. Defaults to False.
870
- early_stop(bool, optional): Whether to adopt early stop strategy. Defaults to False.
871
- early_stop_patience(int, optional): Early stop patience. Defaults to 5.
872
- use_vdl(bool, optional): Whether to use VisualDL to monitor the training process. Defaults to True.
873
- resume_checkpoint(str or None, optional): The path of the checkpoint to resume training from.
874
- If None, no training checkpoint will be resumed. At most one of `resume_checkpoint` and
875
- `pretrain_weights` can be set simultaneously. Defaults to None.
876
- """
877
- if optimizer is None:
878
- num_steps_each_epoch = len(train_dataset) // train_batch_size
879
- optimizer = self.default_optimizer(
880
- parameters=self.net.parameters(),
881
- learning_rate=learning_rate,
882
- warmup_steps=warmup_steps,
883
- warmup_start_lr=warmup_start_lr,
884
- lr_decay_epochs=lr_decay_epochs,
885
- lr_decay_gamma=lr_decay_gamma,
886
- num_steps_each_epoch=num_steps_each_epoch,
887
- reg_coeff=4e-05,
888
- scheduler='Cosine',
889
- num_epochs=num_epochs)
890
- super(PicoDet, self).train(
891
- num_epochs=num_epochs,
892
- train_dataset=train_dataset,
893
- train_batch_size=train_batch_size,
894
- eval_dataset=eval_dataset,
895
- optimizer=optimizer,
896
- save_interval_epochs=save_interval_epochs,
897
- log_interval_steps=log_interval_steps,
898
- save_dir=save_dir,
899
- pretrain_weights=pretrain_weights,
900
- learning_rate=learning_rate,
901
- warmup_steps=warmup_steps,
902
- warmup_start_lr=warmup_start_lr,
903
- lr_decay_epochs=lr_decay_epochs,
904
- lr_decay_gamma=lr_decay_gamma,
905
- metric=metric,
906
- use_ema=use_ema,
907
- early_stop=early_stop,
908
- early_stop_patience=early_stop_patience,
909
- use_vdl=use_vdl,
910
- resume_checkpoint=resume_checkpoint)
911
-
912
-
913
- class YOLOv3(BaseDetector):
914
- def __init__(self,
915
- num_classes=80,
916
- backbone='MobileNetV1',
917
- anchors=[[10, 13], [16, 30], [33, 23], [30, 61], [62, 45],
918
- [59, 119], [116, 90], [156, 198], [373, 326]],
919
- anchor_masks=[[6, 7, 8], [3, 4, 5], [0, 1, 2]],
920
- ignore_threshold=0.7,
921
- nms_score_threshold=0.01,
922
- nms_topk=1000,
923
- nms_keep_topk=100,
924
- nms_iou_threshold=0.45,
925
- label_smooth=False,
926
- **params):
927
- self.init_params = locals()
928
- if backbone not in {
929
- 'MobileNetV1', 'MobileNetV1_ssld', 'MobileNetV3',
930
- 'MobileNetV3_ssld', 'DarkNet53', 'ResNet50_vd_dcn', 'ResNet34'
931
- }:
932
- raise ValueError(
933
- "backbone: {} is not supported. Please choose one of "
934
- "('MobileNetV1', 'MobileNetV1_ssld', 'MobileNetV3', 'MobileNetV3_ssld', 'DarkNet53', "
935
- "'ResNet50_vd_dcn', 'ResNet34')".format(backbone))
936
-
937
- self.backbone_name = backbone
938
- if params.get('with_net', True):
939
- if paddlex.env_info['place'] == 'gpu' and paddlex.env_info[
940
- 'num'] > 1 and not os.environ.get('PADDLEX_EXPORT_STAGE'):
941
- norm_type = 'sync_bn'
942
- else:
943
- norm_type = 'bn'
944
-
945
- if 'MobileNetV1' in backbone:
946
- norm_type = 'bn'
947
- backbone = self._get_backbone('MobileNet', norm_type=norm_type)
948
- elif 'MobileNetV3' in backbone:
949
- backbone = self._get_backbone(
950
- 'MobileNetV3',
951
- norm_type=norm_type,
952
- feature_maps=[7, 13, 16])
953
- elif backbone == 'ResNet50_vd_dcn':
954
- backbone = self._get_backbone(
955
- 'ResNet',
956
- norm_type=norm_type,
957
- variant='d',
958
- return_idx=[1, 2, 3],
959
- dcn_v2_stages=[3],
960
- freeze_at=-1,
961
- freeze_norm=False)
962
- elif backbone == 'ResNet34':
963
- backbone = self._get_backbone(
964
- 'ResNet',
965
- depth=34,
966
- norm_type=norm_type,
967
- return_idx=[1, 2, 3],
968
- freeze_at=-1,
969
- freeze_norm=False,
970
- norm_decay=0.)
971
- else:
972
- backbone = self._get_backbone('DarkNet', norm_type=norm_type)
973
-
974
- neck = ppdet.modeling.YOLOv3FPN(
975
- norm_type=norm_type,
976
- in_channels=[i.channels for i in backbone.out_shape])
977
- loss = ppdet.modeling.YOLOv3Loss(
978
- num_classes=num_classes,
979
- ignore_thresh=ignore_threshold,
980
- label_smooth=label_smooth)
981
- yolo_head = ppdet.modeling.YOLOv3Head(
982
- in_channels=[i.channels for i in neck.out_shape],
983
- anchors=anchors,
984
- anchor_masks=anchor_masks,
985
- num_classes=num_classes,
986
- loss=loss)
987
- post_process = ppdet.modeling.BBoxPostProcess(
988
- decode=ppdet.modeling.YOLOBox(num_classes=num_classes),
989
- nms=ppdet.modeling.MultiClassNMS(
990
- score_threshold=nms_score_threshold,
991
- nms_top_k=nms_topk,
992
- keep_top_k=nms_keep_topk,
993
- nms_threshold=nms_iou_threshold))
994
- params.update({
995
- 'backbone': backbone,
996
- 'neck': neck,
997
- 'yolo_head': yolo_head,
998
- 'post_process': post_process
999
- })
1000
- super(YOLOv3, self).__init__(
1001
- model_name='YOLOv3', num_classes=num_classes, **params)
1002
- self.anchors = anchors
1003
- self.anchor_masks = anchor_masks
1004
-
1005
- def _compose_batch_transform(self, transforms, mode='train'):
1006
- if mode == 'train':
1007
- default_batch_transforms = [
1008
- _BatchPadding(pad_to_stride=-1), _NormalizeBox(),
1009
- _PadBox(getattr(self, 'num_max_boxes', 50)), _BboxXYXY2XYWH(),
1010
- _Gt2YoloTarget(
1011
- anchor_masks=self.anchor_masks,
1012
- anchors=self.anchors,
1013
- downsample_ratios=getattr(self, 'downsample_ratios',
1014
- [32, 16, 8]),
1015
- num_classes=self.num_classes)
1016
- ]
1017
- else:
1018
- default_batch_transforms = [_BatchPadding(pad_to_stride=-1)]
1019
- if mode == 'eval' and self.metric == 'voc':
1020
- collate_batch = False
1021
- else:
1022
- collate_batch = True
1023
-
1024
- custom_batch_transforms = []
1025
- for i, op in enumerate(transforms.transforms):
1026
- if isinstance(op, (BatchRandomResize, BatchRandomResizeByShort)):
1027
- if mode != 'train':
1028
- raise Exception(
1029
- "{} cannot be present in the {} transforms. ".format(
1030
- op.__class__.__name__, mode) +
1031
- "Please check the {} transforms.".format(mode))
1032
- custom_batch_transforms.insert(0, copy.deepcopy(op))
1033
-
1034
- batch_transforms = BatchCompose(
1035
- custom_batch_transforms + default_batch_transforms,
1036
- collate_batch=collate_batch)
1037
-
1038
- return batch_transforms
1039
-
1040
- def _fix_transforms_shape(self, image_shape):
1041
- if getattr(self, 'test_transforms', None):
1042
- has_resize_op = False
1043
- resize_op_idx = -1
1044
- normalize_op_idx = len(self.test_transforms.transforms)
1045
- for idx, op in enumerate(self.test_transforms.transforms):
1046
- name = op.__class__.__name__
1047
- if name == 'Resize':
1048
- has_resize_op = True
1049
- resize_op_idx = idx
1050
- if name == 'Normalize':
1051
- normalize_op_idx = idx
1052
-
1053
- if not has_resize_op:
1054
- self.test_transforms.transforms.insert(
1055
- normalize_op_idx,
1056
- Resize(
1057
- target_size=image_shape, interp='CUBIC'))
1058
- else:
1059
- self.test_transforms.transforms[
1060
- resize_op_idx].target_size = image_shape
1061
-
1062
-
1063
- class FasterRCNN(BaseDetector):
1064
- def __init__(self,
1065
- num_classes=80,
1066
- backbone='ResNet50',
1067
- with_fpn=True,
1068
- with_dcn=False,
1069
- aspect_ratios=[0.5, 1.0, 2.0],
1070
- anchor_sizes=[[32], [64], [128], [256], [512]],
1071
- keep_top_k=100,
1072
- nms_threshold=0.5,
1073
- score_threshold=0.05,
1074
- fpn_num_channels=256,
1075
- rpn_batch_size_per_im=256,
1076
- rpn_fg_fraction=0.5,
1077
- test_pre_nms_top_n=None,
1078
- test_post_nms_top_n=1000,
1079
- **params):
1080
- self.init_params = locals()
1081
- if backbone not in {
1082
- 'ResNet50', 'ResNet50_vd', 'ResNet50_vd_ssld', 'ResNet34',
1083
- 'ResNet34_vd', 'ResNet101', 'ResNet101_vd', 'HRNet_W18'
1084
- }:
1085
- raise ValueError(
1086
- "backbone: {} is not supported. Please choose one of "
1087
- "('ResNet50', 'ResNet50_vd', 'ResNet50_vd_ssld', 'ResNet34', 'ResNet34_vd', "
1088
- "'ResNet101', 'ResNet101_vd', 'HRNet_W18')".format(backbone))
1089
- self.backbone_name = backbone
1090
-
1091
- if params.get('with_net', True):
1092
- dcn_v2_stages = [1, 2, 3] if with_dcn else [-1]
1093
- if backbone == 'HRNet_W18':
1094
- if not with_fpn:
1095
- logging.warning(
1096
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1097
- format(backbone))
1098
- with_fpn = True
1099
- if with_dcn:
1100
- logging.warning(
1101
- "Backbone {} should be used along with dcn disabled, 'with_dcn' is forcibly set to False".
1102
- format(backbone))
1103
- backbone = self._get_backbone(
1104
- 'HRNet', width=18, freeze_at=0, return_idx=[0, 1, 2, 3])
1105
- elif backbone == 'ResNet50_vd_ssld':
1106
- if not with_fpn:
1107
- logging.warning(
1108
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1109
- format(backbone))
1110
- with_fpn = True
1111
- backbone = self._get_backbone(
1112
- 'ResNet',
1113
- variant='d',
1114
- norm_type='bn',
1115
- freeze_at=0,
1116
- return_idx=[0, 1, 2, 3],
1117
- num_stages=4,
1118
- lr_mult_list=[0.05, 0.05, 0.1, 0.15],
1119
- dcn_v2_stages=dcn_v2_stages)
1120
- elif 'ResNet50' in backbone:
1121
- if with_fpn:
1122
- backbone = self._get_backbone(
1123
- 'ResNet',
1124
- variant='d' if '_vd' in backbone else 'b',
1125
- norm_type='bn',
1126
- freeze_at=0,
1127
- return_idx=[0, 1, 2, 3],
1128
- num_stages=4,
1129
- dcn_v2_stages=dcn_v2_stages)
1130
- else:
1131
- if with_dcn:
1132
- logging.warning(
1133
- "Backbone {} without fpn should be used along with dcn disabled, 'with_dcn' is forcibly set to False".
1134
- format(backbone))
1135
- backbone = self._get_backbone(
1136
- 'ResNet',
1137
- variant='d' if '_vd' in backbone else 'b',
1138
- norm_type='bn',
1139
- freeze_at=0,
1140
- return_idx=[2],
1141
- num_stages=3)
1142
- elif 'ResNet34' in backbone:
1143
- if not with_fpn:
1144
- logging.warning(
1145
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1146
- format(backbone))
1147
- with_fpn = True
1148
- backbone = self._get_backbone(
1149
- 'ResNet',
1150
- depth=34,
1151
- variant='d' if 'vd' in backbone else 'b',
1152
- norm_type='bn',
1153
- freeze_at=0,
1154
- return_idx=[0, 1, 2, 3],
1155
- num_stages=4,
1156
- dcn_v2_stages=dcn_v2_stages)
1157
- else:
1158
- if not with_fpn:
1159
- logging.warning(
1160
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1161
- format(backbone))
1162
- with_fpn = True
1163
- backbone = self._get_backbone(
1164
- 'ResNet',
1165
- depth=101,
1166
- variant='d' if 'vd' in backbone else 'b',
1167
- norm_type='bn',
1168
- freeze_at=0,
1169
- return_idx=[0, 1, 2, 3],
1170
- num_stages=4,
1171
- dcn_v2_stages=dcn_v2_stages)
1172
-
1173
- rpn_in_channel = backbone.out_shape[0].channels
1174
-
1175
- if with_fpn:
1176
- self.backbone_name = self.backbone_name + '_fpn'
1177
-
1178
- if 'HRNet' in self.backbone_name:
1179
- neck = ppdet.modeling.HRFPN(
1180
- in_channels=[i.channels for i in backbone.out_shape],
1181
- out_channel=fpn_num_channels,
1182
- spatial_scales=[
1183
- 1.0 / i.stride for i in backbone.out_shape
1184
- ],
1185
- share_conv=False)
1186
- else:
1187
- neck = ppdet.modeling.FPN(
1188
- in_channels=[i.channels for i in backbone.out_shape],
1189
- out_channel=fpn_num_channels,
1190
- spatial_scales=[
1191
- 1.0 / i.stride for i in backbone.out_shape
1192
- ])
1193
- rpn_in_channel = neck.out_shape[0].channels
1194
- anchor_generator_cfg = {
1195
- 'aspect_ratios': aspect_ratios,
1196
- 'anchor_sizes': anchor_sizes,
1197
- 'strides': [4, 8, 16, 32, 64]
1198
- }
1199
- train_proposal_cfg = {
1200
- 'min_size': 0.0,
1201
- 'nms_thresh': .7,
1202
- 'pre_nms_top_n': 2000,
1203
- 'post_nms_top_n': 1000,
1204
- 'topk_after_collect': True
1205
- }
1206
- test_proposal_cfg = {
1207
- 'min_size': 0.0,
1208
- 'nms_thresh': .7,
1209
- 'pre_nms_top_n': 1000
1210
- if test_pre_nms_top_n is None else test_pre_nms_top_n,
1211
- 'post_nms_top_n': test_post_nms_top_n
1212
- }
1213
- head = ppdet.modeling.TwoFCHead(
1214
- in_channel=neck.out_shape[0].channels, out_channel=1024)
1215
- roi_extractor_cfg = {
1216
- 'resolution': 7,
1217
- 'spatial_scale': [1. / i.stride for i in neck.out_shape],
1218
- 'sampling_ratio': 0,
1219
- 'aligned': True
1220
- }
1221
- with_pool = False
1222
-
1223
- else:
1224
- neck = None
1225
- anchor_generator_cfg = {
1226
- 'aspect_ratios': aspect_ratios,
1227
- 'anchor_sizes': anchor_sizes,
1228
- 'strides': [16]
1229
- }
1230
- train_proposal_cfg = {
1231
- 'min_size': 0.0,
1232
- 'nms_thresh': .7,
1233
- 'pre_nms_top_n': 12000,
1234
- 'post_nms_top_n': 2000,
1235
- 'topk_after_collect': False
1236
- }
1237
- test_proposal_cfg = {
1238
- 'min_size': 0.0,
1239
- 'nms_thresh': .7,
1240
- 'pre_nms_top_n': 6000
1241
- if test_pre_nms_top_n is None else test_pre_nms_top_n,
1242
- 'post_nms_top_n': test_post_nms_top_n
1243
- }
1244
- head = ppdet.modeling.Res5Head()
1245
- roi_extractor_cfg = {
1246
- 'resolution': 14,
1247
- 'spatial_scale':
1248
- [1. / i.stride for i in backbone.out_shape],
1249
- 'sampling_ratio': 0,
1250
- 'aligned': True
1251
- }
1252
- with_pool = True
1253
-
1254
- rpn_target_assign_cfg = {
1255
- 'batch_size_per_im': rpn_batch_size_per_im,
1256
- 'fg_fraction': rpn_fg_fraction,
1257
- 'negative_overlap': .3,
1258
- 'positive_overlap': .7,
1259
- 'use_random': True
1260
- }
1261
-
1262
- rpn_head = ppdet.modeling.RPNHead(
1263
- anchor_generator=anchor_generator_cfg,
1264
- rpn_target_assign=rpn_target_assign_cfg,
1265
- train_proposal=train_proposal_cfg,
1266
- test_proposal=test_proposal_cfg,
1267
- in_channel=rpn_in_channel)
1268
-
1269
- bbox_assigner = BBoxAssigner(num_classes=num_classes)
1270
-
1271
- bbox_head = ppdet.modeling.BBoxHead(
1272
- head=head,
1273
- in_channel=head.out_shape[0].channels,
1274
- roi_extractor=roi_extractor_cfg,
1275
- with_pool=with_pool,
1276
- bbox_assigner=bbox_assigner,
1277
- num_classes=num_classes)
1278
-
1279
- bbox_post_process = ppdet.modeling.BBoxPostProcess(
1280
- num_classes=num_classes,
1281
- decode=ppdet.modeling.RCNNBox(num_classes=num_classes),
1282
- nms=ppdet.modeling.MultiClassNMS(
1283
- score_threshold=score_threshold,
1284
- keep_top_k=keep_top_k,
1285
- nms_threshold=nms_threshold))
1286
-
1287
- params.update({
1288
- 'backbone': backbone,
1289
- 'neck': neck,
1290
- 'rpn_head': rpn_head,
1291
- 'bbox_head': bbox_head,
1292
- 'bbox_post_process': bbox_post_process
1293
- })
1294
- else:
1295
- if backbone not in {'ResNet50', 'ResNet50_vd'}:
1296
- with_fpn = True
1297
-
1298
- self.with_fpn = with_fpn
1299
- super(FasterRCNN, self).__init__(
1300
- model_name='FasterRCNN', num_classes=num_classes, **params)
1301
-
1302
- def train(self,
1303
- num_epochs,
1304
- train_dataset,
1305
- train_batch_size=64,
1306
- eval_dataset=None,
1307
- optimizer=None,
1308
- save_interval_epochs=1,
1309
- log_interval_steps=10,
1310
- save_dir='output',
1311
- pretrain_weights='IMAGENET',
1312
- learning_rate=.001,
1313
- warmup_steps=0,
1314
- warmup_start_lr=0.0,
1315
- lr_decay_epochs=(216, 243),
1316
- lr_decay_gamma=0.1,
1317
- metric=None,
1318
- use_ema=False,
1319
- early_stop=False,
1320
- early_stop_patience=5,
1321
- use_vdl=True,
1322
- resume_checkpoint=None):
1323
- """
1324
- Train the model.
1325
- Args:
1326
- num_epochs(int): The number of epochs.
1327
- train_dataset(paddlex.dataset): Training dataset.
1328
- train_batch_size(int, optional): Total batch size among all cards used in training. Defaults to 64.
1329
- eval_dataset(paddlex.dataset, optional):
1330
- Evaluation dataset. If None, the model will not be evaluated during training process. Defaults to None.
1331
- optimizer(paddle.optimizer.Optimizer or None, optional):
1332
- Optimizer used for training. If None, a default optimizer is used. Defaults to None.
1333
- save_interval_epochs(int, optional): Epoch interval for saving the model. Defaults to 1.
1334
- log_interval_steps(int, optional): Step interval for printing training information. Defaults to 10.
1335
- save_dir(str, optional): Directory to save the model. Defaults to 'output'.
1336
- pretrain_weights(str or None, optional):
1337
- None or name/path of pretrained weights. If None, no pretrained weights will be loaded. Defaults to 'IMAGENET'.
1338
- learning_rate(float, optional): Learning rate for training. Defaults to .001.
1339
- warmup_steps(int, optional): The number of steps of warm-up training. Defaults to 0.
1340
- warmup_start_lr(float, optional): Start learning rate of warm-up training. Defaults to 0..
1341
- lr_decay_epochs(list or tuple, optional): Epoch milestones for learning rate decay. Defaults to (216, 243).
1342
- lr_decay_gamma(float, optional): Gamma coefficient of learning rate decay. Defaults to .1.
1343
- metric({'VOC', 'COCO', None}, optional):
1344
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
1345
- use_ema(bool, optional): Whether to use exponential moving average strategy. Defaults to False.
1346
- early_stop(bool, optional): Whether to adopt early stop strategy. Defaults to False.
1347
- early_stop_patience(int, optional): Early stop patience. Defaults to 5.
1348
- use_vdl(bool, optional): Whether to use VisualDL to monitor the training process. Defaults to True.
1349
- resume_checkpoint(str or None, optional): The path of the checkpoint to resume training from.
1350
- If None, no training checkpoint will be resumed. At most one of `resume_checkpoint` and
1351
- `pretrain_weights` can be set simultaneously. Defaults to None.
1352
- """
1353
- if train_dataset.pos_num < len(train_dataset.file_list):
1354
- train_dataset.num_workers = 0
1355
- if train_batch_size != 1:
1356
- train_batch_size = 1
1357
- logging.warning(
1358
- "Training RCNN models with negative samples only support batch size equals to 1 "
1359
- "on a single gpu/cpu card, `train_batch_size` is forcibly set to 1."
1360
- )
1361
- nranks = paddle.distributed.get_world_size()
1362
- local_rank = paddle.distributed.get_rank()
1363
- # single card training
1364
- if nranks < 2 or local_rank == 0:
1365
- super(FasterRCNN, self).train(
1366
- num_epochs, train_dataset, train_batch_size, eval_dataset,
1367
- optimizer, save_interval_epochs, log_interval_steps,
1368
- save_dir, pretrain_weights, learning_rate, warmup_steps,
1369
- warmup_start_lr, lr_decay_epochs, lr_decay_gamma, metric,
1370
- use_ema, early_stop, early_stop_patience, use_vdl,
1371
- resume_checkpoint)
1372
- else:
1373
- super(FasterRCNN, self).train(
1374
- num_epochs, train_dataset, train_batch_size, eval_dataset,
1375
- optimizer, save_interval_epochs, log_interval_steps, save_dir,
1376
- pretrain_weights, learning_rate, warmup_steps, warmup_start_lr,
1377
- lr_decay_epochs, lr_decay_gamma, metric, use_ema, early_stop,
1378
- early_stop_patience, use_vdl, resume_checkpoint)
1379
-
1380
- def _compose_batch_transform(self, transforms, mode='train'):
1381
- if mode == 'train':
1382
- default_batch_transforms = [
1383
- _BatchPadding(pad_to_stride=32 if self.with_fpn else -1)
1384
- ]
1385
- collate_batch = False
1386
- else:
1387
- default_batch_transforms = [
1388
- _BatchPadding(pad_to_stride=32 if self.with_fpn else -1)
1389
- ]
1390
- collate_batch = True
1391
- custom_batch_transforms = []
1392
- for i, op in enumerate(transforms.transforms):
1393
- if isinstance(op, (BatchRandomResize, BatchRandomResizeByShort)):
1394
- if mode != 'train':
1395
- raise Exception(
1396
- "{} cannot be present in the {} transforms. ".format(
1397
- op.__class__.__name__, mode) +
1398
- "Please check the {} transforms.".format(mode))
1399
- custom_batch_transforms.insert(0, copy.deepcopy(op))
1400
-
1401
- batch_transforms = BatchCompose(
1402
- custom_batch_transforms + default_batch_transforms,
1403
- collate_batch=collate_batch)
1404
-
1405
- return batch_transforms
1406
-
1407
- def _fix_transforms_shape(self, image_shape):
1408
- if getattr(self, 'test_transforms', None):
1409
- has_resize_op = False
1410
- resize_op_idx = -1
1411
- normalize_op_idx = len(self.test_transforms.transforms)
1412
- for idx, op in enumerate(self.test_transforms.transforms):
1413
- name = op.__class__.__name__
1414
- if name == 'ResizeByShort':
1415
- has_resize_op = True
1416
- resize_op_idx = idx
1417
- if name == 'Normalize':
1418
- normalize_op_idx = idx
1419
-
1420
- if not has_resize_op:
1421
- self.test_transforms.transforms.insert(
1422
- normalize_op_idx,
1423
- Resize(
1424
- target_size=image_shape,
1425
- keep_ratio=True,
1426
- interp='CUBIC'))
1427
- else:
1428
- self.test_transforms.transforms[resize_op_idx] = Resize(
1429
- target_size=image_shape, keep_ratio=True, interp='CUBIC')
1430
- self.test_transforms.transforms.append(
1431
- Padding(im_padding_value=[0., 0., 0.]))
1432
-
1433
- def _get_test_inputs(self, image_shape):
1434
- if image_shape is not None:
1435
- image_shape = self._check_image_shape(image_shape)
1436
- self._fix_transforms_shape(image_shape[-2:])
1437
- else:
1438
- image_shape = [None, 3, -1, -1]
1439
- if self.with_fpn:
1440
- self.test_transforms.transforms.append(
1441
- Padding(im_padding_value=[0., 0., 0.]))
1442
-
1443
- self.fixed_input_shape = image_shape
1444
- return self._define_input_spec(image_shape)
1445
-
1446
-
1447
- class PPYOLO(YOLOv3):
1448
- def __init__(self,
1449
- num_classes=80,
1450
- backbone='ResNet50_vd_dcn',
1451
- anchors=None,
1452
- anchor_masks=None,
1453
- use_coord_conv=True,
1454
- use_iou_aware=True,
1455
- use_spp=True,
1456
- use_drop_block=True,
1457
- scale_x_y=1.05,
1458
- ignore_threshold=0.7,
1459
- label_smooth=False,
1460
- use_iou_loss=True,
1461
- use_matrix_nms=True,
1462
- nms_score_threshold=0.01,
1463
- nms_topk=-1,
1464
- nms_keep_topk=100,
1465
- nms_iou_threshold=0.45,
1466
- **params):
1467
- self.init_params = locals()
1468
- if backbone not in {
1469
- 'ResNet50_vd_dcn', 'ResNet18_vd', 'MobileNetV3_large',
1470
- 'MobileNetV3_small'
1471
- }:
1472
- raise ValueError(
1473
- "backbone: {} is not supported. Please choose one of "
1474
- "('ResNet50_vd_dcn', 'ResNet18_vd', 'MobileNetV3_large', 'MobileNetV3_small')".
1475
- format(backbone))
1476
- self.backbone_name = backbone
1477
- self.downsample_ratios = [
1478
- 32, 16, 8
1479
- ] if backbone == 'ResNet50_vd_dcn' else [32, 16]
1480
-
1481
- if params.get('with_net', True):
1482
- if paddlex.env_info['place'] == 'gpu' and paddlex.env_info[
1483
- 'num'] > 1 and not os.environ.get('PADDLEX_EXPORT_STAGE'):
1484
- norm_type = 'sync_bn'
1485
- else:
1486
- norm_type = 'bn'
1487
- if anchors is None and anchor_masks is None:
1488
- if 'MobileNetV3' in backbone:
1489
- anchors = [[11, 18], [34, 47], [51, 126], [115, 71],
1490
- [120, 195], [254, 235]]
1491
- anchor_masks = [[3, 4, 5], [0, 1, 2]]
1492
- elif backbone == 'ResNet50_vd_dcn':
1493
- anchors = [[10, 13], [16, 30], [33, 23], [30, 61],
1494
- [62, 45], [59, 119], [116, 90], [156, 198],
1495
- [373, 326]]
1496
- anchor_masks = [[6, 7, 8], [3, 4, 5], [0, 1, 2]]
1497
- else:
1498
- anchors = [[10, 14], [23, 27], [37, 58], [81, 82],
1499
- [135, 169], [344, 319]]
1500
- anchor_masks = [[3, 4, 5], [0, 1, 2]]
1501
- elif anchors is None or anchor_masks is None:
1502
- raise ValueError(
1503
- "Please define both anchors and anchor_masks.")
1504
-
1505
- if backbone == 'ResNet50_vd_dcn':
1506
- backbone = self._get_backbone(
1507
- 'ResNet',
1508
- variant='d',
1509
- norm_type=norm_type,
1510
- return_idx=[1, 2, 3],
1511
- dcn_v2_stages=[3],
1512
- freeze_at=-1,
1513
- freeze_norm=False,
1514
- norm_decay=0.)
1515
-
1516
- elif backbone == 'ResNet18_vd':
1517
- backbone = self._get_backbone(
1518
- 'ResNet',
1519
- depth=18,
1520
- variant='d',
1521
- norm_type=norm_type,
1522
- return_idx=[2, 3],
1523
- freeze_at=-1,
1524
- freeze_norm=False,
1525
- norm_decay=0.)
1526
-
1527
- elif backbone == 'MobileNetV3_large':
1528
- backbone = self._get_backbone(
1529
- 'MobileNetV3',
1530
- model_name='large',
1531
- norm_type=norm_type,
1532
- scale=1,
1533
- with_extra_blocks=False,
1534
- extra_block_filters=[],
1535
- feature_maps=[13, 16])
1536
-
1537
- elif backbone == 'MobileNetV3_small':
1538
- backbone = self._get_backbone(
1539
- 'MobileNetV3',
1540
- model_name='small',
1541
- norm_type=norm_type,
1542
- scale=1,
1543
- with_extra_blocks=False,
1544
- extra_block_filters=[],
1545
- feature_maps=[9, 12])
1546
-
1547
- neck = ppdet.modeling.PPYOLOFPN(
1548
- norm_type=norm_type,
1549
- in_channels=[i.channels for i in backbone.out_shape],
1550
- coord_conv=use_coord_conv,
1551
- drop_block=use_drop_block,
1552
- spp=use_spp,
1553
- conv_block_num=0
1554
- if ('MobileNetV3' in self.backbone_name or
1555
- self.backbone_name == 'ResNet18_vd') else 2)
1556
-
1557
- loss = ppdet.modeling.YOLOv3Loss(
1558
- num_classes=num_classes,
1559
- ignore_thresh=ignore_threshold,
1560
- downsample=self.downsample_ratios,
1561
- label_smooth=label_smooth,
1562
- scale_x_y=scale_x_y,
1563
- iou_loss=ppdet.modeling.IouLoss(
1564
- loss_weight=2.5, loss_square=True)
1565
- if use_iou_loss else None,
1566
- iou_aware_loss=ppdet.modeling.IouAwareLoss(loss_weight=1.0)
1567
- if use_iou_aware else None)
1568
-
1569
- yolo_head = ppdet.modeling.YOLOv3Head(
1570
- in_channels=[i.channels for i in neck.out_shape],
1571
- anchors=anchors,
1572
- anchor_masks=anchor_masks,
1573
- num_classes=num_classes,
1574
- loss=loss,
1575
- iou_aware=use_iou_aware)
1576
-
1577
- if use_matrix_nms:
1578
- nms = ppdet.modeling.MatrixNMS(
1579
- keep_top_k=nms_keep_topk,
1580
- score_threshold=nms_score_threshold,
1581
- post_threshold=.05
1582
- if 'MobileNetV3' in self.backbone_name else .01,
1583
- nms_top_k=nms_topk,
1584
- background_label=-1)
1585
- else:
1586
- nms = ppdet.modeling.MultiClassNMS(
1587
- score_threshold=nms_score_threshold,
1588
- nms_top_k=nms_topk,
1589
- keep_top_k=nms_keep_topk,
1590
- nms_threshold=nms_iou_threshold)
1591
-
1592
- post_process = ppdet.modeling.BBoxPostProcess(
1593
- decode=ppdet.modeling.YOLOBox(
1594
- num_classes=num_classes,
1595
- conf_thresh=.005
1596
- if 'MobileNetV3' in self.backbone_name else .01,
1597
- scale_x_y=scale_x_y),
1598
- nms=nms)
1599
-
1600
- params.update({
1601
- 'backbone': backbone,
1602
- 'neck': neck,
1603
- 'yolo_head': yolo_head,
1604
- 'post_process': post_process
1605
- })
1606
-
1607
- super(YOLOv3, self).__init__(
1608
- model_name='YOLOv3', num_classes=num_classes, **params)
1609
- self.anchors = anchors
1610
- self.anchor_masks = anchor_masks
1611
- self.model_name = 'PPYOLO'
1612
-
1613
- def _get_test_inputs(self, image_shape):
1614
- if image_shape is not None:
1615
- image_shape = self._check_image_shape(image_shape)
1616
- self._fix_transforms_shape(image_shape[-2:])
1617
- else:
1618
- image_shape = [None, 3, 608, 608]
1619
- if getattr(self, 'test_transforms', None):
1620
- for idx, op in enumerate(self.test_transforms.transforms):
1621
- name = op.__class__.__name__
1622
- if name == 'Resize':
1623
- image_shape = [None, 3] + list(
1624
- self.test_transforms.transforms[idx].target_size)
1625
- logging.warning(
1626
- '[Important!!!] When exporting inference model for {}, '
1627
- 'if fixed_input_shape is not set, it will be forcibly set to {}. '
1628
- 'Please ensure image shape after transforms is {}, if not, '
1629
- 'fixed_input_shape should be specified manually.'
1630
- .format(self.__class__.__name__, image_shape, image_shape[1:]))
1631
-
1632
- self.fixed_input_shape = image_shape
1633
- return self._define_input_spec(image_shape)
1634
-
1635
-
1636
- class PPYOLOTiny(YOLOv3):
1637
- def __init__(self,
1638
- num_classes=80,
1639
- backbone='MobileNetV3',
1640
- anchors=[[10, 15], [24, 36], [72, 42], [35, 87], [102, 96],
1641
- [60, 170], [220, 125], [128, 222], [264, 266]],
1642
- anchor_masks=[[6, 7, 8], [3, 4, 5], [0, 1, 2]],
1643
- use_iou_aware=False,
1644
- use_spp=True,
1645
- use_drop_block=True,
1646
- scale_x_y=1.05,
1647
- ignore_threshold=0.5,
1648
- label_smooth=False,
1649
- use_iou_loss=True,
1650
- use_matrix_nms=False,
1651
- nms_score_threshold=0.005,
1652
- nms_topk=1000,
1653
- nms_keep_topk=100,
1654
- nms_iou_threshold=0.45,
1655
- **params):
1656
- self.init_params = locals()
1657
- if backbone != 'MobileNetV3':
1658
- logging.warning(
1659
- "PPYOLOTiny only supports MobileNetV3 as backbone. "
1660
- "Backbone is forcibly set to MobileNetV3.")
1661
- self.backbone_name = 'MobileNetV3'
1662
- self.downsample_ratios = [32, 16, 8]
1663
- if params.get('with_net', True):
1664
- if paddlex.env_info['place'] == 'gpu' and paddlex.env_info[
1665
- 'num'] > 1 and not os.environ.get('PADDLEX_EXPORT_STAGE'):
1666
- norm_type = 'sync_bn'
1667
- else:
1668
- norm_type = 'bn'
1669
-
1670
- backbone = self._get_backbone(
1671
- 'MobileNetV3',
1672
- model_name='large',
1673
- norm_type=norm_type,
1674
- scale=.5,
1675
- with_extra_blocks=False,
1676
- extra_block_filters=[],
1677
- feature_maps=[7, 13, 16])
1678
-
1679
- neck = ppdet.modeling.PPYOLOTinyFPN(
1680
- detection_block_channels=[160, 128, 96],
1681
- in_channels=[i.channels for i in backbone.out_shape],
1682
- spp=use_spp,
1683
- drop_block=use_drop_block)
1684
-
1685
- loss = ppdet.modeling.YOLOv3Loss(
1686
- num_classes=num_classes,
1687
- ignore_thresh=ignore_threshold,
1688
- downsample=self.downsample_ratios,
1689
- label_smooth=label_smooth,
1690
- scale_x_y=scale_x_y,
1691
- iou_loss=ppdet.modeling.IouLoss(
1692
- loss_weight=2.5, loss_square=True)
1693
- if use_iou_loss else None,
1694
- iou_aware_loss=ppdet.modeling.IouAwareLoss(loss_weight=1.0)
1695
- if use_iou_aware else None)
1696
-
1697
- yolo_head = ppdet.modeling.YOLOv3Head(
1698
- in_channels=[i.channels for i in neck.out_shape],
1699
- anchors=anchors,
1700
- anchor_masks=anchor_masks,
1701
- num_classes=num_classes,
1702
- loss=loss,
1703
- iou_aware=use_iou_aware)
1704
-
1705
- if use_matrix_nms:
1706
- nms = ppdet.modeling.MatrixNMS(
1707
- keep_top_k=nms_keep_topk,
1708
- score_threshold=nms_score_threshold,
1709
- post_threshold=.05,
1710
- nms_top_k=nms_topk,
1711
- background_label=-1)
1712
- else:
1713
- nms = ppdet.modeling.MultiClassNMS(
1714
- score_threshold=nms_score_threshold,
1715
- nms_top_k=nms_topk,
1716
- keep_top_k=nms_keep_topk,
1717
- nms_threshold=nms_iou_threshold)
1718
-
1719
- post_process = ppdet.modeling.BBoxPostProcess(
1720
- decode=ppdet.modeling.YOLOBox(
1721
- num_classes=num_classes,
1722
- conf_thresh=.005,
1723
- downsample_ratio=32,
1724
- clip_bbox=True,
1725
- scale_x_y=scale_x_y),
1726
- nms=nms)
1727
-
1728
- params.update({
1729
- 'backbone': backbone,
1730
- 'neck': neck,
1731
- 'yolo_head': yolo_head,
1732
- 'post_process': post_process
1733
- })
1734
-
1735
- super(YOLOv3, self).__init__(
1736
- model_name='YOLOv3', num_classes=num_classes, **params)
1737
- self.anchors = anchors
1738
- self.anchor_masks = anchor_masks
1739
- self.model_name = 'PPYOLOTiny'
1740
-
1741
- def _get_test_inputs(self, image_shape):
1742
- if image_shape is not None:
1743
- image_shape = self._check_image_shape(image_shape)
1744
- self._fix_transforms_shape(image_shape[-2:])
1745
- else:
1746
- image_shape = [None, 3, 320, 320]
1747
- if getattr(self, 'test_transforms', None):
1748
- for idx, op in enumerate(self.test_transforms.transforms):
1749
- name = op.__class__.__name__
1750
- if name == 'Resize':
1751
- image_shape = [None, 3] + list(
1752
- self.test_transforms.transforms[idx].target_size)
1753
- logging.warning(
1754
- '[Important!!!] When exporting inference model for {},'.format(
1755
- self.__class__.__name__) +
1756
- ' if fixed_input_shape is not set, it will be forcibly set to {}. '.
1757
- format(image_shape) +
1758
- 'Please check image shape after transforms is {}, if not, fixed_input_shape '.
1759
- format(image_shape[1:]) + 'should be specified manually.')
1760
-
1761
- self.fixed_input_shape = image_shape
1762
- return self._define_input_spec(image_shape)
1763
-
1764
-
1765
- class PPYOLOv2(YOLOv3):
1766
- def __init__(self,
1767
- num_classes=80,
1768
- backbone='ResNet50_vd_dcn',
1769
- anchors=[[10, 13], [16, 30], [33, 23], [30, 61], [62, 45],
1770
- [59, 119], [116, 90], [156, 198], [373, 326]],
1771
- anchor_masks=[[6, 7, 8], [3, 4, 5], [0, 1, 2]],
1772
- use_iou_aware=True,
1773
- use_spp=True,
1774
- use_drop_block=True,
1775
- scale_x_y=1.05,
1776
- ignore_threshold=0.7,
1777
- label_smooth=False,
1778
- use_iou_loss=True,
1779
- use_matrix_nms=True,
1780
- nms_score_threshold=0.01,
1781
- nms_topk=-1,
1782
- nms_keep_topk=100,
1783
- nms_iou_threshold=0.45,
1784
- **params):
1785
- self.init_params = locals()
1786
- if backbone not in {'ResNet50_vd_dcn', 'ResNet101_vd_dcn'}:
1787
- raise ValueError(
1788
- "backbone: {} is not supported. Please choose one of "
1789
- "('ResNet50_vd_dcn', 'ResNet101_vd_dcn')".format(backbone))
1790
- self.backbone_name = backbone
1791
- self.downsample_ratios = [32, 16, 8]
1792
-
1793
- if params.get('with_net', True):
1794
- if paddlex.env_info['place'] == 'gpu' and paddlex.env_info[
1795
- 'num'] > 1 and not os.environ.get('PADDLEX_EXPORT_STAGE'):
1796
- norm_type = 'sync_bn'
1797
- else:
1798
- norm_type = 'bn'
1799
-
1800
- if backbone == 'ResNet50_vd_dcn':
1801
- backbone = self._get_backbone(
1802
- 'ResNet',
1803
- variant='d',
1804
- norm_type=norm_type,
1805
- return_idx=[1, 2, 3],
1806
- dcn_v2_stages=[3],
1807
- freeze_at=-1,
1808
- freeze_norm=False,
1809
- norm_decay=0.)
1810
-
1811
- elif backbone == 'ResNet101_vd_dcn':
1812
- backbone = self._get_backbone(
1813
- 'ResNet',
1814
- depth=101,
1815
- variant='d',
1816
- norm_type=norm_type,
1817
- return_idx=[1, 2, 3],
1818
- dcn_v2_stages=[3],
1819
- freeze_at=-1,
1820
- freeze_norm=False,
1821
- norm_decay=0.)
1822
-
1823
- neck = ppdet.modeling.PPYOLOPAN(
1824
- norm_type=norm_type,
1825
- in_channels=[i.channels for i in backbone.out_shape],
1826
- drop_block=use_drop_block,
1827
- block_size=3,
1828
- keep_prob=.9,
1829
- spp=use_spp)
1830
-
1831
- loss = ppdet.modeling.YOLOv3Loss(
1832
- num_classes=num_classes,
1833
- ignore_thresh=ignore_threshold,
1834
- downsample=self.downsample_ratios,
1835
- label_smooth=label_smooth,
1836
- scale_x_y=scale_x_y,
1837
- iou_loss=ppdet.modeling.IouLoss(
1838
- loss_weight=2.5, loss_square=True)
1839
- if use_iou_loss else None,
1840
- iou_aware_loss=ppdet.modeling.IouAwareLoss(loss_weight=1.0)
1841
- if use_iou_aware else None)
1842
-
1843
- yolo_head = ppdet.modeling.YOLOv3Head(
1844
- in_channels=[i.channels for i in neck.out_shape],
1845
- anchors=anchors,
1846
- anchor_masks=anchor_masks,
1847
- num_classes=num_classes,
1848
- loss=loss,
1849
- iou_aware=use_iou_aware,
1850
- iou_aware_factor=.5)
1851
-
1852
- if use_matrix_nms:
1853
- nms = ppdet.modeling.MatrixNMS(
1854
- keep_top_k=nms_keep_topk,
1855
- score_threshold=nms_score_threshold,
1856
- post_threshold=.01,
1857
- nms_top_k=nms_topk,
1858
- background_label=-1)
1859
- else:
1860
- nms = ppdet.modeling.MultiClassNMS(
1861
- score_threshold=nms_score_threshold,
1862
- nms_top_k=nms_topk,
1863
- keep_top_k=nms_keep_topk,
1864
- nms_threshold=nms_iou_threshold)
1865
-
1866
- post_process = ppdet.modeling.BBoxPostProcess(
1867
- decode=ppdet.modeling.YOLOBox(
1868
- num_classes=num_classes,
1869
- conf_thresh=.01,
1870
- downsample_ratio=32,
1871
- clip_bbox=True,
1872
- scale_x_y=scale_x_y),
1873
- nms=nms)
1874
-
1875
- params.update({
1876
- 'backbone': backbone,
1877
- 'neck': neck,
1878
- 'yolo_head': yolo_head,
1879
- 'post_process': post_process
1880
- })
1881
-
1882
- super(YOLOv3, self).__init__(
1883
- model_name='YOLOv3', num_classes=num_classes, **params)
1884
- self.anchors = anchors
1885
- self.anchor_masks = anchor_masks
1886
- self.model_name = 'PPYOLOv2'
1887
-
1888
- def _get_test_inputs(self, image_shape):
1889
- if image_shape is not None:
1890
- image_shape = self._check_image_shape(image_shape)
1891
- self._fix_transforms_shape(image_shape[-2:])
1892
- else:
1893
- image_shape = [None, 3, 640, 640]
1894
- if getattr(self, 'test_transforms', None):
1895
- for idx, op in enumerate(self.test_transforms.transforms):
1896
- name = op.__class__.__name__
1897
- if name == 'Resize':
1898
- image_shape = [None, 3] + list(
1899
- self.test_transforms.transforms[idx].target_size)
1900
- logging.warning(
1901
- '[Important!!!] When exporting inference model for {},'.format(
1902
- self.__class__.__name__) +
1903
- ' if fixed_input_shape is not set, it will be forcibly set to {}. '.
1904
- format(image_shape) +
1905
- 'Please check image shape after transforms is {}, if not, fixed_input_shape '.
1906
- format(image_shape[1:]) + 'should be specified manually.')
1907
-
1908
- self.fixed_input_shape = image_shape
1909
- return self._define_input_spec(image_shape)
1910
-
1911
-
1912
- class MaskRCNN(BaseDetector):
1913
- def __init__(self,
1914
- num_classes=80,
1915
- backbone='ResNet50_vd',
1916
- with_fpn=True,
1917
- with_dcn=False,
1918
- aspect_ratios=[0.5, 1.0, 2.0],
1919
- anchor_sizes=[[32], [64], [128], [256], [512]],
1920
- keep_top_k=100,
1921
- nms_threshold=0.5,
1922
- score_threshold=0.05,
1923
- fpn_num_channels=256,
1924
- rpn_batch_size_per_im=256,
1925
- rpn_fg_fraction=0.5,
1926
- test_pre_nms_top_n=None,
1927
- test_post_nms_top_n=1000,
1928
- **params):
1929
- self.init_params = locals()
1930
- if backbone not in {
1931
- 'ResNet50', 'ResNet50_vd', 'ResNet50_vd_ssld', 'ResNet101',
1932
- 'ResNet101_vd'
1933
- }:
1934
- raise ValueError(
1935
- "backbone: {} is not supported. Please choose one of "
1936
- "('ResNet50', 'ResNet50_vd', 'ResNet50_vd_ssld', 'ResNet101', 'ResNet101_vd')".
1937
- format(backbone))
1938
-
1939
- self.backbone_name = backbone + '_fpn' if with_fpn else backbone
1940
- dcn_v2_stages = [1, 2, 3] if with_dcn else [-1]
1941
-
1942
- if params.get('with_net', True):
1943
- if backbone == 'ResNet50':
1944
- if with_fpn:
1945
- backbone = self._get_backbone(
1946
- 'ResNet',
1947
- norm_type='bn',
1948
- freeze_at=0,
1949
- return_idx=[0, 1, 2, 3],
1950
- num_stages=4,
1951
- dcn_v2_stages=dcn_v2_stages)
1952
- else:
1953
- if with_dcn:
1954
- logging.warning(
1955
- "Backbone {} should be used along with dcn disabled, 'with_dcn' is forcibly set to False".
1956
- format(backbone))
1957
- backbone = self._get_backbone(
1958
- 'ResNet',
1959
- norm_type='bn',
1960
- freeze_at=0,
1961
- return_idx=[2],
1962
- num_stages=3)
1963
-
1964
- elif 'ResNet50_vd' in backbone:
1965
- if not with_fpn:
1966
- logging.warning(
1967
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1968
- format(backbone))
1969
- with_fpn = True
1970
- backbone = self._get_backbone(
1971
- 'ResNet',
1972
- variant='d',
1973
- norm_type='bn',
1974
- freeze_at=0,
1975
- return_idx=[0, 1, 2, 3],
1976
- num_stages=4,
1977
- lr_mult_list=[0.05, 0.05, 0.1, 0.15]
1978
- if '_ssld' in backbone else [1.0, 1.0, 1.0, 1.0],
1979
- dcn_v2_stages=dcn_v2_stages)
1980
-
1981
- else:
1982
- if not with_fpn:
1983
- logging.warning(
1984
- "Backbone {} should be used along with fpn enabled, 'with_fpn' is forcibly set to True".
1985
- format(backbone))
1986
- with_fpn = True
1987
- backbone = self._get_backbone(
1988
- 'ResNet',
1989
- variant='d' if '_vd' in backbone else 'b',
1990
- depth=101,
1991
- norm_type='bn',
1992
- freeze_at=0,
1993
- return_idx=[0, 1, 2, 3],
1994
- num_stages=4,
1995
- dcn_v2_stages=dcn_v2_stages)
1996
-
1997
- rpn_in_channel = backbone.out_shape[0].channels
1998
-
1999
- if with_fpn:
2000
- neck = ppdet.modeling.FPN(
2001
- in_channels=[i.channels for i in backbone.out_shape],
2002
- out_channel=fpn_num_channels,
2003
- spatial_scales=[
2004
- 1.0 / i.stride for i in backbone.out_shape
2005
- ])
2006
- rpn_in_channel = neck.out_shape[0].channels
2007
- anchor_generator_cfg = {
2008
- 'aspect_ratios': aspect_ratios,
2009
- 'anchor_sizes': anchor_sizes,
2010
- 'strides': [4, 8, 16, 32, 64]
2011
- }
2012
- train_proposal_cfg = {
2013
- 'min_size': 0.0,
2014
- 'nms_thresh': .7,
2015
- 'pre_nms_top_n': 2000,
2016
- 'post_nms_top_n': 1000,
2017
- 'topk_after_collect': True
2018
- }
2019
- test_proposal_cfg = {
2020
- 'min_size': 0.0,
2021
- 'nms_thresh': .7,
2022
- 'pre_nms_top_n': 1000
2023
- if test_pre_nms_top_n is None else test_pre_nms_top_n,
2024
- 'post_nms_top_n': test_post_nms_top_n
2025
- }
2026
- bb_head = ppdet.modeling.TwoFCHead(
2027
- in_channel=neck.out_shape[0].channels, out_channel=1024)
2028
- bb_roi_extractor_cfg = {
2029
- 'resolution': 7,
2030
- 'spatial_scale': [1. / i.stride for i in neck.out_shape],
2031
- 'sampling_ratio': 0,
2032
- 'aligned': True
2033
- }
2034
- with_pool = False
2035
- m_head = ppdet.modeling.MaskFeat(
2036
- in_channel=neck.out_shape[0].channels,
2037
- out_channel=256,
2038
- num_convs=4)
2039
- m_roi_extractor_cfg = {
2040
- 'resolution': 14,
2041
- 'spatial_scale': [1. / i.stride for i in neck.out_shape],
2042
- 'sampling_ratio': 0,
2043
- 'aligned': True
2044
- }
2045
- mask_assigner = MaskAssigner(
2046
- num_classes=num_classes, mask_resolution=28)
2047
- share_bbox_feat = False
2048
-
2049
- else:
2050
- neck = None
2051
- anchor_generator_cfg = {
2052
- 'aspect_ratios': aspect_ratios,
2053
- 'anchor_sizes': anchor_sizes,
2054
- 'strides': [16]
2055
- }
2056
- train_proposal_cfg = {
2057
- 'min_size': 0.0,
2058
- 'nms_thresh': .7,
2059
- 'pre_nms_top_n': 12000,
2060
- 'post_nms_top_n': 2000,
2061
- 'topk_after_collect': False
2062
- }
2063
- test_proposal_cfg = {
2064
- 'min_size': 0.0,
2065
- 'nms_thresh': .7,
2066
- 'pre_nms_top_n': 6000
2067
- if test_pre_nms_top_n is None else test_pre_nms_top_n,
2068
- 'post_nms_top_n': test_post_nms_top_n
2069
- }
2070
- bb_head = ppdet.modeling.Res5Head()
2071
- bb_roi_extractor_cfg = {
2072
- 'resolution': 14,
2073
- 'spatial_scale':
2074
- [1. / i.stride for i in backbone.out_shape],
2075
- 'sampling_ratio': 0,
2076
- 'aligned': True
2077
- }
2078
- with_pool = True
2079
- m_head = ppdet.modeling.MaskFeat(
2080
- in_channel=bb_head.out_shape[0].channels,
2081
- out_channel=256,
2082
- num_convs=0)
2083
- m_roi_extractor_cfg = {
2084
- 'resolution': 14,
2085
- 'spatial_scale':
2086
- [1. / i.stride for i in backbone.out_shape],
2087
- 'sampling_ratio': 0,
2088
- 'aligned': True
2089
- }
2090
- mask_assigner = MaskAssigner(
2091
- num_classes=num_classes, mask_resolution=14)
2092
- share_bbox_feat = True
2093
-
2094
- rpn_target_assign_cfg = {
2095
- 'batch_size_per_im': rpn_batch_size_per_im,
2096
- 'fg_fraction': rpn_fg_fraction,
2097
- 'negative_overlap': .3,
2098
- 'positive_overlap': .7,
2099
- 'use_random': True
2100
- }
2101
-
2102
- rpn_head = ppdet.modeling.RPNHead(
2103
- anchor_generator=anchor_generator_cfg,
2104
- rpn_target_assign=rpn_target_assign_cfg,
2105
- train_proposal=train_proposal_cfg,
2106
- test_proposal=test_proposal_cfg,
2107
- in_channel=rpn_in_channel)
2108
-
2109
- bbox_assigner = BBoxAssigner(num_classes=num_classes)
2110
-
2111
- bbox_head = ppdet.modeling.BBoxHead(
2112
- head=bb_head,
2113
- in_channel=bb_head.out_shape[0].channels,
2114
- roi_extractor=bb_roi_extractor_cfg,
2115
- with_pool=with_pool,
2116
- bbox_assigner=bbox_assigner,
2117
- num_classes=num_classes)
2118
-
2119
- mask_head = ppdet.modeling.MaskHead(
2120
- head=m_head,
2121
- roi_extractor=m_roi_extractor_cfg,
2122
- mask_assigner=mask_assigner,
2123
- share_bbox_feat=share_bbox_feat,
2124
- num_classes=num_classes)
2125
-
2126
- bbox_post_process = ppdet.modeling.BBoxPostProcess(
2127
- num_classes=num_classes,
2128
- decode=ppdet.modeling.RCNNBox(num_classes=num_classes),
2129
- nms=ppdet.modeling.MultiClassNMS(
2130
- score_threshold=score_threshold,
2131
- keep_top_k=keep_top_k,
2132
- nms_threshold=nms_threshold))
2133
-
2134
- mask_post_process = ppdet.modeling.MaskPostProcess(
2135
- binary_thresh=.5)
2136
-
2137
- params.update({
2138
- 'backbone': backbone,
2139
- 'neck': neck,
2140
- 'rpn_head': rpn_head,
2141
- 'bbox_head': bbox_head,
2142
- 'mask_head': mask_head,
2143
- 'bbox_post_process': bbox_post_process,
2144
- 'mask_post_process': mask_post_process
2145
- })
2146
- self.with_fpn = with_fpn
2147
- super(MaskRCNN, self).__init__(
2148
- model_name='MaskRCNN', num_classes=num_classes, **params)
2149
-
2150
- def train(self,
2151
- num_epochs,
2152
- train_dataset,
2153
- train_batch_size=64,
2154
- eval_dataset=None,
2155
- optimizer=None,
2156
- save_interval_epochs=1,
2157
- log_interval_steps=10,
2158
- save_dir='output',
2159
- pretrain_weights='IMAGENET',
2160
- learning_rate=.001,
2161
- warmup_steps=0,
2162
- warmup_start_lr=0.0,
2163
- lr_decay_epochs=(216, 243),
2164
- lr_decay_gamma=0.1,
2165
- metric=None,
2166
- use_ema=False,
2167
- early_stop=False,
2168
- early_stop_patience=5,
2169
- use_vdl=True,
2170
- resume_checkpoint=None):
2171
- """
2172
- Train the model.
2173
- Args:
2174
- num_epochs(int): The number of epochs.
2175
- train_dataset(paddlex.dataset): Training dataset.
2176
- train_batch_size(int, optional): Total batch size among all cards used in training. Defaults to 64.
2177
- eval_dataset(paddlex.dataset, optional):
2178
- Evaluation dataset. If None, the model will not be evaluated during training process. Defaults to None.
2179
- optimizer(paddle.optimizer.Optimizer or None, optional):
2180
- Optimizer used for training. If None, a default optimizer is used. Defaults to None.
2181
- save_interval_epochs(int, optional): Epoch interval for saving the model. Defaults to 1.
2182
- log_interval_steps(int, optional): Step interval for printing training information. Defaults to 10.
2183
- save_dir(str, optional): Directory to save the model. Defaults to 'output'.
2184
- pretrain_weights(str or None, optional):
2185
- None or name/path of pretrained weights. If None, no pretrained weights will be loaded. Defaults to 'IMAGENET'.
2186
- learning_rate(float, optional): Learning rate for training. Defaults to .001.
2187
- warmup_steps(int, optional): The number of steps of warm-up training. Defaults to 0.
2188
- warmup_start_lr(float, optional): Start learning rate of warm-up training. Defaults to 0..
2189
- lr_decay_epochs(list or tuple, optional): Epoch milestones for learning rate decay. Defaults to (216, 243).
2190
- lr_decay_gamma(float, optional): Gamma coefficient of learning rate decay. Defaults to .1.
2191
- metric({'VOC', 'COCO', None}, optional):
2192
- Evaluation metric. If None, determine the metric according to the dataset format. Defaults to None.
2193
- use_ema(bool, optional): Whether to use exponential moving average strategy. Defaults to False.
2194
- early_stop(bool, optional): Whether to adopt early stop strategy. Defaults to False.
2195
- early_stop_patience(int, optional): Early stop patience. Defaults to 5.
2196
- use_vdl(bool, optional): Whether to use VisualDL to monitor the training process. Defaults to True.
2197
- resume_checkpoint(str or None, optional): The path of the checkpoint to resume training from.
2198
- If None, no training checkpoint will be resumed. At most one of `resume_checkpoint` and
2199
- `pretrain_weights` can be set simultaneously. Defaults to None.
2200
- """
2201
- if train_dataset.pos_num < len(train_dataset.file_list):
2202
- train_dataset.num_workers = 0
2203
- if train_batch_size != 1:
2204
- train_batch_size = 1
2205
- logging.warning(
2206
- "Training RCNN models with negative samples only support batch size equals to 1 "
2207
- "on a single gpu/cpu card, `train_batch_size` is forcibly set to 1."
2208
- )
2209
- nranks = paddle.distributed.get_world_size()
2210
- local_rank = paddle.distributed.get_rank()
2211
- # single card training
2212
- if nranks < 2 or local_rank == 0:
2213
- super(MaskRCNN, self).train(
2214
- num_epochs, train_dataset, train_batch_size, eval_dataset,
2215
- optimizer, save_interval_epochs, log_interval_steps,
2216
- save_dir, pretrain_weights, learning_rate, warmup_steps,
2217
- warmup_start_lr, lr_decay_epochs, lr_decay_gamma, metric,
2218
- use_ema, early_stop, early_stop_patience, use_vdl,
2219
- resume_checkpoint)
2220
- else:
2221
- super(MaskRCNN, self).train(
2222
- num_epochs, train_dataset, train_batch_size, eval_dataset,
2223
- optimizer, save_interval_epochs, log_interval_steps, save_dir,
2224
- pretrain_weights, learning_rate, warmup_steps, warmup_start_lr,
2225
- lr_decay_epochs, lr_decay_gamma, metric, use_ema, early_stop,
2226
- early_stop_patience, use_vdl, resume_checkpoint)
2227
-
2228
- def _compose_batch_transform(self, transforms, mode='train'):
2229
- if mode == 'train':
2230
- default_batch_transforms = [
2231
- _BatchPadding(pad_to_stride=32 if self.with_fpn else -1)
2232
- ]
2233
- collate_batch = False
2234
- else:
2235
- default_batch_transforms = [
2236
- _BatchPadding(pad_to_stride=32 if self.with_fpn else -1)
2237
- ]
2238
- collate_batch = True
2239
- custom_batch_transforms = []
2240
- for i, op in enumerate(transforms.transforms):
2241
- if isinstance(op, (BatchRandomResize, BatchRandomResizeByShort)):
2242
- if mode != 'train':
2243
- raise Exception(
2244
- "{} cannot be present in the {} transforms. ".format(
2245
- op.__class__.__name__, mode) +
2246
- "Please check the {} transforms.".format(mode))
2247
- custom_batch_transforms.insert(0, copy.deepcopy(op))
2248
-
2249
- batch_transforms = BatchCompose(
2250
- custom_batch_transforms + default_batch_transforms,
2251
- collate_batch=collate_batch)
2252
-
2253
- return batch_transforms
2254
-
2255
- def _fix_transforms_shape(self, image_shape):
2256
- if getattr(self, 'test_transforms', None):
2257
- has_resize_op = False
2258
- resize_op_idx = -1
2259
- normalize_op_idx = len(self.test_transforms.transforms)
2260
- for idx, op in enumerate(self.test_transforms.transforms):
2261
- name = op.__class__.__name__
2262
- if name == 'ResizeByShort':
2263
- has_resize_op = True
2264
- resize_op_idx = idx
2265
- if name == 'Normalize':
2266
- normalize_op_idx = idx
2267
-
2268
- if not has_resize_op:
2269
- self.test_transforms.transforms.insert(
2270
- normalize_op_idx,
2271
- Resize(
2272
- target_size=image_shape,
2273
- keep_ratio=True,
2274
- interp='CUBIC'))
2275
- else:
2276
- self.test_transforms.transforms[resize_op_idx] = Resize(
2277
- target_size=image_shape, keep_ratio=True, interp='CUBIC')
2278
- self.test_transforms.transforms.append(
2279
- Padding(im_padding_value=[0., 0., 0.]))
2280
-
2281
- def _get_test_inputs(self, image_shape):
2282
- if image_shape is not None:
2283
- image_shape = self._check_image_shape(image_shape)
2284
- self._fix_transforms_shape(image_shape[-2:])
2285
- else:
2286
- image_shape = [None, 3, -1, -1]
2287
- if self.with_fpn:
2288
- self.test_transforms.transforms.append(
2289
- Padding(im_padding_value=[0., 0., 0.]))
2290
- self.fixed_input_shape = image_shape
2291
-
2292
- return self._define_input_spec(image_shape)