# PP-LCNet ## 1. 模型简介 在计算机视觉领域中,骨干网络的好坏直接影响到整个视觉任务的结果。在之前的一些工作中,相关的研究者普遍将 FLOPs 或者 Params 作为优化目的,但是在工业界真实落地的场景中,推理速度才是考量模型好坏的重要指标,然而,推理速度和准确性很难兼得。考虑到工业界有很多基于 Intel CPU 的应用,所以我们本次的工作旨在使骨干网络更好的适应 Intel CPU,从而得到一个速度更快、准确率更高的轻量级骨干网络,与此同时,目标检测、语义分割等下游视觉任务的性能也同样得到提升。 <img src="https://github.com/PaddlePaddle/PaddleDetection/assets/12560511/47dea0e3-0fed-49f9-bd6a-60b95c8ba7ac" style="height: 400px"> ## 2. 技术方案 近年来,有很多轻量级的骨干网络问世,尤其最近两年,各种 NAS 搜索出的网络层出不穷,这些网络要么主打 FLOPs 或者 Params 上的优势,要么主打 ARM 设备上的推理速度的优势,很少有网络专门针对 Intel CPU 做特定的优化,导致这些网络在 Intel CPU 端的推理速度并不是很完美。基于此,我们针对 Intel CPU 设备以及其加速库 MKLDNN 设计了特定的骨干网络 PP-LCNet,比起其他的轻量级的 SOTA 模型,该骨干网络可以在不增加推理时间的情况下,进一步提升模型的性能,最终大幅度超越现有的 SOTA 模型。详细的技术实现可参考阅读:[PP-LCNet](https://arxiv.org/pdf/2109.15099.pdf)。 PP-LCNet 与其他模型的对比图如下。 <img src="https://github.com/PaddlePaddle/Paddle3D/assets/94225063/9bedac1c-bcb0-4981-90dc-3698498a8aed" style="height: 400px"> ## 3. 如何使用 ### 3.1 数据准备 在完成数据标注工作后,请按照[数据集规范说明](https://ai.baidu.com/ai-doc/AISTUDIO/Clkg7m4y9#%E5%9B%BE%E5%83%8F%E5%88%86%E7%B1%BB%E4%BB%BB%E5%8A%A1)检查数据组织格式是否满足要求。如果不满足,请参照规范说明进行调整,否则将导致后面的数据校验环节无法通过。 完成数据准备后,点击右上角【创建模型产线】。 在 AI Studio 云端,可以通过挂载数据集的方式来使用自己的数据。模型产线创建和修改窗口可以挂载和管理数据集,如下图所示。数据集挂载成功后,需在开发者模式中查看并解压挂载的数据集,数据集路径查看方式为【开发者模式】-左侧【资源管理器】,在目录 `AISTUDIO/data` 下,数据集解压方式为【开发者模式】-左侧【菜单】-【终端】-【新建终端】,在【终端】中通过命令行方式解压,并将解压后的数据集路径拷贝到【工具箱模式】-【数据校验】-【数据集路径】。**注意:在 AI Studio 云端,`data` 目录不持久化存储,如需持久化存储,需要将数据解压至其它目录。** <div align=center> <img src="https://github.com/PaddlePaddle/PaddleClas/assets/12560511/144c59db-0354-403e-9b7d-83c3f84d6de1" style="height: 400px"><img src="https://github.com/PaddlePaddle/PaddleClas/assets/12560511/9078fb3e-3c37-40f5-aeed-4139d23daa14" style="height: 400px"> </div> 在本地端-工具箱模式中,您可以直接在【工具箱模式】-【数据校验】-【数据集路径】中填写本地数据路径来使用自己的数据集。 在配置完成【数据集路径】后,即可点击【开始校验】按钮进行数据集校验。 更多详细说明,请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Zlist35hy#%E6%95%B0%E6%8D%AE%E6%A0%A1%E9%AA%8C)。 ### 3.2 模型训练 PaddleX提供 `工具箱模式` 和 `开发者模式` 两种开发模式: - `工具箱模式` 推荐 AI 开发经验较少的开发者使用,高阶开发者也可以使用这个模式来提高开发效率。工具箱模式利用 gradio 搭建 webui 工具链,可以实现无代码 AI 模型开发。主要包含数据校验、模型训练、评估测试和模型部署四个环节。可以根据实际需求选择模型结构、骨干网络及对应的训练参数、优化策略,使得任务效果最佳。关于工具箱模式的完整使用请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Zlist35hy)。**注意:工具箱模式中的训练轮次、批大小、学习率等参数的默认值仅适用于官方提供的示例数据集,对于自己的数据集,需要进行针对性的调整。可以参考参数设置经验,例如学习率对训练效果影响较大,建议放缩进行多次尝试,对于难度较大的任务,可以适当增加训练轮次数以获得更佳效果。** <img src="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/introduction/PP-LCNet_x1_0.png" style="height: 400px"> - `开发者模式` 推荐 AI 开发经验较丰富度的开发者使用,集成了 VSCode IDE 环境,并内置飞桨统一模型开发 API——UAPI,可以使用统一的 API 接口进行开发,仅需 5 行命令即可完成基础模型训练、推理、评估导出以及多模型组合预测。同时,在开发者模式中可以编辑工具箱模式的源码,以实现工具箱模式 DIY。关于开发者模式的完整使用请参考[在线文档](https://ai.baidu.com/ai-doc/AISTUDIO/Mlist5jov)。 <img src="https://github.com/PaddlePaddle/PaddleClas/assets/12560511/8c650061-405a-4dfa-9bc6-07fd0079fc7f" style="height: 800px"> ### 3.3 模型部署 使用工具箱或开发者模式完成模型训练后,就可以在工具箱模式进行模型部署了。需注意,目前必须经过导出预测模型后才会产生用于部署的静态图模型。目前提供了模型在不同操作系统、不同部署硬件、不同接口语言条件下的部署包 SDK 获取方式。 <img src="https://github.com/PaddlePaddle/PaddleSeg/assets/108920665/8b2a21b6-195f-4ce9-aad0-f2adcf3457f8" style="height: 400px"> 本模型目前的部署支持情况如下: | 操作系统 | Windows | Windows | Windows | Windows | Linux | Linux | Linux | Linux | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | | 部署硬件 | NV GPU | NV GPU | X86 CPU | X86 CPU | NV GPU | NV GPU | X86 CPU | X86 CPU | | 接口语言 | C++ | Python | C++ | Python | C++ | Python | C++ | Python | | 支持情况 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 根据实际业务需求选择所需要的操作系统、部署硬件、接口语言等条件后,获取 FastDeploy 部署包,**完成之后到开发者模式下进行下载(文件右击选择下载即可)**,其中包括部署代码和预测模型。 最后就可以参考部署包里面的 README 使用说明,在目标硬件上进行部署啦。 **注意:如果需要更新预测模型,可以直接修改部署包中的预测模型。**