首页 > 其他分享 >基于AidLux+YOLOv5+ByteTrack实现街道人流统计

基于AidLux+YOLOv5+ByteTrack实现街道人流统计

时间:2022-10-28 10:25:41浏览次数:107  
标签:status YOLOv5 AidLux track aidlite ByteTrack tid id

本博客内容主要基于AidLux实现,也是参加《Aidlux智慧安防AI实战训练营》的心得
AidLux是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIoT应用开发和部署平台

随着现代科技的不断发展,人工智能将对各行各业带去不小冲击,在人防、物防、技防的大安防市场,人工智能也在发挥着作用,已经成为了一个流行趋势并且将是未来的发展方向。此次训练营便是去实现其中的一个小场景。

行人流量统计

1. 项目概述
在火车站、机场、地铁站、景区等公共场所,需要实时检测人流数量,当人流密度过高时及时预警,并实施导流、限流等措施,防止安全隐患。
在人流密度较高的公共场所,使用 Yolov5 + ByteTrack的多目标跟踪方案,可以实现不同场景下的人流数量统计,帮助场所的工作人员相应的管理方案。

2. 实现效果

3. 环境配置

要想实现本项目,首先得做好环境的配置

  • 3.1 下载AidLux
    各大安卓手机的应用商城,搜索Aidlux即可
    下载安装,并注册登录

  • 3.2 AidLux电脑投影
    在这里插入图片描述
    打开电脑浏览器地址,输入 Cloud_ip 里相应的ip,登录密码默认 aidlux 即可进入电脑端页面
    在这里插入图片描述

  • 3.3 VSCode及相关插件的下载安装
    进入 VSCode官网 选择合适的版本进行下载安装,安装时下面两项记得勾选
    在这里插入图片描述
    接下来安装Python、SSH插件
    在这里插入图片描述
    在这里插入图片描述
    由于会用到 opencv,所以在菜单栏 terminal → new terminal 或者使用快捷键 Ctrl + Shift + `

    打开终端输入 pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/sim ple,即可快速下载安装成功。

    当然本身有基础,本机已装有Python环境的同学,直接打开或创建一个python文件,选择自己本机环境即可
    在这里插入图片描述

  • 3.4 PC端使用VSCode远程调试AidLux
    首先上传本地项目文件到AidLux(打开文件浏览器,进入 home ,最后上传文件)
    在这里插入图片描述
    接下来进行 ssh 连接的配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择上传文件的路径,跳出的窗口中,再输入密码 aidlux,即可打开我们已经上传的Lesson5_code文件夹
    在这里插入图片描述
    完成上述操作后,即可进行代码操作啦,对了记得把 Python 解释器换成 AidLux 上的 Python
    在这里插入图片描述
    进行到这,所有的配置流程就结束了

4. 实现步骤

  • 4.1 检测行人
    行人检测主要使用目标检测算法 YOLOv5,具体的模型训练实现可以查看江大白老师的文章:深入浅出Yolov5之自有数据集训练超详细教程
    也可以在各大平台上搜索YOLOv5训练获取相应教程
    由于是在AidLux平台进行部署,所以需要使用 export.pypt文件转成 tflite文件
    在这里插入图片描述
    模型初始化及加载,其中主要⽤到两个函数接⼝,⼀个是 aidlite_gpu.aidlite()aidlite.ANNMode()
    # aidlux相关
    from cvs import *
    import aidlite_gpu
    from utils import detect_postprocess, preprocess_img, draw_detect_res
    
    import time
    import cv2
    
    # AidLite初始化:调用AidLite进行AI模型的加载与推理,需导入aidlite
    aidlite = aidlite_gpu.aidlite()
    # Aidlite模型路径
    model_path = '/home/lesson4_codes/aidlux/yolov5n_best-fp16.tflite'
    # 定义输入输出shape
    in_shape = [1 * 640 * 640 * 3 * 4]
    out_shape = [1 * 25200 * 6 * 4]
    # 加载Aidlite检测模型:支持tflite, tnn, mnn, ms, nb格式的模型加载
    aidlite.ANNModel(model_path, in_shape, out_shape, 4, 0)
    
  • 4.2 行人追踪
    行人的跟踪主要采用了目标追踪算法 Bytetrack
    算法原理可查看:目标跟踪之 MOT 经典算法:ByteTrack 算法原理以及多类别跟踪
  • 4.3 行人流量统计
    • 绘制监测区域
      # 1.绘制行人流量统计线
      lines = [[186, 249], [1235, 366]]
      cv2.line(res_img, lines[0], lines[1], (255, 255, 0), 3)
      
    • 设置人体监测点
      # 2.计算得到人体下方中心点的位置(人体检测监测点调整)
      pt = [tlwh[0] + 1 / 2 * tlwh[2], tlwh[1] + 1 / 2 * tlwh[3]]
      
    • 行人区域位置判断
      # utils.py
      def is_passing_line(point, polyline):
        # 在直线下方,status =-1
        # 在直线上方,status =1
        status = 1
        # 点映射在直线的高度
        poly_x = ((polyline[1][0] - polyline[0][0]) * (point[1] - polyline[0][1])) / (polyline[1][1] - polyline[0][1]) + \
                  polyline[0][0]
        if point[0] > poly_x:
            status = -1
        return status
      
      # 3. 人体和违规区域的判断(人体状态追踪判断)
      track_info = is_passing_line(pt, lines)
      if tid not in track_id_status.keys():
          track_id_status.update( {tid:[track_info]})
      else:
          if track_info != track_id_status[tid][-1]:
              track_id_status[tid].append(track_info)
      
    • 统计计数
      # 4. 判断是否有track_id越界,有的话保存成图片
      # 当某个track_id的状态,上一帧是-1,但是这一帧是1时,说明越界了
      if track_id_status[tid][-1] == 1 and len(track_id_status[tid]) > 1:
          # 判断上一个状态是否是-1,是否的话说明越界,为了防止继续判别,随机的赋了一个3的值
          if track_id_status[tid][-2] == -1:
              track_id_status[tid].append(3)
              # cv2.imwrite("overstep.jpg", res_img)
              person_up += 1
      if track_id_status[tid][-1] == -1 and len(track_id_status[tid]) > 1:
          if track_id_status[tid][-2] == 1:
              track_id_status[tid].append(-3)
              person_down += 1
      
    • 系统提醒
      关注 喵提醒 微信公众号,注册账号,选择菜单栏的 提醒,选择 新建,填写相关信息并保存,会生成对应的 喵码网址,将 喵码 填入下列代码中的 id 即可接收相关信息
      # 5.越界识别+喵提醒
      # 填写对应的喵码
      id = 'tP48aPC'
      # 填写喵提醒中,发送的消息,这里放上前面提到的图片外链
      text = "有人越界识别!!"
      ts = str(time.time())  # 时间戳
      type = 'json'  # 返回内容格式
      request_url = "http://miaotixing.com/trigger?"
      headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47'}
      result = requests.post(request_url + "id=" + id + "&text=" + text + "&ts=" + ts + "&type=" + type,headers=headers)
      

通过上述的操作后,即可完成规定区域内的人流量统计了

5. AidLux使用心得
通过对AidLux学习,不难发现AidLux的部署对于刚上手的小伙伴用起来还是相对友好且容易,只需使用Python即可完成整个流程的实现。Aidlux将整个开发流程通过Aidlux平台,将PC端编写的代码,快速应用到Android系统上,大大降低了传统模型部署时繁琐的流程,减少了人员的消耗。

标签:status,YOLOv5,AidLux,track,aidlite,ByteTrack,tid,id
From: https://www.cnblogs.com/Mango1106/p/16834890.html

相关文章

  • AidLux—极简的开发和部署体验
    1.AidLux介绍官网:https://aidlux.com/AidLux是基于ARM架构的跨生态(Android/鸿蒙+Linux)一站式AIoT应用快速开发和部署平台APP通过共享Linux内核实现Android和Linux......
  • 使用YOLOv5模型进行目标检测!
    作者:陈信达,华北电力大学,Datawhale成员目标检测是计算机视觉领域的一大任务,大致分为一阶段目标检测与两阶段目标检测。其中一阶段目标检测模型以YOLO系列为代表。最新的YOLOv......
  • YOLOv5】LabVIEW+OpenVINO让你的YOLOv5在CPU上飞起来
     前言上一篇博客给大家介绍了使用opencv加载YOLOv5的onnx模型,但我们发现使用CPU进行推理检测确实有些慢,那难道在CPU上就不能愉快地进行物体识别了吗?当然可以啦,这不LabVI......
  • aidlux 安装 mysql 并设置密码及远程访问
    本文链接:aidlux安装mysql并设置密码及远程访问-Tiac-博客园(cnblogs.com) 一、安装mysql直接在应用中心里搜索安装mysql即可 二、启动mysql终端输入......
  • yolov5的quad dataloader参数
    parser.add_argument('--quad',action='store_true',help='quaddataloader') thequaddataloaderisanexperimentalfeaturewethoughtofthatmayallowsom......
  • yolov4和yolov5对比分析
    YOLO(YouOnlyLookOnce)算法原理前言:详细介绍了yolo系列目标检测算法的原理和发展过程。系列:【YOLO系列】YOLO.v1算法原理详解【YOLO系列】YOLO.v2算法原理详解......
  • 【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码
     前言前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5的物体识......
  • Pad-YoloV5:在便携终端上实时检测不再是难题
    计算机视觉研究院专栏作者:Edison_G目标检测是现在最热门的研究课题,目前最流行的还是Yolo系列框架,最近我们计算机视觉研究院也分享了很对目标检测干活及实践,都是Yolo-Base框......
  • yolov5部署到iPhone或终端实践全过程(论文源码福利)
    计算机视觉研究院专栏作者:Edison_G期待已久的检测经典又来来了一波强袭——yolov5。其实yolov5没有完整的文件,现在最重要的应该是把yolov4弄清楚,在目标检测领域中受益匪浅,可......
  • yolov5部署到iPhone或终端实践全过程一(论文源码福利)
    计算机视觉研究院专栏作者:Edison_G期待已久的检测经典又来来了一波强袭——yolov5。其实yolov5没有完整的文件,现在最重要的应该是把yolov4弄清楚,在目标检测领域中受益匪浅,可......