查看: 2550|回复: 3

图像多物体检测实战之人体顶视图检测

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3875

    主题

    7479

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39287
    最后登录
    2025-7-22
    发表于 2022-3-10 09:26:27 | 显示全部楼层 |阅读模式
    图像多物体检测实战之人体顶视图检测


    话说上一篇《用深度学习“扫雷”——大白话SSD物体检测的原》,我们认识了一个深度学习领域的新朋友--多物体检测。


    所谓物体检测,相较于之前的老朋友--分类任务,多了一个检测的需求,针对于这种任务,我们不仅需要侦测出物体的类别,还要提供物体所在的位置坐标。同时,这样一来,我们的检测任务也就具备了多物体的检测能力。即使用单一模型,就可以实现图上所有物体的识别与定位。
    而针对于这一特殊需求,普通的分类模型就不能够胜任了,因为,我们需要在分类的基础上叠加物体坐标的回归网络。
    在这个领域,SSD是一员老将。SSD全称是“singleshot multibox detection”,通俗点讲,只需看一次就把物体检测出来。
    SSD的原理小编在这里就不再赘述了,可参看《用深度学习“扫雷”——大白话SSD物体检测的原理》。
    今天就给大家带来一个具体的SSD的例子,不过,这次可不是扫雷啊,而是一个基于顶视图的人体检测例子,没错,正是上一篇中给大家留下的伏笔。
    好,让我们正式开始。
    所谓,巧妇难为无米之炊,正式炼丹前,我们要找到合适的药引子。幸运的是,万能的互联网还真就没让我们失望。小编在这里找到了我们的药引子。这个数据中包含了顶视多摄像头环境中的多人识别数据集,包含了来自5个摄像头的5小时视频,以及近4000张YOLO格式的手动标记图像,大概是这样:
    13.png
    有了数据集,下一步的重点就是开始模型结构的搭建,考虑到我们的模型最终是要运行到MCU平台的,一个重要的步骤是对模型进行瘦身。


    瘦身开始前,我们先对SSD模型进行拆分,将其分为模型主干以及模型检测头两部分。所谓模型主干,其主要负责对于图像特征的提取,以供检测头使用。检测头,顾名思义,其负责根据主干网络所抽取的特征进行物体的辨别并同时输出其位置坐标。我们知道,SSD模型的精髓是支持在不同尺度下的检测,其就是通过将检测头放置在模型主干网络的不同位置从而实现的。


    针对于骨干网络的瘦身,我们主体采用MobilenetV1网络,并进行些许裁减。而针对于检测头,我们直接采用DSConv结合1X1卷积的形式,最大程度的降低检测头的尺寸。同时,检测头的数量也会对模型的最终体积产生影响。


    考虑到数据集来自于同一摄像头下的顶视视角,其所拍摄的物体尺度(人体所占整图的比例)是相对比较集中的,检测头数目减少到了4个,即我们的模型具备在4个尺度上的检测能力。


    模型瘦身之后,下一步就是进行锚框的设计。而锚框的设计也正是SSD模型的另一个设计要点,因为我们的检测实际上是基于锚框实现的,可以这么理解,SSD模型其实质上就是对物体检测任务进行拆分,其最小检测单位就是锚框,即每一个锚框都要负责对其所框住的区域中目标进行分类与检测,锚框设计的好坏会直接影响最终的模型检测准确度。


    也正是如此,SSD是一种密集采样网络,通过广撒网(定义一系列锚框),最终多敛鱼,在这里,鱼就是待检测物体。


    而锚框设计的两个重要指标是锚框的大小(即锚框的宽和高)以及长宽比(是正方形 or 长方形)。而这里,最重要的就是锚框大小的设置,因为在训练过程中,具体是哪一个锚框负责进行检测,是根据其与真实框的IOU值来确定的,如果框过大/过小的,很可能IOU值很小,导致没有任何锚框与真实框匹配,那也就很难进行训练了(大家想想,都没有可训练的目标了,还怎么进行?)。


    通过观察数据集,我们可以发现,待检测物体的长度一般占原图的长度的0.1 – 0.4。我们所设计的模型具有4个检测头,这样,每一个检测头所对应的锚框的大小分别为(0.1,0.2, 0.3,0.4)。


    其次是长宽比的设置,分别设置为((1, 2,0.5), (1, 1), (1, 1), (1, 2, 0.5)),这个大家就要根据实际进行搭配了,小编所遵循的依据就是通过观察真实框形状分布,以确定正方形/长方形的长宽比配置。


    这样一来,我们就完成了模型的全部设计工作,接下来就是漫长的炼丹啦,此处省去10000+的汗如雨下的调参过程,最终我们得到了一个loss=2.33的SSD模型,当然,模型本身还是有潜力继续迭代调优的啊,小编只是实在有点想赶紧看看运行效果了,对模型进行量化并转换为tflite模型,借助于eIQ下的TFLM库,真机运行效果如下:
    14.png
    先上图:这是一张顶视图的人体检测效果,图中绿框是对检测结果的可视化表示,上面的数字表示检测模型认为这个框中含有人物的可能性,检测模型在NXP i.MX RT1170 1GHz下只需88ms即可运行一次。


    下面,小编就完整地给大家展示一下:
    识别.gif
    整个模型在1170上只需要花费88ms就可以完成一次推理,可以达到每秒11帧的检测速度,量化后的模型也只有177KB,可以说小巧玲珑又不失大将的风度。


    当然,我们的SSD模型不仅仅局限于此,下一次还会给大家带来基于SSD的人脸检测模型,小编在这里就给大家先做个预告啦,期待大家的光临。

    qiandao qiandao
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2022-3-10 11:00:52 | 显示全部楼层
    管管我最近入手了一个i.mx8 的板子,有没有机器视觉方面的资料多推荐一下啊?目前实操上还不知道怎么着手……
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3875

    主题

    7479

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    39287
    最后登录
    2025-7-22
     楼主| 发表于 2022-3-10 11:04:32 | 显示全部楼层
    stm1024 发表于 2022-3-10 11:00
    管管我最近入手了一个i.mx8 的板子,有没有机器视觉方面的资料多推荐一下啊?目前实操上还不知道怎么着手… ...

    可以可以
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 1849 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112633
    最后登录
    2025-7-22
    发表于 2022-3-10 14:17:49 | 显示全部楼层

    什么可以?管管是打算整一个环境搭建和上手教程吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 20:57 , Processed in 0.092431 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表