PP-LCNet:一种轻量级CPU卷积神经网络

PP-LCNet: A Lightweight CPU Convolutional Neural Network

最近看了一个新的分享,在图像分类的任务上表现良好,具有很高的实践意义。

  • 论文: https://arxiv.org/pdf/2109.15099.pdf
  • 项目: https://github.com/PaddlePaddle/PaddleClas

Abstract|摘要

本文提出了一种名为PP-LCNet的轻量级网络,该网络基于MKLDNN加速策略,旨在提高轻量级模型在多种任务上的性能。本文介绍了能够在几乎不增加延迟的情况下提升网络准确度的技术。通过这些改进,PP-LCNet的准确度显著优于具有相同推理时间的先前网络结构。如图1所示,它的性能优于当前大多数前沿模型。在计算机视觉的后续任务(如目标检测、语义分割等)中,它也展现出卓越的性能。所有实验都是基于PaddlePaddle平台实现的。相关的代码和预训练模型可以在PaddleClas上获取。

1. Introduction|介绍

在近几年中,卷积神经网络(CNNs)成为了计算机视觉领域中众多应用的核心工具,涵盖了诸如图像分类[1, 2]、目标检测[3]、注意力预测[4]、目标跟踪[5]、动作识别[6]、语义分割[7, 8]、显著目标检测[9]以及边缘检测[10]等多个方面。

随着模型特征提取能力的提升以及模型参数和运算量(FLOPs)的增加,基于ARM架构的移动设备和基于x86架构的CPU设备上实现快速推理变得越来越具挑战性。在这种情况下,尽管已经提出了许多适用于移动设备的优秀网络模型,但由于MKLDNN框架的限制,这些网络在支持MKLDNN的Intel CPU上的运行速度并不理想。本文针对这一问题,重新审视了基于Intel CPU设计的轻量级模型的构建要素。特别关注以下三个基本问题:

  • 如何在保持低延迟的同时,增强网络学习强大特征表示的能力。
  • 哪些关键因素有助于提升CPU上轻量级模型的准确度。
  • 如何有效地融合不同的设计策略,以在CPU上构建高效的轻量级模型。

我们的主要贡献在于总结了一系列可以在不延长推理时间的前提下提高准确度的方法,并探讨了如何将这些方法有效结合,以实现准确度与速度之间的最佳平衡。基于这些研究,提出了一些设计轻量级卷积神经网络(CNNs)的通用原则,为其他研究者在CPU设备上构建高效CNNs提供了新的视角。此外,这些研究还可以为神经网络架构搜索领域的研究者提供新的思路,帮助他们在构建搜索空间时更快速地发掘更优的模型。

2. Related Works|相关工作

为了提升模型的性能,目前的研究主要采用两种方法:一种是基于人工设计的卷积神经网络(CNN)架构,另一种是基于神经架构搜索(NAS)[11]。

  • 人工设计架构方面
    • VGG[12]提出了一种简单而有效的构建深层网络的策略:堆叠相同维度的块。
    • GoogLeNet[13]则创新地设计了Inception块,包括四个并行操作:1×1卷积、3×3卷积、5×5卷积和最大池化,使得卷积神经网络更加轻量级。
    • MobileNetV1[14]通过深度可分卷积和逐点卷积替代了标准卷积,大幅降低了参数和运算量。
    • MobileNetV2[15]进一步提出了倒置块,减少了FLOPs的同时提升了性能。
    • ShuffleNetV1/V2[16,17]通过通道混洗减少网络结构的冗余。
    • GhostNet[18]则提出了一种新颖的Ghost模块,用更少的参数生成更多的特征图,从而提升模型的整体性能
  • 在神经架构搜索方面
    • 通过自适应地针对特定任务进行系统化搜索,取代了传统的手动设计网络架构。
    • 如**EfficientNet[19]、MobileNetV3[20]、FBNet[21]、DNANet[22]、OFANet[23]**等,都采用了与MobileNetV2[15]相似的搜索空间。
    • MixNet[24]则提出了一种创新方法,通过在一个层中混合不同核大小的深度可分卷积

尽管NAS生成的网络依赖于如BottleNeck[25]、Inverted-block[15]等手动设计的块,但我们的方法可以减少搜索空间并提高搜索效率,从而可能在未来工作中进一步提升整体性能。

3. Approach|方法

尽管许多轻量级网络在基于ARM架构的设备上能实现快速推理,但在启用MKLDNN等加速策略的Intel CPU上,这些网络的性能却很少被考虑。许多用于提升模型准确度的方法在ARM设备上可能不会显著增加推理时间,但在Intel CPU设备上则可能不同。我们总结了一些能够在几乎不增加推理时间的情况下提升模型性能的方法,这些方法将在下文中详细阐述。我们采用了MobileNetV1[14]中提出的深度可分卷积(DepthSepConv)作为基本模块。这个模块不包含如短路shortcut等操作,因此避免了额外的操作,如拼接concat或逐元素elementwise-add相加,这些操作不仅会降低模型的推理速度,而且在小型模型上也不会提高准确度。此外,这个模块已被Intel CPU加速库深度优化,其推理速度可以超过其他轻量级模块,如倒置块inverted或ShuffleNet块。我们将这些模块堆叠起来,形成了一个类似于MobileNetV1[14]的BaseNet。通过将BaseNet与现有的一些技术相结合,我们构建了一个更强大的网络,即PP-LCNet。

3.1 Better activation function|更好的激活函数

众所周知,激活函数的质量往往决定了网络的性能。自从网络的激活函数从Sigmoid改为ReLU以来,网络的性能得到了显著提升。近年来,越来越多的激活函数超越了ReLU。在EfficientNet[19]使用Swish激活函数取得了更好的性能后,MobileNetV3[20]的作者将其升级为H-Swish,以避免大量的指数运算。随后,许多轻量级网络也开始采用这种激活函数。我们也将在BaseNet中使用的激活函数从ReLU替换为H-Swish,从而大幅提升了性能,而推理时间几乎没有变化

Swish 激活函数已经被证明是一种比 ReLU 更佳的激活函数,但是相比 ReLU,它的计 算更复杂,因为有 sigmoid 函数。为了能够在移动设备上应用 swish 并降低它的计算开销, 提出了 h-swish

  • swish激活函数

s w i s h ( x ) = x ∗ δ ( x ) swish(x) = x * \delta(x) swish(x)=xδ(x)

  • h-swish激活函数

h s w i s h ( x ) = x ∗ R e L U 6 ( x + 3 ) 6 hswish(x) = x* \frac {ReLU6(x+3)} {6} hswish(x)=x6ReLU6(x+3)

  • 图像

3.2 SE modules at appropriate positions|合适位置放置SE模块

自SE模块[26]提出以来,它已被广泛应用于众多网络中。这个模块帮助SENet[26]赢得了2017年ImageNet[27]分类竞赛。它在为网络通道赋予更好的特征方面表现出色,并且其速度改进版本也被许多轻量级网络,如MobileNetV3[20]所采用。然而,在Intel CPU上,SE模块[26]会增加推理时间,所以我们不能在整个网络中使用它。实际上,我们进行了大量实验并发现,当SE模块[26]位于网络的末端时,它的效果更好。因此,只在网络尾部的块中添加了SE模块[26]。这使得准确度与速度之间达到了更好的平衡。与MobileNetV3[20]类似,SE模块[26]的两层激活函数分别是ReLU和HSigmoid。

3.3 Larger convolution kernels|更大的卷积核

卷积核的大小对网络性能有着显著的影响。在MixNet[24]中,作者研究了不同大小卷积核对网络性能的影响,并最终在网络的同一层中混合了不同大小的卷积核。然而,这样的混合会减慢模型的推理速度,所以我们尝试在单层中只使用一种大小的卷积核,并确保在低延迟和高准确度的情况下使用大卷积核。实验发现,类似于SE模块[26]的位置,仅在网络尾部使用5×5卷积核替换3×3卷积核,可以达到替换几乎所有网络层的效果,所以我们只在网络尾部进行了这样的替换操作。

3.4 Larger dimensional 1 × 1 conv layer after GAP

在我们的轻量级网络PP-LCNet中,经过全局平均池化(GAP)后,网络的输出维度较小。直接添加最后的分类层可能会丢失特征的组合。为了增强网络的拟合能力,在最后的GAP层之后添加了一个1280维的1×1卷积(相当于全连接层),这样可以在不增加太多推理时间的情况下存储更多模型

通过这四种改进,我们的模型在ImageNet-1k[27]数据集上表现良好,表3列出了我们在Intel CPU上与其他轻量级模型的性能对比。

1712804990282.png

4. Experiment|实验

4.1 Implementation Details|实现细节

为了进行公平的比较,使用PaddlePaddle重新实现了MobileNetV1[14]、MobileNetV2[15]、MobileNetV3[20]、ShuffleNetV2[17]、PicoDet[29]和Deeplabv3+[8]。在4块V100 GPU上训练这些模型,CPU测试环境基于Intel Xeon Gold 6148处理器,批处理大小为1,并启用了MKLDNN加速。

4.2 Image Classification|图像分类

在图像分类任务中,在ImageNet-1k[27]数据集上对PP-LCNet进行了训练,该数据集包含128万张训练图像和5万张1000个类别的验证图像。使用了带有权重衰减设置为3e-5(大型模型为4e-5)的SGD优化器,动量设置为0.9,批处理大小为2048。学习率根据余弦调度进行调整,用于训练360个epoch,其中包含5个线性预热epoch。初始学习率设为0.8。 在训练阶段,每个图像被随机裁剪到224×224并随机水平翻转。在评估阶段,首先将图像沿短边缩放到256,然后应用中心裁剪到224×224。表2展示了不同规模下PP-LCNet的top-1和top-5验证准确度以及推理时间。此外,使用SSLD[28]蒸馏方法时,模型的准确度可以显著提高。表3展示了PP-LCNet与最先进模型的比较。与其他轻量级模型相比,PP-LCNet展现了强大的竞争力。

4.3 Object Detection|目标检测

对象检测任务中,在COCO-2017[30]数据集上训练了所有模型,该数据集包含80个类别和118,000张图像。这些模型在COCO-2017[30]的验证集上进行了评估,该验证集包含5000张图像。我们使用了由PaddleDection开发的轻量级PicoDet作为基准模型。表4展示了以PP-LCNet和MobileNetV3[20]为骨干的物体检测结果。整个网络使用随机梯度下降(SGD)进行了146K次迭代,以224张图像的minibatch在4个GPU上进行分布训练。学习率计划是余弦的,从0.3作为基础学习率,持续280个epoch。权重衰减设置为1e-4,动量设置为0.9。令人印象深刻的是,PP-LCNet的骨干网络在COCO[30]上的mAP和推理速度相比MobileNetV3[20]有了显著的提高。

4.4 Semantic Segmentation|语义分割

在语义分割任务中,还对PP-LCNet在Cityscapes数据集[31]上的性能进行了评估,该数据集包含5000张高质量标注的图像。我们采用了由PaddleSeg开发的DeeplabV3+[8]作为基准方法,并将输出步长设置为32。数据通过随机水平翻转、随机缩放和随机裁剪进行增强。随机缩放包括{0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0},裁剪分辨率设置为1024 × 512。我们使用初始学习率为0.01的SGD优化器,动量为0.9,权重衰减为4e-5。我们采用幂函数学习率计划,幂值为0.9。所有模型在4块V100 GPU上以32的批大小训练了80K次迭代。

在比较中,采用了MobileNetV3[20]作为骨干网络。如表5所示,PP-LCNet-0.5x在mIoU(平均交并比)上比MobileNetV3-large-0.5x[20]高出2.94%,尽管如此,它的推理时间却减少了53毫秒。与更大的模型相比,PP-LCNet也展示了强大的性能。当使用PP-LCNet-1x作为骨干网络时,模型的mIoU比MobileNetV3-large-0.75x高出1.5%,但推理时间减少了55毫秒。

4.5 Ablation Study|消融研究

  • SE模块[26]在不同位置的效果
    • SE模块[26]是一种通道间的注意力机制,能够提高模型的准确性。
    • 然而,如果随意增加SE模块[26]的数量,模型的推理速度将会下降,因此研究如何合理地在模型中添加SE模块[26]是值得的。
    • 通过实验,我们发现SE模块[26]对网络的尾部影响最大。
    • 表7展示了在网络不同位置添加仅两个SE模块[26]的结果。表格清楚地显示,在网络的最后两个块中添加SE模块[26]对于几乎相同的推理时间更为有利。
    • 因此,为了平衡推理速度,PP-LCNet只在网络的最后两个块中添加SE模块[26]。

  • 大核在不同位置的影响
    • 尽管大核可以提高准确度,但在网络的所有位置添加它并不是最佳选择。
    • 通过实验,已经展示了正确添加大核的一般规则。表8展示了5×5深度可分离卷积的位置。其中,1表示DepthSepConv中的深度可分离卷积核为5×5,0表示DepthSepConv中的深度可分离卷积核为3×3。
    • 从表中可以看出,与SE模块[26]添加的位置相似,将5×5卷积添加到网络的尾部也更具竞争力。PP-LCNet选择了表中第三行的配置。
  • 不同技术的影响。
    • 在PP-LCNet中,采用了4种不同的技术来提升模型的性能。
    • 表9展示了这些技术对PP-LCNet的累积提升,表6则列出了减少不同模块对PP-LCNet的影响。
    • 可以看出,H-Swish和大核能够在不增加太多推理时间的情况下提升模型性能
    • 增加少量SE模块[26]能进一步提升性能
    • GAP之后使用更大的全连接层也能显著提高准确度
    • 同时,由于涉及相对较大的矩阵,dropout策略的使用能够进一步提高模型的准确度


在这里插入图片描述

5. Conclusion and Future work

本研究总结了设计轻量级Intel CPU网络的一些方法,这些方法能够在保持推理时间不变的同时提高模型的准确性。尽管这些方法源自于以往的研究,但它们在准确性与速度之间的平衡尚未通过实验得到充分验证。通过广泛的实验和对这些方法的验证,我们提出了PP-LCNet,它在多个视觉任务上表现更加强大,并且实现了更好的准确性与速度平衡。此外,这项工作还减少了神经架构搜索(NAS)的搜索空间,并为NAS提供了更快获得轻量级模型的可能性。在未来,我们也将使用NAS来获得更快、更强大的模型。

References

  • [1] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems, pages 1097–1105, 2012. 1

  • [2] Jia Li, Yafei Song, Jianfeng Zhu, Lele Cheng, Ying Su, Lin Ye, Pengcheng Yuan, and Shumin Han. Learning from large scale noisy web data with ubiquitous reweighting for image classification. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2019. 1

  • [3] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. In Advances in neural information processing systems, pages 91–99, 2015. 1

  • [4] Ramprasaath R Selvaraju, Michael Cogswell, Abhishek Das, Ramakrishna Vedantam, Devi Parikh, and Dhruv Batra. Grad-cam: Visual explanations from deep networks via gradient-based localization. In Proceedings of the IEEE international conference on computer vision, pages 618–626, 2017. 1

  • [5] Tianzhu Zhang, Changsheng Xu, and Ming-Hsuan Yang. Multi-task correlation particle filter for robust object tracking. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 4335–4343, 2017. 1

  • [6] Karen Simonyan and Andrew Zisserman. Two-stream convolutional networks for action recognition in videos. In Advances in neural information processing systems, pages 568–576, 2014. 1

  • [7] Liang-Chieh Chen, George Papandreou, Iasonas Kokkinos, Kevin Murphy, and Alan L Yuille. Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs. IEEE transactions on pattern analysis and machine intelligence, 40(4):834–848, 2017. 1

  • [8] Liang-Chieh Chen, George Papandreou, Florian Schroff, and Hartwig Adam. Rethinking atrous convolution for semantic image segmentation. arXiv preprint arXiv:1706.05587, \2017. 1, 4, 5

  • [9] Ali Borji, Ming-Ming Cheng, Qibin Hou, Huaizu Jiang, and Jia Li. Salient object detection: A survey. Computational visual media, pages 1–34, 2019. 1

  • [10] Yun Liu, Ming-Ming Cheng, Xiaowei Hu, Kai Wang, and Xiang Bai. Richer convolutional features for edge detection. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 3000–3009, 2017. 1

  • [11] Barret Zoph and Quoc V Le. Neural architecture search with reinforcement learning. arXiv preprint arXiv:1611.01578, \2016. 2

  • [12] Karen Simonyan and Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556, 2014. 2

  • [13] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 1–9, 2015. 2

  • [14] Andrew G Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco An dreetto, and Hartwig Adam. Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861, 2017. 2, 3, 4

  • [15] Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, and Liang-Chieh Chen. Mobilenetv2: Inverted residuals and linear bottlenecks. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 4510–4520, 2018. 2, 4

  • [16] Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, and Jian Sun. Shufflenet: An extremely efficient convolutional neural network for mobile devices. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 6848–6856, 2018. 2

  • [17] Ningning Ma, Xiangyu Zhang, Hai-Tao Zheng, and Jian Sun. Shufflenet v2: Practical guidelines for efficient cnn architecture design. In Proceedings of the European conference on computer vision (ECCV), pages 116–131, 2018. 2, 4

  • [18] Kai Han, Yunhe Wang, Qi Tian, Jianyuan Guo, Chunjing Xu, and Chang Xu. Ghostnet: More features from cheap operations. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 1580–1589, 2020. 2

  • [19] Mingxing Tan and Quoc V Le. Efficientnet: Rethinking model scaling for convolutional neural networks. arXiv preprint arXiv:1905.11946, 2019. 2, 3

  • [20] Andrew Howard, Mark Sandler, Grace Chu, Liang-Chieh Chen, Bo Chen, Mingxing Tan, Weijun Wang, Yukun Zhu, Ruoming Pang, Vijay Vasudevan, et al. Searching for mobilenetv3. In Proceedings of the IEEE International Conference on Computer Vision, pages 1314–1324, 2019. 2, 3, 4,5

  • [21] Bichen Wu, Xiaoliang Dai, Peizhao Zhang, Yanghan Wang, Fei Sun, Yiming Wu, Yuandong Tian, Peter Vajda, Yangqing Jia, and Kurt Keutzer. Fbnet: Hardware-aware efficient convnet design via differentiable neural architecture search. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 10734–10742, 2019. 2

  • [22] Changlin Li, Jiefeng Peng, Liuchun Yuan, Guangrun Wang, Xiaodan Liang, Liang Lin, and Xiaojun Chang. Blockwisely supervised neural architecture search with knowledge distillation. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 1989–1998, 2020. 2

  • [23] Han Cai, Chuang Gan, Tianzhe Wang, Zhekai Zhang, and Song Han. Once-for-all: Train one network and specialize it for efficient deployment. arXiv preprint arXiv:1908.09791, \2019. 2

  • [24] Mingxing Tan and Quoc V Le. Mixconv: Mixed depthwise convolutional kernels. arXiv preprint arXiv:1907.09595, \2019. 2, 3

  • [25] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 770–778, 2016. 2

  • [26] Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation networks. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 7132–7141, 2018. 3,5, 6

  • [27] Jia Deng, Wei Dong, Richard Socher, Li-Jia Li, Kai Li, and Li Fei-Fei. Imagenet: A large-scale hierarchical image database. In 2009 IEEE conference on computer vision and pattern recognition, pages 248–255. Ieee, 2009. 3, 4

  • [28] Cheng Cui, Ruoyu Guo, Yuning Du, Dongliang He, Fu Li, Zewu Wu, Qiwen Liu, Shilei Wen, Jizhou Huang, Xiaoguang Hu, et al. Beyond self-supervision: A simple yet effective network distillation alternative to improve backbones. arXiv preprint arXiv:2103.05959, 2021. 4, 5

  • [29] PaddlePaddle Authors. Paddledetection, object detection and instance segmentation toolkit based on paddlepaddle. https://github.com/PaddlePaddle/PaddleDetection, 2019. 4

  • [30] Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Doll´ar, and C Lawrence Zitnick. Microsoft coco: Common objects in context. In European conference on computer vision, pages 740–755. Springer, 2014. 5

  • [31] Marius Cordts, Mohamed Omran, Sebastian Ramos, Timo Rehfeld, Markus Enzweiler, Rodrigo Benenson, Uwe Franke, Stefan Roth, and Bernt Schiele. The cityscapes dataset for semantic urban scene understanding. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 3213–3223, 2016. 5

实践

任务:分类图片中是否有人还是无人,先git clone paddleclas项目,然后进入项目;

环境安装

  • 安装paddlepaddle
# CPU only
python3 -m pip install paddlepaddle==2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple# CUDA 10.2
python3 -m pip install paddlepaddle-gpu==2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple# CUDA 11.2
python3 -m pip install paddlepaddle-gpu==2.5.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html# CUDA 11.6
python3 -m pip install paddlepaddle-gpu==2.5.2.post116 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html# CUDA 11.7
python3 -m pip install paddlepaddle-gpu==2.5.2.post117 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html# CUDA 12.0
python3 -m pip install paddlepaddle-gpu==2.5.2.post120 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
  • 安装paddleclas
pip install paddleclas

数据

wget https://paddleclas.bj.bcebos.com/data/PULC/person_exists.tar

  • nobody:标签0
  • someone:标签1

训练

GPU机器下,假若两张显卡

export CUDA_VISIBLE_DEVICES=0,1
python3 -m paddle.distributed.launch \--gpus="0,1" \tools/train.py \-c ./ppcls/configs/PULC/person_exists/PPLCNet_x1_0.yaml

评估

训练好模型之后,可以通过以下命令实现对模型指标的评估。

python3 tools/eval.py \-c ./ppcls/configs/PULC/person_exists/PPLCNet_x1_0.yaml \-o Global.pretrained_model="output/PPLCNet_x1_0/best_model"

预测

模型训练完成之后,可以加载训练得到的预训练模型,进行模型预测。在模型库的 tools/infer.py 中提供了完整的示例,只需执行下述命令即可完成模型预测:

python3 tools/infer.py \-c ./ppcls/configs/PULC/person_exists/PPLCNet_x1_0.yaml \-o Global.pretrained_model=output/PPLCNet_x1_0/best_model

输出结果如下:

[{'class_ids': [1], 'scores': [0.9999976], 'label_names': ['someone'], 'file_name': 'deploy/images/PULC/person_exists/objects365_02035329.jpg'}]
  • 这里-o Global.pretrained_model="output/PPLCNet_x1_0/best_model" 指定当前最佳权重所在的路径,如果指定其他权重,只需替换对应的路径即可。
  • 默认是对 deploy/images/PULC/person_exists/objects365_02035329.jpg 进行预测,此处也可以通过增加字段 -o Infer.infer_imgs=xxx 对其他图片预测。
  • 二分类默认的阈值为0.5, 如果需要指定阈值,可以重写 Infer.PostProcess.threshold ,如-o Infer.PostProcess.threshold=0.9794,该值需要根据实际场景来确定。

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

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

相关文章

JUC并发编程2(高并发,AQS)

JUC AQS核心 当有线程想获取锁时,其中一个线程使用CAS的将state变为1,将加锁线程设为自己。当其他线程来竞争锁时会,判断state是不是0,不是自己就把自己放入阻塞队列种(这个阻塞队列是用双向链表实现)&am…

探索ChatGPT-Plus:AI 助手全套开源解决方案

探索ChatGPT-Plus:AI 助手全套开源解决方案 ChatGPT-plus是一种新型的对话生成模型,它是在OpenAI的ChatGPT基础上进行了改进和优化的版本。ChatGPT-plus的出现引起了广泛关注,因为它在对话生成方面展现出了更加出色的表现和能力。在本文中&am…

蒙特卡洛方法【强化学习】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实践—GridWorld 第…

make/makefile学习

文章目录 1、makefile函数1.1、字符串替换函数:subst1.2、模式字符串替换函数:patsubst1.3、去空格函数:strip1.4、查找字符串函数:findstring 2、、:、?区别 1、makefile函数 1.1、字符串替换函数:subst …

《QT实用小工具·二十》存款/贷款计算器

1、概述 源码放在文章末尾 该项目实现了用于存款和贷款的计算器的功能&#xff0c;如下图所示&#xff1a; 项目部分代码如下&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJ…

构造函数,原型对象,对象实例 以及原型链的关系

当我们使用构造函数new的方式创建实例对象&#xff0c;此时构造函数的.prototype属性就是实例对象的原型对象&#xff0c;实例对象可以通过.__proto__来访问到原型对象&#xff0c;同时实例对象会继承原型对象的属性方法。 构造函数和原型对象的关系其实是被包含的关系&#x…

【电子通识】普通电阻、敏感电阻、可调电阻的种类和特点

电阻的作用 在【分立元件】理解电阻 中我们知道电阻是在电路中对电流产生阻碍作用的元件。电阻是电子产品中最基本、最常用的电子元件之一。 有各产品的电路板中基本都有电阻器&#xff0c;通常起限流、滤波或分压等作用。实际上&#xff0c;电阻器的种类很多&#xff0c;根据其…

中服云数字孪生平台 3.0 版全新升级!不仅更好看,而且更好用!

近日&#xff0c;中服云数字孪生平台迎来版本升级。中服云数字孪生平台 3.0 版&#xff0c;以物联网平台 数据中台为基础&#xff0c;以 2D/3D 为展示形式&#xff0c;旨在打造一个从设备数据到孪生应用的一站式数智化平台。 中服云数字孪生平台架构 新版升级 功能急速迭代 …

4.Hexo 页面属性和模板设置

Frontmatter frontmatter基本上是可以定义的有关不同文件的信息&#xff0c;本质上是元数据 frontmatter是我们可以分配给每个内容页面的信息 在Hexo中创建文件时&#xff0c;Hexo主题可以使用该信息以不同的方式显示该内容 当在Hexo创建了一个文件&#xff0c;在source文件夹…

【JavaWeb】Tomcat服务器

目录 动态网站动态网站的特点 程序架构B/S与C/S的比较B/S技术的工作原理URL 什么是Web服务器 Web服务器、服务端、服务器的区别和联系什么是TomcatTomcat服务器的安装与配置解压缩版本Tomcat的配置添加系统变量&#xff0c;名称为CATALINA_HOME&#xff0c;值为Tomcat的安装目录…

Qt中播放GIF动画

在Qt应用程序中&#xff0c;如果你想在QLabel控件上播放GIF动画&#xff0c;可以使用QMovie类与QLabel配合来实现。以下是详细步骤和代码示例&#xff1a; 步骤1&#xff1a;引入必要的头文件 首先&#xff0c;在你的源代码文件中包含QMovie和QLabel相关的头文件&#xff1a;…

【微命令】git 如何修改某个分支的名字(git branch -m newbranch)

简要信息&#xff0c;快速记录 命令 # 切换到某个需要修改的分支 git checkout oldbranch# 修改分支名字 git branch -m newbranch假设作为git设计者&#xff0c;要用来修改branch的命令&#xff0c;那么就是 git branch作为前缀&#xff0c;然后进一步修改的命令是branch相关…

gradio简单搭建——关键词简单筛选【2024-4-11优化】

gradio简单搭建——关键词简单筛选[2024-4-11 优化] 新的思路&#xff1a;标签自动标注界面搭建优化数据处理与生成过程交互界面展示 新的思路&#xff1a;标签自动标注 针对通过关键词&#xff0c;在文本数据中体现出主体的工作类型这一任务&#xff0c;这里使用展示工具grad…

2012年认证杯SPSSPRO杯数学建模A题(第二阶段)蜘蛛网全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 A题 蜘蛛网 原题再现&#xff1a; 第二阶段问题   现在我们假设一个具体的环境。假设有一个凸多边形的区域&#xff0c;蜘蛛准备在这个区域&#xff08;或其一部分&#xff09;上结一张网。   问题一&#xff1a; 在区域的边界上安置有若干…

HarmonyOS开发实例:【手势截屏】

介绍 本篇Codelab基于手势处理和截屏能力&#xff0c;介绍了手势截屏的实现过程。样例主要包括以下功能&#xff1a; 根据下滑手势调用全屏截图功能。全屏截图&#xff0c;同时右下角有弹窗提示截图成功。根据双击手势调用区域截图功能。区域截图&#xff0c;通过调整选择框大…

GeoServer:忘记密码重置

操作步骤 1. 找到data_dir/security/usergroup/default目录下的users.xml文件&#xff0c; 2.修改password为plain:geoserver&#xff0c; 这里无论原来的密码是什么&#xff0c;改为plain:geoserver之后&#xff0c;就可以通过admin&#xff1a;geoserver默认账户密码登录了。…

室内定位中文综述阅读

1 室内高精度定位技术总结与展望 [4]柳景斌,赵智博,胡宁松等.室内高精度定位技术总结与展望[J].武汉大学学报(信息科学 版),2022,47(07):997-1008.DOI:10.13203/j.whugis20220029. 1.1.1 WiFi‐RTT定位 2016 年 12 月&#xff0c;随着新版 IEEE802.11 标准的公布&#xff0c…

开一家抖音小店都需要准备什么?今天一篇文章带你成功开店!

大家好&#xff0c;我是电商小布。 想要来玩抖店&#xff0c;第一件事情当然就是来开一家属于自己的抖店。 那么大家开抖店需要准备什么内容呢&#xff1f;这个是很多新手小伙伴不了解的东西。 所以呢今天&#xff0c;小布就从所需的材料和资金方面&#xff0c;来带大家详细的…

直播带货行业将迎来大地震

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 为什么这么多人喊着关闭直播带货?实体经济是到底因为什么萧条的?为什么大街上冷冷清清的?是房租、虚高的价格、还是直播带货引起的? 在4月9日的国务院政策吹风会上&#xff0c;市场监管明确指出&#xff1a; …

选择程序员是为什么?

本章节是关于为什么会选择一名程序员的经验分享 首先&#xff0c;我为什么会选择这个方向&#xff0c;可能是因为钱多&#xff0c;学东西不就是为了赚钱嘛&#xff1f;这是一点&#xff0c;不过最让我接收这个行业的是好奇世界的新大陆&#xff0c;可以简单的说就是&#xff0c…