yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)

简介: yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)

简介

YOLOv5是一种流行的目标检测算法,它是YOLO系列算法的最新版本。YOLOv5采用了一种新的架构,可以在保持高准确性的同时提高检测速度。在本文中,我们将介绍如何使用YOLOv5算法来进行船舶跟踪和测距。


算法流程

首先,我们需要准备一个船舶检测模型。我们可以使用YOLOv5算法对一组带有船舶的图像进行训练,以便模型可以学习如何检测船舶。在训练之后,我们可以使用该模型来检测新图像中的船舶。

一旦我们有了一个船舶检测模型,就可以开始跟踪船舶。我们可以使用跟踪算法,例如Kalman滤波器或卡尔曼滤波器和粒子滤波器,来跟踪检测到的船舶。这些算法可以使用检测到的船舶位置和速度信息来估算船舶的未来位置,并且能够在目标运动模式发生变化时进行自适应。


在跟踪船舶时,我们还可以使用光流算法来估算船舶的速度和方向。光流是一种计算像素在连续帧之间的运动的方法,这可以用来估算船舶的速度和方向。通过将光流算法与跟踪算法结合使用,我们可以更好地跟踪船舶,并估算出船舶的未来位置和速度。


运行demo.py代码

def main():

    func_status = {}
    func_status['headpose'] = None

    name = 'demo'

    det = Detector()
    cap = cv2.VideoCapture(VIDEO_PATH)
    fps = int(cap.get(5))
    print('fps:', fps)
    t = int(1000/fps)

    size = None
    videoWriter = None

    while True:

        # try:
        _, im = cap.read()
        if im is None:
            break

        result1 = det.feedCap(im, func_status)
        result = result1['frame']
        #object1 = result['list_of_ids']
        boxes=result1['obj_bboxes']
#########################################
        curr_x=0
        curr_y=0

        if boxes:
            print("-----------",boxes)
            print('------------type:',type(boxes))
            for l in range(len(boxes)):
                x1, y1, x2, y2, lbl, conf=boxes[l][0],boxes[l][1],boxes[l][2],boxes[l][3],boxes[l][4],boxes[l][5]
                result_speed = calculate_velocity(curr_x, curr_y, x2, y2, 1, 0.5)/3.6
                curr_x=x1
                curr_y =y1

                print("速度:", result_speed)
                actual_height=20
                actual_width=100
                triangle_height=y2-y1
                triangle_width=x2-x1
                focal_length=10
                distance=calculate_distance(actual_height, actual_width, triangle_height, triangle_width, focal_length)
                print("di----------s",type(distance))
                if distance <10 and result_speed>10:
                    color=(0,255,255)
                result = draw_boxes(result, boxes, identities=None, offset=(0, 0), color=color,distance=distance,speed=result_speed)

        else:
            color=(255,0,0)
##################################################
        result=draw_boxes(result, boxes, identities=None, offset=(0, 0),color=color)

        result = imutils.resize(result, height=500)
        if videoWriter is None:
            fourcc = cv2.VideoWriter_fourcc(
                'm', 'p', '4', 'v')  # opencv3.0
            videoWriter = cv2.VideoWriter(
                RESULT_PATH, fourcc, fps, (result.shape[1], result.shape[0]))

        videoWriter.write(result)
        cv2.imshow(name, result)
        cv2.waitKey(t)

        if cv2.getWindowProperty(name, cv2.WND_PROP_AUTOSIZE) < 1:
            # 点x退出
            break

    cap.release()
    videoWriter.release()
    cv2.destroyAllWindows()


最后,我们可以使用摄像头的参数和船舶图像的尺寸来测量船舶的距离。通过计算船舶在图像中的像素大小,然后使用相机参数和船舶的实际大小来计算船舶与相机之间的距离。这可以用于跟踪船舶并估算船舶的远近。


结果


单目标


多目标跟踪


总结

总之,使用YOLOv5算法进行船舶跟踪和测距是一种高效准确的方法。通过训练一个船舶检测模型,并结合跟踪算法和光流算法来跟踪船舶,我们可以估算出船舶的未来位置和速度。然后,使用摄像头的参数和船舶图像的尺寸来测量船舶的距离,我们可以更好地了解船舶的远近。

相关文章
|
2月前
|
机器学习/深度学习 存储 监控
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
428 1
|
2月前
|
机器学习/深度学习 监控 算法
计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)
计算机视觉实战项目(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别)
72 1
|
2月前
|
机器学习/深度学习 编解码 人工智能
论文介绍:HigherHRNet——用于自下而上人体姿态估计的尺度感知表示学习
【5月更文挑战第22天】HigherHRNet是针对自下而上人体姿态估计的尺度感知方法,通过构建高分辨率特征金字塔,改善多尺度人体姿态估计的准确性。该论文提出的新架构在COCO测试集上提高了2.5%的中号人物平均精度,达到70.5%的AP,且在CrowdPose上超越所有自上而下方法,实现67.6%的AP。作者通过消融实验验证了各个组件的重要性,并指出未来可优化模型以适应更复杂场景。论文链接:[https://arxiv.org/abs/1908.10357](https://arxiv.org/abs/1908.10357)
22 1
|
2月前
|
机器学习/深度学习 并行计算 算法
yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理
yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理
118 0
|
10月前
|
传感器 机器学习/深度学习 算法
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
【姿态解算】基于扩展卡尔曼滤波九轴传感器姿态解算研究附代码
|
11月前
|
传感器 算法 机器人
使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)
使用贝叶斯滤波器通过运动模型和嘈杂的墙壁传感器定位机器人研究(Matlab代码实现)
|
11月前
|
机器学习/深度学习 传感器 算法
基于视觉显著性图和加权最小二乘优化的红外与可见光图像融合(Matlab代码实现)
基于视觉显著性图和加权最小二乘优化的红外与可见光图像融合(Matlab代码实现)
|
12月前
|
算法 计算机视觉 Python
计算机视觉实验:边缘提取与特征检测
计算机视觉实验:边缘提取与特征检测
|
机器学习/深度学习 自动驾驶 算法
极端天气下的目标检测与测距算法
极端天气下的目标检测与测距算法
233 0
极端天气下的目标检测与测距算法
|
传感器 算法 计算机视觉
单目测距(yolo目标检测+标定+测距代码)上
单目测距(yolo目标检测+标定+测距代码)
675 0