Prechádzať zdrojové kódy

Merge branch 'develop' into official_datasets

Bobholamovic 2 rokov pred
rodič
commit
d1af166263
70 zmenil súbory, kde vykonal 72 pridanie a 66 odobranie
  1. 1 1
      README.md
  2. 1 1
      docs/README.md
  3. 3 3
      docs/apis/model_zoo.md
  4. 1 1
      paddlers/datasets/voc.py
  5. 2 2
      paddlers/deploy/predictor.py
  6. 1 1
      paddlers/rs_models/__init__.py
  7. 0 0
      paddlers/rs_models/cd/__init__.py
  8. 0 0
      paddlers/rs_models/cd/backbones/__init__.py
  9. 0 0
      paddlers/rs_models/cd/backbones/resnet.py
  10. 0 0
      paddlers/rs_models/cd/bit.py
  11. 0 0
      paddlers/rs_models/cd/cdnet.py
  12. 1 1
      paddlers/rs_models/cd/changestar.py
  13. 0 0
      paddlers/rs_models/cd/dsamnet.py
  14. 0 0
      paddlers/rs_models/cd/dsifn.py
  15. 0 0
      paddlers/rs_models/cd/fc_ef.py
  16. 0 0
      paddlers/rs_models/cd/fc_siam_conc.py
  17. 0 0
      paddlers/rs_models/cd/fc_siam_diff.py
  18. 0 0
      paddlers/rs_models/cd/layers/__init__.py
  19. 0 0
      paddlers/rs_models/cd/layers/attention.py
  20. 0 0
      paddlers/rs_models/cd/layers/blocks.py
  21. 1 1
      paddlers/rs_models/cd/param_init.py
  22. 0 0
      paddlers/rs_models/cd/snunet.py
  23. 0 0
      paddlers/rs_models/cd/stanet.py
  24. 0 0
      paddlers/rs_models/clas/__init__.py
  25. 0 0
      paddlers/rs_models/clas/condensenet_v2.py
  26. 0 0
      paddlers/rs_models/det/__init__.py
  27. 0 0
      paddlers/rs_models/res/__init__.py
  28. 0 0
      paddlers/rs_models/res/generators/__init__.py
  29. 0 0
      paddlers/rs_models/res/generators/builder.py
  30. 0 0
      paddlers/rs_models/res/generators/rcan.py
  31. 0 0
      paddlers/rs_models/res/rcan_model.py
  32. 0 0
      paddlers/rs_models/seg/__init__.py
  33. 0 0
      paddlers/rs_models/seg/farseg.py
  34. 0 0
      paddlers/rs_models/seg/layers/__init__.py
  35. 0 0
      paddlers/rs_models/seg/layers/layers_lib.py
  36. 0 0
      paddlers/rs_models/seg/layers/param_init.py
  37. 5 5
      paddlers/tasks/__init__.py
  38. 1 1
      paddlers/tasks/base.py
  39. 3 3
      paddlers/tasks/change_detector.py
  40. 1 1
      paddlers/tasks/classifier.py
  41. 8 6
      paddlers/tasks/load_model.py
  42. 1 1
      paddlers/tasks/object_detector.py
  43. 2 2
      paddlers/tasks/segmenter.py
  44. 1 1
      paddlers/tasks/utils/infer_nets.py
  45. 1 1
      paddlers/transforms/operators.py
  46. 10 10
      tests/rs_models/test_cd_models.py
  47. 1 1
      tests/rs_models/test_seg_models.py
  48. 4 1
      tests/transforms/test_operators.py
  49. 1 1
      tutorials/train/change_detection/bit.py
  50. 1 1
      tutorials/train/change_detection/cdnet.py
  51. 1 1
      tutorials/train/change_detection/dsamnet.py
  52. 1 1
      tutorials/train/change_detection/dsifn.py
  53. 1 1
      tutorials/train/change_detection/fc_ef.py
  54. 1 1
      tutorials/train/change_detection/fc_siam_conc.py
  55. 1 1
      tutorials/train/change_detection/fc_siam_diff.py
  56. 1 1
      tutorials/train/change_detection/snunet.py
  57. 1 1
      tutorials/train/change_detection/stanet.py
  58. 1 1
      tutorials/train/classification/hrnet.py
  59. 2 1
      tutorials/train/classification/mobilenetv3.py
  60. 1 1
      tutorials/train/classification/resnet50_vd.py
  61. 1 1
      tutorials/train/image_restoration/drn_train.py
  62. 1 1
      tutorials/train/image_restoration/esrgan_train.py
  63. 1 1
      tutorials/train/image_restoration/lesrcnn_train.py
  64. 1 1
      tutorials/train/object_detection/faster_rcnn.py
  65. 1 1
      tutorials/train/object_detection/ppyolo.py
  66. 1 1
      tutorials/train/object_detection/ppyolotiny.py
  67. 1 1
      tutorials/train/object_detection/ppyolov2.py
  68. 1 1
      tutorials/train/object_detection/yolov3.py
  69. 1 1
      tutorials/train/semantic_segmentation/deeplabv3p.py
  70. 1 1
      tutorials/train/semantic_segmentation/unet.py

+ 1 - 1
README.md

@@ -159,7 +159,7 @@ PaddleRS是遥感科研院所、相关高校共同基于飞桨开发的遥感处
 ├── deploy               # 部署相关的文档和脚本
 ├── deploy               # 部署相关的文档和脚本
 ├── docs                 # 整个项目文档及图片
 ├── docs                 # 整个项目文档及图片
 ├── paddlers  
 ├── paddlers  
-│     ├── custom_models  # 自定义网络模型代码
+│     ├── rs_models      # 遥感专用网络模型代码
 │     ├── datasets       # 数据加载相关代码
 │     ├── datasets       # 数据加载相关代码
 │     ├── models         # 套件网络模型代码
 │     ├── models         # 套件网络模型代码
 │     ├── tasks          # 相关任务代码
 │     ├── tasks          # 相关任务代码

+ 1 - 1
docs/README.md

@@ -1,3 +1,3 @@
 # 开发规范
 # 开发规范
 请注意,paddlers/models/ppxxx系列除了修改import路径和支持多通道模型外,不要增删改任何代码。
 请注意,paddlers/models/ppxxx系列除了修改import路径和支持多通道模型外,不要增删改任何代码。
-新增的模型需放在paddlers/models/下的seg、det、cls、cd目录下。
+新增的模型需放在paddlers/models/下的seg、det、clas、cd目录下。

+ 3 - 3
docs/apis/model_zoo.md

@@ -2,7 +2,7 @@
 
 
 PaddleRS的基础模型库来自[PaddleClas](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.3/docs/zh_CN/algorithm_introduction/ImageNet_models.md)、[PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.4/docs/model_zoo_overview_cn.md)、[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/README_cn.md#模型库)以及[PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN/blob/develop/README_cn.md#模型库),可以通过相关的链接进行查看。而在此之外,PaddleRS也针对遥感任务添加了一些特有的模型库,可用于遥感图像语义分割、遥感变化检测等。
 PaddleRS的基础模型库来自[PaddleClas](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.3/docs/zh_CN/algorithm_introduction/ImageNet_models.md)、[PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.4/docs/model_zoo_overview_cn.md)、[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/README_cn.md#模型库)以及[PaddleGAN](https://github.com/PaddlePaddle/PaddleGAN/blob/develop/README_cn.md#模型库),可以通过相关的链接进行查看。而在此之外,PaddleRS也针对遥感任务添加了一些特有的模型库,可用于遥感图像语义分割、遥感变化检测等。
 
 
-## 自定义模型库
+## 遥感专用模型库
 
 
 | 模型名称        | 用途     |
 | 模型名称        | 用途     |
 | --------------- | -------- |
 | --------------- | -------- |
@@ -20,7 +20,7 @@ PaddleRS的基础模型库来自[PaddleClas](https://github.com/PaddlePaddle/Pad
 
 
 ## 如何导入
 ## 如何导入
 
 
-模型均位于`paddlers/models`和`paddlers/custom_models`中,对于套件中的模型可以通过如下方法进行使用
+模型均位于`paddlers/models`和`paddlers/rs_models`中,对于套件中的模型可以通过如下方法进行使用
 
 
 ```python
 ```python
 from paddlers.models import xxxx
 from paddlers.models import xxxx
@@ -29,5 +29,5 @@ from paddlers.models import xxxx
 而PaddleRS所特有的模型可以通过如下方法调用
 而PaddleRS所特有的模型可以通过如下方法调用
 
 
 ```python
 ```python
-from paddlers.custom_models import xxxx
+from paddlers.rs_models import xxxx
 ```
 ```

+ 1 - 1
paddlers/datasets/voc.py

@@ -186,7 +186,7 @@ class VOCDetection(BaseDataset):
                     box_tag = pattern.findall(str(ET.tostringlist(obj)))
                     box_tag = pattern.findall(str(ET.tostringlist(obj)))
                     if len(box_tag) == 0:
                     if len(box_tag) == 0:
                         logging.warning(
                         logging.warning(
-                            "There's no field '<bndbox>' in one of object, "
+                            "There is no field '<bndbox>' in the object, "
                             "so this object will be ignored. xml file: {}".
                             "so this object will be ignored. xml file: {}".
                             format(xml_file))
                             format(xml_file))
                         continue
                         continue

+ 2 - 2
paddlers/deploy/predictor.py

@@ -157,7 +157,7 @@ class Predictor(object):
             }
             }
         elif self._model.model_type == 'detector':
         elif self._model.model_type == 'detector':
             pass
             pass
-        elif self._model.model_type == 'changedetector':
+        elif self._model.model_type == 'change_detector':
             preprocessed_samples = {
             preprocessed_samples = {
                 'image': preprocessed_samples[0],
                 'image': preprocessed_samples[0],
                 'image2': preprocessed_samples[1],
                 'image2': preprocessed_samples[1],
@@ -186,7 +186,7 @@ class Predictor(object):
                 'scores_map': s,
                 'scores_map': s,
                 'label_names_map': n,
                 'label_names_map': n,
             } for l, s, n in zip(class_ids, scores, label_names)]
             } for l, s, n in zip(class_ids, scores, label_names)]
-        elif self._model.model_type in ('segmenter', 'changedetector'):
+        elif self._model.model_type in ('segmenter', 'change_detector'):
             label_map, score_map = self._model._postprocess(
             label_map, score_map = self._model._postprocess(
                 net_outputs,
                 net_outputs,
                 batch_origin_shape=ori_shape,
                 batch_origin_shape=ori_shape,

+ 1 - 1
paddlers/custom_models/__init__.py → paddlers/rs_models/__init__.py

@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # limitations under the License.
 
 
-from . import cls, det, seg, gan, cd
+from . import clas, det, seg, res, cd

+ 0 - 0
paddlers/custom_models/cd/__init__.py → paddlers/rs_models/cd/__init__.py


+ 0 - 0
paddlers/custom_models/cd/backbones/__init__.py → paddlers/rs_models/cd/backbones/__init__.py


+ 0 - 0
paddlers/custom_models/cd/backbones/resnet.py → paddlers/rs_models/cd/backbones/resnet.py


+ 0 - 0
paddlers/custom_models/cd/bit.py → paddlers/rs_models/cd/bit.py


+ 0 - 0
paddlers/custom_models/cd/cdnet.py → paddlers/rs_models/cd/cdnet.py


+ 1 - 1
paddlers/custom_models/cd/changestar.py → paddlers/rs_models/cd/changestar.py

@@ -17,7 +17,7 @@ import paddle.nn as nn
 import paddle.nn.functional as F
 import paddle.nn.functional as F
 
 
 from paddlers.datasets.cd_dataset import MaskType
 from paddlers.datasets.cd_dataset import MaskType
-from paddlers.custom_models.seg import FarSeg
+from paddlers.rs_models.seg import FarSeg
 from .layers import Conv3x3, Identity
 from .layers import Conv3x3, Identity
 
 
 
 

+ 0 - 0
paddlers/custom_models/cd/dsamnet.py → paddlers/rs_models/cd/dsamnet.py


+ 0 - 0
paddlers/custom_models/cd/dsifn.py → paddlers/rs_models/cd/dsifn.py


+ 0 - 0
paddlers/custom_models/cd/fc_ef.py → paddlers/rs_models/cd/fc_ef.py


+ 0 - 0
paddlers/custom_models/cd/fc_siam_conc.py → paddlers/rs_models/cd/fc_siam_conc.py


+ 0 - 0
paddlers/custom_models/cd/fc_siam_diff.py → paddlers/rs_models/cd/fc_siam_diff.py


+ 0 - 0
paddlers/custom_models/cd/layers/__init__.py → paddlers/rs_models/cd/layers/__init__.py


+ 0 - 0
paddlers/custom_models/cd/layers/attention.py → paddlers/rs_models/cd/layers/attention.py


+ 0 - 0
paddlers/custom_models/cd/layers/blocks.py → paddlers/rs_models/cd/layers/blocks.py


+ 1 - 1
paddlers/custom_models/cd/param_init.py → paddlers/rs_models/cd/param_init.py

@@ -67,7 +67,7 @@ class KaimingInitMixin:
 
 
     Examples:
     Examples:
 
 
-        from paddlers.custom_models.cd.models.param_init import KaimingInitMixin
+        from paddlers.rs_models.cd.models.param_init import KaimingInitMixin
 
 
         class CustomNet(nn.Layer, KaimingInitMixin):
         class CustomNet(nn.Layer, KaimingInitMixin):
             def __init__(self, num_channels, num_classes):
             def __init__(self, num_channels, num_classes):

+ 0 - 0
paddlers/custom_models/cd/snunet.py → paddlers/rs_models/cd/snunet.py


+ 0 - 0
paddlers/custom_models/cd/stanet.py → paddlers/rs_models/cd/stanet.py


+ 0 - 0
paddlers/custom_models/cls/__init__.py → paddlers/rs_models/clas/__init__.py


+ 0 - 0
paddlers/custom_models/cls/condensenet_v2.py → paddlers/rs_models/clas/condensenet_v2.py


+ 0 - 0
paddlers/custom_models/det/__init__.py → paddlers/rs_models/det/__init__.py


+ 0 - 0
paddlers/custom_models/gan/__init__.py → paddlers/rs_models/res/__init__.py


+ 0 - 0
paddlers/custom_models/gan/generators/__init__.py → paddlers/rs_models/res/generators/__init__.py


+ 0 - 0
paddlers/custom_models/gan/generators/builder.py → paddlers/rs_models/res/generators/builder.py


+ 0 - 0
paddlers/custom_models/gan/generators/rcan.py → paddlers/rs_models/res/generators/rcan.py


+ 0 - 0
paddlers/custom_models/gan/rcan_model.py → paddlers/rs_models/res/rcan_model.py


+ 0 - 0
paddlers/custom_models/seg/__init__.py → paddlers/rs_models/seg/__init__.py


+ 0 - 0
paddlers/custom_models/seg/farseg.py → paddlers/rs_models/seg/farseg.py


+ 0 - 0
paddlers/custom_models/seg/layers/__init__.py → paddlers/rs_models/seg/layers/__init__.py


+ 0 - 0
paddlers/custom_models/seg/layers/layers_lib.py → paddlers/rs_models/seg/layers/layers_lib.py


+ 0 - 0
paddlers/custom_models/seg/layers/param_init.py → paddlers/rs_models/seg/layers/param_init.py


+ 5 - 5
paddlers/tasks/__init__.py

@@ -12,9 +12,9 @@
 # See the License for the specific language governing permissions and
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # limitations under the License.
 
 
-from .object_detector import *
-from .segmenter import *
-from .change_detector import *
-from .classifier import *
+import paddlers.tasks.object_detector as det
+import paddlers.tasks.segmenter as seg
+import paddlers.tasks.change_detector as cd
+import paddlers.tasks.classifier as clas
+import paddlers.tasks.image_restorer as res
 from .load_model import load_model
 from .load_model import load_model
-from .image_restorer import *

+ 1 - 1
paddlers/tasks/base.py

@@ -614,7 +614,7 @@ class BaseModel(metaclass=ModelMeta):
     def _build_inference_net(self):
     def _build_inference_net(self):
         if self.model_type in ('classifier', 'detector'):
         if self.model_type in ('classifier', 'detector'):
             infer_net = self.net
             infer_net = self.net
-        elif self.model_type == 'changedetector':
+        elif self.model_type == 'change_detector':
             infer_net = InferCDNet(self.net)
             infer_net = InferCDNet(self.net)
         else:
         else:
             infer_net = InferNet(self.net, self.model_type)
             infer_net = InferNet(self.net, self.model_type)

+ 3 - 3
paddlers/tasks/change_detector.py

@@ -25,7 +25,7 @@ import paddle.nn.functional as F
 from paddle.static import InputSpec
 from paddle.static import InputSpec
 
 
 import paddlers
 import paddlers
-import paddlers.custom_models.cd as cmcd
+import paddlers.rs_models.cd as cmcd
 import paddlers.utils.logging as logging
 import paddlers.utils.logging as logging
 import paddlers.models.ppseg as paddleseg
 import paddlers.models.ppseg as paddleseg
 from paddlers.transforms import Resize, decode_image
 from paddlers.transforms import Resize, decode_image
@@ -49,9 +49,9 @@ class BaseChangeDetector(BaseModel):
         self.init_params = locals()
         self.init_params = locals()
         if 'with_net' in self.init_params:
         if 'with_net' in self.init_params:
             del self.init_params['with_net']
             del self.init_params['with_net']
-        super(BaseChangeDetector, self).__init__('changedetector')
+        super(BaseChangeDetector, self).__init__('change_detector')
         if model_name not in __all__:
         if model_name not in __all__:
-            raise Exception("ERROR: There's no model named {}.".format(
+            raise ValueError("ERROR: There is no model named {}.".format(
                 model_name))
                 model_name))
         self.model_name = model_name
         self.model_name = model_name
         self.num_classes = num_classes
         self.num_classes = num_classes

+ 1 - 1
paddlers/tasks/classifier.py

@@ -23,7 +23,7 @@ import paddle.nn.functional as F
 from paddle.static import InputSpec
 from paddle.static import InputSpec
 
 
 import paddlers.models.ppcls as paddleclas
 import paddlers.models.ppcls as paddleclas
-import paddlers.custom_models.cls as cmcls
+import paddlers.rs_models.clas as cmcls
 import paddlers
 import paddlers
 from paddlers.utils import get_single_card_bs, DisablePrint
 from paddlers.utils import get_single_card_bs, DisablePrint
 import paddlers.utils.logging as logging
 import paddlers.utils.logging as logging

+ 8 - 6
paddlers/tasks/load_model.py

@@ -73,9 +73,11 @@ def load_model(model_dir, **params):
         assert status == 'Infer', \
         assert status == 'Infer', \
             "Only exported models can be deployed for inference, but current model status is {}.".format(status)
             "Only exported models can be deployed for inference, but current model status is {}.".format(status)
 
 
-    if not hasattr(paddlers.tasks, model_info['Model']):
-        raise Exception("There is no {} attribute in paddlers.tasks.".format(
-            model_info['Model']))
+    model_type = model_info['_Attributes']['model_type']
+    mod = getattr(paddlers.tasks, model_type)
+    if not hasattr(mod, model_info['Model']):
+        raise Exception("There is no {} attribute in {}.".format(model_info[
+            'Model'], mod))
     if 'model_name' in model_info['_init_params']:
     if 'model_name' in model_info['_init_params']:
         del model_info['_init_params']['model_name']
         del model_info['_init_params']['model_name']
 
 
@@ -88,7 +90,7 @@ def load_model(model_dir, **params):
             )
             )
         params = model_info.pop('raw_params', {})
         params = model_info.pop('raw_params', {})
         params.update(model_info['_init_params'])
         params.update(model_info['_init_params'])
-        model = getattr(paddlers.tasks, model_info['Model'])(**params)
+        model = getattr(mod, model_info['Model'])(**params)
         if with_net:
         if with_net:
             if status == 'Pruned' or osp.exists(
             if status == 'Pruned' or osp.exists(
                     osp.join(model_dir, "prune.yml")):
                     osp.join(model_dir, "prune.yml")):
@@ -127,9 +129,9 @@ def load_model(model_dir, **params):
                 else:
                 else:
                     net_state_dict = paddle.load(osp.join(model_dir, 'model'))
                     net_state_dict = paddle.load(osp.join(model_dir, 'model'))
                     if model.model_type in [
                     if model.model_type in [
-                            'classifier', 'segmenter', 'changedetector'
+                            'classifier', 'segmenter', 'change_detector'
                     ]:
                     ]:
-                        # When exporting a classifier, segmenter, or changedetector,
+                        # When exporting a classifier, segmenter, or change_detector,
                         # InferNet (or InferCDNet) is defined to append softmax and argmax operators to the model,
                         # InferNet (or InferCDNet) is defined to append softmax and argmax operators to the model,
                         # so the parameter names all start with 'net.'
                         # so the parameter names all start with 'net.'
                         new_net_state_dict = {}
                         new_net_state_dict = {}

+ 1 - 1
paddlers/tasks/object_detector.py

@@ -48,7 +48,7 @@ class BaseDetector(BaseModel):
             del self.init_params['with_net']
             del self.init_params['with_net']
         super(BaseDetector, self).__init__('detector')
         super(BaseDetector, self).__init__('detector')
         if not hasattr(ppdet.modeling, model_name):
         if not hasattr(ppdet.modeling, model_name):
-            raise Exception("ERROR: There's no model named {}.".format(
+            raise ValueError("ERROR: There is no model named {}.".format(
                 model_name))
                 model_name))
 
 
         self.model_name = model_name
         self.model_name = model_name

+ 2 - 2
paddlers/tasks/segmenter.py

@@ -24,7 +24,7 @@ import paddle.nn.functional as F
 from paddle.static import InputSpec
 from paddle.static import InputSpec
 
 
 import paddlers.models.ppseg as paddleseg
 import paddlers.models.ppseg as paddleseg
-import paddlers.custom_models.seg as cmseg
+import paddlers.rs_models.seg as cmseg
 import paddlers
 import paddlers
 from paddlers.utils import get_single_card_bs, DisablePrint
 from paddlers.utils import get_single_card_bs, DisablePrint
 import paddlers.utils.logging as logging
 import paddlers.utils.logging as logging
@@ -48,7 +48,7 @@ class BaseSegmenter(BaseModel):
         super(BaseSegmenter, self).__init__('segmenter')
         super(BaseSegmenter, self).__init__('segmenter')
         if not hasattr(paddleseg.models, model_name) and \
         if not hasattr(paddleseg.models, model_name) and \
            not hasattr(cmseg, model_name):
            not hasattr(cmseg, model_name):
-            raise Exception("ERROR: There's no model named {}.".format(
+            raise ValueError("ERROR: There is no model named {}.".format(
                 model_name))
                 model_name))
         self.model_name = model_name
         self.model_name = model_name
         self.num_classes = num_classes
         self.num_classes = num_classes

+ 1 - 1
paddlers/tasks/utils/infer_nets.py

@@ -46,7 +46,7 @@ class InferCDNet(paddle.nn.Layer):
     def __init__(self, net):
     def __init__(self, net):
         super(InferCDNet, self).__init__()
         super(InferCDNet, self).__init__()
         self.net = net
         self.net = net
-        self.postprocessor = PostProcessor('changedetector')
+        self.postprocessor = PostProcessor('change_detector')
 
 
     def forward(self, x1, x2):
     def forward(self, x1, x2):
         net_outputs = self.net(x1, x2)
         net_outputs = self.net(x1, x2)

+ 1 - 1
paddlers/transforms/operators.py

@@ -284,7 +284,7 @@ class DecodeImg(Transform):
                 raise ValueError(
                 raise ValueError(
                     "The height or width of the image is not same as the mask.")
                     "The height or width of the image is not same as the mask.")
         if 'aux_masks' in sample:
         if 'aux_masks' in sample:
-            sample['aux_masks_ori'] = copy.deepcopy(sample['aux_masks_ori'])
+            sample['aux_masks_ori'] = copy.deepcopy(sample['aux_masks'])
             sample['aux_masks'] = list(
             sample['aux_masks'] = list(
                 map(self.apply_mask, sample['aux_masks']))
                 map(self.apply_mask, sample['aux_masks']))
             # TODO: check the shape of auxiliary masks
             # TODO: check the shape of auxiliary masks

+ 10 - 10
tests/rs_models/test_cd_models.py

@@ -65,7 +65,7 @@ class TestCDModel(TestModel):
 
 
 
 
 class TestBITModel(TestCDModel):
 class TestBITModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.BIT
+    MODEL_CLASS = paddlers.rs_models.cd.BIT
 
 
     def set_specs(self):
     def set_specs(self):
         base_spec = dict(in_channels=3, num_classes=2)
         base_spec = dict(in_channels=3, num_classes=2)
@@ -80,7 +80,7 @@ class TestBITModel(TestCDModel):
 
 
 
 
 class TestCDNetModel(TestCDModel):
 class TestCDNetModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.CDNet
+    MODEL_CLASS = paddlers.rs_models.cd.CDNet
     EF_MODE = 'Concat'
     EF_MODE = 'Concat'
 
 
     def set_specs(self):
     def set_specs(self):
@@ -92,7 +92,7 @@ class TestCDNetModel(TestCDModel):
 
 
 
 
 class TestChangeStarModel(TestCDModel):
 class TestChangeStarModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.ChangeStar
+    MODEL_CLASS = paddlers.rs_models.cd.ChangeStar
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [
@@ -112,7 +112,7 @@ class TestChangeStarModel(TestCDModel):
 
 
 
 
 class TestDSAMNetModel(TestCDModel):
 class TestDSAMNetModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.DSAMNet
+    MODEL_CLASS = paddlers.rs_models.cd.DSAMNet
 
 
     def set_specs(self):
     def set_specs(self):
         base_spec = dict(in_channels=3, num_classes=2)
         base_spec = dict(in_channels=3, num_classes=2)
@@ -134,7 +134,7 @@ class TestDSAMNetModel(TestCDModel):
 
 
 
 
 class TestDSIFNModel(TestCDModel):
 class TestDSIFNModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.DSIFN
+    MODEL_CLASS = paddlers.rs_models.cd.DSIFN
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [
@@ -153,7 +153,7 @@ class TestDSIFNModel(TestCDModel):
 
 
 
 
 class TestFCEarlyFusionModel(TestCDModel):
 class TestFCEarlyFusionModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.FCEarlyFusion
+    MODEL_CLASS = paddlers.rs_models.cd.FCEarlyFusion
     EF_MODE = 'Concat'
     EF_MODE = 'Concat'
 
 
     def set_specs(self):
     def set_specs(self):
@@ -166,7 +166,7 @@ class TestFCEarlyFusionModel(TestCDModel):
 
 
 
 
 class TestFCSiamConcModel(TestCDModel):
 class TestFCSiamConcModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.FCSiamConc
+    MODEL_CLASS = paddlers.rs_models.cd.FCSiamConc
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [
@@ -178,7 +178,7 @@ class TestFCSiamConcModel(TestCDModel):
 
 
 
 
 class TestFCSiamDiffModel(TestCDModel):
 class TestFCSiamDiffModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.FCSiamDiff
+    MODEL_CLASS = paddlers.rs_models.cd.FCSiamDiff
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [
@@ -190,7 +190,7 @@ class TestFCSiamDiffModel(TestCDModel):
 
 
 
 
 class TestSNUNetModel(TestCDModel):
 class TestSNUNetModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.SNUNet
+    MODEL_CLASS = paddlers.rs_models.cd.SNUNet
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [
@@ -202,7 +202,7 @@ class TestSNUNetModel(TestCDModel):
 
 
 
 
 class TestSTANetModel(TestCDModel):
 class TestSTANetModel(TestCDModel):
-    MODEL_CLASS = paddlers.custom_models.cd.STANet
+    MODEL_CLASS = paddlers.rs_models.cd.STANet
 
 
     def set_specs(self):
     def set_specs(self):
         base_spec = dict(in_channels=3, num_classes=2)
         base_spec = dict(in_channels=3, num_classes=2)

+ 1 - 1
tests/rs_models/test_seg_models.py

@@ -48,7 +48,7 @@ class TestSegModel(TestModel):
 
 
 
 
 class TestFarSegModel(TestSegModel):
 class TestFarSegModel(TestSegModel):
-    MODEL_CLASS = paddlers.custom_models.seg.FarSeg
+    MODEL_CLASS = paddlers.rs_models.seg.FarSeg
 
 
     def set_specs(self):
     def set_specs(self):
         self.specs = [
         self.specs = [

+ 4 - 1
tests/transforms/test_operators.py

@@ -23,7 +23,7 @@ from data import build_input_from_file
 
 
 __all__ = ['TestTransform', 'TestCompose', 'TestArrange']
 __all__ = ['TestTransform', 'TestCompose', 'TestArrange']
 
 
-WHITE_LIST = []
+WHITE_LIST = ['ReloadMask']
 
 
 
 
 def _add_op_tests(cls):
 def _add_op_tests(cls):
@@ -37,6 +37,9 @@ def _add_op_tests(cls):
                                                      T.operators.Transform):
                                                      T.operators.Transform):
             if op_class is T.DecodeImg or op_class in WHITE_LIST or op_name in WHITE_LIST:
             if op_class is T.DecodeImg or op_class in WHITE_LIST or op_name in WHITE_LIST:
                 continue
                 continue
+            if issubclass(op_class, T.Compose) or issubclass(
+                    op_class, T.operators.Arrange):
+                continue
             attr_name = 'test_' + op_name
             attr_name = 'test_' + op_name
             if hasattr(cls, attr_name):
             if hasattr(cls, attr_name):
                 continue
                 continue

+ 1 - 1
tutorials/train/change_detection/bit.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建BIT模型
 # 使用默认参数构建BIT模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.BIT()
+model = pdrs.tasks.cd.BIT()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/cdnet.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建CDNet模型
 # 使用默认参数构建CDNet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.CDNet()
+model = pdrs.tasks.cd.CDNet()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/dsamnet.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建DSAMNet模型
 # 使用默认参数构建DSAMNet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.DSAMNet()
+model = pdrs.tasks.cd.DSAMNet()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/dsifn.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建DSIFN模型
 # 使用默认参数构建DSIFN模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.DSIFN()
+model = pdrs.tasks.cd.DSIFN()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/fc_ef.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建FC-EF模型
 # 使用默认参数构建FC-EF模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.FCEarlyFusion()
+model = pdrs.tasks.cd.FCEarlyFusion()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/fc_siam_conc.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建FC-Siam-conc模型
 # 使用默认参数构建FC-Siam-conc模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.FCSiamConc()
+model = pdrs.tasks.cd.FCSiamConc()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/fc_siam_diff.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建FC-Siam-diff模型
 # 使用默认参数构建FC-Siam-diff模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.FCSiamDiff()
+model = pdrs.tasks.cd.FCSiamDiff()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/snunet.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建SNUNet模型
 # 使用默认参数构建SNUNet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.SNUNet()
+model = pdrs.tasks.cd.SNUNet()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/change_detection/stanet.py

@@ -74,7 +74,7 @@ eval_dataset = pdrs.datasets.CDDataset(
 # 使用默认参数构建STANet模型
 # 使用默认参数构建STANet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/change_detector.py
-model = pdrs.tasks.STANet()
+model = pdrs.tasks.cd.STANet()
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/classification/hrnet.py

@@ -68,7 +68,7 @@ eval_dataset = pdrs.datasets.ClasDataset(
 # 使用默认参数构建HRNet模型
 # 使用默认参数构建HRNet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
-model = pdrs.tasks.HRNet_W18_C(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.clas.HRNet_W18_C(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 2 - 1
tutorials/train/classification/mobilenetv3.py

@@ -68,7 +68,8 @@ eval_dataset = pdrs.datasets.ClasDataset(
 # 使用默认参数构建MobileNetV3模型
 # 使用默认参数构建MobileNetV3模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
-model = pdrs.tasks.MobileNetV3_small_x1_0(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.clas.MobileNetV3_small_x1_0(
+    num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/classification/resnet50_vd.py

@@ -68,7 +68,7 @@ eval_dataset = pdrs.datasets.ClasDataset(
 # 使用默认参数构建ResNet50-vd模型
 # 使用默认参数构建ResNet50-vd模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/classifier.py
-model = pdrs.tasks.ResNet50_vd(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.clas.ResNet50_vd(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/image_restoration/drn_train.py

@@ -66,7 +66,7 @@ test_dataset = pdrs.datasets.SRdataset(
     scale=scale)
     scale=scale)
 
 
 # 初始化模型,可以对网络结构的参数进行调整
 # 初始化模型,可以对网络结构的参数进行调整
-model = pdrs.tasks.DRNet(
+model = pdrs.tasks.res.DRNet(
     n_blocks=30, n_feats=16, n_colors=3, rgb_range=255, negval=0.2)
     n_blocks=30, n_feats=16, n_colors=3, rgb_range=255, negval=0.2)
 
 
 model.train(
 model.train(

+ 1 - 1
tutorials/train/image_restoration/esrgan_train.py

@@ -65,7 +65,7 @@ test_dataset = pdrs.datasets.SRdataset(
 # 初始化模型,可以对网络结构的参数进行调整
 # 初始化模型,可以对网络结构的参数进行调整
 # 若loss_type='gan' 使用感知损失、对抗损失和像素损失
 # 若loss_type='gan' 使用感知损失、对抗损失和像素损失
 # 若loss_type = 'pixel' 只使用像素损失
 # 若loss_type = 'pixel' 只使用像素损失
-model = pdrs.tasks.ESRGANet(loss_type='pixel')
+model = pdrs.tasks.res.ESRGANet(loss_type='pixel')
 
 
 model.train(
 model.train(
     total_iters=1000000,
     total_iters=1000000,

+ 1 - 1
tutorials/train/image_restoration/lesrcnn_train.py

@@ -63,7 +63,7 @@ test_dataset = pdrs.datasets.SRdataset(
     scale=scale)
     scale=scale)
 
 
 # 初始化模型,可以对网络结构的参数进行调整
 # 初始化模型,可以对网络结构的参数进行调整
-model = pdrs.tasks.LESRCNNet(scale=4, multi_scale=False, group=1)
+model = pdrs.tasks.res.LESRCNNet(scale=4, multi_scale=False, group=1)
 
 
 model.train(
 model.train(
     total_iters=1000000,
     total_iters=1000000,

+ 1 - 1
tutorials/train/object_detection/faster_rcnn.py

@@ -76,7 +76,7 @@ eval_dataset = pdrs.datasets.VOCDetection(
 # 构建Faster R-CNN模型
 # 构建Faster R-CNN模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
-model = pdrs.tasks.FasterRCNN(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.det.FasterRCNN(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/object_detection/ppyolo.py

@@ -76,7 +76,7 @@ eval_dataset = pdrs.datasets.VOCDetection(
 # 构建PP-YOLO模型
 # 构建PP-YOLO模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
-model = pdrs.tasks.PPYOLO(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.det.PPYOLO(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/object_detection/ppyolotiny.py

@@ -76,7 +76,7 @@ eval_dataset = pdrs.datasets.VOCDetection(
 # 构建PP-YOLO Tiny模型
 # 构建PP-YOLO Tiny模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
-model = pdrs.tasks.PPYOLOTiny(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.det.PPYOLOTiny(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/object_detection/ppyolov2.py

@@ -76,7 +76,7 @@ eval_dataset = pdrs.datasets.VOCDetection(
 # 构建PP-YOLOv2模型
 # 构建PP-YOLOv2模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
-model = pdrs.tasks.PPYOLOv2(num_classes=len(train_dataset.labels))
+model = pdrs.tasks.det.PPYOLOv2(num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练
 model.train(
 model.train(

+ 1 - 1
tutorials/train/object_detection/yolov3.py

@@ -76,7 +76,7 @@ eval_dataset = pdrs.datasets.VOCDetection(
 # 构建YOLOv3模型,使用DarkNet53作为backbone
 # 构建YOLOv3模型,使用DarkNet53作为backbone
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/object_detector.py
-model = pdrs.tasks.YOLOv3(
+model = pdrs.tasks.det.YOLOv3(
     num_classes=len(train_dataset.labels), backbone='DarkNet53')
     num_classes=len(train_dataset.labels), backbone='DarkNet53')
 
 
 # 执行模型训练
 # 执行模型训练

+ 1 - 1
tutorials/train/semantic_segmentation/deeplabv3p.py

@@ -70,7 +70,7 @@ eval_dataset = pdrs.datasets.SegDataset(
 # 构建DeepLab V3+模型,使用ResNet-50作为backbone
 # 构建DeepLab V3+模型,使用ResNet-50作为backbone
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/segmenter.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/segmenter.py
-model = pdrs.tasks.DeepLabV3P(
+model = pdrs.tasks.seg.DeepLabV3P(
     input_channel=NUM_BANDS,
     input_channel=NUM_BANDS,
     num_classes=len(train_dataset.labels),
     num_classes=len(train_dataset.labels),
     backbone='ResNet50_vd')
     backbone='ResNet50_vd')

+ 1 - 1
tutorials/train/semantic_segmentation/unet.py

@@ -70,7 +70,7 @@ eval_dataset = pdrs.datasets.SegDataset(
 # 构建UNet模型
 # 构建UNet模型
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 目前已支持的模型请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/docs/apis/model_zoo.md
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/segmenter.py
 # 模型输入参数请参考:https://github.com/PaddlePaddle/PaddleRS/blob/develop/paddlers/tasks/segmenter.py
-model = pdrs.tasks.UNet(
+model = pdrs.tasks.seg.UNet(
     input_channel=NUM_BANDS, num_classes=len(train_dataset.labels))
     input_channel=NUM_BANDS, num_classes=len(train_dataset.labels))
 
 
 # 执行模型训练
 # 执行模型训练