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

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 图像(目标)检测入门理论课程

实战演示

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,也可以使用本地图片的路径。上传一张准备好的安全帽图片,设置其路径。运行,即可输出检测结果。

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

 

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

相关文章
|
7月前
|
运维 安全 数据挖掘
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
【数据挖掘】离群点概念、类型、检测的挑战概述(图文解释 超详细)
547 0
|
4月前
|
存储 C语言
【C深度解剖】计算机数据下载和删除原理
【C深度解剖】计算机数据下载和删除原理
|
6月前
|
机器学习/深度学习 人工智能 监控
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务
一文读懂计算机视觉4大任务:分类任务、检测任务、目标分割任务、关键点检测任务
|
6月前
|
算法
计算机算法设计与分析 第1章 算法概述 (笔记)
计算机算法设计与分析 第1章 算法概述 (笔记)
|
7月前
|
机器学习/深度学习 编解码 数据挖掘
实例分割综述总结综合整理版
实例分割综述总结综合整理版
230 0
实例分割综述总结综合整理版
|
7月前
|
机器学习/深度学习 算法 C#
[视觉概述] 机器视觉应用方向、项目流程及学习思路总结
[视觉概述] 机器视觉应用方向、项目流程及学习思路总结
284 0
|
机器学习/深度学习 自然语言处理 自动驾驶
图像(目标)检测入门理论课程(上)
图像(目标)检测入门理论课程
|
机器学习/深度学习 自然语言处理 数据可视化
图像(目标)检测入门理论课程
提到目标检测,不得不提到图像分类。 图像分类也是非常基础的工作,它是以一张图片作为输入,输出图片包含的物体类别以及分数。分数指有多大的置信度认为它是某一个类别。 目标检测任务相对于图像任务更进了一步,它会针对一个或者多个目标的图片,检测出其中目标的位置,分辨其类别并给出分数。
|
数据可视化 数据挖掘 C++
RNAseq|WGCNA-组学数据黏合剂,代码实战-一(尽)文(力)解决文献中常见的可视化图
RNAseq|WGCNA-组学数据黏合剂,代码实战-一(尽)文(力)解决文献中常见的可视化图
288 0
|
算法 安全 数据挖掘
谈谈转录组测序基础知识及常见问题
转录组学(Transcriptomics),是一门在真整体水平上研究细胞中基因转录的情况及转录调控规律的学科,从RNA水平研究基因的表达情况。转录组测序是通过二代测序平台快速全面地获得某一物种特定细胞或组织在某一状态下的几乎所有的转录本及基因序列,可以用来研究基因表达量、基因功能、结构、可变剪接和预测新的转录本等等。转录组(transcriptome),是指特定生长阶段某组织或细胞内所有转录产物的集合,狭义上指所有mRNA的集合。
2067 0

热门文章

最新文章