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

目标检测文献阅读-YOLO:统一的实时目标检测(12.23-12.29)

目录

摘要

Abstract

1 引言

2 统一的检测

3 网络设计

4 训练

5 YOLOv5训练猫狗识别模型

5.1 项目代码整体结构介绍

5.2 数据集和预训练权重的准备

5.3 训练猫狗识别模型

5.3.1 修改数据配置文件

5.3.2 修改模型配置文件

5.3.3 训练模型

5.3.4 启用tensorbord查看参数

5.4 推理测试

总结


摘要

本周阅读的论文题目是《You Only Look Once: Unified, Real-Time Object Detection》(你只看一次:统一的实时目标检测)。本文中提出了一种单阶段的目标检测算法YOLO,YOLO舍弃候选框提取,直接采用回归的方法进行物体分类和候选框预测。并且与之前两阶段的基于分类器的方法不同,YOLO是直接在对应检测性能的损失函数上训练,整个模型是联合训练的。本文中YOLO将图片平均分成eq?S%5Ctimes%20S 个网格,每个网格分别负责预测中心点落在该网格内的目标。这样“分而治之”的策略避免了大量的重复计算,大大提升了目标检测的速度,每秒可以处理45帧图片,能够轻松地实时运行。YOLO还很好地泛化到新领域,使其成为要求快速、强大目标检测应用的理想选择。由此,YOLO迅速成为了实时目标检测领域的主流方法,并在多个应用场景中得到了成功实践。最后简单尝试在YOLOv5上使用一个小型的数据集训练了一个猫狗识别模型。

Abstract

This week's paper is titled "You Only Look Once: Unified, Real-Time Object Detection." In this paper, a single-stage object detection algorithm YOLO is proposed, which discards candidate box extraction and directly uses the regression method for object classification and candidate box prediction. And unlike the previous two-stage classifier-based approach, YOLO is directly trained on the loss function corresponding to the detection performance, and the whole model is jointly trained. In this paper, YOLO divides the image into eq?S%5Ctimes%20S grids, and each grid is responsible for predicting the target in which the center point falls within the grid. This "divide and conquer" strategy avoids a lot of double counting, greatly improves the speed of object detection, and can process 45 frames per second, which can be easily run in real time. YOLO also generalizes well into new areas, making it ideal for applications that require fast, robust object detection. As a result, YOLO has quickly become the mainstream method in the field of real-time object detection and has been successfully practiced in multiple application scenarios.Finally, a simple attempt was made to train a cat and dog recognition model on a small dataset on YOLOv5.

文献链接🔗:You Only Look Once: Unified, Real-Time Object Detection

1 引言

目前的目标检测系统重复利用分类器来执行检测。为了检测目标,这些系统为该目标提供一个分类器,并在不同的位置对其进行评估,并在测试图像中进行缩放。如R-CNN使用region proposal方法首先在图像中生成潜在的边界框,然后在这些提出的框上运行分类器。在分类之后,通过后处理对边界框进行修正,消除重复的检测,并根据场景中的其它目标重新定位边界框。这就使得目标检测流程太过于复杂,每个组件需要单独训练导致检测速度慢,难以优化。

而本文中将目标检测重构并看作为单一的回归问题,直接从图像像素到边界框坐标和类别概率,即you only look once(YOLO),就能预测出现的目标和位置。YOLO主要分为以下三步:

  • 将待测图像进行归一化处理:调整大小为448×448
  • 将处理后的图像输入CNN中进行特征提取以及边界框置信度的预测:进行卷积处理
  • 采用NMS算法过滤边界框获得最优结果:根据模型的置信度对所得到的检测进行阈值处理

f8df35ed390b497f943e744b839221f5.png

2 统一的检测

首先将输入图像分为eq?S%5Ctimes%20S 的网格。如果一个目标的中心落入一个网格单元中,该网格单元就负责检测该目标。

每个网格单元预测eq?B 个边界框和这些框的置信度分数。这些置信度分数反映了模型对该框包含对象的置信度,以及模型认为该框的预测准确度。置信度定义为eq?Pr%28Object%29%5Cast%20IOU_%7Bpred%7D%5E%7Btruth%7D 。如果该单元格中不存在目标,则置信度分数应为0。否则,置信度分数等于预测框与真实值之间的IOU。

每个边界框包含5个预测:eq?x%2Cy%2Cw%2Ch 和置信度。eq?%28x%2Cy%29 表示边界框相对于网格单元边界框的中心;宽度eq?w 和高度eq?h 是相对于整张图像预测的;置信度预测表示预测框与实际边界框之间的IOU。

每个网格单元还预测eq?C 个条件类别概率eq?Pr%28Class_i%7CObject%29 。这些概率以包含目标的网格单元为条件。本文中每个网格单元只预测的一组类别概率,而不管边界框的数量eq?B 是多少。

由此,乘上条件类别概率和单个框的置信度预测值就是每个框特定类别的置信度分数:

eq?Pr%28Class_i%7CObject%29%5Cast%20Pr%28Object%29%5Cast%20IOU_%7Bpred%7D%5E%7Btruth%7D%3DPr%28Class_i%29%5Cast%20IOU_%7Bpred%7D%5E%7Btruth%7D 

这些分数编码了该类出现在框中的概率以及预测框拟合目标的程度。

如下图所示,将图像分成eq?S%5Ctimes%20S 的网格,并且对于每个网格单元都预测eq?B 个边界框和这些边界框的置信度以及eq?C 个类别概率。这些预测结果被编码为eq?S%5Ctimes%20S%5Ctimes%20%28B%5Cast%205+C%29的张量。

616af78b3e7748d88d803589dc15fe28.png

在本文中使用eq?S%3D7 、eq?B%3D2 、eq?C%3D20 ,所以最终的预测是eq?7%20%5Ctimes%207%5Ctimes30 的张量。

3 网络设计

本文中YOLOv1的网络架构借鉴了GoogLeNet:

  • 网络输入:输入为448×448×3的图片;
  • 中间层:由若干卷积层和最大池化层组成,用于提取图片的抽象特征;一些卷积层交替使用 1×1减少层来减少特征图的深度;对于最后一个卷积层,输出7×7×1024的张量;
  • 全连接层:由2个全连接层组成,作为线性回归用来预测目标的位置和类别概率值;
  • 网络输出:输出7×7×30的预测结果,即每个网格两个边界框预测。

a4e5db1cc8a14d1299b22319b4bdbbf6.png

4 训练

预训练分类网络:使用网络的前20个卷积层再加平均池化层和全连接层,在其他大型数据集上进行预训练。网络输入为224×224,是由于有平均池化层,这样不论输入尺寸是多少,在和最后的全连接层连接时都可以保证相同的神经元数目。

训练检测网络:在预训练网络的基础上添加4个卷积层和2个全连接层,并且对权重进行随机初始化。

由于最后一层预测类别概率和边界框坐标,要通过图像宽度和高度来归一化边界框的宽度和高度,使它们落在0和1之间。同样,将边界框x和y坐标参数化为特定网格单元位置的偏移量,所以它们边界也在0和1之间。本文中最后一层使用线性激活函数,而其他层使用leaky ReLU激活函数:

fc514fad334d4f8c80460be711f5418b.png

YOLO中每个网格单元预测多个边界框,这可以使每个边界框预测器可以更好地预测特定大小、长宽比或目标的类别,从而改善整体召回率。

由此,得到由坐标预测损失、置信度预测损失和类别预测损失三部分组成的目标损失函数:

bbfbe0d1327240a0994d8ff8f858b7ca.png

由于定位误差比分类误差更大,为了优化模型输出的平方和误差,所以本文中增加了边界框坐标预测的损失eq?%5Clambda%20_%7Bcoord%7D%3D5 ,并减少了不包含目标边界框的置信度预测的损失eq?%5Clambda%20_%7Bnoobj%7D%3D0.5 。

分别来看,坐标预测损失:

2ca0581312244cc0a90661ffa809a5ab.png

  • eq?%5Cmathbb%7BI%7D%5E%7Bobj%7D_%7Bij%7D  :第eq?i 个网格单元中的第eq?j 个边界框预测器负责这个eq?obj 时为1,否则为0;
  • 第一行:负责检测目标的框中心点(x,y)定位误差;
  • 第二行:复杂检测目标的框的高宽(w,h)定位误差,为了增强小框的重要性,削弱大框的误差,本文中使用预测边界框宽度和高度的平方根。

置信度预测损失分为两部分:

  • 负责检测目标的预测框的置信度误差:

abe071acccb04b8fa5b825650ea425ea.png

  • 不负责检测目标的预测框的置信度误差:

d452245ea370477d80333414449bc26e.png

  •  eq?%5Cmathbb%7BI%7D%5E%7Bnoobj%7D_%7Bij%7D :第eq?i 个网格单元中的第eq?j 个边界框预测器不负责这个eq?obj 时为1,否则为0;与eq?%5Cmathbb%7BI%7D%5E%7Bobj%7D_%7Bij%7D 相反。

类别预测损失:

c415599297ba4ac4842221d08558b07e.png

  • eq?%5Cmathbb%7BI%7D%5E%7Bobj%7D_%7Bi%7D :这个eq?obj 中心出现在第eq?i 个网格单元中时为1,否则为0;eq?%5Cmathbb%7BI%7D%5E%7Bobj%7D_%7Bij%7D 为1,eq?%5Cmathbb%7BI%7D%5E%7Bobj%7D_%7Bi%7D 必为1。

5 YOLOv5训练猫狗识别模型

代码参考:GitHub - ultralytics/yolov5 at v5.0 

5.1 项目代码整体结构介绍

  • data:存放一些超参数的配置文件,这些yaml文件是用来配置训练集和测试集还有验证集的路径的,其中还包括目标检测的种类数和种类的名称
  • models:一些网络构建的配置文件和函数,其中包含了该项目的四个不同的版本,分别为是s、m、l、x,他们的检测测度分别都是从快到慢,但是精确度分别是从低到高
  • runs:包含一些训练运行时的信息,可以作为评判标准来告诉我们所训练的效果如何,帮助我们更好的研究模型的性能,还有目标检测的运行结果
  • utils:存放的是工具类的函数,里面有loss函数,metrics函数,plots函数等等
  • weights:放置训练好的权重参数
  • detect.py:利用训练好的权重参数进行目标检测,可以进行图像、视频和摄像头的检测
  • train.py:训练自己的数据集的函数
  • test.py:测试训练的结果的函数
  • requirements.txt:这是一个文本文件,里面写着使用yolov5项目的环境依赖包的一些版本,可以利用该文本导入相应版本的包 

14497d2c58b84687bd8cc5b62d0cca6f.png

5.2 数据集和预训练权重的准备

数据集分为图像和标签,而图像和标签里面又分为训练集和测试集,本次猫狗识别使用的训练集大小为1000张图片,测试集大小为125张图片:

1b6341f0760a4a12a757097bfcd9345c.png

图像标注可以参考如下方法:make-sense | 图像标注工具_makesense标注-CSDN博客

一般为了缩短网络的训练时间,并达到更好的精度,一般通过加载预训练权重进行网络的训练。预训练权重越大,训练出来的精度就会相对来说越高,但是其检测的速度就会越慢。所以本次猫狗识别中采用了较小的一个预训练权重yolov5s.pt:

ac1b673199664b88aea61b266320e3ed.png

5.3 训练猫狗识别模型

训练目标检测模型需要修改两个yaml文件中的参数:data目录下的相应的yaml文件和model目录文件下的相应的yaml文件。然后修改train.py中主函数的一些参数就可以训练模型了。

5.3.1 修改数据配置文件

找到data目录下的voc.yaml文件,将该文件复制一份,将复制的文件重命名为CatDog.yaml:

e8413431f4724c918ecba5c9a9b0ab75.png

修改数据集位置、检测的类别数和类别名称:

c0f076b99ba6447f9b0f0a28b0da5a76.png

5.3.2 修改模型配置文件

同样,找到models目录下的yolov5s.yaml文件,将该文件复制一份,将复制的文件重命名为yolov5s_CatDog.yaml:

49c12e616c304ad7ab06946cff493dcb.png

修改类别数:

8bbc8e0ed2b04df68b4fe46e6956e355.png

5.3.3 训练模型

找到主函数的入口,这里面有模型的主要参数。模型的主要参数解析如下所示:

  • --weights:初始化的权重文件的路径地址
  • --cfg:模型yaml文件的路径地址
  • --data:数据yaml文件的路径地址
  • --hyp:超参数文件路径地址
  • --epochs:训练轮次
  • --batch-size:喂入批次文件的多少
  • --img-size:输入图片尺寸
  • --rect:是否采用矩形训练,默认False
  • --resume:接着打断训练上次的结果接着训练
  • --nosave:不保存模型,默认False
  • --notest:不进行test,默认False
  • --noautoanchor:不自动调整anchor,默认False
  • --evolve:是否进行超参数进化,默认False
  • --bucket:谷歌云盘bucket,一般不会用到
  • --cache-images:是否提前缓存图片到内存,以加快训练速度,默认False
  • --image-weights:使用加权图像选择进行训练
  • --device:训练的设备,cpu;0(表示一个gpu设备cuda:0);0,1,2,3(多个gpu设备)
  • --multi-scale:是否进行多尺度训练,默认False
  • --single-cls:数据集是否只有一个类别,默认False
  • --adam:是否使用adam优化器
  • --sync-bn:是否使用跨卡同步BN,在DDP模式使用
  • --local_rank:DDP参数,请勿修改
  • --workers:最大工作核心数
  • --project:训练模型的保存位置
  • --name:模型保存的目录名称
  • --exist-ok:模型目录是否存在,不存在就创建

需要修改的是weights、cfg、data这前三个参数和按需修改epochs、batch-size、workers:

4481127d70e341e3a71b4af13fb79a8e.png

然后运行train.py函数训练模型:

7a80c3c2ad6f48b986a54a5257aa22ce.png

ea424ed3c9eb4352bdf8237d97b7a6d1.png

5.3.4 启用tensorbord查看参数

在pycharm的命令控制终端,输入tensorboard --logdir=runs/train,就会出现一个网址地址,将那行网址复制下来到浏览器打开就可以看到训练的过程:

79acb1b55e114fdb88cf2fc261e361b9.png

5.4 推理测试

等到数据训练好了以后,就会在主目录下产生一个runs文件夹,在runs/train/exp/weights目录下会产生两个权重文件,一个是最后一轮的权重文件,一个是最好的权重文件。除此以外还会产生一些验证文件的图片等一些文件,如下:

8171f356e08f4c388e3c1a2212839623.jpeg

修改detect.py文件中的weights和source:

d2b4e5ed7bf84c07a719d5e287145352.png

就可以对图片、视频进行推理:

67a458ee937543b69c6cafe952da230c.png

图片推理结果: 

ebdadd7c24c541f6bc06566287c9500e.jpeg

c9e1a6b4664946c194a455e3cdb1dc68.jpeg

视频推理结果:

a5f6559ea19e4a09b4f5c7b1eb596a43.png

总结

YOLO使用单阶段网络,采用回归的方法进行物体分类和候选框预测。YOLOv1的优点如下:

  • 速度非常快:由于将检测视为回归问题,所以不需要复杂的流程,能达到每秒45帧的检测速度;
  • 全局推理:YOLOv1在训练期间和测试时会看到整个图像,所以它隐式地编码了关于类的上下文信息以及它们的外形,能够减少背景块误检;
  • 学习目标的泛化表征:YOLOv1能学习到目标非常通用的表示,当从自然图像到艺术品等其它领域泛化时,具有更优秀的表现。

虽然YOLOv1的检测速度很快,但是相应的它存在一些缺点:

  • 准确度低:YOLOv1在准确度上仍然落后于最先进的检测系统;
  • 小目标的检测效果不好:虽然YOLOv1可以快速识别图像中的目标,但它仍在努力精确定位一些目标,尤其是一些小目标,因为每个网格单元只预测两个框,只能有一个类别。

 

相关文章:

目标检测文献阅读-YOLO:统一的实时目标检测(12.23-12.29)

目录 摘要 Abstract 1 引言 2 统一的检测 3 网络设计 4 训练 5 YOLOv5训练猫狗识别模型 5.1 项目代码整体结构介绍 5.2 数据集和预训练权重的准备 5.3 训练猫狗识别模型 5.3.1 修改数据配置文件 5.3.2 修改模型配置文件 5.3.3 训练模型 5.3.4 启用tensorbord查看…...

埃斯顿机器人程序案例多个点位使用变量

多个点位使用变量取放...

JVM实战—4.JVM垃圾回收器的原理和调优

大纲 1.JVM的新生代垃圾回收器ParNew如何工作 2.JVM老年代垃圾回收器CMS是如何工作的 3.线上部署系统时如何设置垃圾回收相关参数 4.新生代垃圾回收参数如何优化 5.老年代的垃圾回收参数如何优化 6.问题汇总 1.JVM的新生代垃圾回收器ParNew如何工作 (1)JVM的核心运行原理…...

【项目日记(8)】第三层:页缓存的具体实现(下)

目录 前言1. 地址空间上的内存使用情况2. 页缓存合并内存的代码实现3. 总结以及对代码的拓展 前言 请先看完上一篇文章页缓存的具体实现(上) 1. 地址空间上的内存使用情况 在地址空间中,一共是4GB大小的空间,地址从0000 0000到FFFF FFFF。 第0页的起始地址是0 第…...

算法题(19):多数元素

审题: 数组不为空且一定存在众数。需要返回众数的数值 思路: 方法一:哈希映射 先用哈希映射去存储对应数据出现的次数,然后遍历找到众数并输出 当然也可以在第一次映射的过程中就维护一个出现次数最多的数据,这样子就可…...

==、equals、hashcode

和equals区别 用于基本数据类型,比较的是值,用于引用类型,比较的是对象的内存地址。java中只有值传递,因此对于引用类型,实际比较的引用的内存地址的值。equals不能用来判断基本数据类型,只能判断引用数据…...

《优势谈判》——阅读笔记

投入 思想准备:一个谈判是要双赢的,至少需要让对手这么认为;进行一场谈判,需要看到对面是否真的愿意和你谈判 谈判技巧 永远不要接受首次报份;如果对方临时变更了要求,则可以通过立刻要求对方做补偿等方…...

mybatis-plus 用法总结

MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,旨在简化开发者的 CRUD 操作。它在 MyBatis 的基础上提供了更多的功能和便利性,如代码生成器、分页插件、性能分析插件等,使开发者能够更高效地进行数据库操作。MyBatis-P…...

华为开源自研AI框架昇思MindSpore应用案例:ICNet用于实时的语义分割

ICNet用于实时的语义分割 ICNet 被广泛应用于实时的语义分割领域。它在处理图像数据时,能够以较高的效率进行语义分割操作,为相关领域的研究和实际应用提供了有力的支持。ICNet 的实时性使其在众多场景中都具有很大的优势,例如在视频处理、自…...

CAN201 Introduction to Networking(计算机网络)Pt.2 传输层

文章目录 3. Transport Layer(传输层)3.1 Multiplexing and demultiplexing(多路复用和多路分解)3.2 Connectionless transport:UDP3.3 Principles of reliable data transfer3.4 Pipelined communication3.5 TCP: con…...

HashMap

一、什么是 基于哈希表的数据结构允许以O(1)的时间复杂度进行元素的插入,查询和删除 二、底层结构 1.数据结构 在1.8以后,数组链表红黑树 数组:HashMap底层是一个数组,每个数组元素存放一个链表或红黑树(在JDK 1.…...

JavaScript甘特图 dhtmlx-gantt

背景 需求是在后台中,需要用甘特图去展示管理任务相关视图,并且不用依赖vue,兼容JavaScript原生开发。最终使用dhtmlx-gantt,一个半开源的库,基础功能免费,更多功能付费。 甘特图需求如图: 调…...

基于无线传感器网络的无线光照强度采集系统(附详细使用教程+完整代码+原理图+完整课设报告)

🎊项目专栏:【Zigbee课程设计系列文章】(附详细使用教程完整代码原理图完整课设报告) 前言 👑由于无线传感器网络(也即是Zigbee)作为🌐物联网工程的一门必修专业课,具有…...

单元测试中创建多个线程测试 ThreadLocal

单元测试中创建多个线程测试 ThreadLocal 在单元测试中,可以通过以下方式创建多个线程来测试 ThreadLocal 的行为。 目标 验证 ThreadLocal 在多线程环境下是否能正确隔离每个线程的数据。 实现步骤 定义需要测试的类 包含 ThreadLocal 对象的类,提供…...

【 Sonarqube】可视化Java项目单元测试覆盖率统计框架搭建

一、项目背景: 一个小公司的朋友反应他们那边Java项目单元测试有,但还没有可视化统计覆盖率数据,没法统计就不能直观的看到单测的覆盖率,Java的覆盖率统计框架还是比较成熟,部署起来也不是很难,下面我们逐…...

安装CentOS(新手教程超详细)

安装CentOS 1. 安装虚拟机 1.1下载虚拟机软件 VMware(VMware by Broadcom - Cloud Computing for the Enterprise) 我们使用的是VMware Workstation VirtualBox(Downloads – Oracle VirtualBox) 如果使用的是Windows系统,下载带for Windows hosts的版本 1.2…...

一起来看--红黑树

【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 红黑树是一种自平衡的二叉搜索树,广泛应用于计算机科学中,尤其是在实现关联数组和集合时。它的设计旨在确保在最坏情况下,基本动态集合操作(如插入、删除和查找&am…...

【Hackthebox 中英 Write-Up】通过 POST 请求绕过前端限制:基于 Cookie 的认证与数据提取实操指南

Bypassing Frontend Restrictions with POST Requests: A Practical Guide to Cookie-Based Authentication and Data Extraction 通过 POST 请求绕过前端限制 Objective | 目标 The purpose of this exercise is to understand how POST requests work and how to authentica…...

comctl32.dll没有被指定在window运行怎么解决?

一、文件丢失问题:comctl32.dll没有被指定在Windows上运行怎么解决? comctl32.dll是Windows操作系统中的一个重要组件,它负责提供用户界面元素,如按钮、对话框和列表视图等。当系统提示“comctl32.dll没有被指定在Windows上运行”…...

EC-Final 2024游记

长篇流水账预警 Day -? 某天上乒乓课时看到懋神群里了我们队问有时间打ec吗,才知道我们最终还是进ec了,也成为了我们学校唯一一支没有金牌的ec队伍,然而此时整个队伍板子都扔了,一个多月没做过题,我脑子就…...

我的Opencv

1.安装Opencv pip install opencv-python 2.读取图像 3.写图像 4. 显示图像 5.waitKey() 6.读视频并播放视频 7.写视频 8. 获取摄像头视频 9.色彩转换 # BGR to GRAY imgGRAY cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # BGR to RGB imgRGB cv2.cvtColor(img, cv2.COLOR_…...

Pandas-缺失数据处理

文章目录 一. 简介1. 缺失数据简介2. NaN简介① 查看NaN,NAN,nan② 两个NaN也不相等③ isnull/isna方法④ notnull/notna 二. 加载缺失值1. 来源2. 加载数据,不包含默认缺失值3.加载数据,手动指定缺失值 三.处理缺失值1. 加载数据…...

windows编译llama.cpp GPU版本

Build 指南 https://github.com/ggerganov/llama.cpp/blob/master/docs/build.md 一、Prerequire 具体步骤(以及遇到的坑): 如果你要使用CUDA,请确保已安装。 1.安装 最新的 cmake, git, anaconda, pip 配置pyt…...

绝美的数据处理图-三坐标轴-散点图-堆叠图-数据可视化图

clc clear close all %% 读取数据 load(MyColor.mat) %读取颜色包for iloop 1:25 %提取工作表数据data0(iloop) {readtable(data.xlsx,sheet,iloop)}; end%% 解析数据 countzeros(23,14); for iloop 1:25index(iloop) { cell2mat(table2array(data0{1,iloop}(1,1)))};data(i…...

计算机网络500题2024-2025学年度第一学期复习题库(选择、判断、填空)

一、单选题 1、( )是实现两个同种网络互连的设备 A. 网桥 B. 网关 C. 集线器 D. 路由器 2、10M以太网有三种接口标准,其中10BASE-T采用( ) A. 双绞线 B. 粗同轴电缆 C. 细同轴电缆 D. 光纤 3、HDLC是哪…...

python学opencv|读取图像(二十二)使用cv2.polylines()绘制多边形

【1】引言 前序学习进程中,已经掌握了使用pythonopencv绘制线段、矩形和圆形的基本操作,相关链接包括且不限于: python学opencv|读取图像(十八)使用cv2.line创造线段-CSDN博客 python学opencv|读取图像(…...

skywalking配置项indexReplicasNumber不生效问题

indexReplicasNumber: 的配置原来是 indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}, 修改为 indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} 但从es查询索引显示的副本数还是0,删除es中的数据,重启sk…...

2024年终回顾

前言 很久没有更新博客,因为工作内容主要是内场开发,后来有点和互联网脱轨,断断续续上来看一下。这个总结应该也很简单,涉及以下的几个内容进行逐一说明 一、就业问题 这个问题可能很尖锐,从大环境来说,去…...

【深度学习】卷积网络代码实战ResNet

ResNet (Residual Network) 是由微软研究院的何凯明等人在2015年提出的一种深度卷积神经网络结构。ResNet的设计目标是解决深层网络训练中的梯度消失和梯度爆炸问题,进一步提高网络的表现。下面是一个ResNet模型实现,使用PyTorch框架来展示如何实现基本的…...

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 …...

第 29 章 - ES 源码篇 - 网络 IO 模型及其实现概述

前言 本文介绍了 ES 使用的网络模型,并介绍 transport,http 接收、响应请求的代码入口。 网络 IO 模型 Node 在初始化的时候,会创建网络模块。网络模块会加载 Netty4Plugin plugin。 而后由 Netty4Plugin 创建对应的 transports&#xff0…...

工作流引擎之Flowable

一、概述 Flowable是一个使用Java编写的轻量级业务流程引擎,专为处理复杂业务流程而设计。作为业务流程管理(BPM)领域的重要工具,Flowable不仅支持BPMN 2.0标准的流程定义,还提供了丰富的API接口和可视化工具&#xf…...

学习threejs,THREE.CircleGeometry 二维平面圆形几何体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.CircleGeometry 圆形…...

网络编程UDP—socket实现(C++)

网络编程UDP—socket实现 前言UDP客户端和服务端UDP使用场景UDP socket C代码示例服务端接收数据示例(bindrecvfrom 阻塞式接收信息):bind 绑定-监听 函数为什么一般都是监听所有网络接口呢?为什么需要用inet_addr进行转换&#x…...

个人用途虚拟机VM 17安装Ubuntu 16.04.5 图解

1.安装环境软件准备工作 1)下载 免费版VMware Pro 17 https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.6.1/24319023/windows/core/VMware-workstation-17.6.1-24319023.exe.tar 2)Ubuntu 16.04.5 LTS 64位 64-bit PC (AMD64) desktop imag…...

音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…...

安卓project级别build.gradle和主module的build.gradle

以穿山甲为例讲解 如下图 gradle和gradle插件对应关系 Android Gradle 插件 8.7 版本说明 | Android Studio | Android Developers gradle对应在项目里的配置为 gradle插件对应的位置为...

【Qt】多元素控件:QListWidget、QTableWidget、QTreeWidget

目录 QListWidget 核心属性: 核心方法: 核心信号: 例子: QListWidgetItem QTableWidget 核心方法: 核心信号 QTableWidgetItem 例子: QTreeWidget 核心方法: 核心信号&#xff1a…...

服务器nfs文件共享

1. 配置 NFS 服务器(NFS Server) 在 Ubuntu/Debian 上: sudo apt update sudo apt install nfs-kernel-server在 CentOS/RHEL 上: sudo yum install nfs-utils1.2 创建共享目录 选择一个要共享的目录,并确保该目录的权限正确设置。例如,假设我们要共享 /srv/nfs 目录…...

【hackmyvm】soul靶机wp

tags: HMVrbash绕过图片隐写PHP配置解析 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集3. 图片解密3.1. 爆破用户名3.2. 绕过rbash3.3. 提权检测 4. 获取webshell4.1. 修改php配置 5. www-data提权gabriel6. gabriel提取到Peter7. Peter提权root 靶机链接 https://ha…...

安装winserver2008R2虚拟机步骤

一、服务器系统介绍 1.1什么是服务器? 服务器英文名称为“Server”,指的是网络环境下为客户机(Client)提供某种服务的专用计算机,服务器安装有网络操作系统(如Windows 2000 Server、Linux、Unix等)和各种服务器应用系统软件(如Web服务、电子…...

跟着 8.6k Star 的开源数据库,搞 RAG!

过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目。然而,随着项目数量的增加,不少用户反馈:“搜索功能不好用,找不到想要的项目!” 这让我意识到,仅仅收录项目是不够的,还…...

RCE漏洞

一、课程知识点 1、远程代码执行漏洞原理与利用 2、常见的代码执行函数 3、常见的命令执行函数 4、常见的绕过姿势 5、命令执行漏洞防范 二、技术目标 1、掌握命令执行漏洞的原理 2、掌握 PHP 命令执行和代码执行的相关函数 3、掌握常见的绕过姿势 4、掌握代码执行漏洞防御措施…...

数据通信系统的主要性能指标

1.码元速率 n 误码率 2.数据传输速率 n 误比特率 3.时延 n 往返时间 RTT 1. 码元速率 n 码元 ( Code element) n 码元是 数字信号的计量单位 ( Signal element ), 又称为符号( Symbol )。 n 码元 是指在使用时域表示…...

C语言中的贪心算法

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前最优解的算法,希望通过局部最优解的选择,最终得到全局最优解。它常用于解决最优化问题,如最小生成树、最短路径等。本文将从理论到实践,逐步引导…...

使用envoyfilter添加请求头

该envoyfilter实现了这样一个功能,如果请求头中含有Sw8,则添加请求头HasSw8: true。 1. 内嵌lua脚本 apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata:name: add-header-filternamespace: demo-bookinfo # 可根据实际情况调整命…...

【机器学习】回归

文章目录 1. 如何训练回归问题2. 泛化能力3. 误差来源4. 正则化5. 交叉验证 1. 如何训练回归问题 第一步:定义模型 线性模型: y ^ b ∑ j w j x j \hat{y} b \sum_{j} w_j x_j y^​b∑j​wj​xj​ 其中,( w ) 是权重,( b )…...

Elasticsearch名词解释

文章目录 1.什么是Elasticsearch?2.什么是elastic stack(ELK)?3.什么是Lucene?4.什么是文档(document)?5.什么是词条(term)?6.什么是正向索引?7.什么是倒排索引?8.ES中的索引(index)9.映射(Mapping)10.DSL11.elastcisearch与my…...

把Huggingface下载的arrow数据集转化为json格式

Arrow2json 使用默认的Huggingface路径 以allenai/tulu-3-sft-mixture数据集为例。 使用load_dataset即可: from datasets import load_dataset# 加载数据集 dataset load_dataset("allenai/tulu-3-sft-mixture")# 指定保存路径 output_dir "~/…...

手机联系人 查询 添加操作

Android——添加联系人_android 添加联系人-CSDN博客 上面连接添加联系人已测试 是可以 Android : 获取、添加、手机联系人-ContentResolver简单应用_contentresolver 添加联系人-CSDN博客...