第1篇 目标检测概述 —(2)目标检测算法介绍

前言:Hello大家好,我是小哥谈。目标检测算法是一种计算机视觉算法,用于在图像或视频中识别和定位特定的目标物体。常见的目标检测算法包括传统的基于特征的方法(如Haar特征和HOG特征)以及基于深度学习的方法(如Faster R-CNN、YOLO和SSD)。本节课就给大家重点介绍下基于深度学习的目标检测算法,希望大家学习之后能够有所收获!🌈 

前期回顾:

             第1篇 目标检测概述 —(1)目标检测基础知识

            目录

🚀1.目标检测算法介绍

🚀2.两阶段目标检测算法

💥💥2.1 R-CNN

💥💥2.2 Fast R-CNN

💥💥2.3 Faster R-CNN

💥💥2.4 Mask R-CNN

🚀3.一阶段目标检测算法

💥💥3.1 SSD

💥💥3.2 YOLO算法

🚀1.目标检测算法介绍

目标检测算法是一种计算机视觉算法,用于在图像或视频中识别和定位特定的目标物体。常见的目标检测算法包括传统的基于特征的方法(如Haar特征和HOG特征)以及基于深度学习的方法(如Faster R-CNN、YOLO和SSD)。

传统的基于特征的目标检测算法通常是基于手工设计的特征和机器学习分类器的组合。这些算法通常包括以下步骤:提取图像特征、选择目标检测窗口、应用分类器进行目标判别和定位。而基于深度学习的目标检测算法则使用深度神经网络来自动学习图像特征和目标位置。这些算法通常由两个主要部分组成:卷积神经网络(如VGG、ResNet等)用于提取图像特征,以及用于目标检测的后处理步骤(如边界框回归和非极大值抑制)。

近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN、Fast R-CNN、Faster R-CNN等),它们是two-stage的。而另一类是YOLO、SSD这类one-stage算法。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。

计算机视觉中关于图像识别有四大类任务

📗分类-Classification:解决“是什么?”的问题,即给定⼀张图⽚或⼀段视频判断里面包含什么类别的目标。

📗定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。

📗检测-Detection:解决“是什么?在哪里?”的问题,即定位出这个⽬标的的位置并且知道目标物是什么。

📗分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每⼀个像素属于哪个目标物或场景”的问题。


🚀2.两阶段目标检测算法

💥💥2.1 R-CNN

R-CNN(Region-based Convolutional Neural Network)是一种目标检测算法,它在2014年由Girshick等人提出。R-CNN的主要思想是首先生成一组候选区域,然后对每个候选区域进行特征提取和分类,最后对分类结果进行边界框回归,以获得最终的目标检测结果。

具体流程如下:

  1. 输入图像被划分为多个候选区域,这些候选区域可以通过选择性搜索(Selective Search)等算法生成。
  2. 对每个候选区域,使用预训练的卷积神经网络(如AlexNet、VGG等)提取特征。
  3. 将提取的特征输入到一个支持向量机(SVM)进行分类,判断该区域是否包含目标物体。
  4. 对于被分类为包含目标物体的区域,使用线性回归模型进行边界框回归,以获得更准确的目标位置。

R-CNN算法虽然能够取得较好的检测结果,但其缺点也比较明显,如候选区域生成速度慢、训练和测试过程繁琐等。后续的改进算法(如Fast R-CNN、Faster R-CNN等)都是在R-CNN的基础上进行优化和改进。

R-CNN作为R-CNN系列的第⼀代算法,其实没有过多的使⽤“深度学习”思想,⽽是将“深度学习”和传统的“计算机视觉”的知识相结合。⽐如R-CNN pipeline中的第⼆步和第四步其实就属于传统的“计算机视觉”技术。使⽤ selective search提取region proposals,使⽤SVM实现分类。📚

比如对于猫的检测,如下图所示: 

在原论⽂中,R-CNN pipeline只有4个步骤,光看下图⽆法深刻理解R-CNN处理机制,下⾯结合图⽰补充相应⽂字。

🍀(1)预训练模型。选择⼀个预训练 (pre-trained)神经⽹络(如AlexNet、VGG)。

🍀(2)重新训练全连接层。使⽤需要检测的⽬标重新训练(re-train)最后全连接层(connected layer)。

🍀(3)提取proposals并计算CNN 特征。利⽤选择性搜索(Selective Search)算法提取所有proposals(⼤约 2000幅images),调整(resize/warp)它们成固定⼤⼩,以满⾜CNN输⼊要求(因为全连接层的限制),然后将feature map保存到本地磁盘。

🍀(4)训练SVM。利⽤feature map 训练SVM来对⽬标和背景进⾏分类(每个类⼀个⼆进制SVM)

🍀(5)边界框回归(Bounding boxes Regression)。训练将输出⼀些校正因⼦的线性回归分类器。

R-CNN创新点:

🍀(1)使⽤CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提⾼特征对样本的表⽰能⼒。

🍀(2)采⽤⼤样本下(ILSVRC)有监督预训练和⼩样本(PASCAL)微调(fine-tuning)的⽅法解决⼩样本难以训练甚⾄过拟合等问题。

说明:♨️♨️♨️

ILSVRC其实就是众所周知的ImageNet的挑战赛,数据量极⼤;PASCAL数据集(包含⽬标检测和图像分割等),相对较⼩。

R-CNN 实验结果:

R-CNN在VOC 2007测试集上mAP达到58.5%,打败当时所有的⽬标检测算法。

说明:♨️♨️♨️

论文题目:《Rich feature hierarchies for accurate object detection and semantic segmentation》 

论文地址:  https://openaccess.thecvf.com/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf

💥💥2.2 Fast R-CNN

Fast R-CNN是一种目标检测算法,它在深度学习中被广泛应用。它是R-CNN系列算法中的一员,相比于前几个版本,Fast R-CNN在速度和准确性上都有明显的提升。

Fast R-CNN的工作流程如下:

  1. 输入一张图片和它对应的ground truth边界框。
  2. 使用预训练的卷积神经网络(CNN)提取图片的特征。
  3. 将特征图和ground truth边界框送入RoI (Region of Interest)池化层,将不同尺寸的RoIs映射到固定大小的特征图上。
  4. 把RoIs映射后的特征通过全连接层进行分类和回归,得到每个RoI的类别概率和边界框坐标调整值。
  5. 使用非最大抑制(NMS)来排除重叠的边界框,最终输出检测结果。

这种算法的优点是能够共享卷积特征提取过程,因此在处理多个RoIs时可以节省计算时间。此外,Fast R-CNN还引入了RoI池化层,解决了原始R-CNN中不同大小的RoI输入固定大小CNN的问题,提高了模型的准确性。

Fast R-CNN是基于R-CNN和SPPnets进⾏的改进。SPPnets,其创新点在于计算整幅图像的the shared feature map,然后根据object proposal在shared feature map上映射到对应的feature vector(就是不⽤重复计算 feature map了)。当然,SPPnets也有缺点:和R-CNN⼀样,训练是多阶段(multiple-stage pipeline)的,速度还是不够"快",特征还要保存到本地磁盘中。📚

以下是Fast R-CNN的流程图:

解析1:RoI Pooling层详解:

因为Fast R-CNN使⽤全连接层,所以应⽤RoI Pooling将不同⼤⼩的ROI转换为固定⼤⼩。RoI Pooling 是Pooling层的⼀种,⽽且是针对RoI的Pooling,其特点是输⼊特征图尺⼨不固定,但是输出特征图尺⼨固定(如7x7)。

解析2:什么是RoI呢?

RoI是Region of Interest的简写,⼀般是指图像上的区域框,但这⾥指的是由Selective Search提取的候选框。

 RoI的具体操作:

  1. 根据输⼊image,将ROI映射到feature map对应位置 。注:映射规则⽐较简单,就是把各个坐标除以“输⼊图⽚与feature map的⼤⼩的⽐值”,得到了feature map上的box坐标。
  2. 将映射后的区域划分为相同⼤⼩的sections(sections数量与输出的维度相同)。
  3. 对每个sections进⾏max pooling操作。

这样我们就可以从不同⼤⼩的⽅框得到固定⼤⼩的相应的feature maps。值得⼀提的是,输出的feature maps的⼤⼩不取决于ROI和卷积feature maps⼤⼩。RoI Pooling 最⼤的好处就在于极⼤地提⾼了处理速度。

Fast R-CNN创新点:

🍀(1)只对整幅图像进⾏⼀次特征提取,避免R-CNN中的冗余特征提取。

🍀(2)⽤RoI pooling层替换最后⼀层的max pooling层,同时引⼊建议框数据,提取相应建议框特征。

🍀(3)Fast R-CNN⽹络末尾采⽤并⾏的不同的全连接层,可同时输出分类结果和窗⼝回归结果,实现了end-to-end的多任务训练(建议框提取除外),也不需要额外的特征存储空间(R-CNN中的特征需要保持到本地,来供SVM和Bounding-box regression进⾏训练)。

🍀(4)采⽤SVD对Fast R-CNN⽹络末尾并⾏的全连接层进⾏分解,减少计算复杂度,加快检测速度。

说明:♨️♨️♨️

论文题目:《Fast R-CNN》

论文地址:  https://arxiv.org/abs/1504.08083

💥💥2.3 Faster R-CNN

Faster R-CNN是一种目标检测算法,它是在R-CNN(Region-based Convolutional Neural Networks)的基础上进行改进而来的。它的主要创新点是引入了候选区域生成网络(Region Proposal Network,简称RPN),将候选区域的生成和目标检测两个任务合并在一个网络中,从而实现了端到端的目标检测。

Faster R-CNN的工作流程如下:

  1. 输入图像经过卷积神经网络(CNN)提取特征。
  2. RPN网络在特征图上滑动窗口,并输出一系列候选区域和对应的边界框偏移信息。
  3. 对于每个候选区域,通过RoI池化层将其转化为固定大小的特征图。
  4. 将特征图输入全连接层进行分类和回归,得到目标的类别和位置信息。

以下是Faster R-CNN的网络结构图:

Faster R-CNN的优点是:

🍀(1)相较于R-CNN,它引入了共享卷积特征提取部分,从而大大减少了计算量。

🍀(2)候选区域生成和目标检测任务在同一个网络中进行,使得整个模型可以端到端地训练,提高了效率和准确性。

说明:♨️♨️♨️

论文题目:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》

论文地址:  https://arxiv.org/pdf/1506.01497.pdf

💥💥2.4 Mask R-CNN

Mask R-CNN是一种用于物体检测和语义分割的深度学习模型。它是基于Faster R-CNN模型的扩展,通过添加一个额外的分支来生成每个检测到的物体的精确掩码。Mask R-CNN模型通常由两个主要组件组成:区域建议网络(Region Proposal Network,RPN)和掩码预测分支。RPN负责生成候选目标区域,它会从输入图像中提取特征,并预测每个区域是前景还是背景。然后,这些候选区域会传递给掩码预测分支。掩码预测分支负责为每个检测到的物体生成精确的掩码。它会在每个候选区域上进行卷积操作,并输出一个与输入区域大小相匹配的二进制掩码图像。

通过结合目标检测和语义分割,Mask R-CNN可以准确地识别图像中的每个物体,并为它们生成精确的掩码。这使得Mask R-CNN成为许多计算机视觉任务(如实例分割、姿态估计等)的重要基础。

Mask R-CNN算法步骤:

  1. 输⼊⼀幅你想处理的图⽚,然后进⾏对应的预处理操作,或者预处理后的图⽚;
  2. 将其输⼊到⼀个预训练好的神经⽹络中(ResNeXt等)获得对应的feature map;
  3. 对这个feature map中的每⼀点设定预定个的RoI,从⽽获得多个候选RoI;
  4. 将这些候选的RoI送⼊RPN⽹络进⾏⼆值分类(前景或背景)和BB回归,过滤掉⼀部分候选的RoI;
  5. 对这些剩下的RoI进⾏RoI Align操作(即先将原图和feature map的pixel对应起来,然后将feature map和 固定的feature对应起来);
  6. 对这些RoI进⾏分类(N类别分类)、BB回归和MASK⽣成(在每⼀个RoI⾥⾯进⾏FCN操作)。

说明:♨️♨️♨️

论文题目:《Mask R-CNN》

论文地址:  https://arxiv.org/abs/1703.06870


🚀3.一阶段目标检测算法

💥💥3.1 SSD

SSD(Single Shot MultiBox Detector)是一种基于深度学习的目标检测算法,它能够同时进行目标的位置定位和类别预测。相比于其他目标检测算法,SSD具有快速、准确和端到端的优势。它采用了多层特征图来检测不同尺度的目标,并且通过预定义的一系列锚框(anchor boxes)来进行目标定位和分类。

SSD主要由两个部分组成:基础网络和特征提取网络常用的基础网络包括VGG16、ResNet等,用于提取原始图像的特征。特征提取网络由多个卷积层和池化层组成,用于生成一系列特征图。每个特征图都负责检测不同大小的目标。

在SSD中,每个锚框都与一个特定的尺度和长宽比相关联。对于每个锚框,SSD会计算其与真实目标框之间的IoU(Intersection over Union),并将其分为正样本和负样本。然后,SSD通过卷积操作对每个锚框进行类别预测和边界框调整,得到最终的检测结果。

不同于前⾯的R-CNN系列,SSD属于one-stage⽅法。SSD使⽤ VGG16 ⽹络作为特征提取器(和 Faster R-CNN 中使⽤的 CNN ⼀样),将后⾯的全连接层替换成卷积层,并在之后添加⾃定义卷积层,并在最后直接采⽤卷 积进⾏检测。在多个特征图上设置不同缩放⽐例和不同宽⾼⽐的先验框以融合多尺度特征图进⾏检测,靠前的⼤尺度特征图可以捕捉到⼩物体的信息,⽽靠后的⼩尺度特征图能捕捉到⼤物体的信息,从⽽提⾼检测的准确 性和定位的准确性。

下图是SSD的⽹络结构图。

SSD创新点:

🍀(1)基于Faster R-CNN中的Anchor,提出了相似的先验框(Prior box)

🍀(2)从不同⽐例的特征图(多尺度特征)中产⽣不同⽐例的预测,并明确地按长宽⽐分离预测。 

说明:♨️♨️♨️

论文题目:《SSD single shot multibox detector》

论文地址:  https://arxiv.org/abs/1512.02325

💥💥3.2 YOLO算法

YOLO(you only look once),将物体检测任务当做回归问题(regression problem)来处理,直接通过整张图片的所有像素得到bounding box的坐标、box中包含物体的置信度和 class probabilities。通过YOLO,每张图像只需要看一眼就能得出图像中都有哪些物体和这些物体的位置。

YOLO划分网格:

具体来说,YOLO的CNN网络将输入的图片分割成S×S网格,然后每个单元格负责去检测那些中心点落在该格子内的目标,如图所示,可以看到狗这个目标的中心落在左下角一个单元格内,那么该单元格负责预测这个狗。每个单元格会预测B个边界框(bounding box)以及边界框的置信度(confidence score)。所谓置信度其实包含两个方面,一是这个边界框含有目标的可能性大小,二是这个边界框的准确度。前者记为,当该边界框是背景时(即不包含目标),此时Pr(object)=0。而当该边界框包含目标时,Pr(object)=1。边界框的准确度可以用预测框与实际框(ground truth)的IoU(intersection over union,交并比)来表征。

使用YOLO来检测物体,其流程是非常简单明了的:

  1. 将图像resize到448 * 448作为神经网络的输入;
  2. 运行神经网络,得到一些bounding box坐标、box中包含物体的置信度和class probabilities;
  3. 进行非极大值抑制,筛选Boxes。

YOLO对每个bounding box有5个predictions:x, y, w, h, confidence:

🍀(1)坐标x,y代表了预测的bounding box的中心与栅格边界的相对值。

🍀(2)坐标w,h代表了预测的bounding box的width、height相对于整幅图像width,height的比例。

🍀(3)confidence就是预测的bounding box和ground truth box的IoU值。

Yolo算法开创了one-stage检测的先河,它将物体分类和物体检测网络合二为一, 都在全连接层完成。故它大大降低了目标检测的耗时,提高了实时性;但是,它的缺点也十分明显:

🍀(1)每个网格只对应两个bounding box,当物体的长宽比不常见(也就是训练数据集覆盖不到时),效果很差。

🍀(2)原始图片只划分为7x7的网格,当两个物体靠的很近时,效果很差。

🍀(3)最终每个网格只对应一个类别,容易出现漏检(物体没有被识别到)。

🍀(4)对于图片中比较小的物体,效果很差。这其实是所有目标检测算法的通病,SSD对它有些优化。


参考文献名:

【1】Rich feature hierarchies for accurate object detection and semantic segmentation;

【2】Fast R-CNN;

【3】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks;

【4】You Only Look Once: Unfied,Real-Time Object Detection;

【5】SSD:Single Shot MultiBox Detector;

【6】Selective Search for Object Recognition;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141757.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++ - map 和 set 的模拟实现 - 红黑树当中的仿函数 - 红黑树的迭代器实现

简单了解map 和 set 的实现 首先我们要知道,map 和 set 的底层就是 红黑树,但是 STL 当中 ,map 和 set 并不是我们想象的,直接使用一个 pair 对象来存储一个 key-value 或者 是 一个 key。具体如下所示: set&#xff…

基于微信小程序的线上教育课程付费商城(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

MATLAB APP纯小白入门 两数相加

万事开头难,最怕第一次。使用matlab APP 实现两数求和,如下图所示,c a b,输入数字后,按 “” 就计算。 步骤 拖拽三个 Edit Field(Numeric) 过来,并且双击名字分别改为 a,b,c。注意修改名字后右边会有点变…

SpringBoot 之配置加密

Jasypt库的使用 Jasypt是一个Java简易加密库&#xff0c;用于加密配置文件中的敏感信息&#xff0c;如数据库密码。 Jasypt库与springboot集成&#xff0c;在实际开发中非常方便。 1、引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId>&…

【操作系统笔记五】内存布局内存映射

虚拟内存布局 虚拟地址空间大小&#xff1a; 32位虚拟地址空间 [0 ~ 2^32 - 1] 总共4GB64位虚拟地址空间 [0 ~ 2^64 - 1] 总共16 777 216TB 不管是运行在用户态还是内核态&#xff0c;都需要使用虚拟地址&#xff0c;这是因为计算机硬件要求的&#xff0c;CPU要经过地址转换得…

更新andriod studio版本,项目编译报could not find org.junit.jupiter:junit-jupiter

原本使用Android Studio 版本是4.1.1&#xff0c;现更新为 点击build -》 build bundle -》build apk&#xff0c;项目报 Could not determine the dependencies of task :app:compileDebugUnitTestJavaWithJavac. > Could not resolve all task dependencies for configur…

HTML那些重要的知识点

文章目录 ⭐️写在前面的话⭐️一、HTML1.1 锚点链接跳转到当前页面的指定位置跳转到其他页面的指定位置 1.2 自定义列表1.3 表格的跨行跨列1.4 视频和音频内容1.5 页面结构规范1.6 ifram内联框架1.7 表单1.7.1 form标签1.7.2 原生表单部件1.7.3 下拉框1.7.4 文本域1.7.5 文件域…

基于微信小程序的健康评估系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言运行环境说明用户微信端的主要功能有&#xff1a;医生微信端的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取…

【每日一题】658. 找到 K 个最接近的元素

658. 找到 K 个最接近的元素 - 力扣&#xff08;LeetCode&#xff09; 给定一个 排序好 的数组 arr &#xff0c;两个整数 k 和 x &#xff0c;从数组中找到最靠近 x&#xff08;两数之差最小&#xff09;的 k 个数。返回的结果必须要是按升序排好的。 整数 a 比整数 b 更接近 …

【PDF】pdf 学习之路

PDF 文件格式解析 https://www.cnblogs.com/theyangfan/p/17074647.html 权威的文档&#xff1a; 推荐第一个连接&#xff1a; PDF Explained &#xff08;译作《PDF 解析》&#xff09; | PDF-Explained《PDF 解析》https://zxyle.github.io/PDF-Explained/ https://zxyle…

怎样的外发文件管理办法 能够避免数据外发泄露?

在日常办公中&#xff0c;重要文件保密管理可谓“老生常谈”。但我们往往容易忽视&#xff0c;文件保密管理并非个体所能独立完成&#xff0c;在整个文件运转过程中&#xff0c;存在多名经手人&#xff0c;一人发生疏忽&#xff0c;则整个安全屏障都会被打破。 因此&#xff0c…

Jetpack Compose中的Navigation从入门到精通完全指南

Jetpack Compose中的Navigation从入门到精通完全指南 什么是Android导航 导航帮助您理解应用程序在不同组件间的移动方式。 Android JetPack Navigation可以帮助您以简单的方式实现高级导航。 导航组件由三个主要部分组成&#xff1a; 导航图(Navigation Graph)&#xff1…

前端关于对象中套用对象传参的小问题

在js的对象是引用类型的&#xff0c;他如果里面还套用对象的话那么通过axios传参给后端就会出现一个问题&#xff0c;就是【object&#xff0c;object】这种包装形式 那么如何来解决这个问题呢&#xff1f; 其实这就是要对数据传输中json格式要有一定的了解才可以解决这个问题…

【李沐深度学习笔记】线性代数

课程地址和说明 线性代数p1 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 线性代数 标量 标量&#xff08;scalar&#xff09;&#xff0c;亦称“无向量”。有些物理量&#xff0c;只具有数值大小&#xff0c…

低功耗无线扫描唤醒技术,重塑物联网蓝牙新体验

随着人类社会活动的信息化和通信技术的发展&#xff0c;传统设施越来越倾向于网络化、无线化。物联网被人们视为继计算机、互联网之后信息技术产业发展的第三次革命。无线短距离通信方式是物联网的主要通信方式之一&#xff0c;随着物联网终端通信设备应用越来越广&#xff0c;…

AIGC专栏7——EasyPhoto 人像训练与生成原理详解

AIGC专栏7——EasyPhoto 人像训练与生成原理详解 学习前言源码下载地址为什么是LoraEasyPhoto的训练流程1、数据的预处理a、人像排序i、人脸特征向量提取过程ii、人脸偏移角度计算iii、人像排序 b、人像分割与修复i、人像分割ii、图像修复与超分处理 2、Lora模型训练a、训练的基…

Python爬虫自动切换爬虫ip的完美方案

在进行网络爬虫时&#xff0c;经常会遇到需要切换爬虫ip的情况&#xff0c;以绕过限制或保护自己的爬虫请求。今天&#xff0c;我将为你介绍Python爬虫中自动切换爬虫ip的终极方案&#xff0c;让你的爬虫更加高效稳定。 步骤一&#xff1a;准备爬虫ip池 首先&#xff0c;你需要…

二值贝叶斯滤波计算4d毫米波聚类目标动静属性

机器人学中有些问题是二值问题&#xff0c;对于这种二值问题的概率评估问题可以用二值贝叶斯滤波器binary Bayes filter来解决的。比如机器人前方有一个门&#xff0c;机器人想判断这个门是开是关。这个二值状态是固定的&#xff0c;并不会随着测量数据变量的改变而改变。就像门…

mysql用事务实现更新数据

前言&#xff1a;在手动批量更新正式环境数据库时&#xff0c;建议使用事物进行更新&#xff0c;避免更错数据&#xff0c;造成不必要的麻烦。 现表中有三条数据&#xff0c;使用事物批量将name字段为mgx&#xff0c;phone字段为17837107346&#xff0c;所有数据中的address字段…

解决Vue设置图片的动态src不生效的问题

一、问题描述 在vue项目中&#xff0c;想要动态设置img的src时&#xff0c;此时发现图片会加载失败。在Vue代码中是这样写的&#xff1a; 在Vue的data中是这样写的&#xff1a; 我的图片在根目录下的static里面&#xff1a; 但是在页面上这个图片却无法加载出来。 二、解决方案…