引言:


在现代社会中,极端天气条件对人们的生活和工作带来了很大的挑战。对于一些特定领域,如交通运输、安全监控等,准确的目标检测与测距算法在极端天气下尤为重要。本文将分点概述极端天气下目标检测与测距算法的关键问题及解决办法。

1. 雷暴天气中的目标检测与测距算法


   a. 雷暴天气中的目标检测面临的挑战:强烈的闪电和大量的云层会产生背光和阴影,使得目标检测变得困难。
   b. 解决方案:结合多帧图像处理技术,利用时间序列信息对目标进行建模和跟踪,从而提高目标检测的准确性。

2. 沙尘暴天气中的目标检测与测距算法


   a. 沙尘暴天气中的目标检测面临的挑战:沙粒的扬起会导致图像模糊和降低可见度,干扰目标的清晰展示。
   b. 解决方案:利用计算机视觉算法对沙尘暴图像进行预处理,消除噪声和模糊效果,同时采用自适应的阈值处理方法,提高目标的检测效果。

3. 雪暴天气中的目标检测与测距算法


   a. 雪暴天气中的目标检测面临的挑战:大量的雪花会干扰目标的视觉特征,使得目标难以区分。
   b. 解决方案:通过图像分割算法将雪花与目标进行分离,提取目标的特征并进行分类,从而实现准确的目标检测。

4. 阴雨天气中的目标检测与测距算法


   a. 阴雨天气中的目标检测面临的挑战:天空的暗淡和反射会使目标的轮廓模糊,影响目标的检测和距离测量。
   b. 解决方案:结合多模态图像处理技术,利用多个光谱波段的信息,通过图像增强和背景去除,提高目标的可见性和识别准确性。

5. 晚间天气中的目标检测与测距算法


   a. 晚间天气中的目标检测面临的挑战:夜晚光线不足,目标的细节难以捕捉。
   b. 解决方案:利用红外热像仪和夜视技术,结合目标的红外辐射特征进行目标检测和测距,以实现对晚间目标的准确识别。

结论:
随着科技的不断发展和进步,目标检测与测距算法在极端天气下的应用得到了显著提升。通过合理地结合各种先进的计算机视觉技术和传感器设备,我们能够克服极端天气条件下的困难,提高目标检测和测距的准确性和可靠性。然而,还有许多挑战需要克服,例如更多的复杂环境条件以及传感器的实时性和精度等。因此,目标检测和测距算法的研究仍然具有重要的意义和价值,将会极大地推动相关领域的发展和应用。

本文主要工作:
科技的发展与进步促使自动驾驶车辆逐渐成为全球汽车产业发展的重要战略 方向。但自动驾驶车辆面对如:大雨、大雾、大雪等极端环境时,智能汽车图像 采集与处理系统将面临巨大挑战。并且自动驾驶需要实时关注周围物体的威胁, 实时进行目标检测以及精确测量周围目标的距离是提高汽车安全性的可行之策。 本文首先训练出一种天气分类模型,实时识别当下天气情况。其次针对不同天气 情况则采取不同的图像去噪方法来提高图像质量。天气前处理完成后将采取改进 的 Yolo 模型对前方行人、车辆等道路环境目标进行目标检测。最后对目标检测定 位到的物体采用改进目标点的测距方法进行距离测量,为自动驾驶主动安全行为 提供支持。
总结:本文完成了去雾、去雨、去雪,目标检测与车辆距离测量。运用了yoloV3目标检测,单目测距,prescan仿真。本文代码分享与论文撰写相关的同学可以一起交流。如果对你有用,欢迎私聊点赞交流–

1.天气分类


为了实时识别出当下的天气情况,利用卷积神经网络搭建了天气分类模型。 针对搜集到的天气图像数量少且不具代表性的问题,通过改进 mosaic 和图像合成 手段进行数据增强与扩充。为了提升模型精度,将数据集划分成 6 种大小不同的 批尺寸,改进激活函数并引入模型优化方案。最终将数据集输送到天气分类模型 训练后得到了良好的权重系数。该模型可以对实时出现的晴天、雨天、雾天、雪 天四种天气进行识别分类,分类精确度可达 93.46%。

mosic天空区域图像增强:

数据增强主要代码部分:

def readxml(image_file):
    

    if image_file.split(".")[1] == 'png':
        xml_path = os.path.join(path_origin_xml, image_file.replace('png', 'xml'))
    else:
        xml_path = os.path.join(path_origin_xml, image_file.replace('jpg', 'xml'))

    root = ET.parse(xml_path).getroot()
    bb = []
    for obj in root.iter('object'):  # 获取object节点中的name子节点

        bbox = obj.find('bndbox')

        xmin = int(float(bbox.find('xmin').text.strip()))
        ymin = int(float(bbox.find('ymin').text.strip()))
        xmax = int(float(bbox.find('xmax').text.strip()))
        ymax = int(float(bbox.find('ymax').text.strip()))
####-----------------非常重要----------------########  下面的1需要修改     具体修改见链接
        bb.append(np.array([xmin, ymin, xmax, ymax, 1]))

    return np.array(bb)


if __name__ == "__main__":


    lines = []

    for filename in os.listdir(os.path.join(image_path, '')):
        if filename.endswith(".jpg") or filename.endswith(".JPG") or filename.endswith(".png"):
            lines.append(filename)
    print(lines)

    list1 = list(range(0,len(lines)))

    print("list1:",list1)

四种天气数据集:**

天气分类代码部分:

data_transforms = {
    'train': transforms.Compose([
        transforms.RandomResizedCrop(224),
        transforms.RandomHorizontalFlip(),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
    'val': transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
}

data_dir = 'data/weather_data'
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
                                          data_transforms[x])
                  for x in ['train', 'val']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
                                             shuffle=True, num_workers=4)
              for x in ['train', 'val']}
dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
class_names = image_datasets['train'].classes

2.极端天气下图像前处理**

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

去雾后:

去雾关键代码

ef Transmission(src_img):
    
    temp = np.min(src_img,2)
    r1=1   
    s = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (r1,r1))

    dst = cv2.erode(temp, s)
    
    h,w=temp.shape
    window=np.zeros((h,w))
    r=1
    for i in range(r,h-r,1):
        for j in range(r,w-r,1):

            window[i-r:i+r+1,j-r:j+r+1]=dst[i-r:i+r+1,j-r:j+r+1]

            sum_=np.sum(window[i-r:i+r+1,j-r:j+r+1])
            devide=sum_/((2*r+1)*(2*r+1))
            window[i-r:i+r,j-r:j+r]=devide
    darkChannel=cv2.dilate(window,np.ones((r1,r1)))
    darkChannel=(1-darkChannel)*255.0
    return darkChannel

(2)去雨*

面对雨天环境则采取主成分分析方法获取雨线图中雨线噪声的大小和形状信息,并将其与自适应阈值进行比较。当满足条件时,利用一种方法将雨线与之邻近的无雨背景层进行关联来达到去雨目的;
​去雨流程图:

去雨关键代码:

ef pre_mark(I,b,g,r):
    
    w1=w2=7
    K_Left_Up = np.zeros((2*w1-1, 2*w2-1))
    K_Right_Up = np.zeros((2*w1-1, 2*w2-1))
    K_Center = 1/(w1*w2)*np.ones((w1, w2))
    K_Left_Down =np.zeros((2*w1-1, 2*w2-1))
    K_Right_Down = np.zeros((2*w1-1, 2*w2-1))

    K_Left_Up[0:w1, 0:w2] = 1/(w1*w2)*np.ones((w1, w2))
    # print(K_Left_Up.shape)
    K_Right_Up[0:w1,w2-1:2*w2] = 1/(w1*w2)*np.ones((w1, w2))
    # print(K_Right_Up)
    K_Left_Down[w1-1:2*w1, 0:w2] = 1/(w1*w2)*np.ones((w1, w2))
    K_Right_Down[w1-1:2*w1, w2-1:2*w2] = 1/(w1*w2)*np.ones((w1, w2))
    #LU
    b1=scipy.ndimage.filters.convolve(b, K_Left_Up, mode='nearest')
    g1=scipy.ndimage.filters.convolve(g, K_Left_Up, mode='nearest')
    r1=scipy.ndimage.filters.convolve(r, K_Left_Up, mode='nearest')
    I_LU=cv2.merge((b1,g1,r1))
    #RU
    b2=scipy.ndimage.filters.convolve(b, K_Right_Up, mode='nearest')
    g2=scipy.ndimage.filters.convolve(g, K_Right_Up, mode='nearest')
    r2=scipy.ndimage.filters.convolve(r, K_Right_Up, mode='nearest')
    I_RU=cv2.merge((b2,g2,r2))
    #C
    b3=scipy.ndimage.filters.convolve(b, K_Center, mode='nearest')
    g3=scipy.ndimage.filters.convolve(g, K_Center, mode='nearest')
    r3=scipy.ndimage.filters.convolve(r, K_Center, mode='nearest')
    I_C=cv2.merge((b3,g3,r3))
    #LD
    b4=scipy.ndimage.filters.convolve(b, K_Left_Down, mode='nearest')
    g4=scipy.ndimage.filters.convolve(g, K_Left_Down, mode='nearest')
    r4=scipy.ndimage.filters.convolve(r, K_Left_Down, mode='nearest')
    I_LD=cv2.merge((b4,g4,r4))
    #RD
    b5=scipy.ndimage.filters.convolve(b, K_Right_Down, mode='nearest')
    g5=scipy.ndimage.filters.convolve(g, K_Right_Down, mode='nearest')
    r5=scipy.ndimage.filters.convolve(r, K_Right_Down, mode='nearest')
    I_RD=cv2.merge((b5,g5,r5))

去雨结果:

(3)去雪*

雪天天气 时,本文在去雨算法的基础上引入一种图像处理手段,完成对图像中雪斑的进一步处理。通过与经典算法定性以及定量比较,所提算法在结果中具良好的有效性和优越性。

去雪前后对比图:

去雪关键代码:

def refine_mark(I):
    T1=0.04
    T2=0.04
   
    L,num = measure.label(I, neighbors = None, background = None, return_num = True, connectivity = 2)

    Theta_cluster = []
    for i in range(1,num,1):
        b=np.argwhere(L==i)
        h,_=b.shape
        c=b-np.mean(b,0)

        c_T=c.T

3.目标检测**

在图像处理后加入目标检测,提高了目标检测精度以及目标数量。
下图展现了雾天处理后的结果
图第一列为雾霾图像,第二列为没有加入图像处理的目标检测结果图,第三列为去雾后的目标检测结果图。

前处理前后目标检测效果对比

4.测距研究**

为了得到距离,进行了precan仿真验证。并完成10-100m的图像采集,利用测距模型进行测量。在prescan进行了如下操作。

Prescan单目测距仿真研究

上图采集到的目标框将可以用于自己模型的计算验证。

精确的对目标进行测距可以提高汽车安全性能。为了测量出目标检测得到的物体距离,本文首先完成了世界坐标到图像坐标系的公式推导,标定了相机内外参数。针对当下侧向物体测距时测量精确度不高的问题,进行了改进。得到了以下结果:

QQ767172261

5 总结/更多视觉相关项目见专栏

本文完成了去雾、去雨、去雪,目标检测与车辆距离测量。运用了yoloV3目标检测,单目测距,prescan仿真。

相关文章

一张图读懂人工智能

三、人工智能和多式联运 AI产品的发展趋势,以及语言模型的应急能力和广泛应用。视频探讨了人工智能和人类的优劣势,以及未来的发展方向。视频提出了一种积极的心态,认为人工智能可以成为我们的同事,帮助我们提高效率和能力。二、大型语言模型的训练过程和应用场景,包括文本到文本、图像到文本、语音转录等多个方面。同时也提到了不同模型的能力和成本。一、生成人工智能的概念和应用,以及如何使用大型语言模型进行聊天和创造原创内容。五、如何使用生成人工智能作为招聘公司的工具,以及如何有效地使用生成人工智能来制作有用结果的提示。

基于YOLOv8深度学习+Pyqt5的电动车头盔佩戴检测系统

该系统利用深度学习技术,通过训练YOLOv8模型来识别电动车骑行者是否佩戴头盔,并在检测到未佩戴头盔的情况下发出警报。因此,开发一种能够实时监测头盔佩戴情况的系统,对于提高骑行者的安全意识和减少交通事故具有重要作用。本文提出的基于YOLOv8的电动车头盔佩戴检测系统,能够有效地提高电动车骑行者的安全意识。YOLOv8是YOLO系列目标检测模型的最新版本,它在前代模型的基础上进行了优化,提高了检测速度和准确性。在不同的场景和光照条件下,模型均能稳定地识别出佩戴和未佩戴头盔的骑行者。wx供重浩:创享日记。

chatgpt的大致技术原理

在RLHF中,人类用户对模型生成的文本提供反馈(如打分或选择更喜欢的文本),然后模型根据这些反馈进行进一步的训练。预处理步骤包括分词(使用BPE算法将文本分解为更小的子单元,如单词或符号)、去除停用词(即那些对文本意义不大的词,如“的”、“了”等)以及其他可能的文本清洗工作。生成过程中,模型会考虑前文的上下文信息,以确保生成的文本是连贯和有意义的。通过收集大量的文本数据、建立深度学习模型、进行预训练和微调以及使用搜索算法和人类反馈强化学习等技术,ChatGPT能够生成高质量、连贯且有用的文本回复。

云计算与边缘计算:有什么区别?

云计算和边缘计算作为不同的计算范式,各自在特定场景中发挥着独特的作用。它们的区别体现在数据处理位置、延迟、可用性以及应用场景等方面。然而,随着数字化时代的发展,它们也逐渐形成了协同应用的趋势,充分发挥各自的优势,提供更灵活、高效的计算体系结构。未来,随着智能化、自动化和边缘计算的边界拓展,云计算和边缘计算将进一步推动数字化转型。同时,安全性、跨边缘计算标准和环境可持续性等问题也需要在未来的发展中得到更好的解决。

ChatGPT高效提问—prompt基础

​ 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件,可以引导模型生成符合预期的回复。例如,在对话中,可以使用明确的问题或陈述引导模型生成相关、具体的回答;在摘要生成中,可以提供需要摘要的文章段落作为prompt,以确保生成的摘要准确而精炼。

二维平面阵列波束赋形原理和Matlab仿真

阵面左下角天线位于坐标原点,将坐标原点阵元设为参考阵元,计算每个阵元相对于该参考阵元的入射波程差,从而来计算每个阵元接收的回波信号。实现波束赋形的最基本的方法是对各个天线阵元的信号进行适当延迟后相加,使目标方向的信号同相叠加得到增强,而其他方向均有不同程度的削弱,该方法通常用于模拟信号.根据上述理论推导可以仿真任意平面阵列的方向图,这里对两种典型的阵列(矩形平面阵列和圆形阵列)进行Matlab仿真,其余类型的阵列在此基础上修改即可。根据上述圆形阵列公式做仿真,得到下述的三维空间方向图。

人工智能与机器学习——开启智能时代的里程碑

人工智能是指使计算机系统表现出类似于人类智能的能力。其目标是实现机器具备感知、理解、学习、推理和决策等智能行为。人工智能的发展可以追溯到上世纪50年代,随着计算机技术和算法的不断进步,人工智能得以实现。机器学习是人工智能的一个重要分支,它通过让计算机从数据中学习和改进性能,而不需要明确的编程指令。机器学习可以分为监督学习、无监督学习和强化学习三种主要类型。

【GPU】深入理解GPU硬件架构及运行机制

GPU的基本底层构成,主要是以GPU计算核心 Cores,以及Memory以及控制单元,三大组成要素组成。Core是计算的基本单元,既可以用作简单的浮点运算,又可以做一些复杂的运算例如,tensor 或者ray tracing。多个core之间通讯的方式:在特定的应用场合多个core之间是不需要的通讯的,也就是各干各的(例如 图像缩放)。但是也有一些例子,多个core之间要相互通讯配合(例如上文谈到的数组求和问题),每个core之间都可以实现交互数据是非常昂贵的,

RAG中的3个高级检索技巧

我们介绍的这些检索技术有助于提高文档的相关性。但是这方面的研究还正在进行,还有很多其他方法例如,利用真实反馈数据对嵌入模型进行微调;直接微调LLM以使其检索能力最大化(RA-DIT);探索更复杂的嵌入适配器使用深度神经网络而不是矩阵;深度和智能分块技术作者:Ahmed Besbes。

大数据深度学习卷积神经网络CNN:CNN结构、训练与优化一文全解

卷积神经网络是一种前馈神经网络,它的人工神经元可以响应周围单元的局部区域,从而能够识别视觉空间的部分结构特征。卷积层: 通过卷积操作检测图像的局部特征。激活函数: 引入非线性,增加模型的表达能力。池化层: 减少特征维度,增加模型的鲁棒性。全连接层: 在处理空间特征后,全连接层用于进行分类或回归。卷积神经网络的这些组件协同工作,使得CNN能够从原始像素中自动学习有意义的特征层次结构。随着深度增加,这些特征从基本形状和纹理逐渐抽象为复杂的对象和场景表现。

从虚拟到现实:数字孪生驱动智慧城市可持续发展

同时,我们也需要不断探索和创新数字孪生技术的应用场景和发展方向,为智慧城市的可持续发展提供更加全面和深入的支持。“方案365”2023年全新整理智慧城市、数字孪生、乡村振兴、智慧乡村、元宇宙、数据中台、智慧园区、智慧社区、智慧矿山、城市生命线、智慧水利、智慧应急、智慧校园、智慧工地、智慧农业、智慧文旅、智慧交通等300+行业全套解决方案。通过智能电表和能源管理系统,数字孪生技术可以实现对家庭、企业等各个层面的能源使用情况进行监测和优化,提高能源利用效率,推动城市的绿色发展。

如何使用人工智能优化 DevOps?

DevOps 和人工智能密不可分,影响着各种业务。DevOps 可以加快产品开发速度并简化现有部署的维护,而 AI 则可以改变整个系统的功能。DevOps团队可以依靠人工智能和机器学习来进行数据集成、测试、评估和发布系统。更重要的是,人工智能和机器学习可以以高效、快速、安全的方式改进 DevOps 驱动的流程。从开发人员实用性和业务支持的角度来看, 评估AI和ML在 DevOps 中的重要性对于企业来说是有益的。

人工智能有哪些领域?

像京东自主研发的无人仓采用大量智能物流机器人进行协同与配合,通过人工智能、深度学习、图像智能识别、大数据应用等技术,让工业机器人可以进行自主的判断和行为,完成各种复杂的任务,在商品分拣、运输、出库等环节实现自动化。人工智能在金融领域的应用主要有:智能获客、身份识别、大数据风控、智能投顾、智能客服、金融云等,该行业也是人工智能渗透最早、最全面的行业。目前,我国在ITS方面的应用主要是通过对交通中的车辆流量、行车速度进行采集和分析,可以对交通进行实施监控和调度,有效提高通行能力、简化交通管理、降低环境污染等。

使用LOTR合并检索提高RAG性能

为了解决LIM问题并提高检索性能,对RAG系统进行增强是非常重要的。通过设置不同的VectorStores并将它们与Merge retriver结合,以及使用LongContextReorder重新排列结果,可以减少LIM问题并使检索过程更高效。此外,在合并检索器中合并特定领域的嵌入也有着关键作用。这些步骤对于确保我们不会在检索文件的过程中遗漏重要细节至关重要。Lost in the Middle: How Language Models Use Long Contexts 论文。

【AI】人工智能复兴的推进器之神经网络

神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量节点(或神经元)相互关联构成,每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这可以看作人工神经元的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。此外,根据网络的结构和运行方式,神经网络可以分为前馈神经网络和反馈神经网络。

AI时代架构设计新模式

本书是一本旨在帮助架构师在人工智能时代展翅高飞的实用指南。全书以ChatGPT为核心工具,揭示了人工智能技术对架构师的角色和职责进行颠覆和重塑的关键点。本书通过共计 13 章的系统内容,深入探讨AI技术在架构设计中的应用,以及AI对传统架构师工作方式的影响。通过学习,读者将了解如何利用ChatGPT这一强大的智能辅助工具,提升架构师的工作效率和创造力。本书的读者主要是架构师及相关从业人员。

深度解析 PyTorch Autograd:从原理到实践

本文深入探讨了 PyTorch 中 Autograd 的核心原理和功能。从基本概念、Tensor 与 Autograd 的交互,到计算图的构建和管理,再到反向传播和梯度计算的细节,最后涵盖了 Autograd 的高级特性。

AIGC实战——WGAN(Wasserstein GAN)

在本节中,我们学习了如何使用 Wasserstein 损失函数以解决经典 GAN 训练过程中的模式坍塌和梯度消失等问题,使得 GAN 的训练更加可预测和可靠。WGAN-GP 通过在损失函数中添加一个令梯度范数指向 1 的项,为训练过程施加 1-Lipschitz 约束。

ChatGPT的常识

ChatGPT不仅可以提供高效的服务,还可以通过模拟人类对话和表情,提高人机交互的趣味性和友好性。其次,ChatGPT可以实现个性化服务,根据用户的个性化需求和反馈不断优化和改进。用户在与ChatGPT进行交互的过程中,ChatGPT可以对用户的个性化需求进行识别和记录,从而实现个性化的服务。ChatGPT的设计理念是建立一个可以持续学习和更新的聊天机器人,可以不断地根据用户的反馈和互动进行优化和改进。同时,ChatGPT还具有很强的适应性和灵活性,可以应对不同场景和话题的要求。

ubuntu18.04安装opencv-4.5.5+opencv_contrib-4.5.5

解压opencv-4.5.5和opencv_contrib-4.5.5,并将解压后的放到opencv-4.5.5文件夹下。二、在opencv-4.5.5文件夹下新建build。三、在/etc/ld.so.conf中添加配置。四、修改bash.bashrc文件。一、安装opencv依赖。

人工智能时代:AIGC的横空出世

AIGC是一种新的人工智能技术,即人工智能生成内容。它是一种基于机器学习和自然语言处理的技术,能够自动产生文本、图像、音频等多种类型的内容。

【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)

脑肿瘤是一种致命的疾病,没有MRI技术,无法可靠地检测到。为了为MRI图像的形态学操作铺平道路,我们首先使用各向异性扩散滤波器对图像进行滤波,以降低像素之间的对比度。然后,我们调整图像大小,并手动将其转换为黑白图像,通过阈值处理来初步筛选出肿瘤可能存在的区域。这个项目的更大目标是建立一个包含从不同角度拍摄的特定人类MRI图像中的肿瘤2D图像数据的数据库,并通过对这些图像进行分析来确定肿瘤的精确3D位置。尽管这个模拟程序在大多数情况下可以给出准确的结果,但对于过小的肿瘤或具有中空结构的肿瘤,它可能无法执行。
返回
顶部