AdaDet检测工具箱:一行代码玩转检测算法

简介: 当前,非专业算法人员使用众多检测算法时,仍然会面临诸多挑战:第一,检测算法包含多种类型,比如通用检测、垂类检测、人脸检测等,如何快速体验?第二,每个算法类型包含不同的模型结构,有模型可能更注重于精度,有模型更注重于效率,如何选型?第三,当前下游任务的开发样例较少,如何着手开发?为了降低检测算法的使用门槛,我们推出了AdaDet检测工具箱。

AdaDet检测工具箱介绍


当前,非专业算法人员使用众多检测算法时,仍然会面临诸多挑战:

第一,检测算法包含多种类型,比如通用检测、垂类检测、人脸检测等,如何快速体验?


第二,每个算法类型包含不同的模型结构,有模型可能更注重于精度,有模型更注重于效率,如何选型?


第三,当前下游任务的开发样例较少,如何着手开发?


为了降低检测算法的使用门槛,我们推出了AdaDet检测工具箱。


AdaDet检测工具箱是基于ModelScope的一站式检测应用开发工具箱,只需简单的环境配置,即可通过预设的配置文件和一行命令快速调用众多前沿算法模型和搭建场景化的解决方案。


工具箱已经在GitHub上开源,扫码可达。


代码库链接:

https://github.com/modelscope/AdaDet


检测专题介绍页:

https://modelscope.cn/topic/ccc61c5b53c54a65bea14fddd649822f/pub/summary


检测工具箱的主要特性包括:

开箱即用,简单高效,可以大幅降低开发门槛,提升使用效率。

支持大量学术界和工业界的领先模型,涵盖了比如目标跟踪、关键点检测等一系列模型。


工具箱目前支持9大类算法模型,包括通用目标检测、垂类目标、长尾/小目标、人脸检测、OCR、视频目标、2D/3D关键点检测等共33个模型,在工具箱均可一键调用。


另外,支持4个场景化解决方案,分别是人流计数、抽烟检测、闯入检测和美颜滤镜。


上述检测模型和场景化方案都已经预设配置文件模板,也有非常详细的文档参数说明,只需将配置文件作为参数传递给工具箱里的开发工具,即可实现一行命令调用模型和场景化方案。



一行代码玩转检测算法



上图为检测工具箱的代码结构。


其中config是配置文件的文件夹,只需将配置文件里的单模型或者场景化方案对应的配置文件传入到tools文件夹里已经预设好的开发工具,即可一键调用单模型和场景化解决方案。


详细代码比如单模型推理、训练评估, 场景化解决方案的实现细节均在adadet文件夹里,可供用户查看。


本次实战包括:一行代码搭建人流计数场景化解决方案以及一行代码跑通人体检测模型。

首先进行环境配置。只需在Notebook上执行三步,分别为拉取代码、进入文件夹、安装AdaDet包。


AdaDet检测套件GitHub开源仓库下方提供了安装文档,点击链接后,根据详细安装步骤操作即可。


进入Notebook后,可以选择CPU或GPU环境。如果不需要训练,则选择CPU环境即可。


运行Git clone语句,进行代码克隆。克隆完成后,代码会出现在AdaDet文件夹下。然后运行cd AdaDet,进行简单的package安装并运行。运行完成后,log会显示已经安装成功。此时建议再次进行确认,确保检测套件已经安装成功。


接下来进入实战演示。


人流计数场景化解决方案流程为:输入视频,进行行人多目标检测和跟踪,将检测和跟踪结果传入计数模块,输出计数结果。对于该场景化解决方案,也可以通过一行代码(如上图)进行效果体验和效果评测。


GitHub仓库里提供了人流计数场景化解决方案,点击即可体验。


配置文件也只需简单地配置其输入、输出、是否可视化、对于线的规则定义(比如方向、位于视频帧哪个坐标、哪边是线里面、哪边是线外面等),即可通过调用deploy.py函数,将配置文件传入,实现一键跑通。


进入AdaDet目录,复制deploy.py命令,执行。运行完成后会将所有结果返回,也会将结果保存在deploy_res文件夹里。


最后的输出结果在上图文件夹中,包含每一帧多目标跟踪结果、boundingbox和每一个boundingbox的label(ID)、每一帧的计数结果。其中每一帧的计数结果包括有多少人从线的上方往下穿、有多少人从线的下方往上穿。


另外,文件夹内还提供可视化视频下载,核对结果是否符合预期。


调用benchmark.py函数可以进行效率评测。


调用benchmark路径,传入config,即可进行效率评测,结果显示约为50ms左右。


上图为下载的视频展示效果。


人体检测主要依赖DAMOYOLO模型。对于单模型而言,可以进行模型推理,训练和评估两个功能,也可以一键可以跑通,只需调用相应开发工具写好的脚本,将配置文件传入即可进行检测。


首先演示推理评估功能。文档里提供了快速开始命令,调用Infer.py函数,输入模型的config配置文件。配置文件主要包括输入和输出文件路径、需要Infer 的modelID内容、ModelScope的task。


在Notebook里运行,运行完成后会新生成文件夹,将结果和可视化结果进行保存。infer_out文件夹下的JSON文件里保存了输出结果,包括bondingbox的label、每一个检测框分数。


VIS文件夹里保存有可视化结果。


如果模型已经无法满足使用要求,也可以对单模型进行finetune,我们提供了训练评估功能供开发者使用。注意:训练评估功能只能在GPU模式下进行,在CPU环境下无法运行。


针对DamoYOLO模型我们也提供了快速开始命令。调用train.py函数,输入训练DamoYOLO模型的config到接口,接口参数主要分为三部分:

  • 基础模型
  • 数据可以根据AdaDet文档生成符合要求的数据集
  • 训练参数,包括需要训练的GPU ID、batchsize、epochs、learningrate,保存的工作路径


运行代码后,会在AdaDet目录下生成一个workdir目录,目录里保存了每一个epoch的pth、traininglog等。



相关学习资源推荐




AdaDet检测工具箱开源链接:

https://github.com/modelscope/AdaDet


检测专题介绍页:

https://modelscope.cn/topic/ccc61c5b53c54a65bea14fddd649822f/pub/summary

相关文章
|
1天前
|
算法 JavaScript 前端开发
在JavaScript中实现基本的碰撞检测算法,我们通常会用到矩形碰撞检测,也就是AABB(Axis-Aligned Bounding Box)碰撞检测
【6月更文挑战第16天】JavaScript中的基本碰撞检测涉及AABB(轴对齐边界框)方法,常用于2D游戏。`Rectangle`类定义了矩形的属性,并包含一个`collidesWith`方法,通过比较边界来检测碰撞。若两矩形无重叠部分,四个条件(关于边界相对位置)均需满足。此基础算法适用于简单场景,复杂情况可能需采用更高级的检测技术或物理引擎库。
16 6
|
5天前
|
机器学习/深度学习 监控 算法
基于yolov2深度学习网络的昆虫检测算法matlab仿真,并输出昆虫数量和大小判决
YOLOv2算法应用于昆虫检测,提供实时高效的方法识别和定位图像中的昆虫,提升检测精度。核心是统一检测网络,预测边界框和类别概率。通过预测框尺寸估算昆虫大小,适用于农业监控、生态研究等领域。在matlab2022A上运行,经过关键升级,如采用更优网络结构和损失函数,保证速度与精度。持续优化可增强对不同昆虫的检测能力。![image.png](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_e760ff6682a3420cb4e24d1e48b10a2e.png)
|
10天前
|
算法 Java
JavaSE——算法(2/2):查找算法-二分查找(前言、详细图解、代码部分)
JavaSE——算法(2/2):查找算法-二分查找(前言、详细图解、代码部分)
11 2
|
10天前
|
算法 搜索推荐 Java
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
JavaSE——算法(1/2):认识、冒泡排序、选择排序及优化(介绍、详细图解、代码)
9 0
|
10天前
|
算法 计算机视觉
图像处理之霍夫变换圆检测算法
图像处理之霍夫变换圆检测算法
10 0
|
10天前
|
算法 计算机视觉
图像处理之角点检测算法(Harris Corner Detection)
图像处理之角点检测算法(Harris Corner Detection)
13 3
|
11天前
|
算法 计算机视觉
图像处理之霍夫变换(直线检测算法)
图像处理之霍夫变换(直线检测算法)
13 0
|
11天前
|
算法 计算机视觉
图像处理之简单脸谱检测算法(Simple Face Detection Algorithm)
图像处理之简单脸谱检测算法(Simple Face Detection Algorithm)
8 0
|
11天前
|
算法 C语言
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
数据结构和算法——桶排序和基数排序(图示、伪代码、多关键字排序,基数排序代码)
9 0
|
11天前
|
算法 C语言
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
数据结构和算法——归并排序(有序子列的归并、递归算法、非递归算法、思路图解、C语言代码)
10 0