图像(目标)检测入门理论课程(下)

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 图像(目标)检测入门理论课程

实战演示

1. ModelScope图像检测模型介绍

上图为ModelScope主页截图,可以从最上方的检测专题进入,也可以从左边的计算机视觉、视觉检测跟踪tag进入。比如点击垂类目标检测,将会显示人体口罩、香烟等垂偏垂直行业的检测模型。

ModelScope上的泛检测类的模型可以归类为图片、视频及其他。

图像检测包括通用的目标检测、人脸相关检测。通用检测提供了实时的目标检测,也有DINO高精度目标检测以及自研的DAMOYOLO模型。垂类目标检测包括口罩、安全帽、无人机等垂直行业的模型。

视频检测提供了视频目标检测、视频目标跟踪、单目标/多目标以及视频动作检测等模型,也有更细化的方向比如3D目标检测、Open World目标检测、长尾/少样本目标检测、显著性、伪装目标检测等。本文实战主要基于实时目标检测、实时安全帽检测两个模型。

 

2. 创空间实战(安全帽检测)

本示例将演示如何基于ModelScope的安全帽检测模型,搭建创空间的应用。主要包括4个步骤,分别是创建创空间、准备需要的文件(启动脚本、说明文档)、上传文件,发布创空间。关于创空间的搭建,文档中心提供了非常详细的介绍。

在ModelScope页面右上角点击创建创空间。

填写相关信息,英文名创建后不可更改,license可以根据需要进行修改。填入空间描述,接入SDK目前支持3种,选择默认的Gradio即可。

需要用到的文件包括app.py的启动脚本、一张示例图片以及readme文件。

app.py会进行模块的导入,导入Gradio模块,Gradio是Python包,可以用于搭建机器学习模型的web应用。声明安全帽的检测器,该检测器基于ModelScope上已有的安全帽检测模型构建。

下面是可视化的函数,输入图片和检测结果,最后返回可视化之后的图片。safaty_helmet_detect函数是主要的函数,串起了整个流程,图片作为输入,用检测器检测得到结果,对图片以及检测结果做可视化,得到输出图片并返回。

最后,用Gradio构建interface。title、description与examples都可以进行设置。构建好interface之后,通过launch()函数启动。

readme文档的前半部分是YAML,后半部分是Markdown,内容可以根据自己的需要填写。YAML主要进行格式的控制,可以设置domain、models、license以及入参、启动脚本等。

创空间创建完毕后,页面会显示基础介绍。

为了方便展示,本次实战直接使用网页端进行操作。此处默认已经有readme的文件,复制提前编写好的readme的内容粘贴至默认readme文件中,添加app.py文件,上传示例图片。

回到ModelScope,添加app.py文件。

此时创空间位未发布状态,需要在设置里点击上线创空间。

发布后的页面如上图所示。

上传图片后即可进行安全帽检测,输出结果如右图。

 

3. 检测模型实战(安全帽检测)

模型的实战或者实操,经常会提到推理、评估以及训练三个词。

推理是指:有了模型后,对一张图片做前向的推理,得到输出结果,再通过结果判断模型的效果如何,主要为定性分析。

评估是指:模型在已有数据集上的精度水平如何,主要为定量分析。

训练是指:如果已有模型的精度无法达到要求或检测的类别不符合要求,需要做精度提升或类别扩充,对模型进行训练和微调。

模型的实操一般可以分为下面三类:

第一类:无代码。比如OpenVI自学习平台,在网页上完成图片的标注到模型训练再到最终的部署,用鼠标即可完成,全程无代码。

第二类:低代码。比如ModelScope,对底层代码做了封装,向上以模块的形式透出,只需少量的代码便可以进行模型的训练等。

第三类:高代码。比如mmdetection等,代码的开发量较大。

上图中从左到右代码能力要求逐渐递增,而模型的丰富程度也会逐渐递增,灵活性更大。

本示例主要演示如何将COCO上的通用检测模型(不包含安全帽检测模型)通过训练得到安全帽检测模型。

本示例主要基于实时目标检测通用领域的检测模型,大家可以通过名字或modelID进行搜索得到模型的model卡,下方展示了模型的详细介绍、适用范围以、推理示例代码、训练微调的示例代码。

点击右上角Notebook快速开发,选择GPU环境。

先进行目录上的准备,操作与本地基本相似。创建新的目录tutorial(名字可以根据需要任意取),在该目录下创建Notebook的脚本,命名为tutorial(名字可以根据需要任意取,建议用英文命名)。

主要代码如上图所示。首先要做模块的引入,除了内置的模块,基本都为ModelScope的模块。Notebook已经预置了ModelScope等包,如果在本地,则需要安装ModelScope。

复制模块引入的代码,运行代码,完成模块的导入。复制数据集下载相关代码,运行代码,完成数据集加载。

在ModelScope页面的数据集tab,搜索数据集的名称即可找到对应的数据集。

关于如何创建新的数据集,可以在文档中心找到详细的参考。

接下来还需要进行训练的超参设置以及开启模型训练。

modelID是modelcard上的模型ID,work_dir是本次训练的工作目录。batchsize为8代表一次可以训练8张图片,该参数会影响训练的速度,数值大小需要根据GPU的显存决定。total_epochs是总的迭代轮次,本次示例为基于通用检测到安全帽检测的微调,因此total_epoch设为15足够。

参数设置完成之后,构建cfg_options字典,键值为xx.xx的嵌套方式,比如tarin.max_epochs。

模型文件里,每一个模型都有一个configuration.json的文件,是默认的配置文件。构建字典主要作用为对默认的JSON文件进行修改。

开启训练的代码包含构建字典的入参,包括modelID、构建好的train与eval的数据集、工作目录等。然后用build_trainer创建trainer,下载预训练模型,最后调用trainer.train开启训练。

训练完成后,work_dir工作目录下会生成上图文件,包括日志文件、pth模型以及模型的输出。output文件可以用于模型的推理,内容如上图中下方图片所示。

复制训练相关代码并执行。

首先会进行模型的下载,显示默认的配置文件。

image.gif

训练结束后显示mAP为0.61,IoU为0.5的时候mAP为0.91,基本符合预期。

如果训练完后需要对模型做进一步评估,可以使用trainer的eval接口。

复制相关代码,运行,即可对验证集单独做一次评估,结果显示mAP的数值与上面一致。

如果要利用已经训好的模型再对图片进行推理,需要使用推理以及可视化部分代码。

复制推理相关代码,注意,此处需要进行修改。model处需要使用output的目录做路径的拼接。input图片可以是URL,也可以使用本地图片的路径。上传一张准备好的安全帽图片,设置其路径。运行,即可输出检测结果。

如果想要实现可视化,则复制可视化相关代码,对代码中的图片名称进行修改,运行代码,即可显示上图结果。

 

至此,我们完成了利用安全帽的数据,从通用检测模型训练得到安全帽检测模型,并用模型进行评估和推理。

相关文章
|
3月前
|
机器学习/深度学习 算法 计算机视觉
基于深度学习的停车位关键点检测系统(代码+原理)
基于深度学习的停车位关键点检测系统(代码+原理)
138 0
|
5月前
|
运维 安全 数据挖掘
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
159 0
|
3月前
|
机器学习/深度学习 编解码 数据挖掘
实例分割综述总结综合整理版
实例分割综述总结综合整理版
60 0
实例分割综述总结综合整理版
|
10月前
|
机器学习/深度学习 自然语言处理 自动驾驶
图像(目标)检测入门理论课程(上)
图像(目标)检测入门理论课程
|
10月前
|
机器学习/深度学习 自然语言处理 数据可视化
图像(目标)检测入门理论课程
提到目标检测,不得不提到图像分类。 图像分类也是非常基础的工作,它是以一张图片作为输入,输出图片包含的物体类别以及分数。分数指有多大的置信度认为它是某一个类别。 目标检测任务相对于图像任务更进了一步,它会针对一个或者多个目标的图片,检测出其中目标的位置,分辨其类别并给出分数。
|
9月前
|
机器学习/深度学习 决策智能 计算机视觉
计算机视觉实战(十四)答题卡识别 (附完整代码)
计算机视觉实战(十四)答题卡识别 (附完整代码)
170 0
|
10月前
|
机器学习/深度学习 人工智能 编解码
关键点检测从入门到进阶
关键点检测,也被称作关键点定位或关键点对齐(keypoint alignment),在不同的任务中名字可能略有差异。比如,在人脸关键点定位中会被称作facemark alignment,在人体关键点检测中称作pose alignment。
|
12月前
|
机器学习/深度学习 编解码 移动开发
目标检测技能点|一步一步带你实验并重新思考目标检测不同检测头的作用(二)
目标检测技能点|一步一步带你实验并重新思考目标检测不同检测头的作用(二)
226 0
|
12月前
|
编解码 移动开发 监控
目标检测技能点|一步一步带你实验并重新思考目标检测不同检测头的作用(一)
目标检测技能点|一步一步带你实验并重新思考目标检测不同检测头的作用(一)
258 0
|
PyTorch 算法框架/工具 计算机视觉