目录
pip install?modelscope
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!')
Expected all tensors to be on the same device, but found at least two devices, cuda:1 and cuda:0
Lib\site-packages\modelscope\models\cv\image_face_fusion\image_face_fusion.py
中,改之后的代码:
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')
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])