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

Pipeline d'inférence de modèle de cadre d'apprentissage profond TensorFlow pour l'inférence de découpe de portrait

PHPz
PHPzavant
2024-03-26 13:00:39760parcourir

Présentation

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.

Deep Learning Framework

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.

Pipeline d'inférence de modèle

Inférence de modèle

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.

Introduction à Pipeline

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.

Utilisation du pipeline

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

  • Préparation de l'environnement
  • Paramètres importants
  • Utilisation de base de Pipeline
  • Spécifier le prétraitement et le modèle pour l'inférence
  • Exemples d'utilisation du pipeline pour les tâches d'inférence dans différents scénarios

Utilisation de base de Pipeline

Segmentation des mots chinois

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.

Code Python

from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')input_str = '开源技术小栈作者是Tinywan,你知道不?'print(word_segmentation(input_str))

Code PHP

<?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/

Résultats de sortie

/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', ',', '你', '知道', '不', '?']}

Saisir plusieurs échantillons

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.

Code Python

from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))

Code PHP

<?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

[{'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]

Raisonnement par lots

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': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}]

Saisir un ensemble de données

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': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}

Spécifier le prétraitement et le modèle pour l'inférence

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

Image

Remarque :

Assurez-vous que la bibliothèque OpenCV est installée. S'il n'est pas installé, vous pouvez l'installer via pip

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

  1. 确保你已经安装深度学习框架包TensorFlow库

否则提示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

Pipeline dinférence de modèle de cadre dapprentissage profond TensorFlow pour linférence de découpe de portrait图片

人像抠图('portrait-matting')

输入图片

Pipeline dinférence de modèle de cadre dapprentissage profond TensorFlow pour linférence de découpe de portrait图片

Python 代码

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 代码 tinywan-images.php

<?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

输出图片

Pipeline dinférence de modèle de cadre dapprentissage profond TensorFlow pour linférence de découpe de portrait图片

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer