目标检测,图像分割,超分辨率重建
目标检测和图像分割
目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。
-
语义分割(Semantic Segmentation):语义分割的目标是对图像中的每个像素打上类别标签,区分图像中不同类别的对象,但不区分同一类别中的不同个体。例如,在城市街景中,所有的树木都会被标记为“树”这一类别,而不会区分具体的每一棵树。
-
实例分割(Instance Segmentation):实例分割不仅要将每个像素归类到某个类别,还要区分同类中的不同个体。这意味着,在同一图像中,不同车辆会被识别并分别标记,每辆车都有一个独特的实例ID。
-
全景分割(Panoptic Segmentation):全景分割是语义分割和实例分割的结合。它对图像中的每个像素进行分类,同时区分出不同的实例。全景分割既包括了对物体的识别(如语义分割),也包括了对物体具体实例的区分(如实例分割),适用于需要同时识别和区分图像中所有对象的场景。
输出
目标检测任务的输出通常包括以下内容:
-
边界框(Bounding Boxes):对于图像中的每个目标,检测模型会输出一个或多个边界框,这些边界框以坐标形式表示目标的位置。常见的坐标格式有:
- (x_min, y_min, x_max, y_max):表示边界框左上角和右下角的坐标。
- (x_center, y_center, width, height):表示边界框中心点的坐标以及边界框的宽度和高度。
-
类别标签(Class Labels):每个边界框还会伴随一个类别标签,表示框内目标的类别。例如,在COCO数据集中,类别标签可以是“人”、“汽车”、“猫”等。
-
置信度(Confidence Scores):除了类别标签,模型还会为每个边界框输出一个置信度分数,表示模型对检测结果的确定程度。这个分数通常是一个介于0到1之间的值。
-
额外信息:在某些情况下,目标检测模型还可能输出额外信息,如目标的姿态、动作或其他属性。
图像分割任务的输出通常包括以下内容:
-
分割图(Segmentation Masks):图像分割模型会输出一个与输入图像大小相同的二维数组(对于灰度图像)或三维数组(对于彩色图像),每个像素的值表示该像素所属的类别或实例。例如,在语义分割中,不同的类别会有不同的标签;在实例分割中,每个实例会有一个唯一的标识符。
-
类别标签(Class Labels):在语义分割中,每个像素的值通常对应一个类别标签。在实例分割中,除了类别标签,每个实例还会有一个唯一的标识符。
-
概率图(Probability Maps):在某些分割模型中,输出可能包括一个概率图,表示每个像素属于每个类别的概率。
-
边界(Boundaries):在某些高级的分割任务中,模型还可能输出目标的边界信息,如轮廓或边缘。
-
全景分割(Panoptic Segmentation):全景分割结合了语义分割和实例分割的特点,输出既包括每个像素的类别信息,也包括每个实例的标识符。
end: 目标检测和图像分割的输出形式多样,具体取决于任务的性质和应用场景。这些输出可以用于进一步的分析、处理或作为其他计算机视觉任务的输入。
原理
目标检测是指在图像中识别和定位感兴趣的目标(物体)。它不仅要识别出图像中的目标类别,还要确定目标的位置,通常通过绘制边界框(bounding box)来表示。目标检测的基本原理包括以下几个步骤:
-
特征提取:使用卷积神经网络(CNN)从图像中提取特征。这些特征能够捕捉到图像中的局部和全局信息。
-
区域建议网络(Region Proposal Network, RPN):在某些模型中,如Faster R-CNN,使用RPN来快速生成可能包含目标的区域建议。
-
分类和边界框回归:对于每个区域建议,网络需要预测它是否包含目标以及目标的具体类别,同时还要调整边界框的位置,使其更准确地包围目标。
-
非极大值抑制(Non-Maximum Suppression, NMS):由于多个区域建议可能会重叠,NMS用于合并重叠的边界框,以确保每个目标只被检测一次。
-
损失函数:常用的损失函数包括交叉熵损失(用于分类)和Smooth L1损失(用于边界框回归)。Focal Loss是另一种损失函数,专门设计来解决类别不平衡问题。
图像分割是指将图像划分为多个部分或区域,每个区域包含具有相同属性的像素点。图像分割可以分为语义分割、实例分割和全景分割等。图像分割的基本原理包括:
-
像素级分类:图像分割需要对图像中的每个像素进行分类,确定它属于哪个目标或背景。
-
特征提取:与目标检测类似,图像分割也使用CNN来提取图像特征。
-
编码器-解码器架构:许多分割模型采用编码器-解码器结构,其中编码器逐步降低空间维度并提取特征,解码器则逐步恢复空间维度并进行像素级分类。
-
跳跃连接(Skip Connections):为了恢复细节信息,跳跃连接将编码器中的高分辨率特征与解码器中的对应层连接起来。
-
上下文信息:全局上下文信息对于分割非常重要,它可以帮助模型理解图像的整体结构和内容。
-
损失函数:图像分割常用的损失函数包括交叉熵损失和Dice损失,它们衡量预测分割图和真实分割图之间的差异。
-
后处理:在某些情况下,可能需要后处理步骤,如形态学操作或条件随机场(CRF),以改进分割结果。
目标检测和图像分割都是复杂的问题,涉及到深度学习、特征提取和像素级预测等多个方面。随着技术的发展,这些领域的研究不断深入,新的方法和模型也在不断涌现。
异同
相同点:
-
特征提取:两者都依赖于深度学习模型,尤其是卷积神经网络(CNN,transformer等),从图像中提取特征。
-
像素级分析:无论是目标检测还是图像分割,都需要对图像中的每个像素进行分析,以确定它们属于哪个类别或目标。
-
深度学习架构:两者都可以使用类似的深度学习架构,如R-CNN系列、YOLO、SSD等。
-
数据集:两者经常使用相同的数据集进行训练和评估,例如PASCAL VOC、COCO等。
-
应用场景:两者都广泛应用于自动驾驶、监控、医疗影像分析等领域。
不同点:
-
输出结果:
- 目标检测:输出图像中每个目标的类别和位置(通常是边界框),以及每个目标的置信度。
- 图像分割:输出每个像素的类别标签,即对图像中的每个像素进行分类,区分属于不同目标或背景的像素。
-
任务复杂度:
- 目标检测:通常只需要识别和定位目标,不需要区分目标内部的像素。
- 图像分割:需要对图像中的每个像素进行分类,任务更为复杂,尤其是在处理细粒度结构和目标边界时。
-
目标识别:
- 目标检测:关注的是目标的识别和定位,不区分目标内部的像素。
- 图像分割:不仅识别目标,还区分目标内部的像素,提供更详细的目标形状和结构信息。
-
实例区分:
- 目标检测:通常不区分相同类别的不同实例,除非使用实例分割模型。
- 图像分割:在实例分割任务中,需要区分相同类别的不同实例,为每个实例分配唯一的标识符。
-
性能指标:
- 目标检测:常用的性能指标包括平均精度(AP)、精确率-召回率曲线(PR Curve)等。
- 图像分割:常用的性能指标包括交并比(IoU)、Dice系数、像素准确率等。
-
计算资源和速度:
- 目标检测:通常需要较少的计算资源,可以更快地处理图像。
- 图像分割:由于需要对每个像素进行分类,通常需要更多的计算资源和时间。
总的来说,目标检测和图像分割虽然在技术实现上有相似之处,但它们的应用目标和输出结果有明显区别。目标检测更侧重于识别和定位目标,而图像分割则提供了更细致的像素级信息。
评价指标
指标名称 | 定义 | 原理 | 使用场景 | 取值范围 |
---|---|---|---|---|
AP (Average Precision) | 平均精度,用于衡量精度和召回率的综合能力。 | 通过计算精度-召回曲线下的面积来得到。常常结合多个IoU阈值(如0.5, 0.75)来综合评估。 | 目标检测任务,综合考虑精度和召回率,评估模型的整体性能。 | [0, 1] |
mAP (mean Average Precision) | 综合精度的平均值,表示模型在不同类别和不同IoU阈值下的检测能力。 | 计算每个类别的AP值,取所有类别的平均值。AP是精度-召回曲线下的面积积分。 | 目标检测任务,评估模型在多个类别上的综合检测能力。 | [0, 1] |
AP50/75 (Average Precision at IoU=0.5 and IoU=0.75) | 在IoU阈值为0.5或0.75时的平均精度。 | 在不同的IoU阈值下计算AP。通常评估在较宽松和较严格的IoU阈值下的检测性能。 | 目标检测任务,特别用于评估模型在不同IoU重叠度下的表现。 | [0, 1] |
IoU (Intersection over Union) | 预测框与真实框重叠的区域占两者联合区域的比例。 | IoU = 交集面积 / 并集面积。值越大表示预测框和真实框重叠越多,精度越高。 | 目标检测,评估预测框与真实框的重叠程度,通常在检测结果的后处理过程中使用。 | [0, 1] |
mIoU (mean Intersection over Union) | 语义分割任务中每个类别的IoU的平均值。 | 计算每个类别的IoU,然后取平均值,表示模型在多个类别上的综合表现。 | 语义分割任务,评估模型在多个类别上分割精度的平均值,尤其适用于多类别的图像分割任务。 | [0, 1] |
Dice Coefficient | 衡量两个集合相似度的指标,通常用于图像分割任务中,表示分割结果与真实标签的相似度。 | Dice = 2 × (交集面积) / (A区域面积 + B区域面积)。值越大,表示预测分割与真实标签的重叠越多。 | 图像分割任务,特别是实例分割或医学图像分割,评估模型在分割任务中的精度。 | [0, 1] |
Dice Score | 与Dice Coefficient相似,用于图像分割任务中衡量预测分割区域与真实标签的重叠度。 | 计算预测结果与真实标签之间的相似度,值越高表示分割效果越好。 | 语义分割、实例分割任务,尤其在医学图像分析中应用广泛,用于衡量分割结果与真实标签的重叠情况。 | [0, 1] |
FPS (Frames per Second) | 每秒钟处理的图像帧数,用于衡量模型的实时性。 | FPS = 总处理帧数 / 处理所需时间。表示模型推理的速度,越高越好。 | 实时检测任务,如自动驾驶、视频监控、实时人脸识别等,评估模型的推理速度。 | [0, ∞) |
FLOPs (Floating Point Operations) | 浮点运算次数,表示模型计算复杂度。 | 计算网络中各层的浮点运算次数,衡量模型的计算复杂度。 | 评估模型计算资源的消耗,特别在资源受限的设备(如移动端、嵌入式设备)上的效率。 | [0, ∞) |
APdet 和 APloc 总结:
指标 | 含义 | 计算步骤 | 公式 |
---|---|---|---|
APdet | 平均精度(Detection) | 1. 计算每个检测框的 IoU(预测框与真实框的交并比)。 2. 对所有检测框按置信度进行排序。 3. 计算 Precision 和 Recall。 4. 绘制 Precision-Recall 曲线。 5. 计算每个类别的 AP。 6. 计算所有类别的 mAP(平均AP)。 | ![]() |
APloc | 平均定位精度(Localization) | 1. 计算每个检测框的 IoU(预测框与真实框的交并比)。 2. 选择适当的 IoU 阈值(通常为 0.5)。 3. 计算 Precision 和 Recall,重点考虑 定位准确度。 4. 绘制 Precision-Recall 曲线。 5. 计算 APloc。 | ![]() |
APdet vs APloc | 评估目标检测模型的能力 | - APdet:关注目标检测的 整体效果(包括物体识别和定位)。 - APloc:专注于目标检测中的 定位精度。 | - APdet:考虑识别和定位的综合效果。 - APloc:主要评估定位准确性,不关注类别匹配。 |
关键差异:
- APdet:综合评估 目标检测的整体效果,包括物体的识别与定位,计算方式涉及 Precision-Recall 曲线和 IoU 阈值。
- APloc:专注于 定位精度,通过计算预测框与真实框之间的 IoU,评估检测框的 位置准确性。
计算过程总结:
- APdet:通过多个 IoU 阈值(例如,IoU ≥ 0.5、0.75)计算每个类别的平均精度,然后求 mAP(所有类别的平均值)。
- APloc:通常基于较低的 IoU 阈值(例如,IoU ≥ 0.5)来计算 定位精度,重点衡量目标框的空间重叠与准确性。
无监督缺陷检测
无监督缺陷检测任务没有标签数据,传统的准确率、召回率等标准指标不适用。在无监督情境下,可以采用以下指标来评估模型效果:
无监督的缺陷检测评估主要依赖于以下几个方面:
- 重建误差:用于衡量模型在重建图像时,缺陷区域的重建不准确,通常通过MSE或SSIM来量化。
- 聚类质量:通过聚类算法将正常和异常区域分开,利用轮廓系数等评估聚类效果。
- 异常评分:通过计算每个区域或像素的异常分数,找出缺陷区域,评估模型识别缺陷的能力。
- 阈值和区域检测:设定重建误差或异常分数的阈值,找出缺陷区域。
超分辨率重建
吵分辨率重建模型的精度指标
指标 | 定义 | 原理 | 使用场景 | 取值范围 |
---|---|---|---|---|
PSNR | 峰值信噪比(Peak Signal-to-Noise Ratio) | 衡量重建图像与原始图像之间的误差,越高越好。基于均方误差(MSE)的反比关系。 | 主要用于评估图像的像素级误差,适用于比较图像的精确度。 | 通常取值在 20 ~ 40 dB 之间,值越大表示质量越高。 |
SSIM | 结构相似性指数(Structural Similarity Index) | 衡量图像的结构相似度,考虑亮度、对比度和结构信息。 | 适用于评估感知质量,常用于超分辨率、图像压缩等领域。 | 取值范围:[-1, 1],值越接近 1 表示结构越相似。 |
LPIPS | 学习感知图像补丁相似度(Learned Perceptual Image Patch Similarity) | 基于深度学习的感知相似度,利用预训练卷积神经网络(如 VGG)来衡量图像间的感知差异。 | 主要用于感知质量评估,尤其适合图像生成和超分辨率任务。 | 无明确范围,但值越低表示图像越相似。 |
MAE | 平均绝对误差(Mean Absolute Error) | 衡量像素间的绝对差异。计算原始图像和重建图像之间的每个像素的差异,并求平均。 | 用于量化像素级误差,适用于对比不同图像之间的差异。 | 取值范围:[0, ∞],越小表示误差越小。 |
MSE | 均方误差(Mean Squared Error) | 衡量像素间的平方误差,重建图像与原图的误差的平方值的平均。 | 主要用于图像恢复、图像去噪等任务的精度评估。 | 取值范围:[0, ∞],越小表示误差越小。 |
VIF | 视觉信息保真度(Visual Information Fidelity) | 评估图像中保留的视觉信息,模拟人眼感知图像质量。 | 用于超分辨率和生成图像的视觉质量评估,特别关注视觉信息的保真度。 | 取值范围:[0, 1],值越大表示质量越好。 |
FID | 弗雷歇距离(Fréchet Inception Distance) | 衡量生成图像与真实图像的分布差异,基于 Inception 网络的特征分布进行比较。 | 主要用于生成图像的质量评估,特别是图像生成任务中。 | 取值范围:[0, ∞],值越小表示生成图像与真实图像的分布越接近。 |
NIQE | 自然图像质量评估(Natural Image Quality Evaluator) | 无参考的图像质量评估方法,通过图像的统计特性与自然图像的模型进行比较。 | 适用于没有参考图像的场景,评估图像的自然性和质量。 | 取值范围:[0, ∞],值越小表示图像越自然。 |
总结:
- PSNR 和 MSE 常用于基于像素的误差评估,尤其适用于工程应用中的精度度量。
- SSIM 和 LPIPS 更侧重感知质量评估,尤其适用于图像生成和超分辨率任务。
- VIF 和 FID 提供了更符合人类视觉感知的评估方式,适合用于生成模型的质量评价。
- MAE 和 MSE 是较简单的度量,但在精度上有效。
- NIQE 是无参考评估指标,适合在没有原始高分辨率图像时使用。
公开数据集
数据集名称 | 任务 | 特点 | 标签类型 | 标签意义 | 网址 |
---|---|---|---|---|---|
ImageNet | 图像分类、目标检测、图像分割等 | 包含1000类,1400万张图像,覆盖多个物体类别 | 类别标签 | 每个标签表示图像中的物体类别,广泛用于分类任务 | ImageNet |
COCO | 目标检测、图像分割、关键点检测 | 包含20万目标实例,33万张图像,图像描述 | 类别标签、边界框、分割掩码、关键点 | 目标检测标签、实例分割、关键点坐标等 | COCO |
MNIST | 手写数字分类 | 70,000张28x28像素的灰度图像,10个数字类别 | 数字标签 | 每个标签表示图像中的数字(0-9) | MNIST |
Pascal VOC | 目标检测、图像分割、图像分类 | 20类目标,标注了边界框和分割掩码 | 类别标签、边界框、分割掩码 | 目标检测的类别和位置,图像分割的像素级标签 | Pascal VOC |
ADE20K | 语义分割 | 20,000+张图像,150个类别 | 类别标签 | 每个像素的类别标签,适用于语义分割任务 | ADE20K |
LFW | 人脸识别 | 13,000多张图像,5,749个不同人 | 人物标签 | 每个标签表示图像中的人的身份 | LFW |
Fashion-MNIST | 服装分类 | 70,000张28x28像素图像,10种服装类别 | 类别标签 | 每个标签表示图像中的服装类别 | Fashion-MNIST |
Kitti | 目标检测、深度估计、立体视觉 | 车载相机和激光雷达数据,适用于自动驾驶 | 类别标签、边界框、深度标签 | 目标类别及位置,深度估计标签,适用于立体视觉任务 | Kitti |
CIFAR-10 | 图像分类 | 32x32像素,10类目标,共70,000张图像 | 类别标签 | 每个标签表示图像所属的类别(如猫、狗、飞机等) | CIFAR-10 |
CIFAR-100 | 图像分类 | 32x32像素,100类目标,共60,000张图像 | 类别标签 | 每个标签表示图像所属的类别(100类动物、物体等) | CIFAR-100 |
SUN RGB-D | 3D物体检测、图像分割、语义分割 | 来自RGB和深度传感器的10,000多张室内图像 | 类别标签、3D点云标签 | 物体类别标签、3D点云数据 | SUN RGB-D |
Cityscapes | 城市街景图像分割 | 高分辨率城市街景图像,应用于自动驾驶 | 类别标签、边界框、实例分割标签 | 每个像素的类别标签,适用于城市街景理解 | Cityscapes |
Oxford Pets | 物体分类、图像分割 | 7,349张宠物图像,37种宠物类别 | 类别标签、分割掩码 | 每张图像的宠物类别,像素级分割标签 | Oxford Pets |
Iris Dataset | 分类任务 | 包含150个鸢尾花样本,4个特征(花萼、花瓣长度等) | 类别标签 | 每个样本的类别标签(Setosa, Versicolor, Virginica) | Iris Dataset |
Flickr8k/Flickr30k | 图像描述 | 各自包含8,000和30,000张图像,每张图像有5个描述 | 文字描述标签 | 图像的自然语言描述,描述图像中的物体、场景等 | Flickr8k / Flickr30k |
WIDER FACE | 人脸检测 | 包含32,203张图像,400,000+标注人脸框 | 人脸边界框标签 | 每张图像中人脸的位置,适用于人脸检测任务 | WIDER FACE |
Stanford Dogs | 物体分类 | 包含120个犬种的20,580张图像 | 类别标签 | 每张图像的犬种标签,适用于犬种分类 | Stanford Dogs |
DeepFashion | 服装分类、服装识别 | 80,000+张图像,包含服装类别和属性标签 | 类别标签、服装属性标签、边界框标签 | 每张图像的服装类别,属性(如颜色、材质)和边界框 | DeepFashion |
相关文章:
目标检测,图像分割,超分辨率重建
目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...
关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明
问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...
安全设备-日志审计-网络路由配置
1 网络设置 菜单项‘网络’‘网络设置’子项。进入网卡列表展示页面。点击操作列‘编辑’图标,可编辑对应网卡信息。 图11-1 网卡信息 设备接口的 GE0/1 接口IP:192.168.0.1子网掩码:255.255.255.0 图11-2 配置网卡 1 IP地址2 子网掩码3 主机DNS4 备份DNS 2 通…...
Linux服务器生成SSH 密钥对与 GitLab 仓库进行交互
目录 生成 SSH 密钥对 将公钥添加到 GitLab 测试 SSH 连接 生成 SSH 密钥对 在执行脚本的机器上打开终端,执行以下命令(假设使用默认的 RSA 算法,一路回车使用默认设置即可,也可以根据需要指定其他算法和参数)&…...
react 的路由功能
1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置(BrowserRouter) 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...
vscode python code runner执行乱码
打开vscode code runner插件配置,如图所示: 然后在setting.json修改运行python的默认命令: 将原来 替换成 "python":"set PYTHONIOENCODINGutf8 && python", 参考:Vscode——python环境输出中文乱…...
Element UI 打包探索【3】
目录 第九个命令 node build/bin/gen-cssfile gulp build --gulpfile packages/theme-chalk/gulpfile.js cp-cli packages/theme-chalk/lib lib/theme-chalk 至此,dist命令完成。 解释why Element UI 打包探索【1】里面的why Element UI 打包探索【2】里面…...
windows使用docker安装centos7
参考文章:docker容器安装CentOS7.9 需要指出来的步骤 2.5 安装常用工具及ssh服务 由于centos7不维护,需要更换镜像源才能正常使用yum install命令安装 更换镜像源文章:CentOS 7配置yum镜像源 2.9Xshell远程连接docke_centos7.9 文章没有指…...
写一个流程,前面的圆点和线,第一个圆上面没有线,最后一个圆下面没有线
上图 最近写类似于这种的还挺多的,记录一下css方法 遍历列表之后 <div class"item" v-for"(item,index) in recordList"> 加这样一个盒子 <div class"timeline"> <div class"line1" v-if"index ! 0&…...
Javascript Insights: Visualizing Var, Let, And Const In 2024
11/2024 出版 MP4 |视频:h264, 19201080 |音频:AAC,44.1 KHz 语言:英语 |大小: 2.96 GB |时长: 5 小时 34 分钟 为所有认真的 JavaScript 开发人员可视化与 VAR、LET、CONST 和 EXECUTON CONTE…...
【工具】AI 工具集整理推荐
ai工具集 我私人使用了一段时间,效果不错,有很多AI工具,可以提升工作的效率。...
如何通过终端连接无线网
1 先连接对方服务器 ssh root192.168.3.219 # root是用户名字 192.168.3.219是对方的ip地址2 开启 WiFi:输入sudo nmcli r wifi on,开启系统的无线网络功能 sudo nmcli r wifi on3 扫描附近的 WiFi 热点:执行sudo nmcli dev wifi&#x…...
elasticsearch报错fully-formed single-node cluster with cluster UUID
1.问题描述 k8s集群内部署的es中间件起不来,查看日志发现如下警告,节点发现功能开启,但是目前我是单节点服务,所以尝试编辑sts将节点发现功能去掉或者在部署时将你的sts的yaml文件和chart文件修改重新部署以去掉该功能 {"t…...
前端 vue3 + element-plus + ts 对话框示例
【父组件】:SampleInput.vue,局部代码片段 引入子组件 ApplyItemChooseDialog.vue,定义变量,用于渲染和显示标识 <script>片段代码 import ApplyItemChooseDialog from "/views/accept/ApplyItemChooseDialog.vue&q…...
南京移动“智慧+关怀”服务体系助力老年群体生活安全有保障
在数字化浪潮汹涌澎湃的当下,江苏移动南京分公司秉持“人民邮电为人民”的服务理念,推出一系列创新服务举措,为社区老年群体提供贴心、便捷的数字服务,让老人在享受科技发展成果的同时,感受到社会的温暖与关怀。 贴心…...
Elasticsearch 安全特性讲解与使用
Elasticsearch安全特性讲解与使用指南 1. Elasticsearch概览1.1 简介1.2 应用场景1.3 核心特性2. Elasticsearch安全特性2.1 安全性的重要性2.2 权限控制用户身份验证角色管理访问控制列表(ACL)2.3 数据加密数据传输加密数据静态加密2.4 审计日志2.5 IP筛选2.6 案例分析案例背景…...
第12章 手写Spring MVC
第十二章 手写Spring MVC 12.1 基本结构搭建 12.1.1 创建Maven模块 12.1.2 引入Servlet依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XM…...
C#基础31-35
31.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入student数组中。找出成绩最低的学生记录(假定最低成绩的记录是唯一的)并输出。 32.在键盘上任意输入一个字符串,该字符串全部由英文字母组成,把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII…...
GPT相关的学术库——收藏更新自用
GOT-OCR2.0 General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model https://github.com/Ucas-HaoranWei/GOT-OCR2.0/tree/main ChatPaper 工具名称工具作用是否在线?在线预览备注ChatPaper通过ChatGPT实现对论文进行总结,帮助科研人进…...
速度革命:esbuild如何改变前端构建游戏 (1)
什么是 esbuild? esbuild 是一款基于 Go 语言开发的 JavaScript 构建打包工具,以其卓越的性能著称。相比传统的构建工具(如 Webpack),esbuild 在打包速度上有着显著的优势,能够将打包速度提升 10 到 100 倍…...
AR商业化的“AI转身”
AI会不会是AR厂商良药? 作者|周立青 编辑|杨舟 11月,国内“AR四小龙”之一的Rokid举办了新品发布会,在发布会的同步直播间,出现了一条不合时宜的“什么时候发去年的工资”的评论。 “公司确实没有给我们发2023年的十三薪和年终…...
Python 中的装饰器是什么?
装饰器是Python中一种非常强大的功能,它允许你在不修改原始函数代码的前提下,增加额外的功能或改变函数的行为。 装饰器本质上是一个接受函数作为参数的函数,并返回一个新的函数。 通过装饰器,我们可以轻松地实现诸如日志记录、…...
jupyter notebook的 markdown相关技巧
目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…...
oracle 创建只可以查询权限用户+sqldeveloper如何看到对应表
声明 申明部分是从其他csdn用户哪里复制的,只是自己操作后发现无法达到我最后的预期,所以关闭忘记是看的那篇了,如果有侵权请见谅,联系我删除谢谢。 好了,故事的开始是我最近删投产表了。没错职业黑点,清…...
化工行业 FMEA 与安全生产的关系
【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。】 在化工行业这个充满复杂性和潜在危险的领域中,确保安全生产是至关重要的目标。失效模式及影响分析(FMEA)作为一种有效的风险管理工具,在保障化工行…...
前端node.js
一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象,用于表示固定长度的字节序列。Buffer…...
深度学习:GPT-2的MindSpore实践
GPT-2简介 GPT-2是一个由OpenAI于2019年提出的自回归语言模型。与GPT-1相比,仍基于Transformer Decoder架构,但是做出了一定改进。 模型规格上: GPT-1有117M参数,为下游微调任务提供预训练模型。 GPT-2显著增加了模型规模&…...
Java线程池详解:从基础到实践
Java线程池详解:从基础到实践 在现代多线程编程中,线程池是一个非常重要的工具。它能帮助开发者更高效地管理线程资源,避免频繁创建和销毁线程导致的性能损耗,并提供更灵活的任务调度机制。本文将详细讲解线程池相关知识…...
A*(A-star)算法
概述 A*(A-star)算法是一种在图中寻找从初始节点到目标节点最短路径的启发式搜索算法。它结合了Dijkstra算法的确保性(保证找到一条最短路径)和贪心算法的高效性(快速找到目标)。A*算法通过评估函数f(n) …...
计算机类大厂实习春招秋招开发算法面试问答练习题
计算机类大厂实习春招秋招开发算法面试问答练习题 下面有十个非常重要且常问,面试者却注意不到的问题,我们一个个来看,一个个来学。 线程创建到删除过程中,底层是怎么实现的 1.线程创建 线程创建是线程生命周期的起点。在操作系统中,线程可以通过多种方式创建,但无论哪…...
C++ 11重点总结1
智能指针 智能指针: C11引入了四种智能指针: auto_ptr(已弃用)、unique_ptr、shared_ptr和weak_ptr。智能指针可以更有效地管理堆内存,并避免常见的内存泄漏问题。 shared_ptr: 自定义删除器。 shared_ptr使用引用计数来管理它指向的对象的生命周期。多个shared_ptr实例可以指向…...
Java异常
目录 一、异常的层次结构 1.1、Throwable 1.2、Error(错误) 1.3、Exception(异常) 运行时异常 非运行时异常 (编译异常) 1.4、可查的异常(checked exceptions)和不可查的异常…...
《热带气象学报》
《热带气象学报》创刊于1984年,前身为《热带气象》,1993年更名为《热带气象学报》,是广东省气象局主管,中国气象局广州热带海洋气象研究所主办的中文学术期刊。 本刊坚持“热带气象”的办刊特色,主要刊登:…...
解决docker不加载 /etc/docker/daemon.json文件的问题
文章目录 问题起源解决方案问题反思 问题起源 如题,最近在ubuntu24.04-LTS-server安装docker时,安装成功后设置源来设置镜像。 设置完成功拉取镜像,我就关机下次使用。 但是当我重启发现呢,镜像都不在了,但是由于网络…...
数据结构(初阶7)---七大排序法(堆排序,快速排序,归并排序,希尔排序,冒泡排序,选择排序,插入排序)(详解)
排序 1.插入排序2.希尔排序3.冒泡排序4.选择排序(双头排序优化版)5.堆排序6.快速排序1). 双指针法2).前后指针法3).非递归法 7.归并排序1).递归版本(递归的回退就是归并)2).非递归版本(迭代版本) 计算机执行的最多的操作之一就有排序,排序是一项极其重要的技能 接下…...
题解 洛谷 Luogu P1182 数列分段 Section II 二分答案 C/C++
题目传送门: P1182 数列分段 Section II - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1182思路: 二分答案,每次以区间 [l, r] 中点 m 为每段和的阈值 判断在此前提下,划分段数是否不大于 M 是就记录答案…...
鸿蒙心路旅程:从实践到创新——开发者的深度技术分享
目录 1. 引言:成为HarmonyOS NEXT开发者的动机 2. 项目初始化与架构设计:从零开始的技术规划 2.1 DevEco Studio的配置与项目初始化 2.2 分层架构设计 3. 分布式应用设计:挑战与解决方案 3.1 分布式架构设计:分布式软总线 …...
elementUI非常规数据格式渲染复杂表格(副表头、合并单元格)
效果 数据源 前端代码 (展示以及表格处理/数据处理) 标签 <el-table :data"dataList" style"width: 100%" :span-method"objectSpanMethod"><template v-for"(item, index) in headers"><el-table-column prop"…...
mysl数据库(八)事务、三种读现象
事务、三种读现象 文章目录 事务、三种读现象一、事务介绍二、事务的使用三、三种读现象 一、事务介绍 事务是mysql的一种机制,一个事务里可以包含多条sql语句。执行事务相当于拍了一张快照,在事务执行完提交以前可以回滚至最初的状态,当然事…...
【DVWA】File Inclusion文件包含实战
安能有术无道有道无心,乐得仁心仁义正心行道。 1.File Inclusion(Low) 相关代码分析 <?php// The page we wish to display $file $_GET[ page ];?>可以看到,服务器端对page参数没有做任何的过滤跟检查。 服务器期望用户的操作是点击下面的…...
(免费送源码)计算机毕业设计原创定制:Java+ssm+JSP+Ajax SSM棕榈校园论坛的开发
摘要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们传统的生活方式,包括工作,学习,社交…...
异常处理(4)throws
异常处理(4) throws 前言:运行时异常(RuntimeException)或它的子类可以不做处理,因为这类异常很普遍,若全部处理,可能会对程序的可读性和运行效率产生影响。此外,即使不使…...
点云欧式聚类,条件欧式聚类算法原理及推导
点云欧式聚类算法数学推导 点云欧式聚类(Euclidean Clustering for Point Clouds)是点云处理中常用的一种无监督聚类方法。它基于欧式距离将点云中的点划分为多个簇,常用于分割、目标检测等任务。以下是算法的数学推导和实现原理。 问题定义…...
每日十题八股-2024年11月27日
1.类型互转会出现什么问题吗? 2.为什么用bigDecimal 不用double ? 3.装箱和拆箱是什么? 4.Java为什么要有Integer? 5.Integer相比int有什么优点? 6.那为什么还要保留int类型? 7.说一下 integer的缓存 8.怎么…...
C++虚函数面试题及参考答案
什么是虚函数?它的作用是什么? 虚函数是在基类中使用关键字 virtual 声明的成员函数。当在派生类中重写(override)这个函数时,会根据对象的实际类型来调用相应的函数版本,而不是仅仅根据指针或引用的类型来…...
如何搭建C++环境--1.下载安装并调试Microsoft Visual Studio Previerw(Windows)
1.首先,打开浏览器 首先,搜索“Microsoft Visual Studio Previerw” 安装 1.运行VisualStudioSetup (1).exe 无脑一直点继续 然后就到 选择需要的语言 我一般python用pycharm Java,HTML用vscode(Microsoft Visual Studio cod…...
大数据新视界 -- Hive 函数应用:复杂数据转换的实战案例(下)(12/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
深入理解 TypeScript:联合类型与交叉类型的应用
在 TypeScript 的世界里,类型系统是核心特性之一,它提供了强大的工具来帮助开发者编写更安全、更可靠的代码。今天,我们将深入探讨 TypeScript 中的两个高级类型特性:联合类型(Union Types)和交叉类型&…...
fiddler抓包工具与requests库构建自动化报告
一. Fiddler 抓包工具 1.1 Fiddler 工具介绍和安装 Fiddler 是一款功能强大的 HTTP 调试代理工具,能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰,主要包含菜单栏、工具栏、树形标签栏和内容栏。 1.2 Fid…...
数据结构——排序算法第二幕(交换排序:冒泡排序、快速排序(三种版本) 归并排序:归并排序(分治))超详细!!!!
文章目录 前言一、交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本 快排1.2.2 挖坑法 快排1.2.3 lomuto前后指针 快排 二、归并排序总结 前言 继上篇学习了排序的前面两个部分:直接插入排序和选择排序 今天我们来学习排序中常用的交换排序以及非常稳定的归并排序 快排可是有多…...