Maison > Article > Périphériques technologiques > Pipeline d'inférence de modèle de cadre d'apprentissage profond TensorFlow pour l'inférence de découpe de portrait
Afin de permettre aux utilisateurs de ModelScope d'utiliser rapidement et facilement divers modèles fournis par la plateforme, un ensemble complet de bibliothèques Python est fourni, qui comprend l'implémentation des modèles officiels ModelScope, ainsi que l'utilisation de ces modèles pour inférence, réglage fin du code lié au prétraitement des données, au post-traitement, à l'évaluation des effets et à d'autres fonctions requises pour d'autres tâches, tout en fournissant également une API simple et facile à utiliser et des exemples d'utilisation riches. En appelant la bibliothèque, les utilisateurs peuvent effectuer des tâches telles que l'inférence de modèle, la formation et l'évaluation en écrivant seulement quelques lignes de code. Ils peuvent également effectuer rapidement un développement secondaire sur cette base pour concrétiser leurs propres idées innovantes.
Les modèles d'algorithmes actuellement fournis par la bibliothèque couvrent cinq domaines majeurs de l'IA : l'image, le traitement du langage naturel, la parole, la multimodalité et la science, et des dizaines de tâches de scénarios d'application. Pour des tâches spécifiques, veuillez vous référer au document : Introduction à. la tâche.
ModelScope Library prend actuellement en charge les frameworks d'apprentissage en profondeur tels que Pytorch et Tensorflow. D'autres frameworks seront continuellement mis à jour et étendus à l'avenir, alors restez à l'écoute ! Tous les modèles officiels peuvent être utilisés pour l'inférence de modèle via la bibliothèque ModelScope, et certains modèles peuvent également utiliser la bibliothèque pour la formation et l'évaluation. Pour des informations complètes sur l'utilisation, consultez la fiche modèle du modèle correspondant.
Dans l'apprentissage profond, l'inférence fait référence au processus par lequel le modèle prédit les données. Lorsque ModelScope effectue une inférence, il utilise un pipeline pour effectuer les opérations nécessaires de manière séquentielle. Un pipeline typique comprend généralement trois étapes : le prétraitement des données, l'inférence directe du modèle et le post-traitement des données.
La méthode pipeline() est l'une des méthodes utilisateur les plus élémentaires du framework ModelScope et peut être utilisée pour effectuer rapidement une inférence de modèle dans divers domaines. Avec la méthode pipeline(), les utilisateurs peuvent facilement effectuer l'inférence de modèle pour des tâches spécifiques avec une seule ligne de code. La méthode
pipeline() est l'une des méthodes utilisateur les plus basiques du framework ModelScope et peut être utilisée pour effectuer rapidement une inférence de modèle dans divers domaines. Avec la méthode pipeline(), les utilisateurs peuvent facilement effectuer l'inférence de modèle pour des tâches spécifiques avec une seule ligne de code.
Cet article présentera brièvement comment utiliser la méthode pipeline pour charger le modèle pour l'inférence. Grâce à la méthode pipeline, les utilisateurs peuvent facilement extraire le modèle requis de l'entrepôt de modèles en fonction du type de tâche et du nom du modèle à des fins d'inférence. Le principal avantage de cette méthode est qu’elle est facile à utiliser et qu’elle permet d’effectuer une inférence de modèle rapidement et efficacement. L'avantage de la méthode pipeline est qu'elle fournit un moyen direct d'obtenir et d'appliquer le modèle sans exiger que les utilisateurs comprennent les détails spécifiques du modèle, abaissant ainsi le seuil d'utilisation du modèle. Grâce à la méthode pipeline, les utilisateurs peuvent se concentrer davantage sur la résolution de problèmes et sur la
La fonction pipeline prend en charge la spécification d'un nom de tâche spécifique, le chargement du modèle par défaut de la tâche et la création de l'objet pipeline correspondant.
from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')input_str = '开源技术小栈作者是Tinywan,你知道不?'print(word_segmentation(input_str))
<?php $operator = PyCore::import("operator");$builtins = PyCore::import("builtins");$pipeline = PyCore::import('modelscope.pipelines')->pipeline;$word_segmentation = $pipeline("word-segmentation");$input_str = "开源技术小栈作者是Tinywan,你知道不?";PyCore::print($word_segmentation($input_str));
Outil de conversion en ligne : https://www.swoole.com/py2php/
/usr/local/php-8.2.14/bin/php demo.php 2024-03-25 21:41:42,434 - modelscope - INFO - PyTorch version 2.2.1 Found.2024-03-25 21:41:42,434 - modelscope - INFO - Loading ast index from /home/www/.cache/modelscope/ast_indexer2024-03-25 21:41:42,577 - modelscope - INFO - Loading done! Current index file version is 1.13.0, with md5 f54e9d2dceb89a6c989540d66db83a65 and a total number of 972 components indexed2024-03-25 21:41:44,661 - modelscope - WARNING - Model revision not specified, use revision: v1.0.32024-03-25 21:41:44,879 - modelscope - INFO - initiate model from /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base2024-03-25 21:41:44,879 - modelscope - INFO - initiate model from location /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base.2024-03-25 21:41:44,880 - modelscope - INFO - initialize model from /home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-baseYou are using a model of type bert to instantiate a model of type structbert. This is not supported for all configurations of models and can yield errors.2024-03-25 21:41:48,633 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 21:41:48,633 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 21:41:48,633 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base'}. trying to build by task and model information.2024-03-25 21:41:48,639 - modelscope - INFO - cuda is not available, using cpu instead.2024-03-25 21:41:48,640 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 21:41:48,640 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 21:41:48,640 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/home/www/.cache/modelscope/hub/damo/nlp_structbert_word-segmentation_chinese-base', 'sequence_length': 512}. trying to build by task and model information./home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/transformers/modeling_utils.py:962: FutureWarning: The `device` argument is deprecated and will be removed in v5 of Transformers.warnings.warn({'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']}
objet pipeline également prend en charge la transmission de plusieurs listes d'échantillons en entrée et renvoie la liste de sortie correspondante. Chaque élément correspond au résultat de retour de l'échantillon d'entrée. La méthode de raisonnement pour plusieurs morceaux de texte est que les données d'entrée sont traitées individuellement à l'aide d'un itérateur à l'intérieur du pipeline, puis ajoutées à la même liste de retour.
from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))
<?php $operator = PyCore::import("operator");$builtins = PyCore::import("builtins");$pipeline = PyCore::import('modelscope.pipelines')->pipeline;$word_segmentation = $pipeline("word-segmentation");$inputs = new PyList(["开源技术小栈作者是Tinywan,你知道不?", "webman这个框架不错,建议你看看"]);PyCore::print($word_segmentation($inputs));
[{'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]
La prise en charge du pipeline pour le raisonnement par lots est similaire à "saisir plusieurs textes" ci-dessus, la différence est qu'il sera spécifié par l'utilisateur À l'échelle batch_size, l'inférence transmise par lots est implémentée dans le processus de transfert de modèle.
inputs =['今天天气不错,适合出去游玩','这本书很好,建议你看看']# 指定batch_size参数来支持批量推理print(word_segmentation(inputs, batch_size=2))# 输出[{'output': ['今天', '天气', '不错', ',', '适合', '出去', '游玩']}, {'output': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}]
from modelscope.msdatasets import MsDatasetfrom modelscope.pipelines import pipelineinputs = ['今天天气不错,适合出去游玩', '这本书很好,建议你看看']dataset = MsDataset.load(inputs, target='sentence')word_segmentation = pipeline('word-segmentation')outputs = word_segmentation(dataset)for o in outputs:print(o)# 输出{'output': ['今天', '天气', '不错', ',', '适合', '出去', '游玩']}{'output': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}
La fonction pipeline prend en charge la transmission d'objets de prétraitement instanciés et d'objets de modèle, aidant ainsi les utilisateurs à personnaliser le prétraitement et le modèle. Créer un objet modèle pour l'inférence rreee
from modelscope.models import Modelfrom modelscope.pipelines import pipelinemodel = Model.from_pretrained('damo/nlp_structbert_word-segmentation_chinese-base')word_segmentation = pipeline('word-segmentation', model=model)inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))
没有安装会提示:PHP Fatal error: Uncaught PyError: No module named 'cv2' in /home/www/build/ai/demo3.php:4
否则提示modelscope.pipelines.cv.image_matting_pipeline requires the TensorFlow library but it was not found in your environment. Checkout the instructions on the installation page: https://www.tensorflow.org/install and follow the ones that match your environment.。
报错信息表明,你正在尝试使用一个名为 modelscope.pipelines.cv.image_matting_pipeline 的模块,该模块依赖于 TensorFlow 库。然而,该模块无法正常工作,因为缺少必要的 TensorFlow 依赖。
可以使用以下命令安装最新版本的 TensorFlow
pip install tensorflow
图片
图片
import cv2from modelscope.pipelines import pipelineportrait_matting = pipeline('portrait-matting')result = portrait_matting('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_matting.png')cv2.imwrite('result.png', result['output_img'])
<?php $operator = PyCore::import("operator");$builtins = PyCore::import("builtins");$cv2 = PyCore::import('cv2');$pipeline = PyCore::import('modelscope.pipelines')->pipeline;$portrait_matting = $pipeline("portrait-matting");$result = $portrait_matting("https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_matting.png");$cv2->imwrite("tinywan_result.png", $result->__getitem__("output_img"));
加载本地文件图片$result = $portrait_matting("./tinywan.png");
/usr/local/php-8.2.14/bin/php tinywan-images.php 2024-03-25 22:17:25,630 - modelscope - INFO - PyTorch version 2.2.1 Found.2024-03-25 22:17:25,631 - modelscope - INFO - TensorFlow version 2.16.1 Found.2024-03-25 22:17:25,631 - modelscope - INFO - Loading ast index from /home/www/.cache/modelscope/ast_indexer2024-03-25 22:17:25,668 - modelscope - INFO - Loading done! Current index file version is 1.13.0, with md5 f54e9d2dceb89a6c989540d66db83a65 and a total number of 972 components indexed2024-03-25 22:17:26,990 - modelscope - WARNING - Model revision not specified, use revision: v1.0.02024-03-25 22:17:27.623085: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.2024-03-25 22:17:27.678592: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.2024-03-25 22:17:28.551510: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT2024-03-25 22:17:29,206 - modelscope - INFO - initiate model from /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting2024-03-25 22:17:29,206 - modelscope - INFO - initiate model from location /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting.2024-03-25 22:17:29,209 - modelscope - WARNING - No preprocessor field found in cfg.2024-03-25 22:17:29,210 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.2024-03-25 22:17:29,210 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/home/www/.cache/modelscope/hub/damo/cv_unet_image-matting'}. trying to build by task and model information.2024-03-25 22:17:29,210 - modelscope - WARNING - Find task: portrait-matting, model type: None. Insufficient information to build preprocessor, skip building preprocessorWARNING:tensorflow:From /home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/modelscope/utils/device.py:60: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.Instructions for updating:Use `tf.config.list_physical_devices('GPU')` instead.2024-03-25 22:17:29,213 - modelscope - INFO - loading model from /home/www/.cache/modelscope/hub/damo/cv_unet_image-matting/tf_graph.pbWARNING:tensorflow:From /home/www/anaconda3/envs/tinywan-modelscope/lib/python3.10/site-packages/modelscope/pipelines/cv/image_matting_pipeline.py:45: FastGFile.__init__ (from tensorflow.python.platform.gfile) is deprecated and will be removed in a future version.Instructions for updating:Use tf.gfile.GFile.2024-03-25 22:17:29,745 - modelscope - INFO - load model done
图片
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!