0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在目前深度学习中比较普及的“物件检测”应用

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 作者:NVIDIA英伟达企业解 2021-06-09 15:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

接下来的重点,就是在目前深度学习中比较普及的“物件检测”应用,重点主要有以下三部分:

1. 简单说明“物件检测”的内容。

2. 使用本项目的 detecnet 物件分类指令,进行多样化的推理识别测试。

3. 深入说明 jetson.inference 模块的 detectNet() 以及相关的函数用法。

如此让大家能快速掌握这项物件检测功能,以及开发代码的重点。

物件检测(object detection)简单说明

这是比图像分类更进一步的应用,因为日常生活中,在绝大部分可看到的画面中,不会只存在一个物体,通常是多种类别的多个物体,左图识别出有“四个人”、右图识别出“一个人与一匹马”,当然真的要细部再探索的话,还有其他类别的物体也可以被识别,这是视觉类深度学习中使用频率最高的一种应用。

在物件检测的识别中,还只是比较“概略性”地将物体用“矩形框”的方式来标识,那能不能将物体的“实际形状”更细腻地标识出来呢?当然可以,这就是更高阶的“语义分割”应用,留在下一篇文章里面说明。

前面的图像分类是以“一张图像”为单位,这里的物件检测则是以“物件框”为单位,因此所需要的数据集就不仅仅是图像了,还要将图像中所需要的类别加以标注,然后存成特定格式之后,提供给训练框架去进行模型训练,这是相当耗费人力的一个过程,而且标注的细腻程度也会对最终的精确度产生影响。

关于这个模型的训练过程,会在后面的文章中带着大家动手做一次,这也是整个 Hello AI World 项目中的一部分,而且也提供非常好用的工具,协助大家采集数据、标注物件框、进行模型训练等。

以上就是物件检测的简单说明,接下去直接使用项目提供的 detectnet 指令来进行实验。

detectnet 指令的使用

与 imagenet 的调用逻辑是一样的,当系统编译好之后,就生成 detectnet 指令,可以在 Jetson 设备中任何地方调用。同样的,项目也为 detectnet 准备了几个预训练好的网络模型,可以非常轻松地调用,预训练模型。

系统预设的神经网络是 “SSD-Mobilenet-v2”,基于 91 种分类的 COCO 数据集进行模型训练,详细的类别内容可以参考 ~/jetson-inference/data/networks 目录下的ssd_coco_labels.txt,事实上能识别的物件有 90 种,另外加一个 “unlabeled” 种类。

detectnet 的参数调用与 imagenet 几乎一致,输入源与输出标的的支持方式完全相同,因此我们可以执行下面指令,直接看看得到怎样的效果:

cbee2fd4-c46c-11eb-9e57-12bb97331649.png

在执行过程中,会看到命令终端不断出现类似下图的信息,里面显示一些重要的信息,包括“使用的网络模型文件”、“4 个执行阶段占用时间”、“检测到满足阈值的物件数”、“物件类别/置信度”,以及“物件位置”等信息。

cc1e55e2-c46c-11eb-9e57-12bb97331649.png

detectnet 也能导出 RTP 视频流到指定的电脑,详细用法请参考前面 “Utils的videoOutput 工具”一文中有详细说明,这个用法的实用度非常高,可以让你将 Jetson Nano 2GB 设备放置在任何能接网络的角落,不断读取摄像头内容在 Jetson 上执行物件识别,然后将结果传输到你的桌面电脑或笔记本上,这样你就可以非常轻松地进行监控。

输入 “detectnet --help” 可以得到完整的帮助信息,由于内容太多,我们在这里不占用篇幅去说明,多尝试一些指令的组合,会让你进一步掌握这个指令的重点。

接下来看看如何在 Python 代码中,调用这个项目的物件检测函数,来开发自己的物件检测应用。

detectNet()函数的用法

与前面图像分类的逻辑一样,作者虽然在 ~/jetson-inference/python/examples 下面提供了一个 my-detection.py 范例,这个就是我们一开始所示范的“ 10 行代码威力”的内容,这个范例的好处是“代码量最少”,但对应的缺点就是“弹性小、完整度不够”,因此从务实的角度,我们还是推荐以 /usr/local/bin/detect.py 这只代码为主,这只代码能执行的功能,与 detectnet 指令几乎一致。

与 imagenet.py 代码相同的,一开始有一段“参数解析”的指令,如下截图:

cc9cf1f4-c46c-11eb-9e57-12bb97331649.png

这部分同样请参考先前的“参数解析功能”文章,在这里不重复赘述。接下来我们将与物件检测有关的指令挑出来说明,这样可以让读者更加容易将焦点集中在有关的部分:

51 行:net = jetson.inference.detectNet(opt.network, sys.argv, opt.threshold)

用 jetson.inferene.detectNet() 函数建立 net 这个物件检测对象,与前面的 imageNet() 的逻辑是一样的,不过这里所输入的参数,除了 network(网络模型类别)之外,还多了一个 threshold(阈值)。因为物件检测的功能,是要在图像中识别出“所有可能”的物件,如果没有一个“最低门槛”的限制,就会满屏都是物件。

系统已经给这两个参数都提供预设值,network 预设为 “SSD-Mobilenet-v2”、threshold 预设值为 0.5。

如果要在代码外部利用参数去改变设定,就可以如以下方式:

--network=multiped,表示要使用“Multiped-500”这个网络模型

--threshold=0.3,表示将阈值改成0.3

这样 net 对象就具备了执行物件检测的相关功能,然后再继续以下的步骤。

63 行:detections = net.Detect(img, overlay=opt.overlay)

这道指令,就是将 input.Capture() 获取的一帧图形,传入 net.Detect() 函数去执行物件检测的推理识别计算,另一个参数 “overlay” 的功能是“检测覆盖”的一个标识,只影响显示输出的方式,与检测结果并没有关系,大部分时候都不需要去改变。

这里最重要的是 detections 这个数组变量,由于每帧图像所检测出来物件数量是不固定的,数组的结构在说明文件中并未完整表达,因此需要从执行的代码中去找到蛛丝马迹,这个部分在下一道指令中可以找到答案。

66~69 行:

print(“detected {:d} objects in image”.format(len(detections)))

for detection in detections:

print(detection)

这部分执行完之后,会在命令终端上显示两个很重要的信息:

本帧图像所找到满足阈值的物件数量。

前面变量detections的数据结构。

在命令终端执行以下指令,

看看所显示的信息,如下截屏:

ccc09b36-c46c-11eb-9e57-12bb97331649.png

这里可以看到,代码最后面 “len(detections)” 的值,就是本帧图像所检测到的物件数量,而 detections 的数据结构就是:

ClassID:类别编号

Confidence:置信度

Left:标框左坐标

Top:标框上坐标

Right:标框右坐标

Bottom:标框下坐标

Width:框的宽度 = Right - Left

Height:框的高度 = Bottom - Top

Area:面积 = Width x Height

Center:中心点坐标 = ( (Left+Right)/2, (Top+Bottom)/2 )

确认了 net.Detect() 返回值之后,就能很轻易地以这些数据去开发满足特定要求的应用。

至于后面的 output.Render(img)、output.Status() 这些函数,在前面的文章里面都讲解的很清楚,这里不再重复。

到这里,要利用 Hello AI World 这个项目所提供的库资源,去开发自己的应用程序,就显得非常简单了。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4423

    浏览量

    68042
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

    74542
  • 数据集
    +关注

    关注

    4

    文章

    1242

    浏览量

    26299
  • 深度学习
    +关注

    关注

    73

    文章

    5614

    浏览量

    124753

原文标题:Jetson Nano 2GB 系列文章(23): “Hello AI World 的物件识别应用

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RetinaNet深度学习模型突破航空图像目标检测难题

    深度学习模型交出了亮眼的答卷——它让One-stage检测器超越了传统Two-stage方法的精度,成为了航空图像分析领域的重要工具。
    的头像 发表于 05-15 09:23 1253次阅读
    RetinaNet<b class='flag-5'>深度</b><b class='flag-5'>学习</b>模型突破航空图像目标<b class='flag-5'>检测</b>难题

    深度学习为什么还是无法处理边缘场景?

    选择视而不见甚至直接加速。 之所以出现这个问题,是因为深度学习模型大多建立统计学基础之上,它们通过观察数以千万计的图像学习识别物体的特征。然而,真实世界的道路场景是无限多样的,这种基
    的头像 发表于 05-04 10:16 2268次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>为什么还是无法处理边缘场景?

    人工智能-Python深度学习进阶与应用技术:工程师高培解读

    深度学习的工程化落地,早已不是纸上谈兵的事。从卷积神经网络到Transformer,从目标检测到大模型私有化部署,技术栈不断延伸,工程师面临的知识体系也越来越庞杂。现根据中际赛威工程师培训老师的一份
    的头像 发表于 04-21 11:01 469次阅读
    人工智能-Python<b class='flag-5'>深度</b><b class='flag-5'>学习</b>进阶与应用技术:工程师高培解读

    2026视觉检测产业深度调研及未来趋势分析

    视觉检测技术融合深度学习与多模态传感,实现从辅助工具向决策中枢的转变,推动智能制造与工业4.0发展。
    的头像 发表于 04-01 09:26 357次阅读
    2026视觉<b class='flag-5'>检测</b>产业<b class='flag-5'>深度</b>调研及未来趋势分析

    【智能检测】基于AI深度学习与飞拍技术的影像测量系统:实现高效精准的全自动光学检测与智能制造数据闭环

    内容概要:文档内容介绍了中图仪器(Chotest)影像测量仪融合人工智能深度学习与飞拍技术的自动化检测解决方案。系统通过AI深度学习实现
    发表于 03-31 17:11

    AOI光学检测设备原理:自动光学检测如何识别外观缺陷?

    AOI 作为产线 “智能之眼”,核心通过精密光学成像获取图像,结合传统模板比对(与黄金样板比对)和深度学习学习缺陷特征)两种算法判断 PCB 缺陷。其挑战的是 “判准” 而非 “看见”,当前正朝着混合
    的头像 发表于 02-11 10:24 928次阅读

    机器学习深度学习中需避免的 7 个常见错误与局限性

    ,并验证输出结果,就能不断提升专业技能,养成优秀数据科学家的工作习惯。需避免的机器学习深度学习数据错误训练数据驱动的人工智能模型时,我们会遇到一些常见错误和局
    的头像 发表于 01-07 15:37 411次阅读
    机器<b class='flag-5'>学习</b>和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中需避免的 7 个常见错误与局限性

    穿孔机顶头检测仪 机器视觉深度学习

    LX01Z-DG626穿孔机顶头检测仪采用深度学习技术,能够实现顶头状态的在线实时检测,顶头丢失报警,顶头异常状态报警等功能,响应迅速,异常状态视频回溯,
    发表于 12-22 14:33

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课(11大系列课程,共5000+分钟)

    趋势: 无监督学习普及 当前工业场景中80%的缺陷检测项目面临\"OK样本充足而NG样本稀缺\"的困境,传统监督学习方案难以落地。课程第11系列(无监督缺陷
    发表于 12-04 09:28

    【团购】独家全套珍藏!龙哥LabVIEW视觉深度学习实战课程(11大系列课程,共5000+分钟)

    趋势: 无监督学习普及 当前工业场景中80%的缺陷检测项目面临\"OK样本充足而NG样本稀缺\"的困境,传统监督学习方案难以落地。课程第11系列(无监督缺陷
    发表于 12-03 13:50

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标
    的头像 发表于 11-27 10:19 400次阅读

    如何在机器视觉中部署深度学习神经网络

    图 1:基于深度学习的目标检测可定位已训练的目标类别,并通过矩形框(边界框)对其进行标识。 讨论人工智能(AI)或深度
    的头像 发表于 09-10 17:38 1130次阅读
    如何在机器视觉中部署<b class='flag-5'>深度</b><b class='flag-5'>学习</b>神经网络

    锂电行业视觉检测案例集锦(二)

    本文主要介绍了友思特自动深度学习平台Neuro-T电池制造过程中的应用,主要涉及方形电池排气阀焊接检测。文章展示了用深度
    的头像 发表于 08-13 15:32 819次阅读
    锂电行业视觉<b class='flag-5'>检测</b>案例集锦(二)

    自动驾驶中Transformer大模型会取代深度学习吗?

    持续讨论。特别是自动驾驶领域,部分厂商开始尝试将多模态大模型(MLLM)引入到感知、规划与决策系统,引发了“传统深度学习是否已过时”的激烈争论。然而,从技术原理、算力成本、安全需求与实际落地路径等维度来看,Transforme
    的头像 发表于 08-13 09:15 4456次阅读
    自动驾驶中Transformer大模型会取代<b class='flag-5'>深度</b><b class='flag-5'>学习</b>吗?