modelscope installation usage example

Table of contents

Install

Image fusion example:

Multi-card allocation error:

Solution:

Portrait restoration and enhancement example


Install

pip install modelscope

Image fusion example:

import cv2
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

if __name__ == '__main__':

    image_face_fusion = pipeline(Tasks.image_face_fusion,model='damo/cv_unet-image-face-fusion_damo')
    template_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/facefusion_template.jpg'
    user_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/facefusion_user.jpg'
    result = image_face_fusion(dict(template=template_path, user=user_path))

    cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])
    print('finished!')

Multi-card allocation error:

Expected all tensors to be on the same device, but found at least two devices, cuda:1 and cuda:0

Solution:

Lib\site-packages\modelscope\models\cv\image_face_fusion\image_face_fusion.py

, the code after modification:

self.device = torch.device('cuda:0')

    def __init__(self, model_dir: str, *args, **kwargs):
        """initialize the image face fusion model from the `model_dir` path.

        Args:
            model_dir (str): the model path.
        """
        super().__init__(model_dir, *args, **kwargs)

        if torch.cuda.is_available():
            self.device = torch.device('cuda:0')
        else:
            self.device = torch.device('cpu')

Portrait restoration and enhancement example

import importlib
import os
from collections import OrderedDict

import cv2

import  tensorflow

from modelscope import snapshot_download
from modelscope.utils.error import SKLEARN_IMPORT_ERROR

model_dir = snapshot_download('damo/cv_unet_skin-retouching')

from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

import importlib_metadata
from packaging import version
_tf_version = 'N/A'

# following code borrows implementation from huggingface/transformers
ENV_VARS_TRUE_VALUES = {'1', 'ON', 'YES', 'TRUE'}
ENV_VARS_TRUE_AND_AUTO_VALUES = ENV_VARS_TRUE_VALUES.union({'AUTO'})
USE_TF = os.environ.get('USE_TF', 'AUTO').upper()
USE_TORCH = os.environ.get('USE_TORCH', 'AUTO').upper()

if USE_TF in ENV_VARS_TRUE_AND_AUTO_VALUES and USE_TORCH not in ENV_VARS_TRUE_VALUES:
    _tf_available = importlib.util.find_spec('tensorflow') is not None
    if _tf_available:
        candidates = (
            'tensorflow',
            'tensorflow-cpu',
            'tensorflow-gpu',
            'tf-nightly',
            'tf-nightly-cpu',
            'tf-nightly-gpu',
            'intel-tensorflow',
            'intel-tensorflow-avx512',
            'tensorflow-rocm',
            'tensorflow-macos',
        )
        _tf_version = None
        # For the metadata, we have to look for both tensorflow and tensorflow-cpu
        for pkg in candidates:
            try:
                _tf_version = importlib_metadata.version(pkg)
                break
            except importlib_metadata.PackageNotFoundError:
                pass
        _tf_available = _tf_version is not None
    if _tf_available:
        if version.parse(_tf_version) < version.parse('2'):
            pass
        else:
            print(f'TensorFlow version {_tf_version} Found.')
else:
    print('Disabling Tensorflow because USE_TORCH is set')
    _tf_available = False

def is_scipy_available():
    return importlib.util.find_spec('scipy') is not None


def is_sklearn_available():
    if importlib.util.find_spec('sklearn') is None:
        return False
    return is_scipy_available() and importlib.util.find_spec('sklearn.metrics')


def is_sentencepiece_available():
    return importlib.util.find_spec('sentencepiece') is not None


def is_protobuf_available():
    if importlib.util.find_spec('google') is None:
        return False
    return importlib.util.find_spec('google.protobuf') is not None


def is_tokenizers_available():
    return importlib.util.find_spec('tokenizers') is not None


_timm_available = importlib.util.find_spec('timm') is not None
try:
    _timm_version = importlib_metadata.version('timm')
    print(f'Successfully imported timm version {_timm_version}')
except importlib_metadata.PackageNotFoundError:
    _timm_available = False

def is_timm_available():
    return _timm_available




def is_wenetruntime_available():
    return importlib.util.find_spec('wenetruntime') is not None


def is_swift_available():
    return importlib.util.find_spec('swift') is not None


def is_tf_available():
    return _tf_available


def is_opencv_available():
    return importlib.util.find_spec('cv2') is not None


def is_pillow_available():
    return importlib.util.find_spec('PIL.Image') is not None


def _is_package_available_fn(pkg_name):
    return importlib.util.find_spec(pkg_name) is not None


def is_espnet_available(pkg_name):
    return importlib.util.find_spec('espnet2') is not None \
        and importlib.util.find_spec('espnet')

if __name__ == '__main__':

    # skin_retouching = pipeline(Tasks.skin_retouching,model='damo/cv_unet_skin-retouching')

    skin_retouching=pipeline(Tasks.image_portrait_enhancement, model='damo/cv_gpen_image-portrait-enhancement')
    print('---------------1111111111-----------------------')
    result = skin_retouching(r'E:\project\stable-diffusion-webui-master\test\images\skin_retouching_examples_1.jpg')
    print('---------------2222222222-----------------------')
    cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])

Guess you like

Origin blog.csdn.net/jacke121/article/details/135417360