国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ModelScope】部署一個(gè)屬于自己的AI服務(wù)

這篇具有很好參考價(jià)值的文章主要介紹了【ModelScope】部署一個(gè)屬于自己的AI服務(wù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

技術(shù)棧是Fastapi。

FastAPI 是一個(gè)現(xiàn)代、快速(基于 Starlette 和 Pydantic)、易于使用的 Python web 框架,主要用于構(gòu)建 RESTful API。以下是 FastAPI 的一些優(yōu)勢(shì):

  1. 性能卓越: FastAPI 基于 Starlette 框架,并使用 Pydantic 進(jìn)行數(shù)據(jù)驗(yàn)證,因此具有出色的性能。它通過(guò)異步編程利用 Python 3.7+ 中的 async/await 特性,使其能夠處理大量并發(fā)請(qǐng)求。

  2. 自動(dòng)文檔生成: FastAPI 自動(dòng)生成交互式 API 文檔(Swagger UI 和 ReDoc),讓開(kāi)發(fā)者能夠輕松地查看和測(cè)試 API 端點(diǎn),同時(shí)提供即時(shí)的反饋和文檔。

  3. 強(qiáng)類(lèi)型注解: FastAPI 使用 Python 的類(lèi)型提示來(lái)定義 API,同時(shí)利用 Pydantic 模型進(jìn)行請(qǐng)求和響應(yīng)的驗(yàn)證,這提供了強(qiáng)大的靜態(tài)類(lèi)型檢查和自動(dòng)文檔的支持。

  4. 自動(dòng)驗(yàn)證: 使用 Pydantic 模型,F(xiàn)astAPI 自動(dòng)驗(yàn)證請(qǐng)求的數(shù)據(jù),并在數(shù)據(jù)不符合預(yù)期時(shí)返回錯(cuò)誤。這有助于提高代碼的穩(wěn)健性和可維護(hù)性。

  5. 異步支持: 支持異步處理請(qǐng)求,可以使用異步函數(shù)來(lái)處理請(qǐng)求,使得 FastAPI 在處理高并發(fā)時(shí)表現(xiàn)出色。

  6. 便捷的依賴注入系統(tǒng): FastAPI 提供了一個(gè)靈活的依賴注入系統(tǒng),讓你能夠方便地注入和管理依賴項(xiàng),使代碼更加清晰和可測(cè)試。

  7. WebSocket 支持: FastAPI 提供了對(duì) WebSocket 的原生支持,能夠輕松地實(shí)現(xiàn)實(shí)時(shí)通信。

  8. 易于學(xué)習(xí): FastAPI 的語(yǔ)法和設(shè)計(jì)理念使其易于學(xué)習(xí)和使用,特別是對(duì)于熟悉 Python 的開(kāi)發(fā)者。

?

安裝modelscope

conda create -n modelscope python=3.8
conda activate modelscope
pip install modelscope

激活虛擬環(huán)境

conda activate modelscope

?

server.py代碼

import argparse

import uvicorn
from fastapi import FastAPI

from modelscope.server.api.routers.router import api_router
from modelscope.server.core.event_handlers import (start_app_handler,
                                                   stop_app_handler)


def get_app(args) -> FastAPI:
    app = FastAPI(
        title='modelscope_server',
        version='0.1',
        debug=True,
        swagger_ui_parameters={'tryItOutEnabled': True})
    app.state.args = args
    app.include_router(api_router)

    app.add_event_handler('startup', start_app_handler(app))
    app.add_event_handler('shutdown', stop_app_handler(app))
    return app


def add_server_args(parser):
    parser.add_argument(
        '--model_id', required=True, type=str, help='The target model id')
    parser.add_argument(
        '--revision', required=True, type=str, help='Model revision')
    parser.add_argument('--host', default='0.0.0.0', help='Host to listen')
    parser.add_argument('--port', type=int, default=8000, help='Server port')
    parser.add_argument('--debug', default='debug', help='Set debug level.')
    parser.add_argument(
        '--llm_first',
        type=bool,
        default=True,
        help='Use LLMPipeline first for llm models.')


if __name__ == '__main__':
    parser = argparse.ArgumentParser('modelscope_server')
    add_server_args(parser)
    args = parser.parse_args()
    app = get_app(args)
    uvicorn.run(app, host=args.host, port=args.port)

?任務(wù)一:人臉檢測(cè)

命令行中虛擬環(huán)境中運(yùn)行腳本

python server.py --model_id damo/cv_resnet50_face-detection_retinaface --revision v2.0.2

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能?

訪問(wèn)http://127.0.0.1:8000/docs打開(kāi)文檔

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能?

  • describe方法描述請(qǐng)求參數(shù)和輸出形式?
{
  "schema": {
    "task_name": "face-detection",
    "schema": {
      "input": {
        "type": "object",
        "properties": {
          "image": {
            "type": "string",
            "description": "Base64 encoded image file or url string."
          }
        }
      },
      "parameters": {},
      "output": {
        "type": "object",
        "properties": {
          "scores": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "boxes": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "keypoints": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        }
      }
    }
  },
  "sample": null
}
  • call方法(是模型推理的入口)

    • 兩種請(qǐng)求方式(post)

    • curl方式(encode_base64表示圖片轉(zhuǎn)換為base64后的形式)

  • 圖片轉(zhuǎn)換base64的鏈接可以使用在線轉(zhuǎn)https://tool.jisuapi.com/pic2base64.html

    curl -X 'POST' \ 'http://127.0.0.1:8000/call' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "input":{"image":"encode_base64"}'
  • face-detection_retinaface請(qǐng)求參數(shù)體(界面請(qǐng)求)直接使用fastapi界面請(qǐng)求或者使用apifox等

  • {"input":{"image":"encode_base64"}}

    請(qǐng)求結(jié)果

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?返回結(jié)果解釋

{
    "scores": [
        0.9998026490211487
    ],
    "boxes": [
        [
            164.9207000732422,
            82.86209106445312,
            353.395263671875,
            340.145263671875
        ]
    ],
    "keypoints": [
        [
            214.5664520263672,
            188.255859375,
            303.5237121582031,
            190.91671752929688,
            256.9284362792969,
            242.95065307617188,
            223.42758178710938,
            283.54241943359375,
            287.28448486328125,
            286.402587890625
        ]
    ]
}

返回圖像中人臉的分?jǐn)?shù),越大表示有人臉的可能性越大,boxes表示人臉的矩形框,左上角x,y坐標(biāo)和右下角x,y坐標(biāo),keypoints返回左眼、右眼、鼻尖、左嘴角、右嘴角的坐標(biāo)值x,y。?

輸入圖片

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?根據(jù)boxes和keypoints畫(huà)圖

?

import cv2

# 讀取圖像
image = cv2.imread('0.png')

# 定義矩形框的坐標(biāo)和大小

x, y, x1, y1 = 164,82,353,340
w = 353-164
h = 340-82

# 畫(huà)矩形框
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

# 顯示結(jié)果
# cv2.imshow('Rectangle', image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
cv2.imwrite('0_rectangle.png', image)

?

import cv2

# 讀取圖像
image = cv2.imread('0.png')


radius = 5  # 點(diǎn)的半徑
color = (0, 0, 255)  # 點(diǎn)的顏色,通常使用BGR格式
thickness = -1  # 為了畫(huà)一個(gè)實(shí)心圓,線條寬度設(shè)置為-1
keypoints = [214.5664520263672,
188.255859375,
303.5237121582031,
190.91671752929688,
256.9284362792969,
242.95065307617188,
223.42758178710938,
283.54241943359375,
287.28448486328125,
286.402587890625]
print(len(keypoints))
for i in range(0,len(keypoints),2):
    
    cv2.circle(image, (int(keypoints[i]),int(keypoints[i+1])), radius, color, thickness)

# 顯示結(jié)果
# cv2.imshow('Point', image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
cv2.imwrite('0_keypoints.png', image)

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?需要注意的是不同的任務(wù)請(qǐng)求體的內(nèi)容不一樣,需要明確每個(gè)任務(wù)的請(qǐng)求參數(shù)具體有哪些。

?任務(wù)二:人臉融合

?第二種任務(wù),人臉融合,需要重啟服務(wù),將model_id和revision替換。

?

python server.py --model_id damo/cv_unet-image-face-fusion_damo --revision v1.3

此時(shí)訪問(wèn)http://127.0.0.1/docs?

執(zhí)行一下describe方法?

?

{
  "schema": {
    "task_name": "image-face-fusion",
    "schema": {
      "input": {
        "type": "object",
        "properties": {
          "template": {
            "type": "string",
            "description": "Base64 encoded image file or url string."
          },
          "user": {
            "type": "string",
            "description": "Base64 encoded image file or url string."
          }
        }
      },
      "parameters": {
        "type": "object",
        "properties": {
          "user": {
            "type": "object",
            "default": null
          }
        }
      },
      "output": {
        "type": "object",
        "properties": {
          "output_img": {
            "type": "string",
            "description": "The base64 encoded image."
          }
        }
      }
    }
  },
  "sample": null
}

input有兩個(gè)參數(shù),第一個(gè)是template,表示模版;第二個(gè)參數(shù)是user,表示用戶的圖片,最終的目的就是將用戶的圖片的臉替換到模版上

parameters參數(shù)一般使用默認(rèn)的就行,不填,如果有特殊需求可自行嘗試

output會(huì)返回一個(gè)換好臉圖像的base64編碼

請(qǐng)求體

{
  "input": {
    "template": "base64_template",
    "user":"bas64_user"
  }
}

?template

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?User

?【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

?Ourput

【ModelScope】部署一個(gè)屬于自己的AI服務(wù),人工智能

參考鏈接:

https://github.com/modelscope/modelscope/blob/master/modelscope/server/api_server.py?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-780266.html

到了這里,關(guān)于【ModelScope】部署一個(gè)屬于自己的AI服務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 新手小白如何使用Laf免費(fèi)接入Claude,并快速擁有一個(gè)屬于自己的AI助手

    新手小白如何使用Laf免費(fèi)接入Claude,并快速擁有一個(gè)屬于自己的AI助手

    Claude是一款人工智能聊天機(jī)器人。它可以像朋友一樣和你自然地互動(dòng)聊天。和Claude聊天體驗(yàn)很像跟人聊天,你可以討論任何話題,問(wèn)各種各樣的問(wèn)題。Claude會(huì)盡量理解你說(shuō)的每一句話,并給出合適的回復(fù)。相比之下,Chat GPT是一個(gè)開(kāi)源的對(duì)話模型,主要用于生成對(duì)話的回復(fù)內(nèi)

    2024年03月23日
    瀏覽(105)
  • 【gitlab部署】centos8安裝gitlab(搭建屬于自己的代碼服務(wù)器)

    【gitlab部署】centos8安裝gitlab(搭建屬于自己的代碼服務(wù)器)

    在團(tuán)隊(duì)開(kāi)發(fā)過(guò)程中,想要擁有高效的開(kāi)發(fā)效率,選擇一個(gè)好的 代碼開(kāi)發(fā)工具 是必不可少的。搭建git服務(wù)器有兩種方式 ● github(國(guó)外的,很卡)或者gitee(國(guó)內(nèi)的,網(wǎng)速還可以,可以設(shè)置項(xiàng)目為私有,防止其他人可見(jiàn)) ● 通過(guò)gitlab搭建自己的git服務(wù)器 要求 ● gitlab十分吃內(nèi)存,建議

    2024年02月11日
    瀏覽(62)
  • 使用Google Colab免費(fèi)部署屬于自己的Stable Diffusion模型在線服務(wù)

    使用Google Colab免費(fèi)部署屬于自己的Stable Diffusion模型在線服務(wù)

    Stable Diffusion模型(穩(wěn)定擴(kuò)散模型) 是一種用于生成式建模的深度學(xué)習(xí)模型,它使用隨機(jī)微分方程(SDE)來(lái)建模連續(xù)時(shí)間的動(dòng)態(tài)過(guò)程。在圖像、聲音、文本等各種領(lǐng)域都有廣泛的應(yīng)用。與傳統(tǒng)的生成式模型相比,Stable Diffusion模型能夠生成更加高質(zhì)量的樣本。其原理是通過(guò)對(duì)隨

    2023年04月24日
    瀏覽(25)
  • 本地使用IIS快速搭建一個(gè)屬于自己的網(wǎng)站,并發(fā)布公網(wǎng)訪問(wèn)「無(wú)需購(gòu)買(mǎi)云服務(wù)器」

    本地使用IIS快速搭建一個(gè)屬于自己的網(wǎng)站,并發(fā)布公網(wǎng)訪問(wèn)「無(wú)需購(gòu)買(mǎi)云服務(wù)器」

    在網(wǎng)上各種教程和介紹中,搭建網(wǎng)頁(yè)都會(huì)借助各種軟件的幫助,比如網(wǎng)頁(yè)運(yùn)行的Apache和Nginx、數(shù)據(jù)庫(kù)軟件MySQL和MSSQL之類(lèi),為方便用戶使用,還出現(xiàn)了XAMPP、PHPStudy、寶塔面板等等一系列集成服務(wù),都是為了方便我們能快速建立網(wǎng)站。是不是不適用這些軟件就無(wú)法建立網(wǎng)站了呢?

    2024年02月05日
    瀏覽(27)
  • [手機(jī)Linux] 二,安卓手機(jī)安裝linux系統(tǒng), 部署完全屬于自己的服務(wù)器(Linux Deploy)

    [手機(jī)Linux] 二,安卓手機(jī)安裝linux系統(tǒng), 部署完全屬于自己的服務(wù)器(Linux Deploy)

    背景: 之前買(mǎi)過(guò)一臺(tái)阿里云服務(wù)器1G1核的,玩起來(lái)真的是卡腦殼,卡卡的,經(jīng)費(fèi)在燃燒卻得不到灰燼,而是萌想做一臺(tái)完全屬于自己的服務(wù)器,而是百度發(fā)現(xiàn)原來(lái)我們的安卓手機(jī)也可以當(dāng)服務(wù)器器(Linux),而是翻了一下箱底找到了曾經(jīng)的寶貝,差點(diǎn)當(dāng)垃圾(其實(shí)可以拿去市場(chǎng)換

    2024年02月04日
    瀏覽(23)
  • java調(diào)用chatgpt接口,實(shí)現(xiàn)專屬于自己的人工智能助手

    java調(diào)用chatgpt接口,實(shí)現(xiàn)專屬于自己的人工智能助手

    今天突然突發(fā)奇想,就想要用java來(lái)調(diào)用chatget的接口,實(shí)現(xiàn)自己的聊天機(jī)器人,但是網(wǎng)上找文章,屬實(shí)是少的可憐(可能是不讓發(fā)吧)。找到了一些文章,但是基本都是通過(guò)調(diào)用別人的庫(kù)來(lái)完成的,導(dǎo)入其他的jar還有不低的學(xué)習(xí)成本,于是就自己使用HttpClient5寫(xiě)了一個(gè),在這里講

    2024年02月03日
    瀏覽(27)
  • 如何自己制作一個(gè)屬于自己的小程序?

    如何自己制作一個(gè)屬于自己的小程序?

    在這個(gè)數(shù)字化時(shí)代,小程序已經(jīng)成為了我們生活中不可或缺的一部分。它們方便快捷,無(wú)需下載安裝,掃一掃就能使用。如果你想擁有一個(gè)屬于自己的小程序,不論是為了個(gè)人興趣,還是商業(yè)用途,都可以通過(guò)編程或者使用免代碼工具來(lái)實(shí)現(xiàn)。下面,我們就來(lái)探討一下如何自

    2024年01月24日
    瀏覽(23)
  • 搭建一個(gè)屬于自己的springboot項(xiàng)目

    搭建一個(gè)屬于自己的springboot項(xiàng)目

    最近公司要上個(gè)新系統(tǒng),指定由我來(lái)帶兩個(gè)人進(jìn)行開(kāi)發(fā),既然是新項(xiàng)目,那么項(xiàng)目搭建的事就落到我的頭上了?,F(xiàn)在都是使用springboot進(jìn)行開(kāi)發(fā),為此我搭環(huán)境使用的是springboot,具體java環(huán)境如下, 使用springboot的版本是2.3.3.RELEASE。使用maven進(jìn)行項(xiàng)目管理, 總結(jié)下,我使用到的

    2024年02月07日
    瀏覽(21)
  • 如何搭建一個(gè)屬于自己的網(wǎng)站(使用寶塔面板)

    如何搭建一個(gè)屬于自己的網(wǎng)站(使用寶塔面板)

    1.域名 簡(jiǎn)單的解釋一下,我們購(gòu)買(mǎi)的域名會(huì)給我們一個(gè)公網(wǎng)ip,通常這個(gè)公網(wǎng)ip是很難記.所以我們可以將域名與ip進(jìn)行\(zhòng)\\"綁定\\\". 域名的話建議購(gòu)買(mǎi)一個(gè)有意義,不要太貴的.注意次年續(xù)費(fèi)的價(jià)格!! 阿里云 或者 騰訊云 下面這個(gè)是我的域名(和我名字差不多的意思) 2.服務(wù)器 服務(wù)器的話

    2024年02月05日
    瀏覽(24)
  • 人工智能發(fā)展簡(jiǎn)史——未來(lái)是屬于AI人工智能的。

    人工智能發(fā)展簡(jiǎn)史——未來(lái)是屬于AI人工智能的。

    ?? 目錄 人工智能發(fā)展簡(jiǎn)史 第一章:起步期-20世紀(jì)50年代及以前

    2024年02月09日
    瀏覽(99)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包