计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-2

简介: 计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-2

计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)-1

https://developer.aliyun.com/article/1446535


图像去雾去雨+目标检测+单目测距结合

  • 0.0实时感知本车周围物体的距离对高级驾驶辅助系统具有重要意义,当判定物体与本车距离小于安全距离时便采取主动刹车等安全辅助功,
  • 0.1这将进一步提升汽车的安全性能并减少碰撞的发生。上一章本文完成了目标检测任务,接下来需要对检测出来的物体进行距离测量。
  • 1.首先描述并分析了相机成像模型,推导了图像的像素坐标系与世界坐标系之间的关系。
  • 2.其次,利用软件标定来获取相机内外参数并改进了测距目标点的选取。
  • 3.最后利用测距模型完成距离的测量并对采集到的图像进行仿真分析和方法验证。

传送门链接------------->:单目测距


代码


        for path, img, im0s, vid_cap in dataset:
        img = torch.from_numpy(img).to(device)
        img = img.half() if half else img.float()  # uint8 to fp16/32
        img /= 255.0  # 0 - 255 to 0.0 - 1.0
        if img.ndimension() == 3:
            img = img.unsqueeze(0)

        # Warmup
        if device.type != 'cpu' and (old_img_b != img.shape[0] or old_img_h != img.shape[2] or old_img_w != img.shape[3]):
            old_img_b = img.shape[0]
            old_img_h = img.shape[2]
            old_img_w = img.shape[3]
            for i in range(3):
                model(img, augment=opt.augment)[0]

        # Inference
        t1 = time_synchronized()
        with torch.no_grad():   # Calculating gradients would cause a GPU memory leak
            pred = model(img, augment=opt.augment)[0]
        t2 = time_synchronized()
         distance=object_point_world_position(u, v, h, w, out_mat, in_mat):


路径规划

本节针对越野场景路径规划问题,采用栅格法建立障碍物、威胁物和越野道路模型,模拟真实的越野环境场景。


  • 引入方向变化惩罚和局部区域复杂度惩罚来优化A算法,使算法规划出的路径更平滑,算法效率更高效。


  • 采用改进 Floyd 算法对路径进行双向平滑,并且进行了防碰撞处理,来确保规划出路径的安全可靠性。


  • 仿真结果表明,所改进的 A算法与传统算法相比较,效率提高了 30%,拐点数减少了4倍,所提算法能够在越野环境多重因素综合影响以及不同车辆性能和任务的要求下快速的规划出安全的路径。

传送门链接---------------->:A star

代码

###############创建A-Star类############
class AStar:
    
    # 描述AStar算法中的节点数据
    class Node:  
        #初始化
        def __init__(self, point, startPoint,endPoint, g=0,w=1,p=1):
            self.point = point  # 自己的坐标
            self.father = None  # 父节点
            self.g = g       # g值,g值在用到的时候会重新算
            
            # 计算h值,采用曼哈顿距离
            #self.h = (abs(endPoint.x - point.x) + abs(endPoint.y - point.y)) * 10  
            
            #采用欧几里得距离
            #self.h = math.pow((math.pow((endPoint.x - point.x),2) + math.pow((endPoint.y - point.y),2)),0.5)*10
            
            #采用对角距离
            pp=(1-p)+0.2*math.exp((math.pow((math.pow((endPoint.x - point.x),2) + math.pow((endPoint.y - point.y),2)),0.5))/(math.pow((math.pow((endPoint.x - startPoint.x),2) + math.pow((endPoint.y - startPoint.y),2)),0.5)))
            Diagonal_step = min((endPoint.x - point.x),(endPoint.y - point.y))
            straight_step = (abs(endPoint.x - point.x) + abs(endPoint.y - point.y)) - 2*Diagonal_step
            self.h  =(straight_step + math.pow(2,0.5)*Diagonal_step)*10*pp
            #print(pp)


            
    #初始化A-start
    def __init__(self, map2d, startPoint, endPoint, passTag=1.0):#map2d地图信息,startPoint起点, endPoint终点, passTag=1.0为不可行驶区域

        # 开启表
        self.openList = []
        # 关闭表
        self.closeList = []
        # 寻路地图
        self.map2d = map2d
        # 起点终点
        if isinstance(startPoint, Point) and isinstance(endPoint, Point):
            self.startPoint = startPoint
            self.endPoint = endPoint
        else:
            self.startPoint = Point(*startPoint)
            self.endPoint = Point(*endPoint)
 
        # 不可行走标记
        self.passTag = passTag
 
    def getMinNode(self):
        """
        获得openlist中F值最小的节点
        :return: Node
        """
        currentNode = self.openList[0]
        for node in self.openList:
            if node.g + node.h < currentNode.g + currentNode.h:
                currentNode = node
        return currentNode#返回最小代价的点
 


停车位检测

  • 基于深度学习的鱼眼图像中的停车点检测和分类是为二维物体检测而开发的。我们的工作增强了预测关键点和方框的能力。这在许多场景中很有用,因为对象不能用右上的矩形“紧密”表示。
  • 一个这样的例子,道路上的任何标记,由于透视效果,在现实世界中的对象矩形不会在图像中保持矩形,所以关键点检测显得格外重要。鱼眼图像还呈现了观察到这种现象的另一种场景,由于鱼眼宽广的视角,可以扑捉更多画像

链接:停车位检测

代码

#全部代码可加qq1309399183
def train():
    #parses command line args
    args = parse_args()

    #parses args from file
    if args.config_file is not None:
        cfg_from_file(args.config_file)

    if (args.FIX_MODEL_CHECKPOINT):
      args.FIX_MODEL_CHECKPOINT = args.FIX_MODEL_CHECKPOINT.replace(" ", "")
      args.FIX_MODEL_CHECKPOINT = args.FIX_MODEL_CHECKPOINT.replace("=", "")
      cfg.RESUME_CHECKPOINT = args.FIX_MODEL_CHECKPOINT
      cfg.CHECK_PREVIOUS = False
      if (os.path.exists(cfg.RESUME_CHECKPOINT) == False):
          print('Exiting the process as asked model for resuming is not found')
          exit()

    if (args.RESUME_CHECKPOINT):
      cfg.RESUME_CHECKPOINT = args.RESUME_CHECKPOINT

    if (args.LOG_DIR):
      cfg.EXP_DIR = args.LOG_DIR

    cfg.LOG_DIR = cfg.EXP_DIR

    if (args.PHASE):
      cfg.PHASE = []
      cfg.PHASE.append(args.PHASE)

    if (args.EVAL_METHOD):
      cfg.DATASET.EVAL_METHOD = args.EVAL_METHOD

    #for backward compatibility
    if cfg.DATASET.DATASET == 'psd':
      cfg.DATASET.DATASET = 'tiod'

    if cfg.DATASET.BGR_OR_RGB == True:
        #cfg.DATASET.PIXEL_MEANS = (123.68, 116.78, 103.94)
        #cfg.DATASET.PIXEL_MEANS = (123, 117, 104)
        cfg.DATASET.PIXEL_MEANS = (128.0, 128.0, 128.0) # simpler mean subtraction to keep data in int8 after mean subtraction

    print("cfg: ", cfg)

    for phase in cfg.PHASE:
      cfg_dir = cfg.LOG_DIR + '/' + phase + '_cfg/'
      os.makedirs(os.path.dirname(cfg_dir), exist_ok=True)
      shutil.copy(args.config_file, cfg_dir)

    # to making every run consistent # TII
    np.random.seed(100)
    torch.manual_seed(100)
    torch.cuda.manual_seed(100)
    random.seed(100)
    torch.cuda.manual_seed_all(999)
    torch.backends.cudnn.enabled = False

    train_model()

if __name__ == '__main__':
    train()


图像雾去雨与目标检测

  • 针对不同的天气则采取不同的图像前处理方法来提升图像质量。
  • 雾天天气 时,针对当下求解的透射率会导致去雾结果出现光晕、伪影现象,本文采用加权最小二乘法细化透射率透。
  • 针对四叉树法得到的大气光值不精确的问题,改进四叉树法来解决上述问题。将上述得到的透射率和大气光值代入大气散射模型完成去雾处理;
  • 在图像处理后加入目标检测,提高了目标检测精度以及目标数量。


下图展现了雾天处理后的结果

图第一列为雾霾图像,第二列为没有加入图像处理的目标检测结果图,第三列为去雾后的目标检测结果图。


无人机检测

  • 反无人机目标检测与跟踪的意义在于应对无人机在现实世界中可能带来的潜在威胁,并保障空域安全。以下是这方面的几个重要意义:
  • 空域安全:无人机的广泛应用给空域安全带来了新的挑战。通过开展反无人机目标检测与跟踪研究,可以及时发现和追踪潜在的无人机入侵行为,确保空域的安全和秩序。
  • 防范恶意活动:无人机技术的快速发展也为一些恶意活动提供了新的工具和手段,如无人机进行窥探、非法监听、破坏等。反无人机目标检测与跟踪的研究可以帮助及时发现和阻止这些恶意活动,维护社会的稳定安全。

传送门链接-------------->:无人机检测

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)

作品链接:

https://blog.csdn.net/ALiLiLiYa/article/details/135034830?spm=1001.2014.3001.5502


差帧算法(Frame Difference Algorithm)

差帧算法是一种基于视频序列的帧间差异来计算物体速度的方法。它基于一个简单的假设:相邻帧之间物体的位置变化越大,物体的速度越快。

差帧算法是一种基于视频序列的帧间差异来计算物体速度的方法。其原理是计算物体在相邻两帧之间的位置差异,然后通过时间间隔来计算物体的速度单目测距算法

单目测距
  • 单目测距是使用单个摄像头来估计场景中物体的距离。常见的单目测距算法包括基于视差的方法(如立体匹配)和基于深度学习的方法(如神经网络)。
  • 基于深度学习的方法通常使用卷积神经网络(CNN)来学习从图像到深度图的映射关系。

基于python的室内老人实时摔倒智能监测系统(康复训练检测+代码)

应用领域

摔倒检测技术在多个领域都有应用的潜力。以下是一些可能的应用领域:


老年人照护:老年人摔倒是导致伤害和事故的主要原因之一。通过使用摔倒检测技术,可以实时监测老年人的姿态并及时发现是否发生了摔倒事件。一旦检测到摔倒,系统可以自动触发警报、通知护理人员或紧急救援服务。


安全监控:在公共场所、工业领域和建筑工地等环境中,摔倒检测技术可以用于监测员工、访客或工人的安全。一旦检测到摔倒,系统可以立即发出警报,以便采取必要的紧急措施。


运动训练:在体育训练和康复治疗中,摔倒检测技术可以帮助教练或治疗师监测运动员或患者的姿势和动作。通过实时检测和反馈,可以改善运动技能、预防运动损伤,并提高康复治疗的效果。


虚拟现实:在虚拟现实(VR)和增强现实(AR)应用中,摔倒检测技术可以用于更加真实和沉浸的用户体验。通过监测用户的姿态和动作,系统可以相应地调整虚拟世界的呈现,以提供更加逼真和交互性的体验。


自动驾驶汽车:在自动驾驶汽车领域,摔倒检测技术可以用于监测乘客或驾驶员的状态。一旦检测到乘客或驾驶员发生摔倒,系统可以自动采取措施,如停车、呼叫急救等,以确保安全。


原文链接:https://blog.csdn.net/ALiLiLiYa/article/details/135557898


a9b265d4f13db7b91e2bc8bfd3892f5e_6e16655a56734d9f88f249c7cb8cd47c.png


https://blog.csdn.net/ALiLiLiYa/article/details/135557898?spm=1001.2014.3001.5502


更多项目见主页

相关文章
|
7月前
|
机器学习/深度学习 算法 计算机视觉
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
计算机视觉实战项目3(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
|
3月前
|
人工智能 并行计算 PyTorch
AI计算机视觉笔记十八:Swin Transformer目标检测环境搭建
本文详细记录了Swin Transformer在AutoDL平台上的环境搭建与训练过程。作者从租用GPU实例开始,逐步介绍了虚拟环境的创建、PyTorch安装、mmcv及mmdetection的配置,并解决了安装过程中遇到的各种问题,如cython版本冲突等。最后,通过修改代码实现目标检测结果的保存。如需了解更多细节或获取完整代码,请联系作者。原文链接:[原文链接](请在此处插入原文链接)。
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
AI计算机视觉笔记三十二:LPRNet车牌识别
LPRNet是一种基于Pytorch的高性能、轻量级车牌识别框架,适用于中国及其他国家的车牌识别。该网络无需对字符进行预分割,采用端到端的轻量化设计,结合了squeezenet和inception的思想。其创新点在于去除了RNN,仅使用CNN与CTC Loss,并通过特定的卷积模块提取上下文信息。环境配置包括使用CPU开发板和Autodl训练环境。训练和测试过程需搭建虚拟环境并安装相关依赖,执行训练和测试脚本时可能遇到若干错误,需相应调整代码以确保正确运行。使用官方模型可获得较高的识别准确率,自行训练时建议增加训练轮数以提升效果。
|
3月前
|
机器学习/深度学习 人工智能 算法
AI计算机视觉笔记十一:yolo5+Deepsort实现目标检测与跟踪(CPU版)
DeepSORT是一种基于深度学习的计算机视觉跟踪算法,扩展了SORT算法,通过添加外观描述符减少身份切换,提高跟踪效率。本文档提供了DeepSORT环境搭建步骤,包括创建虚拟环境、安装依赖及解决常见错误等,最终实现人员和车辆的跟踪计数功能。适合无GPU设备的学习者参考。
|
5月前
|
机器学习/深度学习 人工智能 算法
计算机视觉:目标检测算法综述
【7月更文挑战第13天】目标检测作为计算机视觉领域的重要研究方向,近年来在深度学习技术的推动下取得了显著进展。然而,面对复杂多变的实际应用场景,仍需不断研究和探索更加高效、鲁棒的目标检测算法。随着技术的不断发展和应用场景的不断拓展,相信目标检测算法将在更多领域发挥重要作用。
|
7月前
|
机器学习/深度学习 计算机视觉
AIGC核心技术——计算机视觉(CV)预训练大模型
【1月更文挑战第13天】AIGC核心技术——计算机视觉(CV)预训练大模型
643 3
AIGC核心技术——计算机视觉(CV)预训练大模型
|
机器学习/深度学习 PyTorch 算法框架/工具
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测
129 0
|
3月前
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
3月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。
|
5月前
|
自然语言处理 监控 自动驾驶
大模型在自然语言处理(NLP)、计算机视觉(CV)和多模态模型等领域应用最广
【7月更文挑战第26天】大模型在自然语言处理(NLP)、计算机视觉(CV)和多模态模型等领域应用最广
262 11

热门文章

最新文章

下一篇
DataWorks