diff --git a/MANIFEST.in b/MANIFEST.in index 97372da0035488913c83dfe6f2ddfb8fe0c906c3..1bf8c5ea07722034997269c2486692cb825eed48 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,7 +2,6 @@ include LICENSE.txt include README.md include docs/en/whl_en.md recursive-include deploy/python *.py -recursive-include deploy/configs *.yaml -recursive-include deploy/utils get_image_list.py config.py logger.py predictor.py - -recursive-include ppcls/ *.py *.txt \ No newline at end of file +recursive-include deploy/utils *.py +recursive-include ppcls/ *.py *.txt +recursive-include deploy/configs *.yaml \ No newline at end of file diff --git a/deploy/python/predict_cls.py b/deploy/python/predict_cls.py index 49bf62fa3060b9336a3438b2ee5c25b2bac49667..e4ff254150113fa005208ac89d99c939043e6ffd 100644 --- a/deploy/python/predict_cls.py +++ b/deploy/python/predict_cls.py @@ -11,21 +11,15 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import os -import sys - -__dir__ = os.path.dirname(os.path.abspath(__file__)) -sys.path.append(os.path.abspath(os.path.join(__dir__, '../'))) import cv2 import numpy as np -from utils import logger -from utils import config -from utils.predictor import Predictor -from utils.get_image_list import get_image_list -from python.preprocess import create_operators -from python.postprocess import build_postprocess +from paddleclas.deploy.utils import logger, config +from paddleclas.deploy.utils.predictor import Predictor +from paddleclas.deploy.utils.get_image_list import get_image_list +from paddleclas.deploy.python.preprocess import create_operators +from paddleclas.deploy.python.postprocess import build_postprocess class ClsPredictor(Predictor): diff --git a/deploy/python/preprocess.py b/deploy/python/preprocess.py index 6952708337f8c0fb353d6c9f98bc7b91882163e8..89fe541ee1b3f254da0dba434b9f8259fecb8288 100644 --- a/deploy/python/preprocess.py +++ b/deploy/python/preprocess.py @@ -27,9 +27,8 @@ import cv2 import numpy as np import importlib from PIL import Image -from paddle.vision.transforms import ToTensor, Normalize -from python.det_preprocess import DetNormalizeImage, DetPadStride, DetPermute, DetResize +from .det_preprocess import DetNormalizeImage, DetPadStride, DetPermute, DetResize def create_operators(params): @@ -54,14 +53,13 @@ def create_operators(params): class UnifiedResize(object): - def __init__(self, interpolation=None, backend="cv2", return_numpy=True): + def __init__(self, interpolation=None, backend="cv2"): _cv2_interp_from_str = { 'nearest': cv2.INTER_NEAREST, 'bilinear': cv2.INTER_LINEAR, 'area': cv2.INTER_AREA, 'bicubic': cv2.INTER_CUBIC, - 'lanczos': cv2.INTER_LANCZOS4, - 'random': (cv2.INTER_LINEAR, cv2.INTER_CUBIC) + 'lanczos': cv2.INTER_LANCZOS4 } _pil_interp_from_str = { 'nearest': Image.NEAREST, @@ -69,26 +67,13 @@ class UnifiedResize(object): 'bicubic': Image.BICUBIC, 'box': Image.BOX, 'lanczos': Image.LANCZOS, - 'hamming': Image.HAMMING, - 'random': (Image.BILINEAR, Image.BICUBIC) + 'hamming': Image.HAMMING } - def _cv2_resize(src, size, resample): - if isinstance(resample, tuple): - resample = random.choice(resample) - return cv2.resize(src, size, interpolation=resample) - - def _pil_resize(src, size, resample, return_numpy=True): - if isinstance(resample, tuple): - resample = random.choice(resample) - if isinstance(src, np.ndarray): - pil_img = Image.fromarray(src) - else: - pil_img = src + def _pil_resize(src, size, resample): + pil_img = Image.fromarray(src) pil_img = pil_img.resize(size, resample) - if return_numpy: - return np.asarray(pil_img) - return pil_img + return np.asarray(pil_img) if backend.lower() == "cv2": if isinstance(interpolation, str): @@ -96,12 +81,11 @@ class UnifiedResize(object): # compatible with opencv < version 4.4.0 elif interpolation is None: interpolation = cv2.INTER_LINEAR - self.resize_func = partial(_cv2_resize, resample=interpolation) + self.resize_func = partial(cv2.resize, interpolation=interpolation) elif backend.lower() == "pil": if isinstance(interpolation, str): interpolation = _pil_interp_from_str[interpolation.lower()] - self.resize_func = partial( - _pil_resize, resample=interpolation, return_numpy=return_numpy) + self.resize_func = partial(_pil_resize, resample=interpolation) else: logger.warning( f"The backend of Resize only support \"cv2\" or \"PIL\". \"f{backend}\" is unavailable. Use \"cv2\" instead." @@ -109,8 +93,6 @@ class UnifiedResize(object): self.resize_func = cv2.resize def __call__(self, src, size): - if isinstance(size, list): - size = tuple(size) return self.resize_func(src, size) @@ -155,8 +137,7 @@ class ResizeImage(object): size=None, resize_short=None, interpolation=None, - backend="cv2", - return_numpy=True): + backend="cv2"): if resize_short is not None and resize_short > 0: self.resize_short = resize_short self.w = None @@ -170,18 +151,10 @@ class ResizeImage(object): 'both 'size' and 'resize_short' are None") self._resize_func = UnifiedResize( - interpolation=interpolation, - backend=backend, - return_numpy=return_numpy) + interpolation=interpolation, backend=backend) def __call__(self, img): - if isinstance(img, np.ndarray): - # numpy input - img_h, img_w = img.shape[:2] - else: - # PIL image input - img_w, img_h = img.size - + img_h, img_w = img.shape[:2] if self.resize_short is not None: percent = float(self.resize_short) / min(img_w, img_h) w = int(round(img_w * percent)) diff --git a/deploy/utils/config.py b/deploy/utils/config.py index 7e7ffb79c7de92cbb5f1760457b31967dc8b858b..ba2888c11fdc41ad6c5cd11bc0c256ceb58903a9 100644 --- a/deploy/utils/config.py +++ b/deploy/utils/config.py @@ -17,7 +17,7 @@ import copy import argparse import yaml -from utils import logger +from . import logger __all__ = ['get_config'] diff --git a/paddleclas.py b/paddleclas.py index 3b45ca120aebad27ea268a0db3edae72c840d705..8d5e93a8bbf695cc114f60c0124b51250a5e439c 100644 --- a/paddleclas.py +++ b/paddleclas.py @@ -16,7 +16,6 @@ import os import sys __dir__ = os.path.dirname(__file__) sys.path.append(os.path.join(__dir__, "")) -sys.path.append(os.path.join(__dir__, "deploy")) from typing import Union, Generator import argparse @@ -33,12 +32,16 @@ from tqdm import tqdm from prettytable import PrettyTable import paddle +import ppcls.arch.backbone as backbone +from ppcls.utils import logger + from deploy.python.predict_cls import ClsPredictor from deploy.utils.get_image_list import get_image_list from deploy.utils import config -import ppcls.arch.backbone as backbone -from ppcls.utils import logger +import deploy +import ppcls +# 'deploy.python', 'deploy.utils', 'ppcls.arch', 'ppcls.utils' # for building model with loading pretrained weights from backbone logger.init_logger() diff --git a/setup.py b/setup.py index c935136f40b93ce32f1dce7f4be482e6dcb4bce9..3aaea708c5ff3446a83c7b183673bd0eb67746e4 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ setup( package_dir={'paddleclas': ''}, include_package_data=True, entry_points={ - "console_scripts": ["paddleclas= paddleclas.paddleclas:main"] + "console_scripts": ["paddleclas=paddleclas.paddleclas:main"] }, version='0.0.0', install_requires=requirements,