当前位置:首页 > 数码 > 经常使用FastAPI部署神经网络模型的步骤 (经常使用发胶对头发有伤害吗)

经常使用FastAPI部署神经网络模型的步骤 (经常使用发胶对头发有伤害吗)

admin6个月前 (05-10)数码38

在计算机视觉畛域,YouOnlyLookOnce(YOLO)算法曾经锋芒毕露,成为一种扭转游戏规定的算法。它承诺具有出色准确性的实时指标检测,使其成为从监督和智能驾驶车辆到图像和视频剖析等运行中弱小的工具。但是,只要在无缝集成到实践的理想系统中时,YOLO的真正后劲才干被充散施展。这就是现代、极速、用于经常使用/target=_blankclass=infotextkey>Python构建API的Web框架FastAPI的用武之地,它可以轻松地成为您在部署YOLO模型时的同伴。

构想一下能够在Web运行程序中部署一个YOLO模型,准许用户经过便捷的API调用启动实时指标检测。无论您是构建智能安保系统、家养生物监测运行程序还是批发剖析平台,本指南将疏导您成功整个环节,从设置开发环境到经常使用FastAPI部署齐全性能的YOLO模型。

在深化钻研本教程时,您将提醒YOLO的魔力——它如何能够在眨眼之间识别图像和视频中的物体。您还将把握将这种弱小算法与FastAPI集成的艺术,这是为那些器重速度和便捷性的开发人员设计的框架。经过本次旅程的完结,您将具有创立自己的实时指标检测API的工具和常识,这些API可以部署在云端、本地主机甚至边缘设施上。

因此,无论您是阅历丰盛的计算机视觉工程师还是盼望探求YOLO和FastAPI环球的猎奇开发人员,系好安保带吧。咱们将开局一场逐渐部署YOLO模型的专业之旅。预备将您的指标检测幻想变为理想吗?让咱们开局吧!

第一局部:设置环境

在咱们深化经常使用FastAPI部署YOLO模型的环球之前,咱们须要确保咱们的开发环境已正确设置。本节将逐渐疏导您成功这个环节。

1.装置Python

首先,请确保您的系统上已装置Python。您可以从官网网站:下载最新版本的Python,或经常使用Anaconda等包治理器。要审核Python能否已装置,请关上终端或命令提醒符运转:

python-version

2.创立虚构环境

为了坚持名目的依赖相关隔离,最好创立一个虚构环境。这样,您就可以防止不同名目之间的抵触。让咱们经常使用Python的内置venv模块创立一个虚构环境。关上终端并导航到名目的根目录。运转以下命令:

#Createavirtualenvironment(replace'myenv'withyourpreferredenvironmentname)python-mvenvmyenv#Activatethevirtualenvironment()myenvScriptsactivate#Activatethevirtualenvironment(OS/)sourcemyenv/bin/activate

您应该看到终端提醒更改,批示虚构环境处于优惠形态。

留意:请记得将'myenv'交流为您青睐的虚构环境称号。

3.装置依赖

如今,您正在虚构环境中上班,是时刻装置必要的依赖项了。这些包括FastAPI、Uvicorn(用于提供FastAPI运行程序的工具)、与YOLO相关的库以及您或者须要的名目的任何其余包。经常使用pip装置这些依赖项:

pipinstallfastapiuvicornopencv-python-headlessnumpy

4.YOLO模型设置

要经常使用YOLO,您须要装置来自ultralytics的yolov8库。

pipinstallultralytics

有了开发环境的设置,您如今曾经预备好深化钻研YOLO和FastAPI的激动人心的环球。在接上去的局部中,咱们将讨论如何应用YOLO的弱小性能启动实时指标检测,并构建一个用于提供服务的FastAPI运行程序。

第二局部:创立FastAPI运行程序

如今是时刻入手构建一个FastAPI运行程序来部署模型了。本节将疏导您成功设置对象检测API基础的环节。

1.名目结构

让咱们开局整顿咱们的名目结构。创立一个用于FastAPI名目的目录并进入其中:

mkdirobject_detection_apicdobject_detection_api

在这个名目目录中,您将为FastAPI运行程序的不同组件创立文件和文件夹。

2.初始化FastAPI运行程序

FastAPI让构建Web运行程序变得十分容易。创立一个用于FastAPI运行程序的Python脚本,通常命名为mn.py:

touchmain.py

如今,让咱们开局编写一些代码。在您青睐的文本编辑器或IDE中关上main.py,并导入FastAPI,如今FastAPI运行程序初始化成功。这个运行程序将作为您的指标检测API的基础。

3.创立您的第一个路由

在FastAPI中,您经常使用Python函数定义路由。让咱们从一个便捷的Hello,World!路由开局。将以下代码减少到:

FastAPI
@.get("/")asyncdefread_root():return{"message":"Hello,World!"}

这段代码定义了一个路由,照应根URL(/)的GET恳求,并前往一个带有message字段的JSON照应。

4.本地运转FastAPI运行程序

如今,是时刻在本地测试您的FastAPI运行程序了。关上终端并导航到蕴含main.py的名目目录。假设还没有激活虚构环境,请激活:

sourcemyenv/bin/activate#Replace'myenv'withyourenvironmentname

接上去,经常使用Uvicorn运转您的FastAPI运行程序:

uvicornmain:app--reload

这个命令通知Uvicorn从main.py模块运转app对象,并启用开发环境下的智能从新加载。您应该看到输入,批示您的FastAPI运行程序正在本地运转。自动状况下,它在上运转。

5.访问HelloWorld路由

关上您的Web阅读器或经常使用curl等工具访问Hello,World!路由:

curl您应该收到一个带有Hello,World!信息的JSON照应。有了您的FastAPI运行程序运转起来,您如今可以继续启动激动人心的局部:集成YOLOv8模型启动指标检测。在接上去的局部中,咱们将讨论如何预备YOLOv8模型,并将其与FastAPI无缝集成。

第三局部:将YOLOv8与FastAPI集成

如今咱们曾经有了FastAPI运行程序,让咱们深化钻研如何集成YOLOv8模型启动实时指标检测的环节。本节将疏导您成功无缝将YOLOv8与FastAPI联合的步骤。

1.加载YOLOv8模型

让咱们从在FastAPI运行程序中加载YOLOv8模型开局。关上main.py并在文件顶部减少以下代码以导入必要的模块:

importcv2importnumpyasnpfromultralyticsimportYOLO

2.创立一个指标检测路由

如今,让咱们在FastAPI中创立一个路由,该路由将接受一个用于指标检测的图像。定义一个新的路由函数如下:

fromfastapiimportFile,UploadFilemodel=YOLO("yolov8n.pt")@app.post("/detect/")asyncdefdetect_objects(file:UploadFile):#Processtheuploadedimageforobjectdetectionimage_bytes=awaitfile.read()image=np.frombuffer(image_bytes,dtype=np.uint8)image=cv2.imdecode(image,cv2.IMREAD_COLOR)#PerformobjectdetectionwithYOLOv8detections=model.predict(image)return{"detections":detections}

在这里,咱们创立了一个名为/detect/的路由,该路由接受上行的图像文件。咱们将经常使用model.predict()在上行的图像上口头指标检测。

3.测试指标检测路由

成功了YOLOv8的集成,如今您可以测试您的指标检测路由。经常使用Uvicorn启动您的FastAPI运行程序:

uvicornmain:app--reload

而后,向路由收回POST恳求,上行一个图像文件启动指标检测。您可以经常使用或Postman等工具启动此操作。

curl-XPOST-F"file=@image.jpg"http://127.0.0.1:8000/detect/

您将收到一个带有指标检测结果的JSON照应。祝贺!您已成功将YOLOv8与FastAPI集成,成功了实时指标检测。在接上去的局部中,咱们将增强API,减少文档,并探求部署选项。

第四局部:部署FastAPI运行程序

如今您曾经构建了FastAPI运行程序,是时刻将其部署,使您的指标检测API可以被用户访问了。在本节中,咱们将讨论各种部署选项,包括用于测试的本地部署和用于消费环境的基于云的部署。

1.本地部署启动测试

在部署到消费环境之前,测试FastAPI运行程序在本地能否反常运转是必无法少的。要在本地运转FastAPI运行程序,请关上终端,导航到蕴含main.py的名目目录,并激活虚构环境(假设尚未激活):

sourcemyenv/bin/activate#Replace'myenv'withyourenvironmentname

而后,经常使用Uvicorn启动FastAPI运行程序:

uvicornmain:app--reload

您的FastAPI运行程序如今应该在上可访问。您可以经常使用curl、Postman或您的Web阅读器测试API端点。

2.用于消费的基于云的部署

当您预备将FastAPI运行程序部署到消费环境时,您有几个基于云的部署选项。一些盛行的选用包括:

详细的部署方法或者取决于您选用的云提供商。通常须要:

3.选用正确的主机

在部署到基于云的主机时,您或者可以灵敏选用主机类型。经常出现的选项包括:

4.继续集成和继续部署(CI/CD)

思考实施CI/CD流水线以智能化部署环节。Jenkins、TravisCI、GitLabCI/CD和Actions等工具可以协助您在将更改推送到代码仓库时智能启动测试和部署。经过遵照CI/CD的最佳通常,您可以确保颠簸牢靠的部署环节,降落在消费环境中产生失误的危险。


神经网络预测(利用机器学习算法实现准确预测未来趋势)

随着人工智能技术的快速发展,神经网络预测已经成为了一种非常流行的机器学习算法。神经网络预测可以帮助我们预测各种未来趋势,如股票价格、销售额、天气等。在本文中,我们将介绍神经网络预测的操作步骤,以及如何利用神经网络预测准确预测未来趋势。

一、神经网络预测的操作步骤

神经网络预测的操作步骤分为以下几步:

1.收集数据:首先,我们需要收集大量的数据,这些数据应该包含我们需要预测的变量以及其他相关变量。收集的数据越多,预测的准确性就越高。

2.数据预处理:在进行神经网络预测之前,我们需要对收集到的数据进行预处理。这包括数据清洗、数据转换、数据归一化等操作。

3.划分数据集:我们需要将收集到的数据集划分为训练集和测试集。训练集用于训练神经网络模型,测试集用于测试模型的准确性。

4.构建神经网络模型:在进行神经网络预测之前,我们需要构建一个神经网络模型。这个模型应该包含输入层、隐藏层和输出层,每一层都包含多个神经元。

5.训练神经网络模型:我们需要使用训练集对神经网络模型进行训练。在训练过程中,我们需要不断调整神经网络模型的参数,以提高模型的准确性。

6.测试神经网络模型:在训练完成后,我们需要使用测试集对神经网络模型进行测试。测试结果可以帮助我们评估模型的准确性。

7.使用神经网络模型进行预测:在完成训练和测试后,我们可以使用神经网络模型进行预测。预测结果可以帮助我们了解未来趋势。

二、利用神经网络预测准确预测未来趋势

神经网络预测可以帮助我们预测各种未来趋势。下面以股票价格预测为例,介绍如何利用神经网络预测准确预测未来趋势。

1.收集数据:我们需要收集大量的股票价格数据,这些数据应该包含股票价格以及其他相关变量,如市场指数、公司财务数据等。

2.数据预处理:在进行神经网络预测之前,我们需要对收集到的数据进行预处理。这包括数据清洗、数据转换、数据归一化等操作。

3.划分数据集:我们需要将收集到的数据集划分为训练集和测试集。训练集用于训练神经网络模型,测试集用于测试模型的准确性。

4.构建神经网络模型:在进行神经网络预测之前,我们需要构建一个神经网络模型。这个模型应该包含输入层、隐藏层和输出层,每一层都包含多个神经元。

5.训练神经网络模型:我们需要使用训练集对神经网络模型进行训练。在训练过程中,我们需要不断调整神经网络模型的参数,以提高模型的准确性。

6.测试神经网络模型:在训练完成后,我们需要使用测试集对神经网络模型进行测试。测试结果可以帮助我们评估模型的准确性。

7.使用神经网络模型进行预测:在完成训练和测试后,我们可以使用神经网络模型进行预测。预测结果可以帮助我们了解未来股票价格的趋势。

利用pytorch CNN手写字母识别神经网络模型识别多手写字母(A-Z)

往期的文章,我们分享了手写字母的训练与识别

使用EMNIST数据集训练第一个pytorch CNN手写字母识别神经网络

利用pytorch CNN手写字母识别神经网络模型识别手写字母

哪里的文章,我们只是分享了单个字母的识别,如何进行多个字母的识别,其思路与多数字识别类似,首先对图片进行识别,并进行每个字母的轮廓识别,然后进行字母的识别,识别完成后,直接在图片上进行多个字母识别结果的备注

Pytorch利用CNN卷积神经网络进行多数字(0-9)识别

根据上期文章的分享,我们搭建一个手写字母识别的神经网络

第一层,我们输入Eminist的数据集,Eminist的数据图片是一维 28*28的图片,所以第一层的输入(1,28,28),高度为1,设置输出16通道,使用5*5的卷积核对图片进行卷积运算,每步移动一格,为了避免图片尺寸变化,设置pading为2,则经过第一层卷积就输出(16,28,28)数据格式

再经过relu与maxpooling (使用2*2卷积核)数据输出(16,14,14)

第二层卷积层是简化写法2d(16, 32, 5, 1, 2)的第一个参数为输入通道数in_channels=16,其第二个参数是输出通道数out_channels=32, # n_filters(输出通道数),第三个参数为卷积核大小,第四个参数为卷积步数,最后一个为pading,此参数为保证输入输出图片的尺寸大小一致

全连接层,最后使用()全连接层进行数据的全连接数据结构(32*7*7,37)以上便是整个卷积神经网络的结构,

大致为:input-卷积-Relu-pooling-卷积-Relu-pooling-linear-output

卷积神经网络建完后,使用forward()前向传播神经网络进行输入图片的识别

这里我们使用腐蚀,膨胀操作对图片进行一下预处理操作,方便神经网络的识别,当然,我们往期的字母数字识别也可以添加此预处理操作,方便神经网络进行预测,提高精度

getContours函数主要是进行图片中数字区域的区分,把每个数字的坐标检测出来,这样就可以 把每个字母进行CNN卷积神经网络的识别,进而实现多个字母识别的目的

首先,输入一张需要检测的图片,通过preProccessing图片预处理与getContours函数获取图片中的每个字母的轮廓位置

此函数可以 把输入图片进行pytorch相关的图片操作,包括转换到torch,灰度空间转换,resize,缩放等等操作

然后加载我们前期训练好的模型

由于神经网络识别完成后,反馈给程序的是字母的 UTF-8编码,我们通过查表来找到对应的字母

字符编码表(UTF-8)

通过上面的操作,我们已经识别出了图片中包括的字母轮廓,我们遍历每个字母轮廓,获取单个字母图片数据,这里需要特殊提醒一下 :我们知道EMNIST数据库左右翻转图片后,又进行了图片的逆时针旋转90度

这里我们使用(imgRes,1)函数,进行图片的镜像,并使用getRotationMatrix2D函数与warpAffine函数配合来进行图片的旋转操作,这里就没有PIL来的方便些

然后,我们对图片数据进行torch转换train_transform(imgRes),并传递给神经网络进行识别

待识别完成后,就可以把结果备注在原始图片上

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: FastAPI