---license: Apache License 2.0 hardware_support:- KUNLUNXIN- Iluvatar tasks:- Domain-Specific Large Models- Image Segmentation---## 1.模型效果语义分割作为视觉三大任务之一,在实际应用中具有广泛的需求。尽管基于深度学习的语义分割技术取得了重大进展,但是有时候语义分割模型的精度和性能无法同时满足业务需求。针对上述问题,PaddleSeg团队提出了一个新的轻量级实时语义分割模型PP-LiteSeg。具体来说,PP-LiteSeg模型中提出了轻量级解码器(FLD),以减少解码器的计算开销。为了加强特征表示,我们提出了统一注意力融合模块(UAFM),该模块利用空间和通道注意力来产生权重,然后将输入特征与权重融合。此外,我们提出了简易金字塔池化模块(SPPM),以低计算聚合全局上下文。在Cityscapes测试集上使用NVIDIA GTX 1080Ti进行实验,PP-LiteSeg的精度和速度可以达到 72.0% mIoU / 273.6 FPS 以及 77.5% mIoU / 102.6 FPS。与其他模型相比,PP-LiteSeg在精度和速度之间实现了SOTA平衡。PP-LiteSeg模型在测试图片上的分割效果如下。原图:<div align="center"><img src="https://user-images.githubusercontent.com/48357642/201077761-3ebeda52-b15d-4913-b64c-0798d1f922a5.png" width = "60%" /></div>分割后的图:<div align="center"><img src="https://user-images.githubusercontent.com/48357642/201077985-29954838-9df6-4ab4-9f91-23e9a20be513.png" width = "60%" /></div>PP-LiteSeg模型由飞桨官方出品,是PaddleSeg团队推出的SOTA模型。 更多关于PaddleSeg可以点击 [https://github.com/PaddlePaddle/PaddleSeg](https://github.com/PaddlePaddle/PaddleSeg) 进行了解。## 2. 技术方案PP-LiteSeg模型的结构如下图。<div align="center"><img src="https://user-images.githubusercontent.com/52520497/162148786-c8b91fd1-d006-4bad-8599-556daf959a75.png" width = "50%" /></div>* 提出了灵活轻量的解码器(FLD)我们提出的灵活、轻量级的解码器(FLD),在增大特征图空间尺寸的时候,逐渐减少通道数。此外,FLD的计算量可以很容易地根据编码器进行调整。灵活的设计减轻了解码器的冗余,平衡了编码器和解码器的算量,使整个模型更高效。* 提出了统一注意力融合模块(UAFM)加强特征表达是提高分割精度的关键方法,大家通常通过融合解码器中的低层细节特征和深层语义特征来实现。然而,现有方法中的融合模块通常具有较高的计算成本。我们提出了统一的注意力融合模块(UAFM)来有效地增强特征表示。在UAFM中,有两种注意力模块,即通道和空间注意力模块。UAFM模块利用通道和空间注意力来增强特征表示。* 提出了简易金字塔池化模块(SPPM)上下文聚合是提高分割精度的另一个关键,但以前的聚合模块对于实时网络来说非常耗时。我们设计了一个简易的金字塔池模块(SPPM),该模块减少了特征图的中间通道和输出通道,删除了short cut链接,并用加法操作取代了级联操作。实验结果表明,SPPM以较小的额外推理时间提高了分割精度。在Cityscapes和CamVid数据集上,我们做了大量实验来评估PP-LiteSeg模型。PP-LiteSeg模型在分割精度和推理速度之间实现了最佳权衡。具体来说,PP-LiteSeg在Cityscapes测试集上实现了72.0% mIoU / 273.6 FPS 和 77.5% mIoU / 102.6 FPS。### 相关论文以及引用信息```@article{peng2022pp-liteseg, title={PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model}, author={Juncai Peng, Yi Liu, Shiyu Tang, Yuying Hao, Lutao Chu, Guowei Chen, Zewu Wu, Zeyu Chen, Zhiliang Yu, Yuning Du, Qingqing Dang,Baohua Lai, Qiwen Liu, Xiaoguang Hu, Dianhai Yu, Yanjun Ma.}, journal={arXiv e-prints}, pages={arXiv--2204}, year={2022}}```## 3. 如何使用### 3.1 数据准备在完成数据标注工作后,请按照[数据集规范说明](https://ai.baidu.com/ai-doc/AISTUDIO/Clkg7m4y9#%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2%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://github.com/PaddlePaddle/PaddleSeg/assets/108920665/8d54a073-7c22-4a3b-9ff4-4f3423a0f8a2" 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/cc20cba4-319d-4a96-bc43-add3a4af355b" 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 使用说明,在目标硬件上进行部署啦。**注意:如果需要更新预测模型,可以直接修改部署包中的预测模型。**