当前位置:网站首页>基于ModelArts的物体检测YOLOv3实践【玩转华为云】
基于ModelArts的物体检测YOLOv3实践【玩转华为云】
2022-08-01 09:50:00 【华为云】
前言
YOLO场景运用: YOLO作为一个one-stage目标检测算法,在速度和准确度上都有杰出的表现。
除了在Notebook开发环境中进行算法的定义和运行,通过ModelArts预置算法同样可以进行YOLO算法的训练和推理。接下来的例子就是一个利用Notebook中的YOLO V3物体检测进行的训练和推理过程。
另外,想要了解ModelArts预置算法,可以前往华为云GitHub教程链接:ModelArts物体检测Yolo_V3预置算法案例
或者可以参考以前我的这篇博文:https://bbs.huaweicloud.com/blogs/224006
背景
物体检测是计算机视觉中的一个重要的研究领域,在人流检测,行人跟踪,自动驾驶,医学影像等领域有着广泛的应用。不同于简单的图像分类,物体检测旨在对图像中的目标进行精确识别,包括物体的位置和分类,因此能够应用于更多高层视觉处理的场景。例如在自动驾驶领域,需要辨识摄像头拍摄的图像中的车辆、行人、交通指示牌及其位置,以便进一步根据这些数据决定驾驶策略。这次实践,我将聚焦于YOLO算法,YOLO(You Only Look Once)是一种one-stage物体检测算法。
基础环境准备
在使用 ModelArts 进行 AI 开发前,需先完成以下基础操作哦(如有已完成部分,请忽略),主要分为4步(注册–>实名认证–>服务授权–>领代金券):
使用手机号注册华为云账号:点击注册
点此去完成实名认证,账号类型选"个人",个人认证类型推荐使用"扫码认证"。

点此进入 ModelArts 控制台数据管理页面,上方会提示访问授权,点击【服务授权】按钮,按下图顺序操作:

进入 ModelArts 控制台首页,如下图,点击页面上的"彩蛋",领取新手福利代金券!后续步骤可能会产生资源消耗费用,请务必领取。
以上操作,也提供了详细的视频教程,点此查看:ModelArts环境配置

基于ModelArts的物体检测YOLOv3实践具体步骤
1.点击进入 【物体检测YOLOv3实践】的案例页面,并完成基础配置。
本次实践使用的是AI框架: TensorFlow-1.13.1,在GPU下面运行;推荐规格: GPU V100
点击 Run in ModelArts,进入 JupyterLab 页面:

稍等30s左右,等待项目初始化完毕......

由于需要GPU下运行,所以我们需要进行规格切换,并选择 [限时免费]GPU: 1*V100|CPU: 8核 64GB ,点击切换规格。
稍等一会就切换完成,如下所示:

2.数据和代码下载
运行下面代码,进行数据和代码的下载和解压
这里使用coco数据,共80个类别。

3准备数据
3.1文件路径定义

3.2读取标注数据

3.3数据读取函数,构建数据生成器。
每次读取一个批次的数据至内存训练,并做数据增强

4.模型训练
这里使用Keras深度学习框架搭建YOLOv3神经网络。
4.1构建神经网络
可以在./yolo3/model.py文件中查看细节



4.2开始训练

4.3保存模型

5.模型测试
5.1打开一张测试图片

5.2图像预处理

5.3构建模型

5.4加载模型权重
5.5定义IOU以及score
- IOU: 将交并比大于IOU的边界框作为冗余框去除
- score:将预测分数大于score的边界框筛选出来

5.6构建输出[boxes, scores, classes]

5.7进行预测

5.8将预测结果绘制在图片上

先输出一下原图

物体检测效果图

可以看出,基于ModelArts的物体检测YOLOv3可以检测出伞和人,框选的比较精确,与数据集训练的精度也有关系。
总结
物体检测是计算机视觉中的一个重要的研究领域,在人流检测,行人跟踪,自动驾驶,医学影像等领域有着广泛的应用。不同于简单的图像分类,物体检测旨在对图像中的目标进行精确识别,包括物体的位置和分类,因此能够应用于更多高层视觉处理的场景。本次实操,通过训练好的数据进行检测,较为精确,不难看出,YOLO作为一个one-stage目标检测算法,在速度和准确度上都有杰出的表现。
至此,本文结束。
感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。
边栏推荐
- 【面试:并发篇39:多线程:线程池】ThreadPoolExecutor类-提交、停止
- sql server, FULL mode, dbcc shrinkfile(2,1) can not shrink the transaction log, or the original size, why?
- Change Servlet project to SSM project
- [Interview: Concurrency 39: Multithreading: Thread Pool] ThreadPoolExecutor Class - Submit, Stop
- Custom Types - Enums, Unions
- net stop/start mysql80 拒绝访问
- C语言程序设计50例(三)(经典收藏)
- What are the common API security flaws?
- A problem with writing to the database after PHP gets the timestamp
- Analysis of High Availability Solution Based on MySql, Redis, Mq, ES
猜你喜欢

ClickHouse入门介绍与其特性

【应用推荐】常见资源管理器整理,含个人使用体验和产品选型推荐

How programmers learn open source projects, this article tells you

Redis middleware (from building to refuse pit)

50.【动态二维数组的运用】

C language game - minesweeper

What's up with VS "Cannot find or open PDB file"?How to solve

招聘随想2022

CTFshow,命令执行:web31

已解决(pip安装库报错)Consider using the-- user option or check the permissions.
随机推荐
Idea common plugins
leetcode 42. Catch the rain
编码解码(btoa、encodeURIComponent、encodeURI、escape)
笔记。。。。
CTO strongly banning the use of the Calendar, that in what?
How to query database configuration parameters in GBase 8c, such as datestyle
Redis middleware (from building to refuse pit)
AI篮球裁判火了,走步算得特别准,就问哈登慌不慌
Shell:条件测试操作
Meeting OA (Upcoming Meetings & All Meetings)
50.【动态二维数组的运用】
朴素贝叶斯--学习笔记--基本原理及代码实现
堆内存的介绍及应用(含例子)
数仓分层简介(实时数仓架构)
CTO强烈禁止使用Calendar,那用啥?
实验。。。。
HoloView -- Tabular Datasets
7. SAP ABAP OData 服务如何支持 $orderby (排序)操作
微信公众号授权登录后报redirect_uri参数错误的问题
SkiaSharp's WPF self-painted five-ring bouncing ball (case version)


