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 + ByteTrack
la 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
Abra la dirección del navegador de la computadora, ingreseCloud_ip
la IP correspondiente y la contraseña de inicio de sesión predeterminadaaidlux
para ingresar a la página de la computadora
-
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
luego instalar los complementos Python y SSH
. Dado que opencv será usado, use la barra de menúterminal → new terminal
o 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.
-
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, ingresehome
y finalmente cargue el archivo).
Luego, configure la conexión ssh
y seleccione la ruta para cargar el archivo. En la ventana que aparece, ingrese la contraseñaaidlux
, es decir, puede abrir la carpeta Lesson5_code que hemos cargado
. 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 elAidLux
anterior .Python
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 objetivosYOLOv5
. 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 convertirseexport.py
enpt文件
inicializacióntflite文件
y carga del modelo, que utiliza principalmente dos interfaces de funciones, una esaidlite_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 objetivosBytetrack
.
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)
- Área de seguimiento del sorteo.
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.