【Yolov5实战】人车距离风险评估方案


由于之前已经完成了Yolov5的安装、数据集标注、模型训练工作,在此便将训练完成的模型运用起来,完成一个项目。
上述提到的部分可见之前文章:

Yolov5安装及简单使用:Yolov5安装及简单使用
数据集标注:数据集标注方法
模型训练:用Yolov5训练数据集

1.项目思路

通过已经训练完成的模型,可以实现对需要检测的目标标记预测框,若要计算人与车的距离,不妨可以分别计算出人与车的中心点,然后计算二者距离即可,再根据距离来进行风险评估。

2.项目实现

# 计算物体中心点
def calculate_center_point(xy):
    return (int(xy[2]) + int(xy[0])) // 2, (int(xy[3]) + int(xy[1])) // 2

# 画出人和车的中心点
def plot_people_points(xy, im):
    thickness = -1
    color = [0, 255, 0]
    center = calculate_center_point(xy)
    radius = 10
    cv2.circle(im, center, radius, color, thickness)

def plot_car_points(xy, im):
    thickness = -1
    color = [0, 0, 255]  # red
    center = calculate_center_point(xy)
    radius = 10
    cv2.circle(im, center, radius, color, thickness)

# 计算人车距离
def calculate_distance(people_coords, car_coords):
    # 人与车的中心点
    centers_people = []
    centers_car = []

    # 分别计算中心点
    for i in people_coords:
        centers_people.append(calculate_center_point(i))
    for i_car in car_coords:
        centers_car.append(calculate_center_point(i_car))
    centers = itertools.product(people_coords, car_coords, repeat=1)
    for xy in centers:
        people_center_list = (((int(xy[0][2]) + int(xy[0][0])) // 2,
                        (int(xy[0][3]) + int(xy[0][1])) // 2))
        car_center_list = (((int(xy[1][2]) + int(xy[1][0])) // 2,
                     (int(xy[1][3]) + int(xy[1][1])) // 2))
        # 欧氏距离
        return ((car_center_list[0] - people_center_list[0]) ** 2 + (car_center_list[1] - people_center_list[1]) ** 2) ** 0.5

3.项目效果

在这里插入图片描述
在这里插入图片描述

4.改进思路

由于博主人工智能方面的学习初入门径,所以难免存在一些问题。

  • 此处采用的是二维坐标来计算,不够准确,如果运用于实际,显然是不行的,可以修改为三维。
  • 实时性不够,如若实际用于交通风险评估并给予示警,很显然是来不及的,可以改进算法来提高实时性。
  • 显示结果太过冗杂,可以通过算法改进,通过某种机制来实现结果过滤,是显示的结果相对有意义。

5.源代码

源代码

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silver Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值