828华为云征文|采用华为云Flexus云服务器X实例部署YOLOv3算法完成目标检测

本文主要是介绍828华为云征文|采用华为云Flexus云服务器X实例部署YOLOv3算法完成目标检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、前言
    • 1.1 开发需求
    • 1.2 Flexus云服务器介绍
    • 1.3 YOLOv3目标检测算法
    • 1.4 客户端开发思路
    • 1.5 客户端运行效果
  • 二、服务器选购
    • 2.1 登录官网
    • 2.2 选购服务器
    • 2.3 选择服务器区域
    • 2.4 选择服务器规格
    • 2.5 选择系统镜像
    • 2.6 选择存储盘
    • 2.7 配置密码
    • 2.8 配置云备份
    • 2.9 确认配置
    • 2.10 立即购买
    • 2.10 后台控制台
  • 三、服务器登录
    • 3.1 查看服务器的详情
    • 3.2 远程登录
    • 3.9 采用FinalShell登录
  • 四、部署YOLOv3算法
    • 4.1 YOLO算法介绍
    • 4.2 快速部署算法模型
    • 4.3 官方模型支持识别的目标类型
  • 五、总结

一、前言

1.1 开发需求

这篇文章讲解: 采用华为云最新推出的Flexus云服务器X实例部署YOLOv3算法,完成图像分析、目标检测。

随着计算机视觉技术的飞速发展,深度学习模型如YOLOv3在图像识别和目标检测领域展现出了卓越的性能。为了满足日益增长的数据处理需求,本项目利用华为云最新推出的Flexus云服务器X实例的强大计算能力,部署YOLOv3算法以实现高效的图像分析与指定目标检测功能。通过将先进的算法与高性能云计算资源相结合,不仅能够处理大规模图像数据集,还能够保证实时性和准确性,这对于智能监控、自动驾驶等应用场景至关重要。

考虑到实际应用中对于灵活性和服务化的需求,在服务器上开发了一套后端程序,该程序提供了HTTP接口,允许外部客户端通过简单的API调用来上传图片。服务器端接收到请求后,将自动执行目标检测流程,并将分析结果反馈给客户端。这种方式极大地简化了客户端的应用开发流程,使得无需深入了解复杂的图像处理细节即可享受到高效的目标检测服务。此架构不仅增强了系统的可访问性,也为未来的扩展和维护提供了便利。

image-20240906162424686

image-20240906162435598

1.2 Flexus云服务器介绍

华为云Flexus云服务器X实例是由国家科技进步奖获得者、华为公司Fellow及华为云首席架构师顾炯炯牵头研发的一款创新性云服务器。该实例基于华为的擎天QingTian架构、瑶光云脑和盘古大模型等核心技术,是业界首款应用驱动的柔性算力云服务器,适用于高科技、零售、金融、游戏等多个行业的通用工作负载场景,如网络应用、数据库、虚拟桌面、分析索引、微服务及持续集成/持续部署(CI/CD)等。

传统的云服务器通常只提供固定的CPU和内存规格,无法精准匹配用户的实际资源需求,导致资源利用效率低下。相比之下,华为云Flexus X实例提供了更为灵活的算力配置,支持超过100种不同的CPU与内存配比,最高可达到3:1的比例,从而更好地适应各种业务应用的需求。

Flexus X实例不仅在性能方面表现出色,还内置了智能应用调优算法,结合华为技术专家多年积累的经验,在基础模式下,其GeekBench单核及多核跑分可达业界同规格独享型实例的1.6倍。在性能模式下,Flexus X实例的性能超过了同类C系/G系/R系及S系旗舰型云主机的标准。

Flexus X实例还配备了X-Turbo加速技术和大模型底层智能调度技术,为关键业务应用提供加速功能。例如,在Flexus X实例上部署的MySQL、Redis和Nginx等应用,其性能最高可达业界同规格独享型实例的6倍(MySQL性能),长期运行时也能保持2倍的性能优势。

Flexus X实例在定价策略上定位于经济型级别,但其性能表现却超越了旗舰级云主机。通过动态业务画像规格优化等技术,用户在将业务从本地服务器或其他云服务提供商迁移到Flexus X实例时,可以节省高达30%的算力成本,从而实现业务的全面提速和效能提升,享受到云基础设施的显著改进体验。

1.3 YOLOv3目标检测算法

YOLO(You Only Look Once)算法是一种用于实时物体检测的深度学习框架,它改变了传统目标检测方法中逐步细化的过程,通过一次性地对整个图像进行预测来直接生成边界框和类别概率,从而显著提高了检测速度。与传统的基于区域提议(如R-CNN系列算法)的方法不同,YOLO将目标检测视为一个回归问题,直接从输入图像到边界框坐标和类别标签进行映射,这使得YOLO能够在保持较高检测精度的同时,实现极快的检测速度。

YOLO的核心优势在于其独特的检测方式。它将输入图像分割成固定大小的网格,并且每个网格负责预测出现在该网格内的对象。每个网格单元会生成一组边界框及其对应的置信度分数,其中置信度表示该边界框内存在某个特定类别的对象的概率。这种方法确保了模型可以同时处理多个对象,并且能够有效地检测小尺寸的对象,这是许多其他检测框架所难以做到的。

随着时间的发展,YOLO经历了多个版本的迭代,从最初的YOLOv1到后来的YOLOv2、YOLOv3以及更先进的YOLOv4和YOLOv5等版本。每一个新版本都在前一版本的基础上进行了改进,提高了检测精度和速度。例如,YOLOv3引入了多尺度特征融合,可以在不同的尺度上进行检测,从而提升了小物体的检测效果;而YOLOv4则进一步优化了网络结构,采用了更强大的骨干网络,并结合了一系列最新的改进技术,如Mish激活函数、SPP模块等,使得其在速度和精度之间达到了更好的平衡。

YOLO算法因其高效的速度和良好的检测性能,在自动驾驶、安防监控、无人机影像分析等多个领域得到了广泛的应用。它的设计理念强调实时性和实用性,使其成为构建实时视觉系统的理想选择。

1.4 客户端开发思路

客户端应用程序采用Qt框架开发,为用户提供一个直观且高效的界面,以便实时采集摄像头图像并调用服务器上部署的YOLO算法完成图像的目标分类检测。Qt是一个跨平台的应用程序开发框架,以其丰富的图形用户界面组件和强大的网络通信功能著称,非常适合用于开发此类需要图形展示与网络交互的应用程序。

客户端的主要功能包括实时视频流的捕获与显示。通过集成Qt的多媒体模块,客户端可以轻松地与各种类型的摄像头进行连接,捕捉实时视频流,并在界面上呈现给用户。用户可以通过简单的操作启动或停止视频捕获,调整摄像头参数,如分辨率和帧率,以适应不同的使用场景。

在视频流捕获的基础上,客户端还实现了与服务器的无缝对接。当客户端捕获到视频帧后,会将其发送至预先配置好的服务器地址。服务器端运行着之前部署的YOLO目标检测算法,接收到来自客户端的图像数据后,将对其进行处理,识别出图像中的各类目标,并计算出相应的边界框和类别标签。处理完成后,服务器会将包含检测结果的数据包回传给客户端。

客户端接收到检测结果后,会在视频画面上叠加相应的边界框和标签信息,直观地显示出识别出的目标类型及其位置。这一过程几乎是在实时进行的,使得用户能够立即看到目标检测的效果。这样的功能对于监控应用特别有用,可以帮助用户迅速识别出视频流中的关键信息。

客户端提供附加功能,比如保存带有检测结果的图像、记录视频片段,以及根据用户的偏好设置自定义的检测阈值或目标类别过滤等。通过这样的设计,客户端不仅能够满足基本的目标检测需求,还能根据具体的应用场景进行灵活的定制,提高用户体验和系统的实用性。

1.5 客户端运行效果

Qt制作的界面,运行目标检测的结果:

image-20230926163612143

image-20230926163441092

二、服务器选购

2.1 登录官网

链接:https://www.huaweicloud.com/

image-20240905140332361

在官网首页的轮播图里可以看到,有Flexus云服务器的宣传。这是华为云匠心打造的下一代跃级产品,面向中低负载场景,性能倍增、体验跃级的服务器。

2.2 选购服务器

在产品页面,也可以看到Flexus云服务的选项,点击进去选购服务器。

image-20240905140614881

链接:https://www.huaweicloud.com/product/flexus.html

image-20240905140518001

在选购页面可以看到服务器推广器件,1年36块钱。 每个月的流量是100G,对于一些访问量不高的服务器或者测试用是非常合适的。

image-20240905140827022

当前我要选择的服务器是:Flexus云服务器X实例 ,点击Flexus系列产品,选择X实例。Flexus云服务器X实例符合:柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景。

image-20240905142342028

2.3 选择服务器区域

针对时延敏感型业务请选择靠近您业务的区域,以降低网络时延,提高访问速度;针对和存量云产品有内网互通需求的业务,请选择和存量产品相同的区域。

image-20240905142546892

2.4 选择服务器规格

image-20240905143518832

2.5 选择系统镜像

我这选择ubuntu系统,用来搭建服务器。这个根据自己的情况选择,自己适合那一种就选择哪一种。

image-20240905160440609

2.6 选择存储盘

我选择150G大小。

image-20240905154238881

2.7 配置密码

设置好服务器的名字(如果你有多个服务器,为了自己好区别)和系统的登录密码。

image-20240905153958099

2.8 配置云备份

云备份这个不买。有需要自己可以购买。

image-20240905154322590

2.9 确认配置

image-20240905160511662

2.10 立即购买

image-20240905160537231

购买成功。

image-20240905160626605

创建成功之后,邮箱会收到提示的。

image-20240905160724142

2.10 后台控制台

链接:https://console.huaweicloud.com/ecm

在控制台可以看到服务器的详情。

image-20240905161142694

三、服务器登录

3.1 查看服务器的详情

点击服务器的名称,可以进去到详情页面。

image-20240905161621249

image-20240905161739687

3.2 远程登录

image-20240905161848020

填入设置好的密码。

image-20240905161919502

登录成功。

image-20240905161948036

3.9 采用FinalShell登录

自带的在浏览器里运行,每次需要打开浏览器,文件也不方便上传下载。

所以,这里开发阶段,我采用的 FinalShell登录到服务器。

新建SSH连接,输入连接信息。

image-20240905162205597

登录成功。

image-20240905162444451

接下来就可以进行开发了。

四、部署YOLOv3算法

4.1 YOLO算法介绍

YOLO算法官网介绍:https://pjreddie.com/darknet/yolo/

image-20230926160707304

You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev.

You Only Look Once (YOLO) 是最先进的实时目标检测系统。在 Pascal Titan X 上,它以 30 FPS 处理图像,并且在 COCO 测试开发上的 mAP 为 57.9%。

Comparison to Other Detectors
YOLOv3 is extremely fast and accurate. In mAP measured at .5 IOU YOLOv3 is on par with Focal Loss but about 4x faster. Moreover, you can easily tradeoff between speed and accuracy simply by changing the size of the model, no retraining required!

与其他探测器的比较
YOLOv3 非常快速且准确。在 mAP 中,测量结果为 0.5 IOU YOLOv3 与 Focal Loss 相当,但速度快约 4 倍。此外,只需更改模型的大小即可轻松在速度和准确性之间进行权衡,无需重新训练!

4.2 快速部署算法模型

(1)安装darknet

root@flexusx-1a58:~# mkdir yolov3
root@flexusx-1a58:~# cd yolov3/
root@flexusx-1a58:~# git clone https://github.com/pjreddie/darknet
root@flexusx-1a58:~# cd darknet
root@flexusx-1a58:~# make

注意,如果clone失败,多测几次就行了。

image-20240906160612929

下载完成:

image-20240906161159343

编译过程中:

image-20240906161236617

编译完成:

image-20240906161534072

(2)下载权重文件

root@flexusx-1a58:~# wget https://pjreddie.com/media/files/yolov3.weights

yolov3.weights 是 YOLOv3 网络训练得到的权重文件,存储了神经网络中每个层次的权重和偏置信息。

cfg/目录下已经包含了yolov3对应的配置文件。

下载过程:

image-20240906161132293

(3)运行detector

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

image-20240906161749031

运行输出的信息:

layer     filters    size              input                output0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs.......105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs106 detection
truth_thresh: Using default '1.000000'
Loading weights from yolov3.weights...Done!
data/dog.jpg: Predicted in 0.029329 seconds.
dog: 99%
truck: 93%
bicycle: 99%

image-20230926161227491

检测分类:

root@flexusx-1a58:~/yolov3/darknet# ./darknet detect cfg/yolov3.cfg yolov3.weights data/horses.jpg 

识别结果:

image-20240906162208341

image-20240906162415092

识别的结果可以直接打开。

image-20240906162305704

4.3 官方模型支持识别的目标类型

person
bicycle
car
motorbike
aeroplane
bus
train
truck
boat
traffic light
fire hydrant
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
backpack
umbrella
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
sofa
pottedplant
bed
diningtable
toilet
tvmonitor
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
book
clock
vase
scissors
teddy bear
hair drier
toothbrush

五、总结

华为云正在举行其年度828 B2B企业节活动,期间提供了包括Flexus X实例在内的多种产品的优惠。对于那些对计算性能有较高要求,并且需要自行部署MySQL、Redis、Nginx等服务的用户来说,这次促销是一个很好的机会,建议有兴趣的朋友可以前往查看相关的优惠信息。

官网直达:https://activity.huaweicloud.com/828_promotion/index.html

image-20240906111030734

这篇关于828华为云征文|采用华为云Flexus云服务器X实例部署YOLOv3算法完成目标检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144153

相关文章

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.