GitHub 首个开源图像识别系统又在搞事情!下

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,视频资源包5000点
简介: GitHub 首个开源图像识别系统又在搞事情!下

PP-LCNet的网络结构整体如上图所示。我们经过大量的实验发现,在基于Intel CPU的设备上,尤其当启用MKLDNN加速库后,很多看似不太耗时的操作反而会增加延时,比如elementwise-add操作、split-concat结构等。

所以最终我们选用了结构尽可能精简、速度尽可能快的block组成我们的BaseNet(类似MobileNetV1)。基于BaseNet,我们通过实验,总结出四条几乎不增加延时但又能够提升模型精度的方法,下面将对这四条策略进行详细介绍:

更好的激活函数

自从卷积神经网络使用了ReLU激活函数后,网络性能得到了大幅度提升。近些年ReLU激活函数的变体也相继出现,如Leaky-ReLU、P-ReLU、ELU等。2017年,谷歌大脑团队通过搜索的方式得到了swish激活函数,该激活函数在轻量级网络上表现优异。在2019年,MobileNetV3的作者将该激活函数进一步优化为H-Swish,该激活函数去除了指数运算,速度更快,网络精度几乎不受影响。我们也经过很多实验发现该激活函数在轻量级网络上有优异的表现。所以在PP-LCNet中,我们选用了该激活函数。

合适的位置添加SE模块

SE模块是SENet提出的一种通道注意力机制,可以有效提升模型的精度。但是在Intel CPU端,该模块同样会带来较大的延时,如何平衡精度和速度是我们要解决的一个问题。虽然在MobileNetV3等基于NAS搜索的网络中对SE模块的位置进行了搜索,但是并没有得出一般的结论。我们通过实验发现,SE模块越靠近网络的尾部对模型精度的提升越大。下表也展示了我们的一些实验结果:

5a59ed877014fd39ba08c9aec4bdcc2.png

最终,PP-LCNet中的SE模块的位置选用了表格中第三行的方案。

更大的卷积核

在MixNet的论文中,作者分析了卷积核大小对模型性能的影响,结论是在一定范围内大的卷积核可以提升模型的性能,但是超过这个范围会有损模型的性能,所以作者组合了一种split-concat范式的MixConv,这种组合虽然可以提升模型的性能,但是不利于推理。我们通过实验总结了一些更大的卷积核在不同位置的作用,类似SE模块的位置,更大的卷积核在网络的中后部作用更明显,下表展示了5x5卷积核的位置对精度的影响:

62852136efb9888086d9111a586099f.png

实验表明,更大的卷积核放在网络的中后部即可达到放在所有位置的精度,与此同时,获得更快的推理速度。PP-LCNet最终选用了表格中第三行的方案。

GAP后使用更大的1x1卷积层

在GoogLeNet之后,GAP(Global-Average-Pooling)后往往直接接分类层,但是在轻量级网络中,这样会导致GAP后提取的特征没有得到进一步的融合和加工。如果在此后使用一个更大的1x1卷积层(等同于FC层),GAP后的特征便不会直接经过分类层,而是先进行了融合,并将融合的特征进行分类。这样可以在不影响模型推理速度的同时大大提升准确率。

BaseNet经过以上四个方面的改进,得到了PP-LCNet。下表进一步说明了每个方案对结果的影响:

289a44bb403589b957c64bab4e46d3a.png

2. 下游任务性能惊艳提升

图像分类

图像分类我们选用了ImageNet数据集,相比目前主流的轻量级网络,PP-LCNet在相同精度下可以获得更快的推理速度。当使用百度自研的SSLD蒸馏策略后,精度进一步提升,在Intel CPU端约5ms的推理速度下ImageNet的Top-1 Acc竟然超过了80%,Amazing!!!

dcaf213a7bdf8b1a3a585a9e711ab4f.png

a1b16b16f53bbfe8d0fb9869ce0d591.png

目标检测

目标检测的方法我们选用了百度自研的PicoDet,该方法主打轻量级目标检测场景。下表展示了在COCO数据集上、backbone选用PP-LCNet与MobileNetV3的结果的比较。无论在精度还是速度上,PP-LCNet的优势都非常明显。

75c1e883548e0f17d537c71d05aa00e.png

语义分割

语义分割的方法我们选用了DeeplabV3+。下表展示了在Cityscapes数据集上、backbone选用PP-LCNet与MobileNetV3的比较。在精度和速度方面,PP-LCNet的优势同样明显。

e296b799b26c35a868fa7aaa9897c44.png

3. 实际拓展应用结果说明

PP-LCNet在计算机视觉下游任务上表现很出色,那在真实的使用场景如何呢?本节简述其在PP-OCR v2、PP-Shitu上的表现。

在PP-OCR v2上,只将识别模型的backbone由MobileNetV3替换为PP-LCNet后,在速度更快的同时,精度可以进一步提升。

9260dd9eb73460fa4af0b2982192ac0.png

在PP-Shitu中,将Backbone的ResNet50_vd替换为PP-LCNet-2.5x后,在Intel-CPU端,速度快5倍,recall@1基本和ResNet50_vd持平。

模型

Recall@1(%)

Latency(ms)(4线程)

ResNet50-vd

83.63

31.7

LCNet-0.25x

83.88

10.4

PP-LCNet并不是追求极致的FLOPs与Params,而是着眼于深入技术细节,耐心分析如何添加对Intel CPU友好的模块来提升模型的性能来更好地进行准确率和推理时间的平衡,其中的实验结论也很适合其他网络结构设计的研究者,同时也为NAS搜索研究者提供了更小的搜索空间和一般结论。

自论文发表以来,PP-LCNet引起了国内外学术界和产业界的广泛关注,无论是各类版本的复现,还是极具探索意义和实用价值的各类视觉任务应用和技术分析文章层出不穷,将简单模型的实用性优化方案重新带入大家的视野,真正践行技术让“生活”更美好的初心,期待PP-LCNet在实际落地和应用中的更多表现。

前面提到的论文,链接如下:https://arxiv.org/pdf/2109.15099.pdf

本论文工作的总体研究思路由飞桨PaddleClas团队提出并实施。PaddleClas提供全球首个开源通用图像识别系统,并力求为工业界和学术界提供更高效便捷的开发工具,为开发者带来更流畅优质的使用体验,训练出更好的飞桨视觉模型,实现行业场景实现落地应用。想要获取更多PaddleClas相关介绍及教程文档可前往⬇️:

GitHub: https://github.com/PaddlePaddle/PaddleClas

文章来源公众号: 逛逛GitHub ,每天推荐一个好玩有趣的开源项目。最后,防止找不到本篇文章,可以收藏点赞,方便翻阅查找。

目录
相关文章
|
14天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
45 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
13天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
65 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
13天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2月前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能的快速发展,特别是深度学习技术在图像处理和模式识别领域的突破进展,自动驾驶系统得以实现更为精准的环境感知与决策。本文深入探讨了基于深度学习的图像识别技术在自动驾驶系统中的应用,并分析了其对提高自动驾驶安全性和可靠性的重要性。通过综合运用卷积神经网络(CNN)、递归神经网络(RNN)等先进算法,我们能够使自动驾驶车辆更好地理解周围环境,从而进行有效的导航与避障。文章还指出了目前该领域面临的主要挑战及未来的发展方向。
|
2月前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别在自动驾驶系统中的应用
【8月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已成为推动多个领域革新的核心动力。特别是在图像识别任务中,深度学习模型展现出了卓越的性能。本文将探讨一种基于卷积神经网络(CNN)的图像识别方法,并分析其在自动驾驶系统中的实际应用。我们首先回顾深度学习在图像处理方面的基础知识,随后详细介绍一个高效的CNN架构,并通过实验验证该架构在复杂环境下对车辆、行人及其他障碍物的检测和分类能力。最后,讨论了该方法在实际自动驾驶系统中面临的挑战及潜在的改进方向。
|
2月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
37 2
|
2月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
72 1
|
2月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
71 1
|
2月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
55 1
|
2月前
|
存储 JavaScript 前端开发
Github 2024-07-29 开源项目周报Top15
根据 Github Trendings 的统计,本周(2024年7月29日统计)共有15个项目上榜。按开发语言分类,项目数量如下:Python、Java、HTML 和 C 项目各有2项;TypeScript、JavaScript、Vue 和 Go 各有1项;另有1项非特定语言项目、1项 Dart 项目、1项 C++ 项目、1项 Rust 项目及1项 Jupyter Notebook 项目。这些项目涵盖了多种领域,如API开发、照片管理、PDF处理、AI技术等。
42 1
下一篇
无影云桌面