前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Aidlux智慧安防AI实战训练营》总结

《Aidlux智慧安防AI实战训练营》总结

原创
作者头像
用户7260148
发布2022-10-29 22:00:16
2680
发布2022-10-29 22:00:16
举报
文章被收录于专栏:人工智能小白人工智能小白

1、课程目标

讲解AI?业智慧城市?业的?前状况,并从边缘设备应用、越界识别应?等为案例进?讲解,通过实战化培训全面提升算法实战应用。

2、课程大纲

为了带着?家整体实现各个功能,本次训练营的课程主要分成6节课。

第?节课,即本节课,主要讲解AI?业智慧城市?业的?前状况,并从边缘设备、越界识别应?等为案例,进?讲解。

第?节课,主要从边缘设备的?式,Aidlux进?讲解,了解在边缘端的各??内容。

第三节课,主要从?标检测算法的训练,Aidlux上的移植、测试等??进?讲解。

第四节课,学习了?标检测后,会将?标检测和?标追踪结合,尝试完整的?体检测追踪,为后?的各类业务功能做准备。

第五节课,会将越界识别的业务功能也添加进来,当有?越界的时候,会通过喵提醒的?式,通知开发者及时查看?机??的越界图?。

第六节课,会举办?次结营活动,对于完成训练营作业的同学颁发获奖证书,以及?系列的礼物奖励。

3、课程作业

1)作业要求:实现?流统计代码,使??体检测+?体追踪+业务逻辑,完成?流统计的业务功能,完成整体?流统计项?的开发和实现。

2)效果实现:

演示效果视频如下:

3)具体代码

代码语言:javascript
复制
from cvs import *
import aidlite_gpu
from utils import detect_postprocess, preprocess_img, draw_detect_res, scale_coords, process_points,is_in_poly, is_passing_line
import cv2
# bytetrack
from track.tracker.byte_tracker import BYTETracker
from track.utils.visualize import plot_tracking
import requests
import time
# 加载模型
model_path = '/home/lesson4_codes/aidlux/yolov5n_best-fp16.tflite'
in_shape = [1 * 640 * 640 * 3 * 4]
out_shape = [1 * 25200 * 6 * 4]
# 载入模型
aidlite = aidlite_gpu.aidlite()
# 载入yolov5检测模型
aidlite.ANNModel(model_path, in_shape, out_shape, 4, 0)
tracker = BYTETracker(frame_rate=30)
track_id_status = {}
cap = cvs.VideoCapture("/home/lesson3_codes/yolov5_code/aidlux/1.mp4")
frame_id = 0
count_person = 0
while True:
 frame = cap.read()
 if frame is None:
 #相机采集结束
 print("Camera is over!")
 # 填写对应的喵码
 id = 'ti5efHO'
 # 填写喵提醒中,发送的消息,这里放上前面提到的图片外链
 text = "人流统计数" + str(count_person)
 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)
 break
 frame_id += 2
 if frame_id % 3 != 0:
 continue
 # 预处理
 img = preprocess_img(frame, target_shape=(640, 640), div_num=255, means=None, stds=None)
 # 数据转换:因为setTensor_Fp32()需要的是float32类型的数据,所以送入的input的数据需为float32,大多数的开发者都会忘记将图像的数据类型转换为float32
 aidlite.setInput_Float32(img, 640, 640)
 # 模型推理API
 aidlite.invoke()
 # 读取返回的结果
 pred = aidlite.getOutput_Float32(0)
 # 数据维度转换
 pred = pred.reshape(1, 25200, 6)[0]
 # 模型推理后处理
 pred = detect_postprocess(pred, frame.shape, [640, 640, 3], conf_thres=0.4, iou_thres=0.45)
 # 绘制推理结果
 res_img = draw_detect_res(frame, pred)
 # 目标追踪相关功能
 det = []
 # Process predictions
 for box in pred[0]:  # per image
 box[2] += box[0]
 box[3] += box[1]
 det.append(box)
 if len(det):
 # Rescale boxes from img_size to im0 size
 online_targets = tracker.update(det, [frame.shape[0], frame.shape[1]])
 online_tlwhs = []
 online_ids = []
 online_scores = []
 # 取出每个目标的追踪信息
 for t in online_targets:
 # 目标的检测框信息
 tlwh = t.tlwh
 # 目标的track_id信息
 tid = t.track_id
 online_tlwhs.append(tlwh)
 online_ids.append(tid)
 online_scores.append(t.score)
 # 针对目标绘制追踪相关信息
 res_img = plot_tracking(res_img, online_tlwhs, online_ids, 0,0)
 ### 越线识别功能实现 ### 人流线
 # 1.绘制越线监测区域
 lines = [[195,890], [1028,890]]
 cv2.line(res_img,(195,890), (1028,890), (255,255,0),3)
 # 2.计算得到人体下方中心点的位置(人体检测监测点调整)
 pt = [tlwh[0]+1/2*tlwh[2],tlwh[1]+tlwh[3]]
 # 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)
 count_person += 1
 cv2.putText(res_img, "-1 to 1 person:" + str(count_person), (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 255), 2 )
    cvs.imshow(res_img)

4、收获总结及学习心得

1)熟悉AI项目开发流程: 通过前面5次课学习,熟悉Aidlux相关操作,对AI项目开发流程全面进行实现及实战,包括数据采集和数据标注、数据分析和可视化、网络模型设计、AI模型部署及AI边缘设备代码实现。

2)熟悉掌握常用开发工具:熟悉VScode安装、编程、调试,对python和OpenCV常见图像处理及视频处理进行实操编码及测试;熟悉AidLux远程调试,实现边缘终端部署测试。

3)掌握目标检测跟踪算法:熟悉人体检测YOLO V5版本相关算法,并对其原理及算法应用进行资料查阅和熟悉;熟悉多目标跟踪算法,并对deepsort、bytetrack等基本原理及算法实现。

4)掌握算法综合场景应用:熟悉掌握了越界识别、人流统计综合应用,对常见警戒区域设置、行为判断、状态检测等业务逻辑进行全面熟悉与设计,并实现目标跟踪类综合应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人体分析
腾讯云神图·人体分析(Body Analysis)基于腾讯优图领先的人体分析算法,提供人体检测、行人重识别(ReID)等服务。支持识别图片或视频中的半身人体轮廓;支持通过人体检测,识别行人的穿着、体态等属性信息。可应用于人像抠图、背景特效、人群密度检测等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com