Heim > Artikel > Technologie-Peripheriegeräte > TensorFlow Deep-Learning-Framework-Modell-Inferenzpipeline für Porträtausschnitt-Inferenz
Um ModelScope-Benutzern die schnelle und bequeme Nutzung verschiedener von der Plattform bereitgestellter Modelle zu ermöglichen, wird eine Reihe voll ausgestatteter Python-Bibliotheken bereitgestellt, die die Implementierung offizieller ModelScope-Modelle sowie deren Verwendung umfassen Modelle für Inferenz, Feinabstimmung von Code im Zusammenhang mit der Datenvorverarbeitung, Nachverarbeitung, Effektbewertung und anderen für andere Aufgaben erforderlichen Funktionen, während gleichzeitig eine einfache und benutzerfreundliche API und umfangreiche Anwendungsbeispiele bereitgestellt werden. Durch den Aufruf der Bibliothek können Benutzer Aufgaben wie Modellinferenz, Training und Bewertung erledigen, indem sie nur wenige Codezeilen schreiben. Außerdem können sie auf dieser Basis schnell eine Sekundärentwicklung durchführen, um ihre eigenen innovativen Ideen zu verwirklichen.
Die derzeit von der Bibliothek bereitgestellten Algorithmusmodelle decken fünf Hauptbereiche der KI ab: Bild, Verarbeitung natürlicher Sprache, Sprache, Multimodalität und Wissenschaft sowie Dutzende von Anwendungsszenarioaufgaben. Informationen zu spezifischen Aufgaben finden Sie im Dokument: Einführung in die Aufgabe.
Die ModelScope Library unterstützt derzeit Deep-Learning-Frameworks wie Pytorch und Tensorflow. Weitere Frameworks werden in Zukunft kontinuierlich aktualisiert und erweitert, also bleiben Sie dran! Alle offiziellen Modelle können über die ModelScope-Bibliothek zur Modellinferenz verwendet werden, und einige Modelle können die Bibliothek auch zum Training und zur Evaluierung nutzen. Vollständige Nutzungsinformationen finden Sie auf der Modellkarte des entsprechenden Modells.
Beim Deep Learning bezieht sich Inferenz auf den Prozess, durch den das Modell Daten vorhersagt. Wenn ModelScope eine Inferenz durchführt, verwendet es die Pipeline, um die erforderlichen Vorgänge nacheinander auszuführen. Eine typische Pipeline umfasst normalerweise drei Schritte: Datenvorverarbeitung, Modellvorwärtsinferenz und Datennachverarbeitung.
Die Methode „pipeline()“ ist eine der grundlegendsten Benutzermethoden im ModelScope-Framework und kann zur schnellen Modellinferenz in verschiedenen Bereichen verwendet werden. Mit der Methode „pipeline()“ können Benutzer problemlos Modellinferenzen für bestimmte Aufgaben mit nur einer Codezeile abschließen. Die
pipeline()-Methode ist eine der grundlegendsten Benutzermethoden im ModelScope-Framework und kann zur schnellen Modellinferenz in verschiedenen Bereichen verwendet werden. Mit der Methode „pipeline()“ können Benutzer problemlos Modellinferenzen für bestimmte Aufgaben mit nur einer Codezeile abschließen.
In diesem Artikel wird kurz vorgestellt, wie die Pipeline-Methode zum Laden des Modells für die Inferenz verwendet wird. Durch die Pipeline-Methode können Benutzer das erforderliche Modell einfach aus dem Modelllager abrufen, um daraus Rückschlüsse auf der Grundlage des Aufgabentyps und des Modellnamens zu ziehen. Der Hauptvorteil dieser Methode besteht darin, dass sie einfach zu verwenden ist und Modellinferenzen schnell und effizient durchführen kann. Der Vorteil der Pipeline-Methode besteht darin, dass sie eine direkte Möglichkeit bietet, das Modell zu erhalten und anzuwenden, ohne dass Benutzer die spezifischen Details des Modells verstehen müssen, wodurch die Schwelle für die Verwendung des Modells gesenkt wird. Durch die Pipeline-Methode können sich Benutzer mehr auf die Lösung von Problemen und die Vorbereitung der Umgebung konzentrieren. Wichtige Parameter
Grundlegende Verwendung von Pipelinefrom 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));Online-Konvertierungstool: https://www.swoole.com/py2php/Ergebnisse ausgeben
/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', ',', '你', '知道', '不', '?']}Mehrere Beispiele eingebenPipe Linienobjekt wird ebenfalls unterstützt Übergabe mehrerer Probenlisteneingaben und Rückgabe der entsprechenden Ausgabeliste, wobei jedes Element dem Rückgabeergebnis der Eingabeprobe entspricht. Die Argumentationsmethode für mehrere Textteile besteht darin, dass die Eingabedaten mithilfe eines Iterators innerhalb der Pipeline einzeln verarbeitet und dann an dieselbe Rückgabeliste angehängt werden. Python-Code
from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))PHP-Code
<?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));Ausgabe
[{'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]Die Unterstützung von Batch-ArgumentationPipeline ähnelt der oben genannten „Eingabe mehrerer Texte“, mit dem Unterschied, dass dies der Fall ist angegeben werden vom Benutzer Auf der Batch_size-Skala wird die Batch-Forward-Inferenz im Modell-Forward-Prozess implementiert. „Geben Sie einen Datensatz ein.“ Erstellen Sie ein Modellobjekt für die Inferenz.Python-Code.
inputs =['今天天气不错,适合出去游玩','这本书很好,建议你看看']# 指定batch_size参数来支持批量推理print(word_segmentation(inputs, batch_size=2))# 输出[{'output': ['今天', '天气', '不错', ',', '适合', '出去', '游玩']}, {'output': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}].PHP-Code.
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': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}.Ausgabe
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 $operator = PyCore::import("operator");$builtins = PyCore::import("builtins");$Model = PyCore::import('modelscope.models')->Model;$pipeline = PyCore::import('modelscope.pipelines')->pipeline;$model = $Model->from_pretrained("damo/nlp_structbert_word-segmentation_chinese-base");$word_segmentation = $pipeline("word-segmentation", model: $model);$inputs = new PyList(["开源技术小栈作者是Tinywan,你知道不?", "webman这个框架不错,建议你看看"]);PyCore::print($word_segmentation($inputs));installieren
没有安装会提示: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
图片
Das obige ist der detaillierte Inhalt vonTensorFlow Deep-Learning-Framework-Modell-Inferenzpipeline für Porträtausschnitt-Inferenz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!