云社区 博客 博客详情

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

碧箫 发表于 2021-01-01 20:55:25 2021-01-01
0
1

【摘要】 项目介绍本案例来自于第九届中国软件杯大赛A组赛题《视频全量目标分析和建模》。项目场景给出一段2分钟的高清视频,对视频中出现的物体进行目标检测和统计。视频通过行车记录仪采集,主要目标物为车辆,建筑,行人等。为了缩短模型推理时间,我们只使用了约30秒的视频进行测试。基本要求识别不同类型的目标;输出每种类型的图片;统计每个类别的物体数量。下图是一个参考示意图。时间限制在30分钟内完成推理结果。算法...

项目介绍

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

屏幕快照 2020-12-31 下午2.30.22.png

项目场景

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


image6.GIF


基本要求

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


image9的副本.GIF


时间限制

30分钟内完成推理结果。

算法构思

项目分析

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

参考代码

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

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

image7.GIF


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

实际操作

注册华为云账号

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

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


实名认证

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

服务授权

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

屏幕快照 2021-01-01 上午11.10.13.png

下载代码、视频

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

test.ipynb

data_process.ipynb

code.tar

创建OBS

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

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

image14-1.png

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

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

屏幕快照 2021-01-01 上午11.14.32.png

使用OBS桶上传代码、视频

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

屏幕快照 2021-01-01 上午11.15.30.png

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

屏幕快照 2021-01-01 上午11.16.29.png

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


屏幕快照 2021-01-01 下午8.46.45.png



创建开发环境

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

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

屏幕快照 2021-01-01 上午11.28.25.png

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

image20.png

上传脚本文件

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

image21.png

运行data_process.ipynb文件

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

image22.png

对代码文件进行解压缩。

image23.png


运行test.ipynb文件

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

屏幕快照 2021-01-01 下午8.28.09.png

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

image26.png

执行主文件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)

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

image28.png

查看结果

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

image29.png

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

屏幕快照 2021-01-01 下午8.20.36.png

image30.GIF

文本totalCount.txt截图。

image27.png

图片imageSeg部分展示。

image31.png

保存结果

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

屏幕快照 2021-01-01 下午8.49.18.png

结语

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

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 1
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


登录后可评论,请 登录注册

评论