diff --git a/paddlex/__init__.py b/paddlex/__init__.py index 596a570248783433ca6bd540050fe70912edde2a..a811bf6f563c4c516e279c3f80b132a572fc7695 100644 --- a/paddlex/__init__.py +++ b/paddlex/__init__.py @@ -43,11 +43,6 @@ except: "[WARNING] pycocotools install: https://paddlex.readthedocs.io/zh_CN/develop/install.html#pycocotools" ) -import paddle -if paddle.__version__ == '0.0.0': - print("[NOTICE]\tYou are using paddlepaddle with version= 0.0.0") -elif paddle.__version__ < '1.8.4': - raise Exception("[ERROR] paddlepaddle-gpu or paddlepaddle >= 1.8.4 is required") import paddlehub as hub if hub.version.hub_version < '1.8.2': raise Exception("[ERROR] paddlehub >= 1.8.2 is required") diff --git a/paddlex/cv/models/ppyolo.py b/paddlex/cv/models/ppyolo.py index 3c6db9bffd597526e03359cc496993d452fe8e94..95379f75e28fc1c324db61fc6c8411b91e6af229 100644 --- a/paddlex/cv/models/ppyolo.py +++ b/paddlex/cv/models/ppyolo.py @@ -18,6 +18,7 @@ import tqdm import os.path as osp import numpy as np from multiprocessing.pool import ThreadPool +import paddle import paddle.fluid as fluid from paddle.fluid.layers.learning_rate_scheduler import _decay_step_counter from paddle.fluid.optimizer import ExponentialMovingAverage @@ -123,6 +124,9 @@ class PPYOLO(BaseAPI): self.use_ema = False self.with_dcn_v2 = with_dcn_v2 + if paddle.__version__ < '1.8.4' and paddle.__version__ != '0.0.0': + raise Exception("PPYOLO requires paddlepaddle or paddlepaddle-gpu >= 1.8.4") + def _get_backbone(self, backbone_name): if backbone_name.startswith('ResNet50_vd'): backbone = paddlex.cv.nets.ResNet( diff --git a/paddlex/cv/nets/detection/loss/yolo_loss.py b/paddlex/cv/nets/detection/loss/yolo_loss.py index 4d948600f6f7e00fd05734f64337efa06c208ab4..2e9f6260bb922fb082f74fa1702921e9ac037672 100644 --- a/paddlex/cv/nets/detection/loss/yolo_loss.py +++ b/paddlex/cv/nets/detection/loss/yolo_loss.py @@ -16,6 +16,7 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function +import paddle from paddle import fluid try: from collections.abc import Sequence @@ -67,19 +68,34 @@ class YOLOv3Loss(object): scale_x_y = self.scale_x_y if not isinstance( self.scale_x_y, Sequence) else self.scale_x_y[i] anchor_mask = anchor_masks[i] - loss = fluid.layers.yolov3_loss( - x=output, - gt_box=gt_box, - gt_label=gt_label, - gt_score=gt_score, - anchors=anchors, - anchor_mask=anchor_mask, - class_num=num_classes, - ignore_thresh=self._ignore_thresh, - downsample_ratio=self.downsample[i], - use_label_smooth=self._label_smooth, - scale_x_y=scale_x_y, - name=prefix_name + "yolo_loss" + str(i)) + if paddle.__version__ < '1.8.4' and paddle.__version__ != '0.0.0': + loss = fluid.layers.yolov3_loss( + x=output, + gt_box=gt_box, + gt_label=gt_label, + gt_score=gt_score, + anchors=anchors, + anchor_mask=anchor_mask, + class_num=num_classes, + ignore_thresh=self._ignore_thresh, + downsample_ratio=self.downsample[i], + use_label_smooth=self._label_smooth, + name=prefix_name + "yolo_loss" + str(i)) + else: + loss = fluid.layers.yolov3_loss( + x=output, + gt_box=gt_box, + gt_label=gt_label, + gt_score=gt_score, + anchors=anchors, + anchor_mask=anchor_mask, + class_num=num_classes, + ignore_thresh=self._ignore_thresh, + downsample_ratio=self.downsample[i], + use_label_smooth=self._label_smooth, + scale_x_y=scale_x_y, + name=prefix_name + "yolo_loss" + str(i)) + losses.append(fluid.layers.reduce_mean(loss)) diff --git a/paddlex/cv/nets/detection/yolo_v3.py b/paddlex/cv/nets/detection/yolo_v3.py index b73cdc768737a54ff6b01eb7977c3c508ba5c0e3..aace152fab591a505db8027858a4d4c48959a017 100644 --- a/paddlex/cv/nets/detection/yolo_v3.py +++ b/paddlex/cv/nets/detection/yolo_v3.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import paddle from paddle import fluid from paddle.fluid.param_attr import ParamAttr from paddle.fluid.regularizer import L2Decay @@ -407,16 +408,28 @@ class YOLOv3: scale_x_y = self.scale_x_y if not isinstance( self.scale_x_y, Sequence) else self.scale_x_y[i] - box, score = fluid.layers.yolo_box( - x=input, - img_size=im_size, - anchors=self.mask_anchors[i], - class_num=self.num_classes, - conf_thresh=self.nms.score_threshold, - downsample_ratio=self.downsample[i], - name=self.prefix_name + 'yolo_box' + str(i), - clip_bbox=self.clip_bbox, - scale_x_y=self.scale_x_y) + if paddle.__version__ < '1.8.4' and paddle.__version__ != '0.0.0': + box, score = fluid.layers.yolo_box( + x=input, + img_size=im_size, + anchors=self.mask_anchors[i], + class_num=self.num_classes, + conf_thresh=self.nms.score_threshold, + downsample_ratio=self.downsample[i], + name=self.prefix_name + 'yolo_box' + str(i), + clip_bbox=self.clip_bbox) + else: + box, score = fluid.layers.yolo_box( + x=input, + img_size=im_size, + anchors=self.mask_anchors[i], + class_num=self.num_classes, + conf_thresh=self.nms.score_threshold, + downsample_ratio=self.downsample[i], + name=self.prefix_name + 'yolo_box' + str(i), + clip_bbox=self.clip_bbox, + scale_x_y=self.scale_x_y) + boxes.append(box) scores.append(fluid.layers.transpose(score, perm=[0, 2, 1]))