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

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection - 密集目标检测中的焦点损失(arXiv 2018)

  • 摘要
  • 1. 引言
  • 2. 相关工作
  • References

声明:此翻译仅为个人学习记录

文章信息

  • 标题:RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)
  • 作者:Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár
  • 文章链接:https://arxiv.org/pdf/1708.02002.pdf
  • 文章代码:https://github.com/facebookresearch/Detectron
    (推荐:亦可参考 图像 处理 - 开源算法集合)

摘要

  迄今为止,最高精度的目标检测器是基于R-CNN推广的两阶段方法,其中将分类器应用于候选目标位置的稀疏集。相比之下,对可能的目标位置进行定期、密集采样的单级检测器有可能更快、更简单,但迄今为止的精度落后于两级检测器。在本文中,我们调查了为什么会出现这种情况。我们发现,在密集检测器的训练过程中遇到的极端前景-背景类不平衡是主要原因。我们建议通过重塑标准交叉熵损失来解决这种类别不平衡问题,使其对分配给分类良好的示例的损失进行加权。我们的新颖的Focal Loss将训练集中在一组稀疏的困难例子上,并防止在训练过程中大量容易出现的阴性影响淹没检测器。为了评估我们损失的有效性,我们设计并训练了一个简单的密集检测器,我们称之为RetinaNet。我们的结果表明,当使用焦点损失进行训练时,RetinaNet能够与以前的单级检测器的速度相匹配,同时超过所有现有最先进的两级检测器的精度。代码位于:https://github.com/facebookresearch/Detectron.

在这里插入图片描述

图1. 我们提出了一种新的损失,我们称之为焦点损失,它在标准交叉熵标准中添加了一个因子 ( 1 − p t ) γ (1−p_t)^γ (1pt)γ。设置 γ > 0 γ>0 γ>0可以减少分类良好的示例的相对损失 ( p t > . 5 ) (p_t>.5) (pt>.5),从而更加关注难以分类的错误示例。正如我们的实验所证明的那样,所提出的焦点损失能够在大量简单背景示例的情况下训练高精度的密集目标检测器。

在这里插入图片描述

图2. COCO test-dev的速度(ms)与精度(AP)。由于焦点损失,我们的简单单级RetinaNet检测器优于以前的所有单级和两级检测器,包括[20]中报道最好的Faster R-CNN[28]系统。我们展示了在五个尺度(400-800像素)上具有ResNet-50-FPN(蓝色圆圈)和ResNet-101-FPN(橙色菱形)的RetinaNet变体。忽略低精度状态(AP<25),RetinaNet形成了所有当前检测器的上包络,改进的变体(未显示)达到40.8 AP。详细信息见§5。

1. 引言

  目前最先进的目标检测器是基于两阶段、提案驱动机制。正如在R-CNN框架[11]中推广的那样,第一阶段生成候选目标位置的稀疏集,第二阶段使用卷积神经网络将每个候选位置分类为前景类之一或背景。通过一系列的进步[10,28,20,14],这个两阶段的框架在具有挑战性的COCO基准[21]上始终实现了最高的准确性。

  尽管两级检测器取得了成功,但一个自然的问题是:一个简单的单级检测器能达到类似的精度吗?单级检测器应用于目标位置、尺度和纵横比的规则、密集采样。最近对单级检测器的研究,如YOLO[26,27]和SSD[22,9],证明了有希望的结果,与最先进的两级方法相比,产生了精度在10-40%以内的更快检测器。

  本文进一步推进了这一概念:我们提出了一种单级目标检测器,它首次与更复杂的两级检测器的最先进的COCO AP相匹配,如特征金字塔网络(FPN)[20]或Faster R-CNN[28]的Mask R-CNN[14]变体。为了实现这一结果,我们将训练过程中的类不平衡确定为阻碍单级检测器实现最先进精度的主要障碍,并提出了一种新的损失函数来消除这一障碍。

  通过两阶段级联和采样启发式算法,解决了类CNN检测器中的类不平衡问题。提议阶段(例如,选择性搜索[35]、边缘框[39]、深度掩码[24,25]、RPN[28])迅速将候选目标位置的数量缩小到一个小数字(例如,1-2k),过滤掉大多数背景样本。在第二个分类阶段,执行采样启发法,如固定的前景与背景比率(1:3)或在线困难示例挖掘(OHEM)[31],以保持前景和背景之间的可管理平衡。

  相比之下,单级检测器必须处理在图像上定期采样的一组更大的候选目标位置。在实践中,这通常相当于列举了大约100k个密集覆盖空间位置、尺度和纵横比的位置。虽然也可以应用类似的采样启发法,但它们效率低下,因为训练过程仍然由容易分类的背景示例主导。这种低效率是目标检测中的一个经典问题,通常通过自举[33,29]或困难示例挖掘[37,8,31]等技术来解决。

  在本文中,我们提出了一个新的损失函数,作为处理类别不平衡的先前方法的更有效的替代方案。损失函数是一个动态缩放的交叉熵损失,其中缩放因子随着对正确类的置信度增加而衰减为零,见图1。直观地说,这个缩放因子可以在训练过程中自动降低简单示例的贡献,并快速将模型集中在困难示例上。实验表明,我们提出的Focal Loss使我们能够训练高精度的单级检测器,该检测器显著优于使用采样启发法或困难示例挖掘进行训练的替代方案,这是以前训练单级检测器的最先进技术。最后,我们注意到焦点损失的确切形式并不重要,我们表明其他实例可以获得类似的结果。

  为了证明所提出的焦点损失的有效性,我们设计了一个名为RetinaNet的简单单级目标检测器,该检测器因其对输入图像中目标位置的密集采样而得名。它的设计特点是一个高效的网络内特征金字塔和使用锚框。它借鉴了[22,6,28,20]中的各种最新思想。RetinaNet高效准确;我们的最佳模型基于ResNet-101-FPN主干,在以每秒5帧的速度运行时,实现了39.1的COCO test-dev AP,超过了之前公布的单级和两级检测器的最佳模型结果,见图2。

2. 相关工作

经典目标检测器:将分类器应用于密集图像网格的滑动窗口范式有着悠久而丰富的历史。最早的成功之一是LeCun等人的经典工作。他将卷积神经网络应用于手写数字识别[19,36]。Viola和Jones[37]使用增强的目标检测器进行人脸检测,导致了此类模型的广泛采用。HOG[4]和整体通道特征[5]的引入产生了行人检测的有效方法。DPM[8]有助于将密集检测器扩展到更通用的目标类别,并在PASCAL[7]上取得了多年的最佳结果。虽然滑动窗口方法是经典计算机视觉中的主要检测范式,但随着深度学习[18]的复兴,接下来描述的两阶段检测器很快就主导了目标检测。

两阶段检测器:现代目标检测的主导范式是基于两阶段方法。正如选择性搜索工作[35]所开创的那样,第一阶段生成一组稀疏的候选提案,该候选提案应包含所有目标,同时过滤掉大多数阴性位置,第二阶段将提案分类为前景类/背景。R-CNN[11]将第二阶段分类器升级为卷积网络,从而在精度上获得了很大的提高,并开创了目标检测的现代时代。多年来,R-CNN在速度[15,10]和使用学习目标提案[6,24,28]方面都有所改进。区域提案网络(RPN)将提案生成与第二阶段分类器集成到单个卷积网络中,形成更快的R-CNN框架[28]。已经提出了对该框架的许多扩展,例如[20,31,32,16,14]。

单级检测器:OverFeat[30]是第一个基于深度网络的现代单级目标检测器之一。最近,SSD[22,9]和YOLO[26,27]对一阶段方法重新产生了兴趣。这些检测器经过了速度调整,但其精度落后于两阶段方法。SSD的AP降低了10-20%,而YOLO则专注于更极端的速度/精度权衡。见图2。最近的工作表明,只需降低输入图像分辨率和提案数量,就可以快速实现两阶段检测器,但即使计算预算更大,单阶段方法的精度也落后[17]。相比之下,这项工作的目的是了解单级检测器在以类似或更快的速度运行时是否能够匹配或超过两级检测器的精度。

  我们的RetinaNet检测器的设计与以前的密集检测器有很多相似之处,特别是RPN[28]引入的“锚”概念,以及SSD[22]和FPN[20]中特征金字塔的使用。我们强调,我们的简单检测器取得了最佳结果,这不是基于网络设计的创新,而是由于我们的新损失。

类别不平衡:经典的单阶段目标检测方法,如增强检测器[37,5]和DPM[8],以及最近的方法,如SSD[22],在训练过程中都面临着较大的类别不平衡。这些检测器评估每个图像104-105个候选位置,但是只有少数位置包含目标。这种不平衡导致了两个问题:(1)训练效率低下,因为大多数位置都是容易产生阴性影响的,没有提供有用的学习信号;(2) 总的来说,简单的阴性影响可能会淹没训练,并导致退化模型。一种常见的解决方案是执行某种形式的困难阴性挖掘[33,37,8,31,22],在训练或更复杂的采样/重新加权方案[2]期间对困难示例进行采样。相反,我们表明,我们提出的焦点损失自然地处理了单级检测器所面临的类别不平衡,并使我们能够在没有采样的情况下对所有示例进行有效训练,也没有容易的阴性压倒损失和计算的梯度。

鲁棒估计:人们对设计鲁棒损失函数(例如,Huber损失[13])非常感兴趣,该函数通过对具有大误差的示例(困难示例)的损失进行加权来减少异常值的贡献。相反,我们的焦点损失不是解决异常值,而是通过对异常值(简单的例子)进行加权来解决类别不平衡问题,即使它们的数量很大,它们对总损失的贡献也很小。换句话说,焦点损失扮演着与鲁棒损失相反的角色:它将训练集中在一组稀疏的困难例子上。

References

[1] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016. 6
[2] S. R. Bulo, G. Neuhold, and P. Kontschieder. Loss maxpooling for semantic image segmentation. In CVPR, 2017.3
[3] J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016. 1
[4] N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005. 2
[5] P. Doll´ar, Z. Tu, P. Perona, and S. Belongie. Integral channel features. In BMVC, 2009. 2, 3
[6] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov. Scalable object detection using deep neural networks. In CVPR, 2014.2
[7] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The PASCAL Visual Object Classes (VOC) Challenge. IJCV, 2010. 2
[8] P. F. Felzenszwalb, R. B. Girshick, and D. McAllester. Cascade object detection with deformable part models. In CVPR, 2010. 2, 3
[9] C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. DSSD: Deconvolutional single shot detector. arXiv:1701.06659, 2016. 1, 2, 8
[10] R. Girshick. Fast R-CNN. In ICCV, 2015. 1, 2, 4, 6, 8
[11] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. 1, 2, 5
[12] R. Girshick, I. Radosavovic, G. Gkioxari, P. Doll´ar, and K. He. Detectron. https://github.com/facebookresearch/detectron, 2018. 8
[13] T. Hastie, R. Tibshirani, and J. Friedman. The elements of statistical learning. Springer series in statistics Springer, Berlin, 2008. 3, 7
[14] K. He, G. Gkioxari, P. Doll´ar, and R. Girshick. Mask R-CNN. In ICCV, 2017. 1, 2, 4
[15] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. 2014. 2
[16] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 2, 4, 5, 6, 8
[17] J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, and K. Murphy. Speed/accuracy trade-offs for modern convolutional object detectors. In CVPR, 2017. 2, 8
[18] A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. 2
[19] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989. 2
[20] T.-Y. Lin, P. Doll´ar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017. 1, 2, 4, 5, 6, 8
[21] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Doll´ar, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. 1, 6
[22] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, and S. Reed. SSD: Single shot multibox detector. In ECCV, 2016. 1, 2, 3, 6, 7, 8
[23] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. 4
[24] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015. 2, 4
[25] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Doll´ar. Learning to refine object segments. In ECCV, 2016. 2
[26] J. Redmon, S. Divvala, R. Girshick, and A. Farhadi. You only look once: Unified, real-time object detection. In CVPR, 2016. 1, 2
[27] J. Redmon and A. Farhadi. YOLO9000: Better, faster, stronger. In CVPR, 2017. 1, 2, 8
[28] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015. 1, 2, 4, 5, 8
[29] H. Rowley, S. Baluja, and T. Kanade. Human face detection in visual scenes. Technical Report CMU-CS-95-158R, Carnegie Mellon University, 1995. 2
[30] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks. In ICLR, 2014.2
[31] A. Shrivastava, A. Gupta, and R. Girshick. Training region-based object detectors with online hard example mining. In CVPR, 2016. 2, 3, 6, 7
[32] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv:1612.06851, 2016. 2, 8
[33] K.-K. Sung and T. Poggio. Learning and Example Selection for Object and Pattern Detection. In MIT A.I. Memo No.1521, 1994. 2, 3
[34] C. Szegedy, S. Ioffe, V. Vanhoucke, and A. A. Alemi. Inception-v4, inception-resnet and the impact of residual connections on learning. In AAAI Conference on Artificial Intelligence, 2017. 8
[35] J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders. Selective search for object recognition. IJCV, 2013. 2, 4
[36] R. Vaillant, C. Monrocq, and Y. LeCun. Original approach for the localisation of objects in images. IEE Proc. on Vision, Image, and Signal Processing, 1994. 2
[37] P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001. 2, 3
[38] S. Xie, R. Girshick, P. Doll´ar, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. In CVPR, 2017. 8
[39] C. L. Zitnick and P. Doll´ar. Edge boxes: Locating object proposals from edges. In ECCV, 2014. 2

相关文章:

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection (arXiv 2018)

图像 检测 - RetinaNet: Focal Loss for Dense Object Detection - 密集目标检测中的焦点损失&#xff08;arXiv 2018&#xff09; 摘要1. 引言2. 相关工作References 声明&#xff1a;此翻译仅为个人学习记录 文章信息 标题&#xff1a;RetinaNet: Focal Loss for Dense Obje…...

MySQL 与MongoDB区别

一、什么是MongoDB呢 ? MongoDB 是由C语言编写的&#xff0c;是一个基于分布式文件存储的开源数据库系统。在高负载的情况下&#xff0c;添加更多的节点&#xff0c;可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一…...

Kaggle First Place Winner Solution Study——多变量回归问题

本期分享一个Kaggle上playground系列多变量回归问题的第一名解决方案。试着分析、复现、学习一下金牌选手的数据分析思路。 赛题链接&#xff1a; Prediction of Wild Blueberry Yield | Kagglehttps://www.kaggle.com/competitions/playground-series-s3e14第一名解决方案链…...

分布式应用:Zookeeper 集群与kafka 集群部署

目录 一、理论 1.Zookeeper 2.部署 Zookeeper 集群 3.消息队列 4.Kafka 5.部署 kafka 集群 6.FilebeatKafkaELK 二、实验 1.Zookeeper 集群部署 2.kafka集群部署 3.FilebeatKafkaELK 三、问题 1.解压文件异常 2.kafka集群建立失败 3.启动 filebeat报错 4.VIM报错…...

Last-Mile Embodied Visual Navigation 论文阅读

论文阅读 题目&#xff1a;Last-Mile Embodied Visual Navigation 作者&#xff1a;JustinWasserman, Karmesh Yadav 来源&#xff1a;CoRL 时间&#xff1a;2023 代码地址&#xff1a;https://jbwasse2.github.io/portfolio/SLING Abstract 现实的长期任务&#xff08;例如…...

thunder gbm

文章目录 背景参考官网信息训练调参模型保存推理 背景 想在 GPU 上使用使用闪电般快速的提升方法&#xff1f;了解这个库就好了。在很多任务上&#xff0c;它都比 LightGBM 和 XGBoost 快。 ThunderGBM 的主要特征如下&#xff1a; 通常是其它库的 10 倍。 支持 Python&#x…...

数据结构--单链表

前言 上一章&#xff0c;我们讲了数据结构--动态顺序表&#xff0c;我们会发现有以下问题&#xff1a; 1.当我们要头部或者插入或删除时&#xff0c;都需要进行位置挪动&#xff0c;腾出某一个位置&#xff0c;时间复杂度为0(N)&#xff1b; 2.增容需要申请新空间&#xff0c;…...

过程:从虚拟机上添加 git 并成功提交到 GitLab 的全过程

Ⅰ、准备工作&#xff1a; 1、Git 查看&#xff1a; 其一、命令&#xff1a;git --version // 此时就能在虚拟机环境下看到 git 的版本为: git version 2.41.0 其二、如何在虚拟机上安装 git &#xff1a; A、命令 &#xff1a; sudo apt-get install git B、然后再输入虚…...

机器学习笔记之优化算法(九)收敛速度的简单认识

机器学习笔记之优化算法——收敛速度的简单认识 引言收敛速度的判别标准 Q \mathcal Q Q-收敛速度 R \mathcal R R-收敛速度关于算法复杂度与收敛速度 引言 本节对收敛速度简单介绍。 收敛速度的判别标准 我们之前几节介绍了线搜索方法 ( Line Search Method ) (\text{Line …...

FPGA学习——Altera IP核调用之PLL篇

文章目录 一、IP核1.1 IP核简介1.2 FPGA中IP核的分类1.3 IP核的缺陷 二、PLL简介2.1 什么是PLL2.2 PLL结构图2.3 C4开发板上PLL的位置 三、IP核调用步骤四、编写测试代码五、总结 一、IP核 1.1 IP核简介 IP核&#xff08;知识产权核&#xff09;&#xff0c;是在集成电路的可…...

经纬度坐标工具

LngLatUtil :用于计算里程数 import cn.hutool.core.util.ArrayUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Getter; import lombok.Setter;import java.io.FileInputStream; import java.io.Serializable; import java.t…...

如何使用伪元素::before和::after?

伪元素(::before和::after)是CSS中非常有用的特性&#xff0c;它们允许你在元素的内容之前或之后插入额外的内容&#xff0c;并且不需要在HTML结构中添加额外的标记。这样可以方便地在页面上添加装饰性元素、图标、或者样式效果。以下是使用伪元素的基本方法&#xff1a; 1、创…...

Visual Studio Code中对打开的脚本格式统一

什么是Language Server Protocol (LSP)? Language Server Protocol&#xff08;语言服务器协议&#xff0c;简称LSP&#xff09;是微软在2016年提出的一套统一的通讯协议方案。LSP定义了一套编辑器或者IDE与语言服务器&#xff08;Language Server&#xff09;之间使用的协议&…...

补充JDK源码-IDEA集成工具

在阅读JDK8源码的时候发现&#xff0c;只有一小部分常用包是存在源码及其注释的&#xff0c;而很多内部包是没有源码&#xff0c;class文件在阅读的时候对阅读者十分不友好。在网上搜集了很多资料都没有解决问题。 解决问题办法&#xff1a;参考文档。本文主要是根据这篇文章记…...

Git Submodule 更新子库失败 fatal: Unable to fetch in submodule path

编辑本地目录 .git/config 文件 在 [submodule “Assets/CommonModule”] 项下 加入 fetch refs/heads/:refs/remotes/origin/...

Springboot切面打印日志

切面打印完整日志,以下代码用于扫描RestController 注解修饰的接口,并打印相关日志 import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; impor…...

ubuntu上回环设备/dev/loop0占用100%清理

查看磁盘占用情况时&#xff1a; df -h/dev/loopn这些设备在Linux下被称为回环设备。 终端输入&#xff1a; sudo apt autoremove --purge snapd再次查看&#xff1a;...

List list=new ArrayList()抛出的ArrayIndexOutOfBoundsException异常

1.应用场景&#xff0c;今天生产日志监控到一下ArrayList 进行add 异常&#xff0c;具体日志如下&#xff1a; eptionHandler.handler(178): TXXYBUSSINESS|执行异常 java.util.concurrent.CompletionException: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bo…...

桶排序算法

桶排序算法 算法思想概述&#xff1a;桶排序的主要步骤如下&#xff1a; 算法goland实现&#xff1a;图解演示&#xff1a; 算法思想概述&#xff1a; 桶排序&#xff08;Bucket Sort&#xff09;是一种非比较性的排序算法&#xff0c;它将待排序的元素分到有限数量的桶&#…...

P8604 [蓝桥杯 2013 国 C] 危险系数

题目背景 抗日战争时期&#xff0c;冀中平原的地道战曾发挥重要作用。 题目描述 地道的多个站点间有通道连接&#xff0c;形成了庞大的网络。但也有隐患&#xff0c;当敌人发现了某个站点后&#xff0c;其它站点间可能因此会失去联系。 我们来定义一个危险系数 DF(x,y)&…...

Excel·VBA表格横向、纵向相互转换

如图&#xff1a;对图中区域 A1:M6 横向表格&#xff0c;转换成区域 A1:C20 纵向表格&#xff0c;即 B:M 列转换成每2列一组按行写入&#xff0c;并删除空行。同理&#xff0c;反向操作就是纵向表格转换成横向表格 目录 横向转纵向实现方法1转换结果 实现方法2转换结果 纵向转横…...

Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2]输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 解题思路 1.题目要求我们从尾到头反过…...

LeetCode--HOT100题(22)

目录 题目描述&#xff1a;160. 相交链表&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;160. 相交链表&#xff08;简单&#xff09; 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表…...

产品体系架构202308版

1.前言 当我们不断向前奔跑时&#xff0c;需要回头压实走过的路。不断扩张的同时把相应的内容沉淀下来&#xff0c;为后续的发展铺垫基石。 不知从何时起&#xff0c;产品的架构就面向了微服务/中台化/前后端分离/低代码化/分布式/智能化/运行可观测化的综合体&#xff0c;让…...

Linux systemctl 简单介绍与使用

在Linux下&#xff0c;systemctl是一个管理系统服务的命令。它提供了对systemd服务的控制和管理。 在系统中使用systemctl命令&#xff0c;您可以执行以下操作&#xff1a; 启动服务&#xff1a;systemctl start servicename停止服务&#xff1a;systemctl stop servicename重…...

恺英网络宣布:与华为鸿蒙系统展开合作,将开发多款手游

8月5日消息&#xff0c;恺英网络宣布旗下子公司盛和网络参加了华为开发者大会&#xff08;HDC.Together&#xff09;游戏服务论坛&#xff0c;并在华为鸿蒙生态游戏先锋合作启动仪式上进行了亮相。恺英网络表示&#xff0c;将逐步在HarmonyOS上开发多款游戏&#xff0c;利用Har…...

Vue CORS

使用Vue框架报错&#xff0c;客户端浏览器有CORS错误&#xff0c;怎么解决&#xff1f; 参考API Proxying During Development&#xff0c;可以新增或修改config/index.js下的proxyTable属性。 留意到 proxyTable的key值为/api&#xff0c;代表所有服务端域名都改成以/api开头…...

Godot 4 源码分析 - 文件读入编码处理

今天需要读入xml文件进行处理&#xff0c;结果读入一个带中文的文件时&#xff0c;出错了。当然程序还能运行&#xff0c;但编译器一直报错&#xff0c;而且XML解析也不正确 单步调试发现读入的内容出现乱码&#xff0c;具体逻辑&#xff1a; String FileAccess::get_as_text…...

Linux 中使用 verdaccio 搭建私有npm 服务器

安装 Node Linux中安装Node 安装verdaccio npm i -g verdaccio安装完成 输入verdaccio,出现下面信息代表安装成功&#xff0c;同时输入verdaccio后verdaccio已经处于运行状态&#xff0c;当然这种启动时暂时的&#xff0c;我们需要通过pm2让verdaccio服务常驻 ygiZ2zec61wsg…...

C++入门之stl六大组件--stack和queue源码深度剖析及模拟实现

目录 前言 一、stack的介绍和使用 1.stack的介绍 2.stack的使用 3.stack的模拟实现 二、queue的介绍和使用 1.queue的介绍 2.queue的使用 3.queue的模拟实现 三、priority_queue的介绍和使用 1.priority_queue的介绍 2.priority_queue的使用 3.priority_queue的模…...