概述
為了讓ModelScope的使用者能夠快速、方便的使用平台提供的各類模型,提供了一套功能完備的Python library,其中包含了ModelScope官方模型的實現,以及使用這些模型進行推理,finetune等任務所需的資料預處理,後處理,效果評估等功能相關的程式碼,同時也提供了簡單易用的API,以及豐富的使用範例。透過呼叫library,使用者可以只寫短短的幾行程式碼,就可以完成模型的推理、訓練和評估等任務,也可以在此基礎上快速進行二次開發,實現自己的創新想法。
目前library提供的演算法模型,涵蓋了圖像,自然語言處理,語音,多模態,科學5個主要的AI領域,數十個應用場景任務,具體任務可參考文檔:任務的介紹。
深度學習框架
ModelScope Library目前已支援Pytorch和Tensorflow等深度學習框架,未來將不斷更新並擴展更多框架,敬請期待!所有官方模型均可透過ModelScope Library進行模型推理,有些模型也能夠使用該函式庫進行訓練和評估。如需完整的使用信息,請查看相應模型的模型卡片。
模型推理Pipeline
模型的推理
在深度學習中,推理是指模型對資料進行預測的過程。 ModelScope執行推理時會利用pipeline來依序執行必要的操作。一個典型的pipeline通常包括資料預處理、模型前向推理和資料後處理三個步驟。
Pipeline介紹
pipeline()方法是ModelScope框架中最基礎的使用者方法之一,可用來快速進行各種領域的模型推理。借助pipeline()方法,使用者只需一行程式碼即可輕鬆完成對特定任務的模型推理。
pipeline()方法是ModelScope框架中最基礎的使用者方法之一,可用來快速進行各種領域的模型推理。借助pipeline()方法,使用者只需一行程式碼即可輕鬆完成對特定任務的模型推理。
Pipeline的使用
本文將簡單介紹如何使用pipeline方法載入模型進行推理。透過pipeline方法,使用者可以輕鬆地從模型倉庫中根據任務類型和模型名稱拉取所需模型進行推理。此方法的主要優點在於簡單易用,能夠快速且有效率地進行模型推論。 pipeline方法的便利之處在於它提供了一種直接的方式來獲取和應用模型,無需用戶深入了解模型的具體細節,從而降低了使用模型的門檻。透過pipeline方法,使用者可以更專注於解決問題和
- 環境準備
- 重要參數
- Pipeline基本用法
- #指定預處理、模型進行推理
- 不同場景任務推理pipeline使用範例
Pipeline基本用法
中文分詞
pipeline函數支援指定特定任務名稱,載入任務預設模型,建立對應pipeline物件。
Python程式碼
from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')input_str = '开源技术小栈作者是Tinywan,你知道不?'print(word_segmentation(input_str))
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));
線上轉換工具: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', ',', '你', '知道', '不', '?']}
輸入多條樣本
pipeline物件也支援傳入多個樣本列表輸入,傳回對應輸出列表,每個元素對應輸入樣本的回傳結果。多條文字的推理方式是輸入data在pipeline內部用迭代器單條處理後append到同一個返回List。
Python程式碼
from modelscope.pipelines import pipelineword_segmentation = pipeline('word-segmentation')inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))
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': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]
#批次推理
pipeline對於批次推理的支援類似於上面的“輸入多條文字”,差異在於會在使用者指定的batch_size尺度上,在模型forward過程實現批次前向推理。
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': ['这', '本', '书', '很', '好', ',', '建议', '你', '看看']}
#指定預處理、模型進行推理
pipeline函數支援傳入實例化的預處理對象、模型對象,從而支援使用者在推理過程中客製化預處理、模型。
建立模型物件進行推理
Python程式碼
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 程式碼
<?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));
輸出
[{'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]
建立預處理器和模型物件進行推理
from modelscope.models import Modelfrom modelscope.pipelines import pipelinefrom modelscope.preprocessors import Preprocessor, TokenClassificationTransformersPreprocessormodel = Model.from_pretrained('damo/nlp_structbert_word-segmentation_chinese-base')tokenizer = Preprocessor.from_pretrained(model.model_dir)# Or call the constructor directly: # tokenizer = TokenClassificationTransformersPreprocessor(model.model_dir)word_segmentation = pipeline('word-segmentation', model=model, preprocessor=tokenizer)inputs =['开源技术小栈作者是Tinywan,你知道不?','webman这个框架不错,建议你看看']print(word_segmentation(inputs))[{'output': ['开源', '技术', '小', '栈', '作者', '是', 'Tinywan', ',', '你', '知道', '不', '?']},{'output': ['webman', '这个', '框架', '不错', ',', '建议', '你', '看看']}]
圖片
#注意:
- 確保你已經安裝了OpenCV函式庫。如果沒有安裝,你可以透過pip安裝
pip install opencv-python
没有安装会提示:PHP Fatal error: Uncaught PyError: No module named 'cv2' in /home/www/build/ai/demo3.php:4
- 确保你已经安装深度学习框架包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
图片
人像抠图('portrait-matting')
输入图片
图片
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
输出图片
图片
以上是TensorFlow深度學習架構模型推理Pipeline進行人像摳圖推理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

由於AI的快速整合而加劇了工作場所的迅速危機危機,要求戰略轉變以外的增量調整。 WTI的調查結果強調了這一點:68%的員工在工作量上掙扎,導致BUR

約翰·塞爾(John Searle)的中國房間論點:對AI理解的挑戰 Searle的思想實驗直接質疑人工智能是否可以真正理解語言或具有真正意識。 想像一個人,對下巴一無所知

與西方同行相比,中國的科技巨頭在AI開發方面的課程不同。 他們不專注於技術基準和API集成,而是優先考慮“屏幕感知” AI助手 - AI T

MCP:賦能AI系統訪問外部工具 模型上下文協議(MCP)讓AI應用能夠通過標準化接口與外部工具和數據源交互。由Anthropic開發並得到主要AI提供商的支持,MCP允許語言模型和智能體發現可用工具並使用合適的參數調用它們。然而,實施MCP服務器存在一些挑戰,包括環境衝突、安全漏洞以及跨平台行為不一致。 Forbes文章《Anthropic的模型上下文協議是AI智能體發展的一大步》作者:Janakiram MSVDocker通過容器化解決了這些問題。基於Docker Hub基礎設施構建的Doc

有遠見的企業家採用的六種策略,他們利用尖端技術和精明的商業敏銳度來創造高利潤的可擴展公司,同時保持控制。本指南是針對有抱負的企業家的,旨在建立一個

Google Photos的新型Ultra HDR工具:改變圖像增強的遊戲規則 Google Photos推出了一個功能強大的Ultra HDR轉換工具,將標準照片轉換為充滿活力的高動態範圍圖像。這種增強功能受益於攝影師

技術架構解決了新興的身份驗證挑戰 代理身份集線器解決了許多組織僅在開始AI代理實施後發現的問題,即傳統身份驗證方法不是為機器設計的

(注意:Google是我公司的諮詢客戶,Moor Insights&Strateging。) AI:從實驗到企業基金會 Google Cloud Next 2025展示了AI從實驗功能到企業技術的核心組成部分的演變,


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器