>기술 주변기기 >일체 포함 >세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인

세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인

PHPz
PHPz앞으로
2024-03-26 13:00:39777검색

개요

ModelScope 사용자가 플랫폼에서 제공하는 다양한 모델을 빠르고 편리하게 사용할 수 있도록 ModelScope 공식 모델 구현은 물론 이러한 모델의 사용을 포함하는 모든 기능을 갖춘 Python 라이브러리 세트가 제공됩니다. 추론을 위한 모델, 데이터 전처리, 후처리, 효과 평가 및 기타 작업에 필요한 기타 기능과 관련된 코드를 미세 조정하는 동시에 간단하고 사용하기 쉬운 API와 풍부한 사용 예제를 제공합니다. 라이브러리를 호출하면 사용자는 코드 몇 줄만 작성하여 모델 추론, 훈련, 평가 등의 작업을 완료할 수 있으며 이를 기반으로 2차 개발도 빠르게 수행하여 자신만의 혁신적인 아이디어를 실현할 수 있습니다.

현재 도서관에서 제공하는 알고리즘 모델은 이미지, 자연어 처리, 음성, 다중 양식, 과학 등 5가지 주요 AI 분야와 수십 가지 응용 시나리오 작업을 다루고 있습니다. 작업.

딥 러닝 프레임워크

ModelScope 라이브러리는 현재 Pytorch 및 Tensorflow와 같은 딥 러닝 프레임워크를 지원합니다. 앞으로 더 많은 프레임워크가 지속적으로 업데이트되고 확장될 예정이므로 계속 지켜봐 주시기 바랍니다! 모든 공식 모델은 ModelScope 라이브러리를 통해 모델 추론에 사용할 수 있으며 일부 모델은 교육 및 평가에도 라이브러리를 사용할 수 있습니다. 전체 사용법 정보는 해당 모델의 모델 카드를 참조하세요.

모델 추론 파이프라인

모델 추론

딥 러닝에서 추론은 모델이 데이터를 예측하는 프로세스를 의미합니다. ModelScope는 추론을 수행할 때 파이프라인을 사용하여 필요한 작업을 순차적으로 수행합니다. 일반적인 파이프라인에는 일반적으로 데이터 전처리, 모델 순방향 추론, 데이터 후처리의 세 단계가 포함됩니다.

파이프라인 소개

pipeline() 메서드는 ModelScope 프레임워크의 가장 기본적인 사용자 메서드 중 하나이며 다양한 분야에서 모델 추론을 빠르게 수행하는 데 사용할 수 있습니다. 파이프라인() 메서드를 사용하면 사용자는 단 한 줄의 코드로 특정 작업에 대한 모델 추론을 쉽게 완료할 수 있습니다.

pipeline() 메서드는 ModelScope 프레임워크의 가장 기본적인 사용자 메서드 중 하나이며 다양한 분야에서 모델 추론을 빠르게 수행하는 데 사용할 수 있습니다. 파이프라인() 메서드를 사용하면 사용자는 단 한 줄의 코드로 특정 작업에 대한 모델 추론을 쉽게 완료할 수 있습니다.

파이프라인 사용

이 글에서는 파이프라인 방식을 사용하여 추론을 위한 모델을 로드하는 방법을 간략하게 소개합니다. 파이프라인 방식을 통해 사용자는 작업 유형 및 모델 이름을 기반으로 추론을 위해 모델 웨어하우스에서 필요한 모델을 쉽게 가져올 수 있습니다. 이 방법의 가장 큰 장점은 사용하기 쉽고 모델 추론을 빠르고 효율적으로 수행할 수 있다는 것입니다. 파이프라인 방법의 편리성은 사용자가 모델의 특정 세부 사항을 이해할 필요 없이 모델을 획득하고 적용할 수 있는 직접적인 방법을 제공하므로 모델 사용에 대한 임계값을 낮춘다는 것입니다. 파이프라인 방법을 통해 사용자는 문제 해결에 더 집중할 수 있으며

  • 환경 준비
  • 중요 매개변수
  • 파이프라인의 기본 사용법
  • 추론을 위한 전처리 및 모델 지정
  • 다양한 시나리오에서 추론 작업에 파이프라인을 사용하는 예

파이프라인의 기본 사용법

중국어 단어 분할

파이프라인 기능은 특정 작업 이름 지정, 작업 기본 모델 로드 및 해당 파이프라인 개체 생성을 지원합니다.

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

여러 샘플 입력

파이프라인 개체도 It 여러 샘플 목록을 입력으로 전달하는 것을 지원하고 해당 출력 목록을 반환합니다. 각 요소는 입력 샘플의 반환 결과에 해당합니다. 여러 텍스트 조각에 대한 추론 방법은 입력 데이터가 파이프라인 내부의 반복자를 사용하여 개별적으로 처리된 다음 동일한 반환 목록에 추가된다는 것입니다.

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));

Output

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

배치 추론

파이프라인의 배치 추론 지원은 위의 "여러 텍스트 입력"과 유사하지만 차이점은 지정된다는 것입니다. 사용자에 의한 배치 크기 규모에서는 배치 전달 추론이 모델 전달 프로세스에서 구현됩니다.

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

추론을 위한 전처리 및 모델 지정

파이프라인 기능은 인스턴스화된 전처리 개체 및 모델 개체 전달을 지원하므로 사용자가 전처리 및 모델을 사용자 지정할 수 있습니다.

추론을 위한 모델 객체 생성

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

[{'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', '这个', '框架', '不错', ',', '建议', '你', '看看']}]

이미지

참고:

  1. OpenCV 라이브러리가 설치되어 있는지 확인하세요. 설치되어 있지 않은 경우 pip
pip install opencv-python
를 통해 설치할 수 있습니다.

没有安装会提示: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

세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인图片

人像抠图('portrait-matting')

输入图片

세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인图片

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 딥 러닝 프레임워크 모델 추론 파이프라인图片

위 내용은 세로 컷아웃 추론을 위한 TensorFlow 딥 러닝 프레임워크 모델 추론 파이프라인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제