更多视觉额自动驾驶项目请见:
小白学视觉
自动驾驶项目

项目成果图



现推出专栏项目:从图像处理(去雾/去雨)/目标检测/目标跟踪/单目测距/到人体姿态识别等视觉感知项目------------------------>>>>传送门

废话不多说,切入正文!

目标检测

YOLOv5是一种计算机视觉算法,它是YOLO(You Only Look Once)系列算法的最新版本,由Joseph Redmon和Alexey Bochkovskiy等人开发。它是一种单阶段目标检测算法,可以在图像中检测出多个物体,并输出它们的类别和位置信息。相比于以往的YOLO版本,YOLOv5具有更高的检测精度和更快的速度。

网络架构

YOLOv5使用了一种新的检测架构,称为CSP(Cross-Stage Partial)架构,它将原始的卷积层替换为CSP卷积层,这种新的卷积层可以更好地利用计算资源,提高模型的效率和准确度。此外,YOLOv5还使用了一种新的数据增强技术,称为Mosaic数据增强,这种技术可以在单个图像中合并多个图像,以增加样本的复杂性和多样性,提高模型的泛化能力。

改进点

YOLOv5引入了一种新的训练策略,称为Self-Adversarial Training(SAT),它可以在模型训练过程中自动生成对抗性样本,以帮助模型更好地学习物体的特征和位置信息,提高模型的鲁棒性和准确度。

应用领域

YOLOv5的同时也提供了预训练模型,可以直接用于物体检测任务。此外,YOLOv5还可以在不同的硬件平台上运行,包括CPU、GPU和TPU等。因此,YOLOv5非常适合在嵌入式设备、移动设备和云端服务器等不同场景中应用,可以广泛应用于交通、安防、无人驾驶、智能家居等领域。

deepsort追踪

多目标跟踪算法

DeepSORT是一种基于深度学习的多目标跟踪算法,可以在复杂的场景中实现高效准确的目标追踪。DeepSORT的核心思想是将目标检测和目标跟踪两个任务分开处理,利用深度学习网络提取目标特征,并结合卡尔曼滤波和匈牙利算法等传统跟踪方法,实现对多个目标的准确追踪。

代码

def main(_argv): #--->全部代码qq1309399183--<# Definition of the parametersmax_cosine_distance = 0.4nn_budget = Nonenms_max_overlap = 1.0# initialize deep sortmodel_filename = 'model_data/mars-small128.pb'encoder = gdet.create_box_encoder(model_filename, batch_size=1)# calculate cosine distance metricmetric = nn_matching.NearestNeighborDistanceMetric("cosine", max_cosine_distance, nn_budget)# initialize trackertracker = Tracker(metric)# load configuration for object detectorconfig = ConfigProto()config.gpu_options.allow_growth = Truesession = InteractiveSession(config=config)STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)input_size = FLAGS.sizevideo_path = FLAGS.video# load tflite model if flag is setif FLAGS.framework == 'tflite':interpreter = tf.lite.Interpreter(model_path=FLAGS.weights)interpreter.allocate_tensors()input_details = interpreter.get_input_details()output_details = interpreter.get_output_details()print(input_details)print(output_details)# otherwise load standard tensorflow saved modelelse:saved_model_loaded = tf.saved_model.load(FLAGS.weights, tags=[tag_constants.SERVING])infer = saved_model_loaded.signatures['serving_default']# begin video capturetry:vid = cv2.VideoCapture(int(video_path))except:vid = cv2.VideoCapture(video_path)out = None# get video ready to save locally if flag is setif FLAGS.output:# by default VideoCapture returns float instead of intwidth = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))fps = int(vid.get(cv2.CAP_PROP_FPS))codec = cv2.VideoWriter_fourcc(*FLAGS.output_format)out = cv2.VideoWriter(FLAGS.output, codec, fps, (width, height))frame_num = 0# while video is runningwhile True:return_value, frame = vid.read()if return_value:frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)image = Image.fromarray(frame)else:print('Video has ended or failed, try a different video format!')breakframe_num += 1print('Frame #: ', frame_num)frame_size = frame.shape[:2]image_data = cv2.resize(frame, (input_size, input_size))image_data = image_data / 255.image_data = image_data[np.newaxis, ...].astype(np.float32)

模块

DeepSORT主要有三个模块:特征提取模块、卡尔曼滤波模块和匈牙利算法模块。其中,特征提取模块使用卷积神经网络(CNN)提取每个目标的特征向量,以区分不同目标之间的差异。卡尔曼滤波模块用于预测每个目标的位置和速度,以减小运动模糊和噪声对追踪结果的影响。匈牙利算法模块用于将当前帧中的每个检测框与上一帧中已跟踪的目标进行匹配,以确定每个目标的唯一ID,并更新目标的位置和速度信息。

新特点

DeepSORT除了基本的跟踪功能外,还具有一些高级功能。例如,它可以对目标进行重新识别,以处理目标遮挡、漂移等问题;它还可以使用多个相机进行目标跟踪,以处理多个视角的场景;它还可以实现在线学习,以适应不同场景下的目标特征。

单目测距

# 介绍

YOLO(You Only Look Once)是一种单阶段目标检测算法,可以在图像中检测出多个物体,并输出它们的类别和位置信息。与传统的目标检测方法不同,YOLO不仅可以检测物体,还可以计算物体的深度信息,从而实现单目测距。

代码

depth = (cam_H / np.sin(angle_c)) * math.cos(angle_b)#目标深度#     print('depth', depth)
##联系--方式:----qq1309399183--------k_inv = np.linalg.inv(in_mat)#K^-1 内参矩阵的逆p_inv = np.linalg.inv(out_mat)#R^-1 外参矩阵的逆print("out---:",p_inv)point_c = np.array([x_d, y_d, 1])  ##图像坐标point_c = np.transpose(point_c)#目标的世界坐标#     print('point_c', point_c)print('in----', k_inv)##相机坐标系和图像坐标系下物体坐标可按照下式转换。c_position = np.matmul(k_inv, depth * point_c)#Zc*[u,v,1].T*ins^-1==[Xc,Yc,Zc].T #坐标转换

YOLO单目测距的具体实现方法有多种,其中比较常见的方法是基于单目视觉几何学的方法。该方法利用相机成像原理和三角测量原理,通过计算物体在图像中的位置和大小,以及相机的内参和外参等参数,来估计物体的距离。

测距步骤

具体来说,YOLO单目测距可以分为以下几个步骤:

  1. 相机标定:通过拍摄特定的标定板,获取相机的内参和外参等参数,用于后续的距离计算。

  2. 目标检测:使用YOLO算法在图像中检测出目标,并获取目标的位置和大小信息。

  3. 物体位置计算:利用相机成像原理和三角测量原理,计算物体在相机坐标系下的三维坐标。

  4. 距离计算:利用相机的内参和外参等参数,将物体在相机坐标系下的三维坐标转换为物体在世界坐标系下的三维坐标,并计算物体与相机之间的距离。

除了基于单目视觉几何学的方法外,还有一些其他的方法可以实现YOLO单目测距,例如基于深度学习的方法和基于光流的方法等,这些方法都有其优缺点和适用场景,需要根据实际情况选择合适的方法。

结论

总的来说,YOLO单目测距是一种基于单目视觉的距离估计方法,具有简单、快速、低成本等优点,在自动驾驶、机器人导航、智能交通等领域有广泛的应用前景。但需要注意的是,由于单目视觉存在一些局限性,如遮挡、光照变化、纹理缺失等问题,因此需要结合其他传感器或算法进行辅助,以提高测距的准确度和鲁棒性。

目标检测+目标追踪+单目测距(毕设+代码)相关推荐

  1. python测量镜头到目标距离_摄像头单目测距原理及实现

    摄像头单目测距原理及实现 一.测距原理 空间的深度或距离等数据的摄像头. 人的眼睛长在头部的前方,两只眼的视野范围重叠,两眼同时看某一物体时,产生的视觉称为双眼视觉. 双眼视觉的优点是可以弥补单眼视野 ...

  2. 首个面向自动驾驶领域的3D点云目标检测教程!(单模态+多模态/数据+代码)

    背景介绍 3D检测用于获取物体在三维空间中的位置和类别信息,主要基于点云.双目.单目和多模态数据等方式.其中,点云数据由于具有较为丰富的几何信息,相比于其它单模态数据更为稳定,基于激光雷达点云数据的3 ...

  3. opencv手册_OpenCV之单目测距实现

    最近要做一个小项目,要完成相机的测距实现,最先考虑的是三角激光测距,但是实现起来太麻烦了,基本要搭一个简易的激光测距雷达...然后是双目测距,然而一个便宜的双目工业相机也要四五百,而且以前也没接触过双 ...

  4. OpenCV 单目测距实现

    最近要做一个小项目,要完成相机的测距实现,最先考虑的是三角激光测距,但是实现起来太麻烦了,基本要搭一个简易的激光测距雷达...然后是双目测距,然而一个便宜的双目工业相机也要四五百,而且以前也没接触过双 ...

  5. python 人脸检测、单目测距以及人脸打码

    最近想写博客但是下班后完全提不起兴趣,今天周末刚好闲下心来,想了想把在github发现的一个人脸检测项目调试了下,发现挺不错的,准确率跟速度都挺适合低配版设备使用,所以过几天想自己训练一下检测车牌,试 ...

  6. 干货 | 带你解析计算机视觉热门技术—目标检测与追踪

    目标检测和目标跟踪是计算机视觉里两个基础的研究任务,它们彼此之间存在很紧密的联系,而且目前已经被广泛应用于各种不同的视觉交互的产品中.但是目标检测和追踪距离我们的日常生活到底有多近,它们都涉及什么具体 ...

  7. 【自动驾驶】摄像头单目测距原理及实现

    原文链接:摄像头单目测距原理及实现 可以观看这个视频,了解针孔相机和透镜. 摄像头单目测距原理及实现 一.测距原理 空间的深度或距离等数据的摄像头. 人的眼睛长在头部的前方,两只眼的视野范围重叠,两眼 ...

  8. 相机模型、相机标定及基于yolov5的单目测距实现

    相机模型.相机标定及基于yolov5的单目测距实现 1 前言 2 相机模型及单目测距原理 3 相机参数标定 3.1 内参矩阵 3.2 内参标定 3.3 外参矩阵 4 基于yolov5的单目测距实现 1 ...

  9. yolo 车辆测距+车辆识别+单目测距(双目测距)

    基于yolo目标检测算法实现的车前道路中的车辆和行人检测,并且可以估测出目标与本车之间的距离 一.视频展示 yolo车距1 订阅专栏获得源码(提供完整代码,无需看下文) 二.单目测距原理 图中有一个车 ...

最新文章

  1. $.messager.confirm (使用$.messager.defaults修改按钮显示文字)
  2. 记录一次cefsharp1输入法在win7下异常解决定位
  3. [解决问题]selenium.remote.UnreachableBrowserException 异常分析并解决问题
  4. Centos7环境下etcd集群的搭建
  5. lms自适应滤波器实现噪声干扰的语音恢复_ZLG深度解析语音识别技术
  6. Activiti的使用技巧
  7. 用Unity3D实现可展开公告版
  8. RobotFramework自动化框架—robot文件中调用自定义库
  9. 【已解决】请先调用 init 完成初始化后再调用其他云 API。init 方法可传入一个对象用于设置默认配置,详见文档。; at cloud.callFunction api 解决方案
  10. Javascript中正则表达式的全局匹配模式
  11. 松鼠聚会(洛谷-P3964)
  12. 括号配对检测python123_括的意思
  13. 微信世界争霸服务器,微信世界争霸小程序进不去游戏怎么办
  14. 测试是ufs3.0的软件,可怕!UFS 3.0测试首曝光:速度竟是UFS 2.1的3倍
  15. 阿里云 blink 相关错误码问题解决
  16. Postgres-XL数据库GTM——GTM and Global Transaction Management
  17. 谈谈百度的短视与无奈
  18. 数据分析入门宝藏!《Python数据分析-从入门到实践》
  19. php 实现订单打印,电子商城实现订单打印
  20. 浙江省评审中级职称条件与用途

热门文章

  1. vue 价格千位分隔符处理
  2. Android Room概述
  3. 成人大学计算机应用基础答案,华东理工大学继续教育学院成人教育《计算机应用基础》课程期末考试试卷...
  4. “Android 硬件加速与 View Layer ”知识点笔记
  5. phpcms医院wap手机网站模板下载
  6. [人工智能-深度学习-57]: 图解模型评估的常用指标
  7. 如何利用电影同时提高英语听力和词汇量?
  8. 了解hiberfil.sys文件:计算机休眠模式的背后
  9. 35.文本输出函数TabbedTextOut、ExtTextOut、TextOut、SetBkColor
  10. java 聊天室之 传送图片文字等功能的实现