Python 全栈体系【四阶】(三十八)

news2024/11/25 10:48:07

第五章 深度学习

八、目标检测

3. 目标检测模型

3.2 YOLO 系列
3.2.1 YOLOv1(2016)
3.2.1.1 基本思想

YOLO(You Only Look Once )是继 RCNN,fast-RCNN 和 faster-RCNN 之后,Ross Girshick 针对 DL 目标检测速度问题提出的另一种框架,其核心思想是生成 RoI+目标检测两阶段(two-stage)算法用一套网络的一阶段(one-stage)算法替代,直接在输出层回归 bounding box 的位置和所属类别。

之前的物体检测方法首先需要产生大量可能包含待检测物体的先验框, 然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所属类别的概率或者置信度,同时需要后处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。

YOLO 创造性的将物体检测任务直接当作回归问题(regression problem)来处理,将候选区和检测两个阶段合二为一。只需一眼就能知道每张图像中有哪些物体以及物体的位置。下图展示了各物体检测系统的流程图。

在这里插入图片描述

实际上,YOLO 并没有真正去掉候选区,而是采用了预定义候选区的方法,也就是将图片划分为 7*7 个网格,每个网格允许预测出 2 个边框,总共 49*2 个 bounding box,可以理解为 98 个候选区域,它们很粗略地覆盖了图片的整个区域。YOLO 以降低 mAP 为代价,大幅提升了时间效率。

在这里插入图片描述

每个网格单元预测这些框的 2 个边界框和置信度分数。这些置信度分数反映了该模型对框是否包含目标的可靠程度,以及它预测框的准确程度。置信度定义为:

Pr ⁡ ( Object )   ∗   IOU pred truth \Pr(\textrm{Object})\ *\ \textrm{IOU}_{\textrm{pred}}^{\textrm{truth}} Pr(Object)  IOUpredtruth

如果该单元格中不存在目标,则置信度分数应为零。否则,我们希望置信度分数等于预测框与真实值之间联合部分的交集(IOU)。

每个边界框包含 5 个预测: x x x y y y w w w h h h和置信度。 ( x , y ) (x,y) (xy)坐标表示边界框相对于网格单元边界框的中心。宽度和高度是相对于整张图像预测的。最后,置信度预测表示预测框与实际边界框之间的 IOU。

每个网格单元还预测 C C C个条件类别概率 Pr ⁡ ( Class i ∣ Object ) \Pr(\textrm{Class}_i | \textrm{Object}) Pr(ClassiObject)。这些概率以包含目标的网格单元为条件。每个网格单元我们只预测的一组类别概率,而不管边界框的的数量 B B B是多少。

3.2.1.2 网络结构

YOLOv1 网络有 24 个卷积层,后面是 2 个全连接层。我们只使用 1 × 1 1 \times 1 1×1降维层,后面是 3 × 3 3 \times 3 3×3卷积层。如下图所示:

在这里插入图片描述

为了快速实现快速目标检测,YOLOV1 还训练了快速版本。快速 YOLO 使用具有较少卷积层(9 层而不是 24 层)的神经网络,在这些层中使用较少的滤波器。除了网络规模之外,YOLO 和快速 YOLO 的所有训练和测试参数都是相同的。网络的最终输出是 7*7*30(1470)的预测张量。

3.2.1.3 训练过程与细节

(1)预训练。采用前 20 个卷积层、平均池化层、全连接层进行了大约一周的预训练;

(2)输入。输入数据为 224*224 和 448*448 大小的图像;

(3)采用相对坐标。通过图像宽度和高度来规范边界框的宽度和高度,使它们落在 0 和 1 之间;边界框 x x x y y y坐标参数化为特定网格单元位置的偏移量,边界也在 0 和 1 之间;

(4)损失函数

在这里插入图片描述

  • 损失函数由坐标预测、是否包含目标物体置信度、类别预测构成;
  • 其中 1 i o b j 1_i^{obj} 1iobj表示目标是否出现在网格单元 i i i中,表示 1 i j o b j 1_{ij}^{obj} 1ijobj网格单元 i i i中的第 j j j个边界框预测器“负责”该预测;
  • 如果目标存在于该网格单元中(前面讨论的条件类别概率),则损失函数仅惩罚分类错误;
  • 如果预测器“负责”实际边界框(即该网格单元中具有最高 IOU 的预测器),则它也仅惩罚边界框坐标错误。

(5)学习率。第一个迭代周期,慢慢地将学习率从 1 0 − 3 10^{-3} 103提高到 1 0 − 2 10^{-2} 102;然后继续以 1 0 − 2 10^{-2} 102的学习率训练 75 个迭代周期,用 1 0 − 3 10^{-3} 103的学习率训练 30 个迭代周期,最后用 1 0 − 4 10^{-4} 104的学习率训练 30 个迭代周期。

(6)避免过拟合策略。使用 dropout 和数据增强来避免过拟合。

3.2.1.4 优点与缺点

(1)优点

  • YOLO 检测物体速度非常快,其增强版 GPU 中能跑 45fps(frame per second),简化版 155fps
  • YOLO 在训练和测试时都能看到一整张图的信息(而不像其它算法看到局部图片信息),因此 YOLO 在检测物体是能很好利用上下文信息,从而不容易在背景上预测出错误的物体信息
  • YOLO 可以学到物体泛化特征

(2)缺点

  • 精度低于其它 state-of-the-art 的物体检测系统
  • 容易产生定位错误
  • 对小物体检测效果不好,尤其是密集的小物体,因为一个栅格只能检测 2 个物体
  • 由于损失函数的问题,定位误差是影响检测效果的主要原因,尤其是大小物体处理上还有待加强
3.2.2 YOLOv2(2016)

Ross Girshick 吸收 fast-RCNN 和 SSD 算法,设计了 YOLOv2(论文原名《YOLO9000: Better, Faster, Stronger 》),在精度上利用一些列训练技巧,在速度上应用了新的网络模型 DarkNet19,在分类任务上采用联合训练方法,结合 wordtree 等方法,使 YOLOv2 的检测种类扩充到了上千种,作者在论文中称可以检测超过 9000 个目标类别,所以也称 YOLO9000. YOLOv2 模型可以以不同的尺寸运行,从而在速度和准确性之间提供了一个简单的折衷,在 67FPS 时,YOLOv2 在 VOC 2007 上获得了 76.8 mAP。在 40FPS 时,YOLOv2 获得了 78.6 mAP,比使用 ResNet 的 Faster R-CNN 和 SSD 等先进方法表现更出色,同时仍然运行速度显著更快。

3.2.2.1 改进策略

YOLOv2 对 YOLOv1 采取了很多改进措施,以提高模型 mAP,如下图所示:

在这里插入图片描述

(1)Batch Normalization(批量正则化)。YOLOv2 中在每个卷积层后加 Batch Normalization(BN)层,去掉 dropout. BN 层可以起到一定的正则化效果,能提升模型收敛速度,防止模型过拟合。YOLOv2 通过使用 BN 层使得 mAP 提高了 2%。

(2)High Resolution Classifier(高分辨率分类器)。原来的 YOLO 网络在预训练的时候采用的是 224*224 的输入(这是因为一般预训练的分类模型都是在 ImageNet 数据集上进行的),然后在 detection 的时候采用 448*448 的输入,这会导致从分类模型切换到检测模型的时候,模型还要适应图像分辨率的改变。而 YOLOv2 则将预训练分成两步:先用 224*224 的输入从头开始训练网络,大概 160 个 epoch(表示将所有训练数据循环跑 160 次),然后再将输入调整到 448*448,再训练 10 个 epoch。注意这两步都是在 ImageNet 数据集上操作。最后再在检测的数据集上 fine-tuning,也就是 detection 的时候用 448*448 的图像作为输入就可以顺利过渡了。作者的实验表明这样可以提高几乎 4%的 mAP。

(3)Convolutional With Anchor Boxes。 YOLOv1 利用全连接层直接对边界框进行预测,导致丢失较多空间信息,定位不准。YOLOv2 去掉了 YOLOv1 中的全连接层,使用 Anchor Boxes 预测边界框,同时为了得到更高分辨率的特征图,YOLOv2 还去掉了一个池化层。由于图片中的物体都倾向于出现在图片的中心位置,若特征图恰好有一个中心位置,利用这个中心位置预测中心点落入该位置的物体,对这些物体的检测会更容易。所以总希望得到的特征图的宽高都为奇数。YOLOv2 通过缩减网络,使用 416*416 的输入,模型下采样的总步长为 32,最后得到 13*13 的特征图,然后对 13*13 的特征图的每个 cell 预测 5 个 anchor boxes,对每个 anchor box 预测边界框的位置信息、置信度和一套分类概率值。使用 anchor boxes 之后,YOLOv2 可以预测 13*13*5=845 个边界框,模型的召回率由原来的 81%提升到 88%,mAP 由原来的 69.5%降低到 69.2%.召回率提升了 7%,准确率下降了 0.3%。

(4)Dimension Clusters(维度聚类)。在 Faster R-CNN 和 SSD 中,先验框都是手动设定的,带有一定的主观性。YOLOv2 采用 k-means 聚类算法对训练集中的边界框做了聚类分析,选用 boxes 之间的 IOU 值作为聚类指标。综合考虑模型复杂度和召回率,最终选择 5 个聚类中心,得到 5 个先验框,发现其中中扁长的框较少,而瘦高的框更多,更符合行人特征。通过对比实验,发现用聚类分析得到的先验框比手动选择的先验框有更高的平均 IOU 值,这使得模型更容易训练学习。

在这里插入图片描述

VOC和COCO的聚类边界框尺寸。我们对边界框的维度进行k-means聚类,以获得我们模型的良好先验。左图显示了我们通过对k的各种选择得到的平均IOU。我们发现k=5给出了一个很好的召回率与模型复杂度的权衡。右图显示了VOC和COCO的相对中心。这两种先验都赞成更薄更高的边界框,而COCO比VOC在尺寸上有更大的变化。

(5)New Network(新的网络)。 YOLOv2 采用 Darknet-19,其网络结构如下图所示,包括 19 个卷积层和 5 个 max pooling 层,主要采用 3*3 卷积和 1*1 卷积,这里 1*1 卷积可以压缩特征图通道数以降低模型计算量和参数,每个卷积层后使用 BN 层以加快模型收敛同时防止过拟合。最终采用 global avg pool 做预测。采用 YOLOv2,模型的 mAP 值没有显著提升,但计算量减少了。

在这里插入图片描述

(6)直接定位预测(Direct location Prediction)。 Faster R-CNN 使用 anchor boxes 预测边界框相对先验框的偏移量,由于没有对偏移量进行约束,每个位置预测的边界框可以落在图片任何位置,会导致模型不稳定,加长训练时间。YOLOv2 沿用 YOLOv1 的方法,根据所在网格单元的位置来预测坐标,则 Ground Truth 的值介于 0 到 1 之间。网络中将得到的网络预测结果再输入 sigmoid 函数中,让输出结果介于 0 到 1 之间。设一个网格相对于图片左上角的偏移量是 c x , c y c_x,c_y cxcy。先验框的宽度和高度分别是 p w p_w pw p h p_h ph,则预测的边界框相对于特征图的中心坐标 ( b x , b y ) (b_x,b_y) (bxby)和宽高 b w , b h b_w,b_h bwbh的计算公式如下图所示。

在这里插入图片描述

其中, σ \sigma σ为 sigmoid 函数; t x , t y t_x,t_y tx,ty预测的坐标偏移值(中心点坐标); t w , t h t_w, t_h tw,th是尺度缩放,分别经过 sigmoid,输出 0-1 之间的偏移量,与 c x , c y c_x, c_y cx,cy相加后得到 bounding box 中心点的位置。

(7)细粒度特征(Fine-Grained Features)。 YOLOv2 借鉴 SSD 使用多尺度的特征图做检测,提出 pass through 层将高分辨率的特征图与低分辨率的特征图联系在一起,从而实现多尺度检测。YOLOv2 提取 Darknet-19 最后一个 max pool 层的输入,得到 26*26*512 的特征图。经过 1*1*64 的卷积以降低特征图的维度,得到 26*26*64 的特征图,然后经过 pass through 层的处理变成 13*13*256 的特征图(抽取原特征图每个 2*2 的局部区域组成新的 channel,即原特征图大小降低 4 倍,channel 增加 4 倍),再与 13*13*1024 大小的特征图连接,变成 13*13*1280 的特征图,最后在这些特征图上做预测。使用 Fine-Grained Features,YOLOv2 的性能提升了 1%。

在这里插入图片描述

(8)多尺度训练(Multi-Scale Training)。 YOLOv2 中使用的 Darknet-19 网络结构中只有卷积层和池化层,所以其对输入图片的大小没有限制。YOLOv2 采用多尺度输入的方式训练,在训练过程中每隔 10 个 batches,重新随机选择输入图片的尺寸,由于 Darknet-19 下采样总步长为 32,输入图片的尺寸一般选择 32 的倍数{320,352,…,608}(最小的选项是 320×320,最大的是 608×608。我们调整网络的尺寸并继续训练)。采用 Multi-Scale Training, 可以适应不同大小的图片输入,当采用低分辨率的图片输入时,mAP 值略有下降,但速度更快,当采用高分辨率的图片输入时,能得到较高 mAP 值,但速度有所下降。

在这里插入图片描述

YOLOv2比先前的检测方法更快,更准确。它也可以以不同的分辨率运行,以便在速度和准确性之间进行简单折衷
3.2.2.2 训练过程
  • 第一阶段:现在 ImageNet 分类数据集上训练 Darknet-19,此时模型输入为 224*224,共训练 160 轮
  • 第二阶段:将网络输入调整为 448*448,继续在 ImageNet 分类数据集上训练细调模型,共 10 轮,此时分类模型 top-1 准确率为 76.5%,而 top-5 准确度为 93.3%
  • 第三阶段:修改 Darknet-19 分类模型为检测模型,并在检测数据集上继续细调网络
3.2.2.3 优点与缺点

(1)优点

  • YOLOv2 使用了一个新的分类器作为特征提取部分,较多使用了 3*3 卷积核,在每次池化后操作后把通道数翻倍。网络使用了全局平均池化,把 1*1 卷积核置于 3*3 卷积核之间,用来压缩特征。也用了 batch normalization 稳定模型训练
  • 最终得出的基础模型就是 Darknet-19,包含 19 个卷积层,5 个最大池化层,运算次数 55.8 亿次,top-1 图片分类准确率 72.9%,top-5 准确率 91.2%
  • YOLOv2 比 VGG16 更快,精度略低于 VGG16

(2)缺点

  • YOLOv2 检测准确率不够,比 SSD 稍差
  • 不擅长检测小物体
  • 对近距离物体准确率较低
3.2.3 YOLOv3(2018)

YOLOv3 总结了自己在 YOLOv2 的基础上做的一些尝试性改进,有的尝试取得了成功,而有的尝试并没有提升模型性能。其中有两个值得一提的亮点,一个是使用残差模型,进一步加深了网络结构;另一个是使用 FPN 架构实现多尺度检测。

3.2.3.1 改进
  • 新网络结构:DarkNet-53;
  • 用逻辑回归替代 softmax 作为分类器;
  • 融合 FPN(特征金字塔网络),实现多尺度检测。
3.2.3.2 多尺度预测

YOLOv3 在基本特征提取器上添加几个卷积层,其中最后一个卷积层预测了一个三维张量——边界框,目标和类别预测。 在 COCO 实验中,为每个尺度预测 3 个框,所以对于 4 个边界框偏移量,1 个目标预测和 80 个类别预测,张量的大小为 N×N×[3 *(4 + 1 + 80)]。接下来,从前面的 2 个层中取得特征图,并将其上采样 2 倍。

YOLOv3 还从网络中的较前的层中获取特征图,并使用按元素相加的方式将其与上采样特征图进行合并。这种方法使得能够从上采样的特征图中获得更有意义的语义信息,同时可以从更前的层中获取更细粒度的信息。然后,再添加几个卷积层来处理这个组合的特征图,并最终预测出一个类似的张量,虽然其尺寸是之前的两倍。

最后,再次使用相同的设计来预测最终尺寸的边界框。因此,第三个尺寸的预测将既能从所有先前的计算,又能从网络前面的层中的细粒度的特征中获益。

3.2.3.3 网络结构

YOLOv3 在之前 Darknet-19 的基础上引入了残差块,并进一步加深了网络,改进后的网络有 53 个卷积层,取名为 Darknet-53,网络结构如下图所示(以 256*256 的输入为例):

在这里插入图片描述

以下是 YOLOv3 结构图:

在这里插入图片描述

从 YOLOv1 到 YOLOv2 再到 YOLO9000、YOLOv3, YOLO 经历三代变革,在保持速度优势的同时,不断改进网络结构,同时汲取其它优秀的目标检测算法的各种 trick,先后引入 anchor box 机制、引入 FPN 实现多尺度检测等。

在这里插入图片描述

不同backbone的各种网络在准确度,billions of operations,billion floating point operations per second和FPS上的比较

每个网络都使用相同的设置进行训练,并在 256×256 的图像上进行单精度测试。 运行时间是在 Titan X 上用 256×256 图像进行测量的。因此,Darknet-53 可与最先进的分类器相媲美,但浮点运算更少,速度更快。 Darknet-53 比 ResNet-101 更好,且速度快 1.5 倍。 Darknet-53 与 ResNet-152 具有相似的性能,但速度快 2 倍。

Darknet-53 也实现了最高的每秒浮点运算测量。 这意味着网络结构可以更好地利用 GPU,使它的评测更加高效,更快。这主要是因为 ResNet 的层数太多,效率不高。

3.2.3.4 效果

(1)兼顾速度与准确率。在 COCO 数据机上,mAP 指标与 SSD 模型相当,但速度提高了 3 倍;mAP 指标比 RetinaNet 模型差些,但速度要高 3.8 倍。

在这里插入图片描述

(2)小目标检测有所提升,但中等和更大尺寸的物体上的表现相对较差。

在这里插入图片描述

当然,YOLOv3 也有些失败的尝试,并未起到有效作用,请自行查阅原始论文。

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

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

相关文章

人工智能论文:BERT和GPT, GPT-2, GPT-3 的简明对比和主要区别

在BERT的论文里面: 2018.10 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT已经解释了BERT,GPT,ELMo的区别。 *ELMo为双向RNN,请忽略。 主要区别: BERT使用的是…

Qt QLCDNumber详解

1.简介 它提供了一个显示数字的显示屏控件,效果类似于现实世界中的液晶显示屏。它可以显示任何大小的数字。它可以显示十进制、十六进制、八进制或二进制数字。可以用setMode更改基数,用setSmallDecimalPoint更改小数点。 2.常用方法 以下是一些常用的…

nginx--第三方模块安装上传下载服务

第三方模块安装 准备 cd /usr/local/src/ yum install git -y git clone https://github.com/openresty/echo-nginx-module.git cd nginx-1.24.0 yum -y install perl-devel perl-ExtUtils-Embed zlib-devel gcc-c libtool openssl openssl-devel 编译安装 ./configure \--p…

【深度学习基础(2)】深度学习之前:机器学习简史

文章目录 一. 深度学习的起源1. 概率建模--机器学习分类器2. 早期神经网络--反向传播算法的转折3. 核方法 -- 忽略神经网络4. 决策树、随机森林和梯度提升机5. 神经网络替代svm与决策树 二. 深度学习与机器学习有何不同 可以这样说,当前工业界所使用的大部分机器学习…

Web安全研究(七)

NDSS 2023 开源地址:https://github.com/bfpmeasurementgithub/browser-fingeprint-measurement 霍普金斯大学 文章结构 introbackground threat model measurement methodology step1: traffic analysisstep2: fingerprint analysis dataset attack statisticsbro…

【通信中间件】Fdbus HelloWorld实例

Fdbus实例教程 Fdbus简介 Fdbus 全称 Fast Distributed Bus(高速分布式总线),提供IPCRPC功能。适用于多种OS: LinuxQNXAnroidOSWindow Fdbus本质是Socket,IPC基于Unix domain socket,RPC基于TCP。使用G…

诺基亚贝尔探访上海斯歌,共探创新合作新机遇

近日,上海斯歌K2 BPM迎来重要客户考察交流活动。来自诺基亚贝尔的首席数字官刘少勇一行莅临了上海斯歌K2 BPM 的武汉研发中心,并对上海斯歌在BPM业务流程管理领域的研发成果及交付能力给予了高度肯定。 此次活动不仅加深了双方的战略合作,也为…

【机器学习基础1】什么是机器学习、预测模型解决问题的步骤、机器学习的Python生态圈

文章目录 一. 什么是机器学习1. 概念2. 机器学习算法分类 二. 利用预测模型解决问题的步骤三. 机器学习的Python生态圈 一. 什么是机器学习 1. 概念 机器学习(Machine Learning,ML)是一门多领域的交叉学科,涉及概率论、统计学、…

Librosa:探索音频处理利器

Librosa:探索音频处理利器 音频处理在数据科学、音乐分析和语音识别等领域中扮演着重要角色。Python库Librosa是一个功能强大且广泛使用的工具,专门用于音频分析和处理。本文将介绍Librosa库的基本概念、主要功能以及常见应用场景,帮助读者深…

银行卡归属地查询API接口快速对接

银行卡归属地查询API接口指的是通过银行卡号查询该银行卡详细信息,包括银行卡名称、卡种、卡品牌、发卡行、编号以及归属地等信息,支持一千多家银行返回归属地信息,那么银行卡归属地查询API接口如何快速对接呢? 首先找到有做银行…

【linux-汇编-点灯之思路-程序】

目录 1. ARM汇编中的一些注意事项2. IMXULL汇编点灯的前序:3. IMXULL汇编点灯之确定引脚:4. IMXULL汇编点灯之引脚功能编写:4.1 第一步,开时钟4.2 第二步,定功能(MUX)4.3 第三步,定电…

Qt5 框架学习及应用 — 对象树

Qt 对象树 对象树概念Qt为什么使用对象树 ?将对象挂到对象树上 对象树概念 对象树:对于树的概念,相信许多学过数据结构的同学应该都不会陌生。在学习数据结构的时候我们所接触的什么二叉树、多叉树、哈夫曼树、AVL树、再到红黑树、B/B树………

【C++中的模板】

和你有关,观后无感................................................................................................................. 目录 前言 一、【模板的引入和介绍】 1、泛型编程 2、【模板的介绍】 二、【 函数模板】 2.1【模函数板的介绍】 1.…

win11 Terminal 部分窗口美化

需求及分析:因为在 cmd、anaconda prompt 窗口中输入命令较多,而命令输入行和输出结果都是同一个颜色,不易阅读,故将需求定性为「美化窗口」。 美化结束后,我在想是否能不安装任何软件,简单地通过调整主题颜…

STM32——点亮第一个LED灯

代码示例: #include "stm32f10x.h" // Device headerint main() {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_InitSt…

头歌实践教学平台:投影变换v2.0

第2关:两点透视 一. 任务描述 1. 本关任务 (1) 理解透视投影变换的方法; (2) 将main函数中的空白部分补充完整。 2. 输入 (1) 代码将自动输入一个边长为1的obj正方体模型,具体模型如下图: (2) 代码自动将模型投影到二维平面中心生成一个…

【MySQL | 第十篇】重新认识MySQL索引匹配过程

文章目录 10.重新认识MySQL索引匹配过程10.1匹配规则10.2举例&#xff1a;联合索引遇到范围查询&#xff08;>、<、between、like&#xff09;10.2.1例子一&#xff1a;>10.2.2例子二&#xff1a;>10.2.3例子三&#xff1a;between10.2.4例子四&#xff1a;like 10…

每日OJ题_DFS爆搜深搜回溯剪枝⑧_力扣980. 不同路径 III

目录 力扣980. 不同路径 III 解析代码 力扣980. 不同路径 III 980. 不同路径 III 难度 困难 在二维网格 grid 上&#xff0c;有 4 种类型的方格&#xff1a; 1 表示起始方格。且只有一个起始方格。2 表示结束方格&#xff0c;且只有一个结束方格。0 表示我们可以走过的空…

eclipse开启服务后,网页无法打开,如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

java发送请求2次开发-get请求json

因为你请求参数不为空&#xff0c;接口都会把这个参数带上 所以借鉴HttpPost类 继承这个类&#xff0c; 这个类是可以带消息的 httpgetwithentity&#xff0c;httpget请求带上消息 复写 构造方法复制过来进行使用 二次开发类让其get请求时可以发送json