[Proyecto práctico] Realice estadísticas de flujo de calles basadas en AidLux + YOLOv5 + ByteTrack

El contenido de este blog se basa principalmente en la implementación de AidLux, y también en la experiencia de participar en el "Campamento de entrenamiento práctico de AI de seguridad inteligente de Aidlux".

Con el desarrollo continuo de la tecnología moderna, la inteligencia artificial tendrá un gran impacto en todos los ámbitos de la vida. En el gran mercado de seguridad de la defensa civil, la defensa física y la defensa técnica, la inteligencia artificial también está desempeñando un papel y se ha convertido en un popular La tendencia y será la dirección futura del desarrollo. Este campo de entrenamiento es para realizar una de las pequeñas escenas.

Estadísticas de flujo de peatones

1. Descripción general del proyecto
En lugares públicos como estaciones de ferrocarril, aeropuertos, estaciones de metro y lugares pintorescos, es necesario detectar el número de personas en tiempo real, dar avisos oportunos cuando la densidad de personas sea demasiado alta e implementar medidas como como desvío y limitación de flujo para evitar posibles riesgos de seguridad.
En lugares públicos con una alta densidad de personas, Yolov5 + ByteTrackla solución de seguimiento de objetivos múltiples utilizada puede realizar estadísticas del número de personas en diferentes escenarios y ayudar al personal del lugar a elaborar los planes de gestión correspondientes.

2. Date cuenta del efecto

3. Configuración del entorno

Para realizar este proyecto, primero debe configurar el entorno.

  • 3.1 Descargue AidLux de
    las tiendas de aplicaciones de los principales teléfonos Android, busque Aidlux para
    descargarlo e instalarlo, regístrese e inicie sesión

  • 3.2 Proyección de computadora AidLux
    inserte la descripción de la imagen aquí
    Abra la dirección del navegador de la computadora, ingrese Cloud_ipla IP correspondiente y la contraseña de inicio de sesión predeterminada aidluxpara ingresar a la página de la computadora
    inserte la descripción de la imagen aquí

  • 3.3 Descargar e instalar VSCode y complementos relacionados
    Vaya al sitio web oficial de VSCode y seleccione la versión apropiada para descargar e instalar. Al instalar, recuerde verificar los dos elementos siguientes y
    inserte la descripción de la imagen aquí
    luego instalar los complementos Python y SSH
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    . Dado que opencv será usado, use la barra de menú terminal → new terminalo use la tecla de método abreviado Ctrl + Shift + `

    Abra la terminal e ingrese pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/sim ple, podrá descargar e instalar rápidamente con éxito.

    Por supuesto, existe una base en sí misma: los estudiantes que ya tienen un entorno Python instalado en esta máquina pueden abrir o crear directamente un archivo Python y elegir su propio entorno local.
    inserte la descripción de la imagen aquí

  • 3.4 Utilice VSCode para depurar remotamente AidLux en el lado de la PC.
    Primero cargue el archivo del proyecto local en AidLux (abra el explorador de archivos, ingrese homey finalmente cargue el archivo).
    inserte la descripción de la imagen aquí
    Luego, configure la conexión ssh
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    inserte la descripción de la imagen aquí
    y seleccione la ruta para cargar el archivo. En la ventana que aparece, ingrese la contraseña aidlux, es decir, puede abrir la carpeta Lesson5_code que hemos cargado
    inserte la descripción de la imagen aquí
    . Después de completar las operaciones anteriores, puede iniciar la operación del código. Por cierto, recuerde reemplazar el intérprete de Python con el AidLuxanterior . Python
    inserte la descripción de la imagen aquí
    Vaya aquí y todos los procesos de configuración habrán finalizado.

4. Pasos de implementación

  • 4.1 Detección de peatones
    La detección de peatones utiliza principalmente el algoritmo de detección de objetivos YOLOv5. Para la implementación de entrenamiento del modelo específico, puede consultar el artículo del Sr. Jiang Dabai: Tutorial súper detallado sobre el entrenamiento del conjunto de datos de Yolov5 en términos simples.
    También puede buscar entrenamiento de YOLOv5 Obtenga los tutoriales correspondientes en las principales plataformas.La
    plataforma AidLux está implementada, por lo que debe convertirse export.pyen pt文件inicialización tflite文件
    inserte la descripción de la imagen aquí
    y carga del modelo, que utiliza principalmente dos interfaces de funciones, una es aidlite_gpu.aidlite()yaidlite.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 Seguimiento de peatones
    El seguimiento de peatones utiliza principalmente el algoritmo de seguimiento de objetivos Bytetrack.
    El principio del algoritmo se puede ver: Algoritmo clásico MOT de seguimiento de objetivos: principio del algoritmo ByteTrack y seguimiento de múltiples categorías.
  • 4.3 Estadísticas de flujo de peatones
    • Área de seguimiento del sorteo.
      # 1.绘制行人流量统计线
      lines = [[186, 249], [1235, 366]]
      cv2.line(res_img, lines[0], lines[1], (255, 255, 0), 3)
      
    • Establecer puntos de seguimiento humano
      # 2.计算得到人体下方中心点的位置(人体检测监测点调整)
      pt = [tlwh[0] + 1 / 2 * tlwh[2], tlwh[1] + 1 / 2 * tlwh[3]]
      
    • Juicio de ubicación de la zona peatonal
      # 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)
      
    • Estadísticas
      # 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
      
    • El sistema
      le recuerda que preste atención a 喵提醒la cuenta pública de WeChat, registre una cuenta, seleccione la barra de menú 提醒, seleccione 新建, complete la información relevante y guárdela, se generará el correspondiente 喵码y 网址, y podrá recibir la información relevante 喵码completando el siguiente códigoid
      # 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)
      

Después de las operaciones anteriores, se pueden completar las estadísticas del flujo de personas en el área especificada.

5. Experiencia en el uso de AidLux
Después de aprender AidLux, no es difícil descubrir que la implementación de AidLux es relativamente amigable y fácil para aquellos que recién están comenzando, y que todo el proceso solo se puede completar usando Python. Aidlux utiliza todo el proceso de desarrollo a través de la plataforma Aidlux para aplicar rápidamente el código escrito en la PC al sistema Android, lo que reduce en gran medida el engorroso proceso de implementación del modelo tradicional y reduce el consumo de personal.

Supongo que te gusta

Origin blog.csdn.net/weixin_42166222/article/details/127548520
Recomendado
Clasificación