当前位置: 首页 > news >正文

吴恩达深度学习——对象检测

内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。

文章目录

  • 对象定位
  • 特征点检测
  • 基于滑动窗口的目标检测算法
    • 原理
    • 将全连接层转化成卷积层
    • 通过卷积实现滑动窗口检测算法
  • YOLO
    • Bounding Box预测
    • 交并比
    • 非极大值抑制
    • Anchor Box
    • YOLO检测
      • 训练集中
      • 预测时
    • 带区域的卷积网络

对象定位

在这里插入图片描述
之前检测一张图片只是检测是不是车,现在进一步地,不仅仅检测是不是车,而且要标记出其位置,这就是对象定位问题。

在这里插入图片描述
首先对图片进行分类,判断图片的类别,这个过程是之前分享过的一般过程:图片使用CNN后,经过softmax激活函数进行分类。如果需要附加定位功能,那么CNN的输出不仅要输出分类,而且还要输出定位框的坐标信息。因此,训练集的数据不仅仅要包含要预测的对象分类标签,还需要包含表示边界框的四个坐标数字。

定义图片左上角位置为(0,0),右下角位置为(1,1),定位框的中心点坐标为(bx,by),定位框宽bw,高bh。

定义目标标签 Y Y Y

  • pc:是否包含对象,若包含行人、车、摩托车,则值为1;若是背景,则值为0。
  • bx、by、bw、bz:若检测到对象,输出边界框的参数。
  • c1、c2、c3:若pc=1,则输出,表示该对象属于行人、车,摩托车中的哪一类。
    在这里插入图片描述
  • 第一张图中有车,对应的目标标签 y y y中, p c p_c pc(表示是否存在目标)为1说明存在目标, b x b_x bx b y b_y by b h b_h bh b w b_w bw为汽车边界框的相关参数,类别标签 c 1 c_1 c1为0(行人)、 c 2 c_2 c2为1(汽车)、 c 3 c_3 c3为0(摩托车)说明该对象被分类为车。
  • 第二张图中没有对象,对应的目标标签 y y y中, p c p_c pc为0, b x b_x bx b y b_y by b h b_h bh b w b_w bw以及 c 1 c_1 c1 c 2 c_2 c2 c 3 c_3 c3都可以设为“?”表示无参数。

特征点检测

在这里插入图片描述
如果要检测特征,比如人脸检测,标记了64处特征。输出包括是否为人脸的判断,以及人脸64个关键点的坐标,即 l 1 x l_{1x} l1x l 1 y l_{1y} l1y l 2 x l_{2x} l2x l 2 y l_{2y} l2y,… , l 64 x l_{64x} l64x l 64 y l_{64y} l64y ,共计129(64个标签,x和y两个坐标和一个是不是人脸的判断64*2+1)个输出值。

基于滑动窗口的目标检测算法

原理

在这里插入图片描述
要检测和定位车。准备训练集时,可以先重点关注图片是否包含车和不包含车,经过CNN输出预测值。然后实现滑动窗口目标检测。具体步骤如下:
在这里插入图片描述
首先选定一个特定大小的窗口(红色小方块)输入卷积网络,然后窗口按照一定的步长滑动来遍历图片上的像素。然后选定更大的窗口继续遍历。这个遍历过程需要重复多次。在上述的遍历过程中,总有一个窗口能够对应上车的位置,输出标签为1。
在这里插入图片描述
由于需要在大量不同位置和尺寸上滑动窗口,计算量较大。

将全连接层转化成卷积层

将全连接层转化为卷积层,可以减少参数数量,降低计算量,减轻内存负担。
在这里插入图片描述
上部分图:输入一个 14 × 14 × 3 14×14×3 14×14×3的特征图,使用了 16 16 16个大小为 5 × 5 5×5 5×5的卷积核进行卷积操作。 H w = ⌊ H i n − f + 2 p s ⌋ + 1 H_{w}=\lfloor\frac{H_{in}-f + 2p}{s}\rfloor + 1 Hw=sHinf+2p+1 H h = ⌊ H i n − f + 2 p s ⌋ + 1 H_{h}=\lfloor\frac{H_{in}-f + 2p}{s}\rfloor + 1 Hh=sHinf+2p+1,则输出特征图的高度和宽度为 ⌊ 14 − 5 1 ⌋ + 1 = 10 \lfloor\frac{14 - 5}{1}\rfloor + 1 = 10 1145+1=10,输出特征图的通道数等于卷积核的数量,即 16 16 16。所以卷积层输出特征图的尺寸为 10 × 10 × 16 10×10×16 10×10×16

池化层采用最大池化,池化窗口大小为 2 × 2 2×2 2×2,步长为 2 2 2,有 H w = ⌊ H i n − f + 2 p s ⌋ + 1 H_{w}=\lfloor\frac{H_{in}-f+2p}{s}\rfloor + 1 Hw=sHinf+2p+1 H h = ⌊ H i n − f + 2 p s ⌋ + 1 H_{h}=\lfloor\frac{H_{in}-f+2p}{s}\rfloor + 1 Hh=sHinf+2p+1,输出特征图的高度和宽度为 ⌊ 10 − 2 2 ⌋ + 1 = 5 \lfloor\frac{10 - 2}{2}\rfloor + 1 = 5 2102+1=5。池化层不改变通道数,输出特征图尺寸为 5 × 5 × 16 5×5×16 5×5×16

在全连接层,第一个全连接层:将池化层输出的三维特征图( 5 × 5 × 16 5×5×16 5×5×16)展平为一维向量,其长度为 5 × 5 × 16 = 400 5×5×16 = 400 5×5×16=400,即第一个全连接层的输入神经元个数为 400 400 400,输出神经元个数也为 400 400 400。第二个全连接层:输入为第一个全连接层的输出,即 400 400 400个神经元,输出同样为 400 400 400个神经元。

使用Softmax函数进行分类,输出 4 4 4个类别的概率分布,最终输出 y y y

下部分图:之前的相同,在全连接层将其转为卷积层:对于第一个全连接层,将池化层输出的 5 × 5 × 16 5×5×16 5×5×16特征图使用400个 5 × 5 × 16 5×5×16 5×5×16的过滤器展平成一维向量,其长度为 5 × 5 × 16 = 400 5×5×16 = 400 5×5×16=400,输出尺寸为 1 × 1 × 400 1×1×400 1×1×400(代入公式计算)。不再将其看作一个有400节点的集合,而是看成一个卷积层。第二个全连接层输入为 1 × 1 × 400 1×1×400 1×1×400,输出同样为 400 400 400个神经元,输出尺寸为 1 × 1 × 400 1×1×400 1×1×400变成卷积层。

通过卷积实现滑动窗口检测算法

在这里插入图片描述
如图,将 14 × 14 × 3 14\times14\times3 14×14×3尺寸的特征图填充成 16 × 16 × 3 16\times16\times3 16×16×3的特征图,使用大小为 5 × 5 5\times5 5×5的卷积核进行卷积…最后得到 2 × 2 × 4 2\times2\times4 2×2×4的输出。将全连接层转为卷积层后,不必将图片分割为4个部分,而是作为一张图片输入给卷积网络计算。比如图中检测了红绿黄紫四个区域,每一个区域经过一层一层的过滤器,在 2 × 2 × 4 2\times2\times4 2×2×4的输出上,左上角表示红色区域的检测结果、右上角表示绿色区域的检测结果、左下角现实黄色区域的检测结果和右下角显示紫色区域的检测结果。

在过程中可以看到有很多区域的计算都是重复的,但是卷积网络在传播过程中可以共享大量的计算,提高计算效率。
在这里插入图片描述
在应用时,不必在图片上连续进行卷积,而是一次性对一张图片得到所有的预测结果,如果足够幸运,神经网络可以直接识别出汽车位置。

YOLO

Bounding Box预测

在这里插入图片描述
使用卷积实现滑动窗口时,滑动步长如果太细腻,会消耗大量的计算资源;如果粗糙,会出现如图的情况,定位框不能完全定位目标位置。YOLO算法可以得到更精准的定位框。
在这里插入图片描述
对于一张100*100的图片,在图像上放个网格,这里取3*3(实际中更大)。对每一个网格使用分类和定位。
在这里插入图片描述
对于训练标签 y y y,第一个网格中无对象,pc=0…绿色框和右边的紫色框中都有对象,类别为汽车,这时候,取两个对象的中点,将该对象分配给包含对象中点的格子(将左边的汽车类别分配给绿色框而不是右边的紫色框,将右边的车分配给黄色框),认为紫色框中无对象…

图像输出为一个 3 × 3 × 8 3×3×8 3×3×8的张量,其中 3 × 3 3×3 3×3对应网格的数量, 8 8 8对应每个网格的标签维度( 1 1 1 p c p_c pc + 4 4 4个边界框参数 + 3 3 3个类别概率)。

交并比

在这里插入图片描述
对于实际大小的定位框(红色),若网络定位的定位框,想要知道这个结果是好还是坏,计算其交并比即可。

交并比函数IoU是两个边界框交集的面积与并集的面积之比,其值介于0到1之间。IoU值为0时,表示两个边界框没有任何重叠;IoU值为1时,代表两个边界框完全重合。

对于边界框 A A A B B B

  • 首先计算 A A A B B B的交集面积 S i n t e r s e c t i o n S_{intersection} Sintersection。可以通过确定两个边界框在水平和垂直方向上的重叠区域,进而计算重叠部分的面积。比如,设 A A A的左上角坐标为 ( x A 1 , y A 1 ) (x_{A1}, y_{A1}) (xA1,yA1),右下角坐标为 ( x A 2 , y A 2 ) (x_{A2}, y_{A2}) (xA2,yA2) B B B的左上角坐标为 ( x B 1 , y B 1 ) (x_{B1}, y_{B1}) (xB1,yB1),右下角坐标为 ( x B 2 , y B 2 ) (x_{B2}, y_{B2}) (xB2,yB2)。则交集的左上角坐标为 ( m a x ( x A 1 , x B 1 ) , m a x ( y A 1 , y B 1 ) ) (max(x_{A1}, x_{B1}), max(y_{A1}, y_{B1})) (max(xA1,xB1),max(yA1,yB1)),右下角坐标为 ( m i n ( x A 2 , x B 2 ) , m i n ( y A 2 , y B 2 ) ) (min(x_{A2}, x_{B2}), min(y_{A2}, y_{B2})) (min(xA2,xB2),min(yA2,yB2)) ,根据坐标计算出交集面积。
  • 接着计算 A A A B B B的并集面积 S u n i o n S_{union} Sunion。并集面积等于 A A A的面积 S A S_A SA加上 B B B的面积 S B S_B SB减去交集面积 S i n t e r s e c t i o n S_{intersection} Sintersection,即 S u n i o n = S A + S B − S i n t e r s e c t i o n S_{union}=S_A + S_B - S_{intersection} Sunion=SA+SBSintersection
  • 最后,交并比 I o U = S i n t e r s e c t i o n S u n i o n IoU = \frac{S_{intersection}}{S_{union}} IoU=SunionSintersection

约定IOU大于等于0.5说明检测正确。

非极大值抑制

对象检测可能存在一个问题是算法可能对同一个对象做出多次检测,可以使用非极大值抑制来检测对象一次。
在这里插入图片描述
在19*19的网格中,车所在的网格应该是中心点所在的网格。对于左边的车,几个框会认为它的网格中也包含车。

在右图中,对于右边的车,检测出3个概率,分别是0.9,0.6,0.7。非极大值抑制算法会找出这三个中的极大值0.9并保存,然后和这个定位框交并(IOU)程度很高的其他框0.6和0.7的被抑制。接下来继续找其他的框。找到了左边的0.8和0.7,概率最高的0.8处的框被认为是一辆车,同时抑制其他的定位框0.7,最后得到两个预测结果。

Anchor Box

目前,一个格子只能输出一个对象。想要输出多个对象,需要使用Anchor Box
在这里插入图片描述
在左图中,车与人的中心点几乎在同一个位置,依靠单独的 y y y标签不能同时显示二者的存在。因此可以定义两个Anchor box,其中,Anchor box1锚定人,而Anchor box2锚定车,输出标签y由原来的扩展为2倍分别表示Anchor box1和Anchor box2。

之前,训练图像中的每个目标被分配到包含该目标中点的网格单元。这种方式简单直接,仅依据目标中点的位置来确定所属网格。

使用两个Anchor box之后,训练图像中的每个目标被不仅被分配到网格中,还被分配到与该网格单元中具有最高交并比的Anchor box所在的网格单元,对象在目标标签中的编码方式为(grid cell, anchor box)。

YOLO检测

训练集中

在这里插入图片描述
左侧是一张被划分为 3 × 3 3\times3 3×3 网格的图像,有一辆汽车位于右下角的网格中。标注了三种目标类别,分别是 1 - pedestrian(行人)、2 - car(汽车)、3 - motorcycle(摩托车)。

定义两种Anchor box形状分别为Anchor box1(紫色框1)和Anchor box2(紫色框2),定义标签 y y y 3 × 3 × 2 × 8 3\times3\times2\times8 3×3×2×8的张量。 2 2 2 说明每个网格有 2 个Anchors box。上半部分是Anchor box1,下半部分是2。

对于包含汽车的网格,由于该网格内有汽车目标,且汽车的中心点就在该网格,故算法认为该网格中确实包含汽车。同时计算汽车形状与两个Anchor box的交并比,锚定到交并比高的对应的Anchor box2中,所以下半部分有值。最后输出标签 y y y

预测时

在这里插入图片描述
不使用非极大值抑制时,假设一张图片被YOLO划分9个网格,这9个网格经过神经网络,每一个成为 3 × 3 × 2 × 8 3\times3\times2\times8 3×3×2×8的网络,只有在绿色框中有相关的值。

在这里插入图片描述

运行非极大值抑制时:
首先,对于每个网格单元,得到 2 个预测的边界框。这是基于模型在每个网格中设置多个Anchor box(这里是 2 个)来预测目标边界框的结果。

其次,去除那些预测为目标的概率较低的边界框。通过设定一个概率阈值,低于该阈值的预测被认为是不可靠的,从而被剔除,以减少后续处理的冗余和错误预测。

最后,对于每个目标类别(行人、汽车、摩托车),分别使用非极大值抑制算法生成最终的预测结果。在多个重叠的预测边界框中,只保留具有最高置信度(概率)的边界框,抑制其他重叠且置信度较低的边界框。

带区域的卷积网络

在这里插入图片描述
使用滑动窗口实现卷积网络分类检测时,可以在中间的图看到,滑动窗口滑动到某些区域的时候,是没有检测目标的。为了减少计算量,只在少数的网格上运行卷积网络分类。可以对图像进行图像分割算法。不同颜色代表不同的分割区域。

分割算法在图中得到一些色块(右图中蓝色、绿色等色块),在这些色块上跑分类器,看看有无对象,如果没有,继续换下一个色块。

相关文章:

吴恩达深度学习——对象检测

内容来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 文章目录 对象定位特征点检测基于滑动窗口的目标检测算法原理将全连接层转化成卷积层通过卷积实现滑动窗口检测算法 YOLOBounding Box预测交并比非极大值抑制Anchor BoxYOLO检测训练集中预…...

BUU19 [BJDCTF2020]Easy MD51

题目 当点进去不知道干啥的时候:1.看源代码 2.抓包 3.看网络请求 F12 用bp抓包,在response消息头中有hint提示: select * from admin where passwordmd5($pass,true) 如果md5($pass,true)后是 or 1 那么整句话就是password or 1&a…...

蓝桥杯刷题DAY2:二维前缀和 一维前缀和 差分数组

闪耀的灯光 📌 题目描述 蓝桥公园是一个适合夜间散步的好地方,公园可以被视为由 n m 个矩形区域构成。每个区域都有一盏灯,初始亮度为 a[i][j]。 小蓝可以选择一个大的矩形区域,并按下开关一次,这将使得该区域内每盏…...

HTB:EscapeTwo[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...

vue 引入百度地图和高德天气 都得获取权限

vue接入百度地图---获取ak https://blog.csdn.net/qq_57144407/article/details/143430661 vue接入高德天气, 需要授权----获取key https://www.jianshu.com/p/09ddd698eebe...

AI大模型:DeepSeek

近期DeepSeek产生了很大的影响力。首先来自于性能,给了业内一个很好的释放,缓解了HPC以及大规模集群被卡的焦虑。通过实验证实了小规模团队(公开资料显示规模约150左右)在资源受限的情况下(2M H100 GPU时),依然可以完成对领先大模型的实现与部署。后续观察该团队是否可以…...

LeetCode - #198 打家劫舍

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

从离散傅里叶变换(DFT)到快速傅里叶变换(FFT)

摘要 离散傅里叶变换(DFT)是数字信号处理领域中分析信号频域特性的重要工具,但直接计算DFT的复杂度较高,限制了其在大规模数据处理中的应用。快速傅里叶变换(FFT)的出现显著降低了计算复杂度,极…...

【STM32】HAL库USB虚拟U盘MSC配置及采用自带的Flash作为文件系统

【STM32】HAL库USB虚拟U盘MSC实现配置及采用自带的Flash作为文件系统 本文将自带的Flash作为文件系统 通过配置USB的MSC功能实现虚拟U盘 没有单独建立FATFS文件系统 仅仅是配置USB和Flash读写而已 当然 这里也可以用外部Flash等等 也可以配置文件系统来进行套壳 但总体而言不如…...

Math Reference Notes: 符号函数

1. 符号函数的定义 符号函数(Sign Function) sgn ( x ) \text{sgn}(x) sgn(x) 是一个将实数 ( x ) 映射为其 符号值(即正数、负数或零)的函数。 它的定义如下: sgn ( x ) { 1 如果 x > 0 0 如果 x 0 − 1 如…...

拉格朗日乘数法算法详解Python实现

目录 一、拉格朗日乘数法算法详解1.1 基本思想1.2 数学推导1.3 算法步骤1.4 算法在编程中的实现 二、案例分析案例一:二维最优化问题——求 f ( x , y ) x 2 y 2 f(x,y)x^2y^2 f(x,y)x2y2 在约束 x y 1 xy1 xy1 下的极值2.1.1 问题描述2.1.2 数学模型构建2.1.…...

ip属地是手机号还是手机位置?一文理清

在数字化和网络化的今天,IP属地这一概念逐渐成为了人们关注的焦点。特别是在社交媒体和在线平台上,IP属地的显示往往让人联想到用户的地理位置。然而,关于IP属地到底与手机号还是手机位置有关,却存在着不少误解和混淆。本文将深入…...

C++常用拷贝和替换算法

算法简介: copy // 容器内指定的元素拷贝到另一容器replace // 将容器内指定范围的旧元素改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap //互换两个容器的元素 1. copy 功能描述: 将容器内指定范围的数据拷贝到另一容器中函…...

vue项目搭建

1.准备工作,按照下面的安装一下脚手架vue-cli node16安装vue-cli时报错:需要node>20(但根本就不是版本问题)-CSDN博客文章浏览阅读157次,点赞4次,收藏2次。这种情况我碰到不下5次了&#xff0c…...

Java进阶面试八股文

1、Java SE和Java EE区别? Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。Java SE 更适合开发桌面应用程序或简单的服务器应用程序,Java EE 更适合开发复杂的企业级应用程序或 Web 应用程序。 2、JVM和JRE和JDK区别?…...

Python Django 嵌入 Grafana Dashboard(随手记)

作为一名网络工程师/运维工程师,现在都在往DevOps的方向发展。其中大家都不可避免的会往自己开发平台的方向发展。 那么如何将自己制作的 Grafana 面板 引入到自己的平台上? 一般来说,大家都会选择Python来作为自己开发的语言,并会…...

[Android] IKTV专享版

[Android] IKTV专享版 链接:https://pan.xunlei.com/s/VOILXXuEd3ASo93c88UW79sxA1?pwd4tsw# 2025年2月最新免费K歌神器!家庭KTV软件,手机平板电视盒子电脑都可用...

阿里 Java 岗个人面经分享(技术三面 + 技术 HR 面):Java 基础 +Spring+JVM+ 并发编程 + 算法 + 缓存

技术一面 20 分钟 1、自我介绍 说了很多遍了,很流畅捡重点介绍完。 2、问我数据结构算法好不好 挺好的(其实心还是有点虚,不过最近刷了很多题也只能壮着胆子充胖子了) 3、找到单链表的三等分点,如果单链表是有环的…...

C++多线程编程——call_once和单例模式

目录 1. 前言 2. call_once和once_flag 3. 后记 3.1 单例类的析构问题 3.2 饿汉式单例模式的线程安全问题 1. 前言 之前在讲解单例模式时,有提到懒汉式单例模式使用了双重检测Double-Checked Locking Pattern (DCLP)来解决多线程的安全访问问题。但是该方法也…...

vue2-为啥data属性是一个函数而不是对象

vue2-为啥data属性是一个函数而不是对象 1. data在vue实例和组件中的表现差异 vue实例的时候,data既可以是一个对象也可以是一个函数 new Vue({data:{//对象name:tom},data(){//函数return{name:tom}} })而在组件中定义data,只能是函数,如…...

Spark--算子执行原理

一、sortByKey SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。 内部执行流程 1、创建RangePartitioner part&…...

keil 单步调试

一、常见错误分析 warningerror警告错误 不影响编译过程 能够输出Hex文件 无法完成编译 不输出Hex文件 注意的是,warning的信息是要去关注的。 下面的UNCALLED SEGMENT除外 二、单步调试配置 1、在keil中添加单片机型号 本文不详细介绍,如有需要可查看这篇文章:...

html的字符实体和颜色表示

在HTML中,颜色可以通过以下几种方式表示,以下是具体的示例: 1. 十六进制颜色代码 十六进制颜色代码以#开头,后面跟随6个字符,每两个字符分别表示红色、绿色和蓝色的强度。例如: • #FF0000:纯红…...

[数据结构] 线性表和顺序表

目录 线性表 顺序表的实现 顺序表各个方法的实现 boolean isFull() -- 判断数组是否放满 : void add(int data) -- 在数组末尾插入新元素 : void add(int pos,int data) -- 在指定位置插入元素 : boolean contain(int toFind) -- 判断是否包含某个元素 int indexOf(in…...

第12章:基于TransUnet和SwinUnet网络实现的医学图像语义分割:腹部13器官分割(网页推理)

目录 1. 前言 2. TransUnet 和 SwinUnet 3. 腹部多器官分割 4. 训练 5. 推理 6. 项目下载 1. 前言 TransUNet 是一种用于医学图像分割的混合架构,结合了 Transformer 和 U-Net 的优势。它利用 Transformer 的全局上下文建模能力和 U-Net 的精确定位特性&…...

DS图(下)(19)

文章目录 前言一、最短路径的概念二、单源最短路径-Dijkstra算法三、单源最短路径-Bellman-Ford算法四、多源最短路径-Floyd-Warshall算法总结 前言 加油,今天就是图的最后一篇了,撑住!!   今天我们要学的就是最短路径问题&…...

鸿蒙Harmony-Progress组件概述

鸿蒙Harmony-Progress组件概述 1.1Progress组件概述 作用:显示操作或任务的进度,支持线性,环形,刻度等多种样式适用场景:文件上传/下载、任务完成度、系统状态反馈等 2.1基础属性(参考官方文档&#xff…...

流数据库中的RisingWave和Materialize

流数据库(Streaming Database)是一种专门设计用于处理大量实时流数据的数据库,它能够在数据生成时立即进行处理,从而实现实时洞察和分析。RisingWave和Materialize都是这一领域的代表性技术。RisingWave和Materialize都是强大的流…...

【C++】多态详细讲解

本篇来聊聊C面向对象的第三大特性-多态。 1.多态的概念 多态通俗来说就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)。 编译时多态:主要就是我们前⾯讲的函数重载和函数模板,他们传不同类型的参数就可以调⽤不同的函数,通…...

防火墙的安全策略

1.VLAN 2属于办公区;VLAN 3属于生产区,创建时间段 [FW]ip address-set BG type object [FW-object-address-set-BG]address 192.168.1.0 mask 25 [FW]ip address-set SC type object [FW-object-address-set-SC]address 192.168.1.129 mask 25 [FW]ip address-se…...

Android 进程间通信

什么是IPC? Android 进程间通信(IPC,Inter-Process Communication)是Android操作系统中不同进程间交换数据和资源的一种机制。由于Android是多任务操作系统,每个应用通常运行在自己的进程中,以提高安全性和…...

【优先算法】专题——位运算

在讲解位运算之前我们来总结一下常见的位运算 一、常见的位运算 1.基础为运算 << &&#xff1a;有0就是0 >> |&#xff1a;有1就是1 ~ ^&#xff1a;相同为0&#xff0c;相异位1 /无进位相加 2.给一个数 n&#xff0c;确定它的二进制表示…...

深入理解k8s中的容器存储接口(CSI)

CSI出现的原因 K8s原生支持一些存储类型的PV&#xff0c;像iSCSI、NFS等。但这种方式让K8s代码与三方存储厂商代码紧密相连&#xff0c;带来不少麻烦。比如更改存储代码就得更新K8s组件&#xff0c;成本高&#xff1b;存储代码的bug还会影响K8s稳定性&#xff1b;K8s社区维护和…...

ZZNUOJ(C/C++)基础练习1061——1070(详解版)

目录 1061 : 顺序输出各位数字 C语言版 C版 1062 : 最大公约数 C C 1063 : 最大公约与最小公倍 C C 1064 : 加密字符 C C 1065 : 统计数字字符的个数 C C 1066 : 字符分类统计 C C 1067 : 有问题的里程表 C C 1068 : 进制转换 C C C&#xff08;容器stack…...

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…...

机理模型与数据模型融合的方式

机理模型与数据模型的融合旨在结合两者的优势&#xff0c;以提供更准确、可靠的预测和决策支持。以下是几种常见的融合方式及其示例&#xff1a; 1. 特征增强&#xff08;Feature Augmentation&#xff09; 描述&#xff1a;将由机理模型计算得到的结果作为额外特征加入到数据…...

高效 MyBatis SQL 写法一

高效 MyBatis SQL 写法一 前言 MyBatis 作为一款优秀的持久层框架&#xff0c;极大地简化了数据库操作。 然而&#xff0c;在实际开发中&#xff0c;XML 配置的编写仍然可能显得繁琐。 本文将分享一些 MyBatis 动态 SQL 的优质写法&#xff0c;帮助开发者提升效率并减少错误…...

vue3中的ref相关的api及用法

在 Vue 3 中&#xff0c;ref 相关的 API 主要用于管理响应式数据。以下是 ref 相关的 API 及其用法&#xff1a; 1. ref ref 用于创建响应式的基本数据类型或对象。 用法示例&#xff1a; <script setup> import { ref } from vue;const count ref(0);const incremen…...

3 卷积神经网络CNN

1 Image Classification (Neuron Version) – 1.1 Observation 1 1.2 Observation 2 如果不同的receptive field需要相同功能的neuron&#xff0c;可以使这些neuron共享参数 1.3 Benefit of Convolutional Layer 2 Image Classification (Filter Version) 不用担心filter大小…...

CSV数据分析智能工具(基于OpenAI API和streamlit)

utils.py&#xff1a; from langchain_openai import ChatOpenAI from langchain_experimental.agents.agent_toolkits import create_csv_agent import jsonPROMPT_TEMPLATE """你是一位数据分析助手&#xff0c;你的回应内容取决于用户的请求内容。1. 对于文…...

解决php8.3无法加载curl扩展

把它的值更改为扩展存在的目录的绝对路径(扩展存在的目录为有php_xxx.dll存在的目录) extension_dir "e:\serv\php83\ext" 然后从php根目录复制 libssh2.dll 和 libcrypto-*.dll 和 libssl-*.dll 到Apache根目录下的bin目录 重启apache服务即可...

拍照对比,X70 PRO与X90 PRO+的细节差异

以下是局部截图&#xff08;上X70P下X90PP&#xff09; 对比1 这里看不出差异。 对比2 X90PP的字明显更清楚。 对比3 中下的字&#xff0c;X90PP显然更清楚。...

《MPRnet》学习笔记

paper&#xff1a;2102.02808 GitHub&#xff1a;swz30/MPRNet: [CVPR 2021] Multi-Stage Progressive Image Restoration. SOTA results for Image deblurring, deraining, and denoising. 目录 摘要 1、介绍 2、相关工作 2.1 单阶段方法 2.2 多阶段方法 2.3 注意力机…...

机器学习-线性回归(参数估计之结构风险最小化)

前面我们已经了解过关于机器学习中的结构风险最小化准则&#xff0c;包括L1 正则化&#xff08;Lasso&#xff09;、L2 正则化&#xff08;Ridge&#xff09;、Elastic Net&#xff0c;现在我们结合线性回归的场景&#xff0c;来了解一下线性回归的结构风险最小化&#xff0c;通…...

C++11详解(二) -- 引用折叠和完美转发

文章目录 2. 右值引用和移动语义2.6 类型分类&#xff08;实践中没什么用&#xff09;2.7 引用折叠2.8 完美转发2.9 引用折叠和完美转发的实例 2. 右值引用和移动语义 2.6 类型分类&#xff08;实践中没什么用&#xff09; C11以后&#xff0c;进一步对类型进行了划分&#x…...

深度学习系列--01.入门

一.深度学习概念 深度学习&#xff08;Deep Learning&#xff09;是机器学习的分支&#xff0c;是指使用多层的神经网络进行机器学习的一种手法抖音百科。它学习样本数据的内在规律和表示层次&#xff0c;最终目标是让机器能够像人一样具有分析学习能力&#xff0c;能够识别文字…...

熵采样在分类任务中的应用

熵采样在分类任务中的应用 在机器学习的分类任务里,数据的标注成本常常制约着模型性能的提升。主动学习中的熵采样策略,为解决这一难题提供了新的思路。本文将带你深入了解熵采样在分类任务中的原理、应用及优势。 一、熵采样的原理(优化版) 熵,源于信息论,是对不确定…...

vite配置之---依赖优化选项

vite optimizeDeps 配置项主要在 开发环境 中对依赖项发挥作用 optimizeDeps.entries vite optimizeDeps.entries 是 Vite 配置中的一个选项&#xff0c;用来指定要优化的入口文件。这在开发环境中尤其有用&#xff0c;因为它告诉 Vite 需要预构建哪些文件&#xff0c;以便加速…...

Shell基础:中括号的使用

在Shell脚本中&#xff0c;中括号&#xff08;[ ... ] 和 [[ ... ]]&#xff09;是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法&#xff0c;能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…...

oracle ORA-27054报错处理

现象 在oracle执行expdp&#xff0c;rman备份&#xff0c;xtts的时候,由于没有足够的本地空间&#xff0c;只能使用到NFS的文件系统但有时候会出现如下报错 ORA-27054: NFS file system where the file is created or resides is not mounted with correct options根据提示信…...