开发教程 |基于ModelArts的视频全量目标分析和建模案例分析

网友投稿 873 2022-05-25

项目介绍

本案例来自于第九届中国软件杯大赛A组赛题《视频全量目标分析和建模》。

项目场景

给出一段2分钟的高清视频,对视频中出现的物体进行目标检测和统计。视频通过行车记录仪采集,主要目标物为车辆,建筑,行人等。为了缩短模型推理时间,我们只使用了约30秒的视频进行测试。

基本要求

识别不同类型的目标;输出每种类型的图片;统计每个类别的物体数量。下图是一个参考示意图。

时间限制

在30分钟内完成推理结果。

算法构思

项目分析

一般对于图像的目标进行检测和统计,需要使用目标检测技术;而对于项目所给出的视频,考虑到前后图像的关联性,还需要使用目标跟踪技术。

参考代码

常用的目标检测方法有YOLO系列、SSD、R-CNN等。

常用的目标跟踪方法有SORT、 DeepSORT等。

本实例在YOLOv3和DeepSORT的基础上进行了改进,代码借鉴了Object-Detection-and-Tracking。

实际操作

注册华为云账号

进入华为云首页,单击页面右上角的“注册”。

设置手机号、短信验证码、账号名、密码并勾选“我已阅读并同意《华为云用户协议》和《隐私政策声明》”,单击“同意协议并注册”。

实名认证

账号注册成功后,登录华为云,单击界面右上角“用户名>实名认证”。账号类型选“个人”,个人认证类型推荐使用“扫码认证”(华为云app)。

服务授权

点此进入ModelArts 控制台页面,点击左下角的“全剧配置”,选择“访问授权”,按下图顺序操作:

下载代码、视频

从OBS桶下载代码、视频,点击下列链接即可下载。

test.ipynb

data_process.ipynb

code.tar

创建OBS桶

OBS大家可以简单地理解成一个在线网盘,因为ModelArts本身目前没有数据存储的功能,所以需要从OBS里存储我们上传的数据进行训练。

点击进入华为云OBS控制台,进入后点击右上角的【创建桶】按钮(这里的桶可以理解成OBS进行存储的基本单位,所有的数据必须存储在某个桶里)。

进入新建桶界面, 按照如下示例进行填写:

区域:华北-北京四;数据冗余存储策略:单AZ存储;桶名称:自定义,需要全局唯一,即在整个华为云上的名字唯一;其它选项保持默认即可。

使用OBS桶上传代码、视频

在OBS首页,找到我们刚刚新建的桶,并点击桶名称进入桶内容管理界面。

进入后,点击左侧“对象”按钮,进入数据上传界面,点击“上传对象“按钮,弹出上传对象框,我们直接用鼠标将前面下载好的压缩包拖拽到到上传对象框内。

在文件夹中有code.tar,test.ipynb文件和data_process.ipynb文件三个文件,只需要上传code.tar即可。

创建开发环境

在ModelArts左侧导航栏选择“开发环境 > Notebook”,单击页面中“创建”。

在创建Notebook页面填写参数,可参考下图填写配置参数。

点击右侧的“打开”,打开 Notebook 环境。

上传脚本文件

进入Notebook 环境后,点击右侧的“Upload”,从百度云下载好的data_process.ipynb和test.ipynb文件上传。

运行data_process.ipynb文件

注意,要将第一个地址修改为你自己的OBS桶名称。

对代码文件进行解压缩。

运行test.ipynb文件

我们需要切换到代码文件夹下,通过test.ipynb文件执行主文件main.py。

将代码运行所需要的依赖库都写到了requirements.txt文件里,可以一次性安装完毕。

执行主文件main.py

算法入口定义在main.py文件中,只需要执行这一个文件,就可以完成视频的目标检测及跟踪。

while True: # 从视频中抽取一帧图像 ret, frame = video_capture.read() # frame shape 640*480*33 if ret != True: break image = Image.fromarray(frame[...,::-1]) #bgr to rgb # 将抽取的图像传入YOLOv3进行目标检测,得到目标框和类别。 boxs,class_names = yolo.detect_image(image) # 将抽取的图像和目标检测得到目标框传入DeepSORT进行目标跟踪。 features = encoder(frame, boxs) # 设置置信度为1.0 detections = [Detection(bbox, 1.0, feature, cl) for bbox, feature, cl in zip(boxs, features, class_names)] boxes = np.array([d.tlwh for d in detections]) scores = np.array([d.confidence for d in detections]) indices = preprocessing.non_max_suppression(boxes, nms_max_overlap, scores) detections = [detections[i] for i in indices] # 进行目标更新 tracker.predict() tracker.update(detections)

开发教程 |基于ModelArts的视频全量目标分析和建模案例分析

-i参数表示输入视频的路径。

查看结果

将结果保存在output文件夹中,内容包括视频、图片和文本。

视频outputVideo.avi可运行test.ipynb文件中的代码查看,也可以到output文件夹下查看。

文本totalCount.txt截图。

图片imageSeg部分展示。

保存结果

运行data_process.ipynb文件中的代码,记得修改第二个地址为自己的OBS桶地址。

结语

好了,上述步骤就是使用ModelArts进行深度学习的一个应用实例。

AI开发平台ModelArts 视频

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mysql从入门到入魔——1. 数据准备(起航篇建议收藏)
下一篇:ROS机器人编程新书推荐(附免费下载)
相关文章