[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-murufeng--awesome_lightweight_networks":3,"tool-murufeng--awesome_lightweight_networks":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",141543,2,"2026-04-06T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":74,"owner_company":74,"owner_location":76,"owner_email":77,"owner_twitter":74,"owner_website":74,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":87,"difficulty_score":88,"env_os":89,"env_gpu":90,"env_ram":90,"env_deps":91,"category_tags":97,"github_topics":98,"view_count":32,"oss_zip_url":74,"oss_zip_packed_at":74,"status":17,"created_at":103,"updated_at":104,"faqs":105,"releases":106},4510,"murufeng\u002Fawesome_lightweight_networks","awesome_lightweight_networks","The implementation of various lightweight networks by using PyTorch. such as：MobileNetV2，MobileNeXt，GhostNet，ParNet，MobileViT、AdderNet，ShuffleNetV1-V2，LCNet，ConvNeXt，etc. ⭐⭐⭐⭐⭐","awesome_lightweight_networks 是一个基于 PyTorch 构建的开源项目，旨在为移动端和嵌入式设备提供一站式的轻量级神经网络实现库。它汇集了包括 MobileNet 系列、ShuffleNet、GhostNet、MobileViT 以及 ConvNeXt 等在内的多种主流高效网络架构，覆盖了图像分类、检测、分割及超分辨率等多种视觉任务。\n\n在深度学习领域，研究人员往往追求模型性能的极致，而工程师则更关注算法在资源受限硬件上的落地效率。awesome_lightweight_networks 正是为了解决这一痛点而生，它将分散的优秀轻量级模型代码统一集成，避免了开发者“重复造轮子”。用户只需简单安装，即可像搭积木一样直接调用并训练各种精简网络，大幅降低了从实验到部署的门槛。\n\n该项目特别适合希望快速入门深度学习的初学者、需要验证轻量化方案的科研人员，以及致力于将 AI 模型部署到手机或边缘设备的工程师。其核心亮点在于“即插即用”的设计理念，不仅提供了清晰的模型结构解析和复现代码，还持续跟进工业界实用的 SOTA 模型。无论是想学习深度可分离卷积等核心技术，还是","awesome_lightweight_networks 是一个基于 PyTorch 构建的开源项目，旨在为移动端和嵌入式设备提供一站式的轻量级神经网络实现库。它汇集了包括 MobileNet 系列、ShuffleNet、GhostNet、MobileViT 以及 ConvNeXt 等在内的多种主流高效网络架构，覆盖了图像分类、检测、分割及超分辨率等多种视觉任务。\n\n在深度学习领域，研究人员往往追求模型性能的极致，而工程师则更关注算法在资源受限硬件上的落地效率。awesome_lightweight_networks 正是为了解决这一痛点而生，它将分散的优秀轻量级模型代码统一集成，避免了开发者“重复造轮子”。用户只需简单安装，即可像搭积木一样直接调用并训练各种精简网络，大幅降低了从实验到部署的门槛。\n\n该项目特别适合希望快速入门深度学习的初学者、需要验证轻量化方案的科研人员，以及致力于将 AI 模型部署到手机或边缘设备的工程师。其核心亮点在于“即插即用”的设计理念，不仅提供了清晰的模型结构解析和复现代码，还持续跟进工业界实用的 SOTA 模型。无论是想学习深度可分离卷积等核心技术，还是寻找适合 CPU 部署的高效架构，awesome_lightweight_networks 都能提供坚实的技术支持，助力社区共同推动轻量级 AI 的发展。","# awesome_lightweight_networks\n\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fawesome_lightweight_networks-v0.4.2-brightgreen)\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython->=v3.0-blue)\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpytorch->=v1.4-red)\n\n[![GitHub stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fmurufeng\u002Fawesome_lightweight_networks.svg?style=social&label=Stars)](https:\u002F\u002Fgithub.com\u002Fmurufeng\u002Fawesome_lightweight_networks)\n[![GitHub forks](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fmurufeng\u002Fawesome_lightweight_networks.svg?style=social&label=Forks)](https:\u002F\u002Fgithub.com\u002Fmurufeng\u002Fawesome_lightweight_networks)\n![visitors](https:\u002F\u002Fvisitor-badge.glitch.me\u002Fbadge?page_id=murufeng\u002Fawesome_lightweight_networks) \n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_c75c04d1c4ad.jpg)\n\n目前在深度学习领域主要分为两类，一派为学院派(Researcher)，研究强大、复杂的模型网络和实验方法，旨在追求更高的性能；\n另一派为工程派(Engineer)，旨在将算法更稳定、更高效的落地部署在不同硬件平台上。\n\n因此，针对这些移动端的算力设备，如何去设计一种高效且精简的网络架构就显得尤为重要。从2017年以来，已出现了很多优秀实用的轻量级网络架构，\n但是还没有一个通用的项目把这些网络架构进行集成起来。**本项目可以作为一个即插即用的工具包，通过直接调用就可以直接训练各种类型的网络**。\n\n目前该项目暂时支持在Cifar10\u002F100,ImageNet数据集上进行实验。**后续会持续针对每个不同的具体任务，更新工业界比较实用的SOTA的网络架构模型**。\n\n本项目主要提供一个移动端网络架构的基础性工具，避免重复造轮子，后续我们将针对具体视觉任务集成更多的网络架构。希望本项目既能**让深度学习初学者快速入门**，又能**服务科研和工业社区**。\n\n（欢迎各位轻量级网络科研学者将自己工作的核心代码整理到本项目中，推动科研社区的发展，我们会在readme中注明代码的作者~）\n\n### 安装\n```python\npip install light_cnns\n```\n\n## Table of Contents\n### [MobileNets系列](#MobileNet)\n  \n### [ShuffleNet系列](#ShuffleNet)\n\n### [华为诺亚轻量级网络系列](#noah)\n\n### [轻量级注意力网络架构](#attention)\n\n### [Transformer轻量级网络结构](#vit)\n\n### [移动端部署CPU网络架构](#cpu)\n\n### [Inception系列](#inception)\n\n### [CondenseNet系列](#condense)\n\n### [轻量级检测网络结构](#det)\n\n### [轻量级图像分割网络架构](#seg)\n\n### [轻量级图像去噪网络架构](#denoise)\n\n### [轻量级图像超分网络架构](#super)\n\n### [轻量级人体姿态估计网络架构](#hrnet)\n\n### [轻量级的卷积操作](#conv)\n\n### [模型压缩方法汇总](#compress)\n\n### [Bag of Tricks for Image Classification with Convolutional Neural Networks](https:\u002F\u002Farxiv.org\u002Fabs\u002F1812.01187v2)\n\n#### 网络结构\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_100babf0f2c6.jpg)\n\n#### Code\n\n```python\nimport torch\nfrom light_cnns import resnet50_v1b\nmodel = resnet50_v1b()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"MobileNet\">\u003C\u002Fa>\n### MobileNets系列\n本小节主要汇总了基于Google 提出来的适用于手机端的网络架构MobileNets的系列改进，针对每个网络架构，将主要总结每个不同模型的核心创新点，模型结构图以及代码实现.\n   - [MobileNetV1](#mbv1)\n   - [MobileNetV2](#mbv2)\n   - [MobileNetV3](#mbv3)\n   - [MobileNeXt](#mbnext)\n\n\u003Ca name=\"mbv1\">\u003C\u002Fa>  \n#### MobileNetv1 网络模块\n\n- [MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications](https:\u002F\u002Farxiv.org\u002Fabs\u002F1704.04861)\nMobileNetv1模型是Google针对移动端设备提出的一种轻量级的卷积神经网络，其使用的核心思想便是depthwise separable convolution（深度可分离卷积）。具体结构如下所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ef2671a7287f.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv1\nmodel = mbv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\u003Ca name=\"mbv2\">\u003C\u002Fa>  \n#### MobileNetv2 网络模块\n- [MobileNetV2: Inverted Residuals and Linear Bottlenecks](https:\u002F\u002Farxiv.org\u002Fabs\u002F1801.04381)\n\nmobilenetv2 沿用特征复用结构（残差结构），首先进行Expansion操作然后再进行Projection操作，最终构建一个逆残差网络模块（即Inverted residual block）。\n\n- 增强了梯度的传播，显著减少推理期间所需的内存占用。\n- 使用 RELU6（最高输出为 6）激活函数，使得模型在低精度计算下具有更强的鲁棒性。\n- 在经过projection layer转换到低维空间后，将第二个pointwise convolution后的 ReLU6改成Linear结构，保留了特征多样性，增强网络的表达能力（Linear Bottleneck）\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_da243a5c3f98.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv2\nmodel = mbv2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"mbv3\">\u003C\u002Fa>  \n#### MobileNetV3 网络模块\n\nSearching for MobileNetV3\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.02244\n\n核心改进点：\n- 网络的架构基于NAS实现的MnasNet（效果比MobileNetV2好）  \n- 论文推出两个版本：Large 和 Small，分别适用于不同的场景;\n- 继承了MobileNetV1的深度可分离卷积  \n- 继承了MobileNetV2的具有线性瓶颈的倒残差结构  \n- 引入基于squeeze and excitation结构的轻量级注意力模型(SE)  \n- 使用了一种新的激活函数h-swish(x)  \n- 网络结构搜索中，结合两种技术：资源受限的NAS（platform-aware NAS）与NetAdapt 算法获得卷积核和通道的最佳数量\n- 修改了MobileNetV2网络后端输出head部分;\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_f4e6ba891669.jpg)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_55c81247f25b.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv3_small\n#from light_cnns import mbv3_large\nmodel_small = mbv3_small()\n#model_large = mbv3_large()\nmodel_small.eval()\nprint(model_small)\ninput = torch.randn(1, 3, 224, 224)\ny = model_small(input)\nprint(y.size())\n```\n\n\u003Ca name=\"mbnext\">\u003C\u002Fa>  \n#### MobileNeXt 网络模块\n\n- [Rethinking Bottleneck Structure for Efficient Mobile Network Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F2007.02269)\n\n针对MobileNetV2的核心模块逆残差模块存在的问题进行了深度分析，提出了一种新颖的SandGlass模块，它可以轻易的嵌入到现有网络架构中并提升模型性能。Sandglass Block可以保证更多的信息从bottom层传递给top层，进而有助于梯度回传；执行了两次深度卷积以编码更多的空间信息。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_9a5c283a4258.jpg)\n#### Code\n```python\nimport torch\nfrom light_cnns import mobilenext\nmodel = mobilenext()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"ShuffleNet\">\u003C\u002Fa>\n#### ShuffleNet\n- [ShuffleNetv1](#shffv1)\n- [ShuffleNetV2](#shffv2)\n\n\u003Ca name=\"shffv1\">\u003C\u002Fa>  \n#### ShuffleNetv1 网络模块\n\n- [ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices](https:\u002F\u002Farxiv.org\u002Fabs\u002F1707.01083)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_2d38e58fd298.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import shufflenetv1\nmodel = shufflenetv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"shffv2\">\u003C\u002Fa>  \n#### ShuffleNetv2 网络模块\n- [ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.11164v1)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_7d41168f1298.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import shufflenetv2\nmodel = shufflenetv2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"noah\">\u003C\u002Fa>\n### 华为诺亚方舟系列\n- [AdderNet](#add)\n- [GhostNet](#ghost)\n\n\u003Ca name=\"add\">\u003C\u002Fa>\n#### AdderNet（加法网络)\n- [AdderNet and its Minimalist Hardware Design for Energy-Efficient Artificial Intelligence](https:\u002F\u002Farxiv.org\u002Fabs\u002F2101.10015)\n\n一种几乎不包含乘法的神经网络。不同于卷积网络，本文使用L1距离来度量神经网络中特征和滤波器之间的相关性。\n由于L1距离中只包含加法和减法，神经网络中大量的乘法运算可以被替换为加法和减法，从而大大减少了神经网络的计算代价。\n此外，该论文还设计了带有自适应学习率的改进的梯度计算方案，以确保滤波器的优化速度和更好的网络收敛。\n在CIFAR和ImageNet数据集上的结果表明AdderNet可以在分类任务上取得和CNN相似的准确率。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_15829d9594a9.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import resnet20\nmodel = resnet20()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\u003Ca name=\"ghost\">\u003C\u002Fa>\n#### GhostNet\n- [GhostNet: More Features from Cheap Operations](https:\u002F\u002Farxiv.org\u002Fabs\u002F1911.11907)\n\n该论文提供了一个全新的Ghost模块，旨在通过廉价操作生成更多的特征图。基于一组原始的特征图，作者应用一系列线性变换，以很小的代价生成许多能从原始特征发掘所需信息的“幻影”特征图（Ghost feature maps）。该Ghost模块即插即用，通过堆叠Ghost模块得出Ghost bottleneck，进而搭建轻量级神经网络——GhostNet。在ImageNet分类任务，GhostNet在相似计算量情况下Top-1正确率达75.7%，高于MobileNetV3的75.2%\n\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_a67c31d5a9c7.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import ghostnet\nmodel = ghostnet()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"attention\">\u003C\u002Fa>\n### 注意力系列\n\n#### CANet\n- [Coordinate Attention for Efficient Mobile Network Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.02907)\n\n针对如何有效提升移动网络的卷积特征表达能力以及通道注意力(如SE)机制能够有效建模通道间相关性但忽视了位置信息的问题，本文提出了一种新颖的注意力机制：Coordinate Attention，它通过提取水平与垂直方向的注意力特征图来建模通道间的长距离依赖关系，而且水平与垂直注意力还可以有效地提供精确的空间位置信息。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_63de1286e2cd.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv2_ca\nmodel = mbv2_ca()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ECANet\n\n- ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.03151\n\nECANet是一种即插即用的轻量级通道注意力模块，可显著提高CNN性能！ECANet主要对SENet模块进行了一些改进，提出了一种不降维的局部跨信道交互策略（ECA模块）和自适应选择一维卷积核大小的方法，该模块只增加了少量的参数，却能获得明显的性能增益。通过对SENet中通道注意模块的分析，实验表明避免降维对于学习通道注意力非常重要，适当的跨信道交互可以在显著降低模型复杂度的同时保持性能。因此，作者提出了一种不降维的局部跨信道交互策略，该策略可以通过一维卷积有效地实现。进一步，作者又提出了一种自适应选择一维卷积核大小的方法，以确定局部跨通道信息交互的覆盖率。\n\n**具体结构如下所示：**\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ca68513ba936.jpg)\n\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import mbv2_eca\nmodel = mbv2_eca()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ResNeSt\n\n- ResNeSt: Split-Attention Networks\n\n- 论文地址：https:\u002F\u002Fhangzhang.org\u002Ffiles\u002Fresnest.pdf\n\nResNeSt 实际上是站在巨人们上的\"集大成者\"，特别借鉴了：Multi-path 和 Feature-map Attention思想。作者@张航也提到了这篇文章主要是基于 SENet，SKNet 和 ResNeXt，把 attention 做到 group level。另外还引入了Split-Attention块，可以跨不同的feature-map组实现feature-map注意力。和其它网络主要的区别在于：\n1. GoogleNet 采用了Multi-path机制，其中每个网络块均由不同的卷积kernels组成。\n2. ResNeXt在ResNet bottle模块中采用分组卷积，将multi-path结构转换为统一操作。 \n3. SE-Net 通过自适应地重新校准通道特征响应来引入通道注意力（channel-attention）机制。 \n4. SK-Net 通过两个网络分支引入特征图注意力（feature-map attention）。一句话总结就是用multiple scale feature汇总得到总的feature map information，然后利用Softmax来指导channel-wise的注意力向量从而实现自适应分配不同尺度的表征信息。\n\n**网络结构如下：**\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_b8ce3f492812.jpg)\n\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import resnest50_v1b\nmodel = resnest50_v1b()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### SANet\n\n- SA-Net: Shuffle Attention for Deep Convolutional Neural Networks\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2102.00240\n\nshuffle attention主要在空间注意力（Spatial Attention）与通道注意力（Channel Attention）的基础上，引入了特征分组与通道注意力信息置换这两个操作，得到了一种超轻量型的即插即用注意力模块。具体的说，SA首先将输入沿着通道维度拆分为多组，然后对每一组特征词用Shuffle unit 刻画与建模特征在空间维度与通道维度上的依赖关系，最后所有特征进行集成以及通过通道置换操作进行各组件单元的特征通信。主要结构如下所示：\n\n- 网络结构：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_dc96a6cb5f48.jpg)\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import mbv2_sa\nmodel = mbv2_sa()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\n#### Triplet attention\n- Rotate to Attend: Convolutional Triplet Attention Module\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.03045\n\n本文中主要提出了Triplet Attention，一种轻量且有效的注意力模块。该注意力机制是一种通过使用Triplet Branch结构捕获跨维度交互信息(cross dimension interaction)来计算注意力权重的新方法。对于输入张量，Triplet Attention通过旋转操作和残差变换建立维度间的依存关系，并以可忽略的计算开销对通道和空间信息进行编码。该方法既简单又有效，并且可以轻松地插入经典Backbone中。本文通过捕捉空间维度和输入张量通道维度之间的交互作用，显著提高了网络的性能.\n\n- 网络结构\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_e470e311e514.jpg)\n\n\n- 代码结构\n\n```python\nimport torch\nfrom light_cnns import mbv2_triplet\nmodel = mbv2_triplet()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"cpu\">\u003C\u002Fa>\n\n### 移动端部署CPU网络架构\n##### [移动端的最强轻量级网络架构来啦！ LCNet吊打现有主流轻量型网络（附代码实现）](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F437715954)\n\nPP-LCNet: A Lightweight CPU Convolutional Neural Network\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fpdf\u002F2109.15099.pdf\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_72890ab82ec6.jpg)\n\n主要针对以下三个问题：\n- 如何在不增加延迟的情况下促进网络学习到更强的表征能力？\n- 目前有哪些要素可以在CPU上提高轻量级模型精度?\n- 如何有效结合不同的策略（激活函数、注意力模块、各模块间的位置顺序等等）在CPU上设计出轻量级模型？\n\n\n本文主要提出了LCNet轻量级网络架构，在不增加推理时间的情况下提高了精度，并且将这些策略有效地结合起来以获得更好的精度和速度之间的平衡。所提架构取得了比ShuffleNetV2、MobileNetV2、MobileNetV3以及GhostNet更优的延迟-精度均衡。\n\n具体网络架构如下：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_5f21bb4e94ec.jpg)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ee7f7057aec4.jpg)\n\n#### 代码实现如下：\n```python\nimport torch\nfrom light_cnns import lcnet_baseline\nmodel = lcnet_baseline()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"vit\">\u003C\u002Fa>​\n\n### Transformer轻量级网络结构\n\nMobileViT: 一种更小，更快,高精度的轻量级Transformer端侧网络架构\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2110.02178\n\n本文提出的MobileViT网络架构旨在有效的结合CNN的归纳偏置优势和ViT的全局感受野能力，\n它是一个轻量级，通用的，低时延的端侧网络架构。首先它利用了CNN中的空间归纳偏置优势以及对数据增强技巧的低敏感性的特性，\n其次，它结合了ViT中对输入特征图信息进行自适应加权和建立全局依赖关系等优点。具体做法如下\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_54aa0813e00f.jpg)\n\n网络架构如下：\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_88f9b3a27c6e.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import mobilevit_s\nmodel = mobilevit_s()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"inception\">\u003C\u002Fa>​\n### Inception系列\n\n#### Going Deeper with Convolutions (GoogleNet)\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1409.4842\n\n1. 首先使用1x1的卷积来进行升降维，这样就巧妙地解决了针对采用较大的卷积核计算复杂度较大这一问题；\n2. 然后再在多个不同尺度上运用不同大小的卷积核同时进行卷积，最后将特征进行聚合。\n\n主要结构如下所示：\n\n![](.\u002Ffigures\u002Fgooglenet.jpg)\n\n代码实现如下:\n```python\nimport torch\nfrom light_cnns import googlenet\nmodel = googlenet()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n\n```\n#### Rethinking the Inception Architecture for Computer Vision\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1512.00567\n\nInceptionv2针对InceptionV1改进的点主要有：\n\n1. 引入了BN层来对中间特征进行归一化。使用BN层之后，可以加快收敛速度，防止模型出现过拟合.\n2. 使用因子分解的方法，主要包括：将 5x5 的卷积分解为两个 3x3 的卷积运算以提升计算速度；将 nxn 的卷积核尺寸分解为 1xn 和 nx1 两个卷积.\n3. 扩展模型的宽度，来有效地解决表征性瓶颈问题。\n\n代码实现如下：\n\n```python\nimport torch\nfrom light_cnns import inception_v2\nmodel = inception_v2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n\n```\n\nInception Net v3 整合了前面 Inception v2 的特点，除此之外，还包括以下5点改进：\n\n1. 不再直接使用max pooling层进行下采样，作者设计了另外一种方案，即两个并行的分支，一个是pooling层，另外一个卷积层，最后将两者结果concat在一起。这样在使用较小的计算量情形下还可以避免瓶颈层，ShuffleNet中也采用了这种策略。\n\n2. 使用RMSProp 优化器；\n3. Factorized 7x7 卷积；\n4. 辅助分类器使用了 BatchNorm；\n5. 使用了label smoothing;\n\n代码实现如下：\n\n```python\nimport torch\nfrom light_cnns import inception_v3\nmodel = inception_v3()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1602.07261\n\n1. Inception v4 引入了一个新的stem模块，该模块放在Inception块之间执行。\n2. 基于新的stem和Inception 模块，Inception v4重新提出了三种新的Inception模块分别称为 A、B 和 C\n3. 引入了专用的「缩减块」（reduction block），它被用于改变网格的宽度和高度。\n\n```python\nimport torch\nfrom light_cnns import inception_v4\nmodel = inception_v4()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Xception: Deep Learning with Depthwise Separable Convolutions\n\n论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1610.02357\n\n基于Inception的模块，一个新的架构Xception应运而生。Xception取义自Extreme Inception，\n即Xception是一种极端的Inception.它的提出主要是为了解耦通道相关性和空间相关性。Xception主要通过提出深度可分离卷积则成功实现了将学习空间相关性和学习通道间相关性的任务完全分离，具体操作如下：\n\n1. 将Inception模块简化，仅保留包含3x3的卷积的分支：\n2. 将所有1x1的卷积进行拼接.\n3. 进一步增加3x3的卷积的分支的数量，使它与1x1的卷积的输出通道数相等：\n4. 此时每个3x3的卷积即作用于仅包含一个通道的特征图上，作者称之为“极致的Inception（Extream Inception）”模块，这就是Xception的基本模块。事实上，调节每个3x3的卷积作用的特征图的通道数，\n即调节3x3的卷积的分支的数量与1x1的卷积的输出通道数的比例，可以实现一系列处于传统Inception模块和“极致的Inception”模块之间的状态。\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import xception\nmodel = xception()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Inception Convolution with Efficient Dilation Search（CVPR2021 oral）\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2012.13587\n\n为了充分挖掘空洞卷积的潜力，本文主要结合一种基于统计优化的简单而高效(零成本)的空洞搜索算法（EDO，effective dilation search）提出了一种新的空洞卷积变体，即inception (dilated)卷积\n\n网络结构如下所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_18e427255c09.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import ic_resnet50\npatter = '.\u002Fpattern_zoo\u002Fdetection\u002Fic_resnet50_k9.json'\nmodel = ic_resnet50(pattern_path=patter)\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\n\u003Ca name=\"seg\">\u003C\u002Fa>​\n### 轻量级图像分割网络架构\n\n#### [ESPNet系列：自动驾驶领域轻量级分割模型]()\n\nESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1803.06815v2\n\nESPNet是用于语义分割的轻量级网络，主要提出一种高效空间金字塔卷积模块（ESP Module），该模块包含point-wise卷积和空洞卷积金字塔,有助于减小模型运算量和内存、功率消耗，以提高在终端设备上的适用性。综合比较，ESPNet能在GPU\u002F笔记本\u002F终端设备上达到112FPS\u002F21FPS\u002F9FPS。\n\n\n网络架构如下：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_5fd05e199c6c.jpg)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_55f64288c6d0.jpg)\n\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import espnetv1\nmodel = espnetv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ESPNetv2: A Light-weight, Power Efficient, and General Purpose Convolutional Neural Network\n\nESPNetv2主要基于ESPNetv1进行了模型轻量化处理，主要包括：\n\n1. 基于深度可分离空洞卷积以及分组point-wise卷积改进ESP模块，提出了EESP(Extremely Efficient Spatial Pyramid)模块。相对于ESPNet拥有更好的精度以及更少的参数。\n\n2. 设计了cyclic learning rate scheduler，比一般的固定学习率的scheduler要好。\n\n\n其中下采样版本的EESP模块(Strided EESP with shortcut connection to an input image),如下图所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_a3127ea256f9.jpg)\n\n网络架构如下：\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_2615ed6b727f.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import espnetv2\nmodel = espnetv2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n","# 令人惊叹的轻量级网络\n\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fawesome_lightweight_networks-v0.4.2-brightgreen)\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython->=v3.0-blue)\n![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpytorch->=v1.4-red)\n\n[![GitHub 星标](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fmurufeng\u002Fawesome_lightweight_networks.svg?style=social&label=Stars)](https:\u002F\u002Fgithub.com\u002Fmurufeng\u002Fawesome_lightweight_networks)\n[![GitHub 分叉](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fmurufeng\u002Fawesome_lightweight_networks.svg?style=social&label=Forks)](https:\u002F\u002Fgithub.com\u002Fmurufeng\u002Fawesome_lightweight_networks)\n![访问者](https:\u002F\u002Fvisitor-badge.glitch.me\u002Fbadge?page_id=murufeng\u002Fawesome_lightweight_networks) \n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_c75c04d1c4ad.jpg)\n\n目前在深度学习领域主要分为两类，一派为学院派(Researcher)，研究强大、复杂的模型网络和实验方法，旨在追求更高的性能；\n另一派为工程派(Engineer)，旨在将算法更稳定、更高效的落地部署在不同硬件平台上。\n\n因此，针对这些移动端的算力设备，如何去设计一种高效且精简的网络架构就显得尤为重要。从2017年以来，已出现了很多优秀实用的轻量级网络架构，\n但是还没有一个通用的项目把这些网络架构进行集成起来。**本项目可以作为一个即插即用的工具包，通过直接调用就可以直接训练各种类型的网络**。\n\n目前该项目暂时支持在Cifar10\u002F100,ImageNet数据集上进行实验。**后续会持续针对每个不同的具体任务，更新工业界比较实用的SOTA的网络架构模型**。\n\n本项目主要提供一个移动端网络架构的基础性工具，避免重复造轮子，后续我们将针对具体视觉任务集成更多的网络架构。希望本项目既能**让深度学习初学者快速入门**，又能**服务科研和工业社区**。\n\n（欢迎各位轻量级网络科研学者将自己工作的核心代码整理到本项目中，推动科研社区的发展，我们会在readme中注明代码的作者~）\n\n### 安装\n```python\npip install light_cnns\n```\n\n## 目录\n### [MobileNets系列](#MobileNet)\n  \n### [ShuffleNet系列](#ShuffleNet)\n\n### [华为诺亚轻量级网络系列](#noah)\n\n### [轻量级注意力网络架构](#attention)\n\n### [Transformer轻量级网络结构](#vit)\n\n### [移动端部署CPU网络架构](#cpu)\n\n### [Inception系列](#inception)\n\n### [CondenseNet系列](#condense)\n\n### [轻量级检测网络结构](#det)\n\n### [轻量级图像分割网络架构](#seg)\n\n### [轻量级图像去噪网络架构](#denoise)\n\n### [轻量级图像超分网络架构](#super)\n\n### [轻量级人体姿态估计网络架构](#hrnet)\n\n### [轻量级的卷积操作](#conv)\n\n### [模型压缩方法汇总](#compress)\n\n### [Bag of Tricks for Image Classification with Convolutional Neural Networks](https:\u002F\u002Farxiv.org\u002Fabs\u002F1812.01187v2)\n\n#### 网络结构\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_100babf0f2c6.jpg)\n\n#### Code\n\n```python\nimport torch\nfrom light_cnns import resnet50_v1b\nmodel = resnet50_v1b()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"MobileNet\">\u003C\u002Fa>\n### MobileNets系列\n本小节主要汇总了基于Google 提出来的适用于手机端的网络架构MobileNets的系列改进，针对每个网络架构，将主要总结每个不同模型的核心创新点，模型结构图以及代码实现.\n   - [MobileNetV1](#mbv1)\n   - [MobileNetV2](#mbv2)\n   - [MobileNetV3](#mbv3)\n   - [MobileNeXt](#mbnext)\n\n\u003Ca name=\"mbv1\">\u003C\u002Fa>  \n#### MobileNetv1 网络模块\n\n- [MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications](https:\u002F\u002Farxiv.org\u002Fabs\u002F1704.04861)\nMobileNetv1模型是Google针对移动端设备提出的一种轻量级的卷积神经网络，其使用的核心思想便是depthwise separable convolution（深度可分离卷积）。具体结构如下所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ef2671a7287f.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv1\nmodel = mbv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\u003Ca name=\"mbv2\">\u003C\u002Fa>  \n#### MobileNetv2 网络模块\n- [MobileNetV2: Inverted Residuals and Linear Bottlenecks](https:\u002F\u002Farxiv.org\u002Fabs\u002F1801.04381)\n\nmobilenetv2 沿用特征复用结构（残差结构），首先进行Expansion操作然后再进行Projection操作，最终构建一个逆残差网络模块（即Inverted residual block）。\n\n- 增强了梯度的传播，显著减少推理期间所需的内存占用。\n- 使用 RELU6（最高输出为 6）激活函数，使得模型在低精度计算下具有更强的鲁棒性。\n- 在经过projection layer转换到低维空间后，将第二个pointwise convolution后的 ReLU6改成Linear结构，保留了特征多样性，增强网络的表达能力（Linear Bottleneck）\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_da243a5c3f98.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv2\nmodel = mbv2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"mbv3\">\u003C\u002Fa>  \n#### MobileNetV3 网络模块\n\nSearching for MobileNetV3\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.02244\n\n核心改进点：\n- 网络的架构基于NAS实现的MnasNet（效果比MobileNetV2好）  \n- 论文推出两个版本：Large 和 Small，分别适用于不同的场景;\n- 继承了MobileNetV1的深度可分离卷积  \n- 继承了MobileNetV2的具有线性瓶颈的倒残差结构  \n- 引入基于squeeze and excitation结构的轻量级注意力模型(SE)  \n- 使用了一种新的激活函数h-swish(x)  \n- 网络结构搜索中，结合两种技术：资源受限的NAS（platform-aware NAS）与NetAdapt 算法获得卷积核和通道的最佳数量\n- 修改了MobileNetV2网络后端输出head部分;\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_f4e6ba891669.jpg)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_55c81247f25b.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv3_small\n#from light cnns import mbv3_large\nmodel_small = mbv3_small()\n#model_large = mbv3_large()\nmodel_small.eval()\nprint(model_small)\ninput = torch.randn(1, 3, 224, 224)\ny = model_small(input)\nprint(y.size())\n```\n\n\u003Ca name=\"mbnext\">\u003C\u002Fa>  \n#### MobileNeXt 网络模块\n\n- [Rethinking Bottleneck Structure for Efficient Mobile Network Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F2007.02269)\n\n针对MobileNetV2的核心模块逆残差模块存在的问题进行了深度分析，提出了一种新颖的SandGlass模块，它可以轻易的嵌入到现有网络架构中并提升模型性能。Sandglass Block可以保证更多的信息从bottom层传递给top层，进而有助于梯度回传；执行了两次深度卷积以编码更多的空间信息。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_9a5c283a4258.jpg)\n#### Code\n```python\nimport torch\nfrom light cnns import mobilenext\nmodel = mobilenext()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"ShuffleNet\">\u003C\u002Fa>\n#### ShuffleNet\n- [ShuffleNetv1](#shffv1)\n- [ShuffleNetV2](#shffv2)\n\n\u003Ca name=\"shffv1\">\u003C\u002Fa>  \n#### ShuffleNetv1 网络模块\n\n- [ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices](https:\u002F\u002Farxiv.org\u002Fabs\u002F1707.01083)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_2d38e58fd298.jpg)\n\n#### Code\n```python\nimport torch\nfrom light cnns shufflenetv1\nmodel = shufflenetv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint y size()\n```\n\n\u003Ca name=\"shffv2\">\u003C\u002Fa>  \n#### ShuffleNetv2 网络模块\n- [ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design](https:\u002F\u002Farxiv.org\u002Fabs\u002F1807.11164v1)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_7d41168f1298.jpg)\n\n#### Code\n```python\nimport torch\nfrom light cnns shufflenetv2\nmodel = shufflenetv2()\nmodel eval print model input = torch 1, 3, 224, 224 y = model input print y size()\n```\n\n\u003Ca name=\"noah\">\u003C\u002Fa>\n### 华为诺亚方舟系列\n- [AdderNet](#add)\n- [GhostNet](#ghost)\n\n\u003Ca name=\"add\">\u003C\u002Fa>\n#### AdderNet（加法网络)\n- [AdderNet and its Minimalist Hardware Design for Energy-Efficient Artificial Intelligence](https:\u002F\u002Farxiv.org\u002Fabs\u002F2101.10015)\n\n一种几乎不包含乘法的神经网络。不同于卷积网络，本文使用L1距离来度量神经网络中特征和滤波器之间的相关性。\n由于L1距离中只包含加法和减法，神经网络中大量的乘法运算可以被替换为加法和减法，从而大大减少了神经网络的计算代价。\n此外，该论文还设计了带有自适应学习率的改进的梯度计算方案，以确保滤波器的优化速度和更好的网络收敛。\n在CIFAR和ImageNet数据集上的结果表明AdderNet可以在分类任务上取得和CNN相似的准确率。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_15829d9594a9.jpg)\n\n#### Code\n```python\nimport torch\nfrom light cnns resnet20\nmodel = resnet20()\nmodel eval print model input = torch 1, 3, 224, 224 y = model input print y size()\n```\n\u003Ca name=\"ghost\">\u003C\u002Fa>\n#### GhostNet\n- [GhostNet: More Features from Cheap Operations](https:\u002F\u002Farxiv.org\u002Fabs\u002F1911.11907)\n\n该论文提供了一个全新的Ghost模块，旨在通过廉价操作生成更多的特征图。基于一组原始的特征图，作者应用一系列线性变换，以很小的代价生成许多能从原始特征发掘所需信息的“幻影”特征图（Ghost feature maps）。该Ghost模块即插即用，通过堆叠Ghost模块得出Ghost bottleneck，进而搭建轻量级神经网络——GhostNet。在ImageNet分类任务，GhostNet在相似计算量情况下Top-1正确率达75.7%，高于MobileNetV3的75.2%\n\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_a67c31d5a9c7.jpg)\n\n#### Code\n```python\nimport torch\nfrom light cnns ghostnet\nmodel = ghostnet()\nmodel eval print model input = torch 1, 3, 224, 224 y = model input print y size()\n```\n\n\u003Ca name=\"attention\">\u003C\u002Fa>\n\n### 注意力系列\n\n#### CANet\n- [用于高效移动网络设计的坐标注意力](https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.02907)\n\n针对如何有效提升移动网络的卷积特征表达能力以及通道注意力(如SE)机制能够有效建模通道间相关性但忽视了位置信息的问题，本文提出了一种新颖的注意力机制：Coordinate Attention，它通过提取水平与垂直方向的注意力特征图来建模通道间的长距离依赖关系，而且水平与垂直注意力还可以有效地提供精确的空间位置信息。\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_63de1286e2cd.jpg)\n\n#### Code\n```python\nimport torch\nfrom light_cnns import mbv2_ca\nmodel = mbv2_ca()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ECANet\n\n- ECA-Net: 针对深度卷积神经网络的高效通道注意力\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.03151\n\nECANet是一种即插即用的轻量级通道注意力模块，可显著提高CNN性能！ECANet主要对SENet模块进行了一些改进，提出了一种不降维的局部跨信道交互策略（ECA模块）和自适应选择一维卷积核大小的方法，该模块只增加了少量的参数，却能获得明显的性能增益。通过对SENet中通道注意模块的分析，实验表明避免降维对于学习通道注意力非常重要，适当的跨信道交互可以在显著降低模型复杂度的同时保持性能。因此，作者提出了一种不降维的局部跨信道交互策略，该策略可以通过一维卷积有效地实现。进一步，作者又提出了一种自适应选择一维卷积核大小的方法，以确定局部跨通道信息交互的覆盖率。\n\n**具体结构如下所示：**\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ca68513ba936.jpg)\n\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import mbv2_eca\nmodel = mbv2_eca()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ResNeSt\n\n- ResNeSt: 分裂注意力网络\n\n- 论文地址：https:\u002F\u002Fhangzhang.org\u002Ffiles\u002Fresnest.pdf\n\nResNeSt 实际上是站在巨人们上的\"集大成者\"，特别借鉴了：Multi-path 和 Feature-map Attention思想。作者@张航也提到了这篇文章主要是基于 SENet，SKNet 和 ResNeXt，把 attention 做到 group level。另外还引入了Split-Attention块，可以跨不同的feature-map组实现feature-map注意力。和其它网络主要的区别在于：\n1. GoogleNet 采用了Multi-path机制，其中每个网络块均由不同的卷积kernels组成。\n2. ResNeXt在ResNet bottle模块中采用分组卷积，将multi-path结构转换为统一操作。 \n3. SE-Net 通过自适应地重新校准通道特征响应来引入通道注意力（channel-attention）机制。 \n4. SK-Net 通过两个网络分支引入特征图注意力（feature-map attention）。一句话总结就是用multiple scale feature汇总得到总的feature map information，然后利用Softmax来指导channel-wise的注意力向量从而实现自适应分配不同尺度的表征信息。\n\n**网络结构如下：**\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_b8ce3f492812.jpg)\n\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import resnest50_v1b\nmodel = resnest50_v1b()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### SANet\n\n- SA-Net: 针对深度卷积神经网络的洗牌注意力\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2102.00240\n\nshuffle attention主要在空间注意力（Spatial Attention）与通道注意力（Channel Attention）的基础上，引入了特征分组与通道注意力信息置换这两个操作，得到了一种超轻量型的即插即用注意力模块。具体的说，SA首先将输入沿着通道维度拆分为多组，然后对每一组特征词用Shuffle unit 刻画与建模特征在空间维度与通道维度上的依赖关系，最后所有特征进行集成以及通过通道置换操作进行各组件单元的特征通信。主要结构如下所示：\n\n- 网络结构：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_dc96a6cb5f48.jpg)\n\n- 代码实现\n```python\nimport torch\nfrom light_cnns import mbv2_sa\nmodel = mbv2_sa()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Triplet attention\n- 旋转以关注：卷积三元组注意力模块\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2010.03045\n\n本文中主要提出了Triplet Attention，一种轻量且有效的注意力模块。该注意力机制是一种通过使用Triplet Branch结构捕获跨维度交互信息(cross dimension interaction)来计算注意力权重的新方法。对于输入张量，Triplet Attention通过旋转操作和残差变换建立维度间的依存关系，并以可忽略的计算开销对通道和空间信息进行编码。该方法既简单又有效，并且可以轻松地插入经典Backbone中。本文通过捕捉空间维度和输入张量通道维度之间的交互作用，显著提高了网络的性能.\n\n- 网络结构\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_e470e311e514.jpg)\n\n\n- 代码结构\n\n```python\nimport torch\nfrom light_cnns import mbv2_triplet\nmodel = mbv2_triplet()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"cpu\">\u003C\u002Fa>\n\n### 移动端部署CPU网络架构\n##### [移动端的最强轻量级网络架构来啦！ LCNet吊打现有主流轻量型网络（附代码实现）](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F437715954)\n\nPP-LCNet: 一种轻量级的CPU卷积神经网络\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fpdf\u002F2109.15099.pdf\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_72890ab82ec6.jpg)\n\n主要针对以下三个问题：\n- 如何在不增加延迟的情况下促进网络学习到更强的表征能力？\n- 目前有哪些要素可以在CPU上提高轻量级模型精度?\n- 如何有效结合不同的策略（激活函数、注意力模块、各模块间的位置顺序等等）在CPU上设计出轻量级模型？\n\n\n本文主要提出了LCNet轻量级网络架构，在不增加推理时间的情况下提高了精度，并且将这些策略有效地结合起来以获得更好的精度和速度之间的平衡。所提架构取得了比ShuffleNetV2、MobileNetV2、MobileNetV3以及GhostNet更优的延迟-精度均衡。\n\n具体网络架构如下：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_5f21bb4e94ec.jpg)\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_ee7f7057aec4.jpg)\n\n#### 代码实现如下：\n```python\nimport torch\nfrom light_cnns import lcnet_baseline\nmodel = lcnet_baseline()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"vit\">\u003C\u002Fa>​\n\n### Transformer轻量级网络结构\n\nMobileViT: 一种更小，更快,高精度的轻量级Transformer端侧网络架构\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2110.02178\n\n本文提出的MobileViT网络架构旨在有效的结合CNN的归纳偏置优势和ViT的全局感受野能力，\n它是一个轻量级，通用的，低时延的端侧网络架构。首先它利用了CNN中的空间归纳偏置优势以及对数据增强技巧的低敏感性的特性，\n其次，它结合了ViT中对输入特征图信息进行自适应加权和建立全局依赖关系等优点。具体做法如下\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_54aa0813e00f.jpg)\n\n网络架构如下：\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_88f9b3a27c6e.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import mobilevit_s\nmodel = mobilevit_s()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\u003Ca name=\"inception\">\u003C\u002Fa>\n\n### Inception系列\n\n#### 通过卷积更深入地探索（GoogleNet）\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1409.4842\n\n1. 首先使用1x1的卷积来进行升降维，这样就巧妙地解决了针对采用较大的卷积核计算复杂度较大这一问题；\n2. 然后再在多个不同尺度上运用不同大小的卷积核同时进行卷积，最后将特征进行聚合。\n\n主要结构如下所示：\n\n![](.\u002Ffigures\u002Fgooglenet.jpg)\n\n代码实现如下:\n```python\nimport torch\nfrom light_cnns import googlenet\nmodel = googlenet()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n\n```\n#### 重新思考计算机视觉中的Inception架构\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1512.00567\n\nInceptionv2针对InceptionV1改进的点主要有：\n\n1. 引入了BN层来对中间特征进行归一化。使用BN层之后，可以加快收敛速度，防止模型出现过拟合.\n2. 使用因子分解的方法，主要包括：将 5x5 的卷积分解为两个 3x3 的卷积运算以提升计算速度；将 nxn 的卷积核尺寸分解为 1xn 和 nx1 两个卷积.\n3. 扩展模型的宽度，来有效地解决表征性瓶颈问题。\n\n代码实现如下：\n\n```python\nimport torch\nfrom light_cnns import inception_v2\nmodel = inception_v2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n\n```\n\nInception Net v3 整合了前面 Inception v2 的特点，除此之外，还包括以下5点改进：\n\n1. 不再直接使用max pooling层进行下采样，作者设计了另外一种方案，即两个并行的分支，一个是pooling层，另外一个卷积层，最后将两者结果concat在一起。这样在使用较小的计算量情形下还可以避免瓶颈层，ShuffleNet中也采用了这种策略。\n\n2. 使用RMSProp 优化器；\n3. Factorized 7x7 卷积；\n4. 辅助分类器使用了 BatchNorm；\n5. 使用了label smoothing;\n\n代码实现如下：\n\n```python\nimport torch\nfrom light_cnns import inception_v3\nmodel = inception_v3()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Inception-v4、Inception-ResNet以及残差连接对学习的影响\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1602.07261\n\n1. Inception v4 引入了一个新的stem模块，该模块放在Inception块之间执行。\n2. 基于新的stem和Inception 模块，Inception v4重新提出了三种新的Inception模块分别称为 A、B 和 C\n3. 引入了专用的「缩减块」（reduction block），它被用于改变网格的宽度和高度。\n\n```python\nimport torch\nfrom light_cnns import inception_v4\nmodel = inception_v4()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### Xception：深度可分离卷积的深度学习\n\n论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1610.02357\n\n基于Inception的模块，一个新的架构Xception应运而生。Xception取义自Extreme Inception，\n即Xception是一种极端的Inception.它的提出主要是为了解耦通道相关性和空间相关性。Xception主要通过提出深度可分离卷积则成功实现了将学习空间相关性和学习通道间相关性的任务完全分离，具体操作如下：\n\n1. 将Inception模块简化，仅保留包含3x3的卷积的分支：\n2. 将所有1x1的卷积进行拼接.\n3. 进一步增加3x3的卷积的分支的数量，使它与1x1的卷积的输出通道数相等：\n4. 此时每个3x3的卷积即作用于仅包含一个通道的特征图上，作者称之为“极致的Inception（Extream Inception）”模块，这就是Xception的基本模块。事实上，调节每个3x3的卷积作用的特征图的通道数，\n即调节3x3的卷积的分支的数量与1x1的卷积的输出通道数的比例，可以实现一系列处于传统Inception模块和“极致的Inception”模块之间的状态。\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import xception\nmodel = xception()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### 带有高效空洞搜索的Inception卷积（CVPR2021口头报告）\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F2012.13587\n\n为了充分挖掘空洞卷积的潜力，本文主要结合一种基于统计优化的简单而高效(零成本)的空洞搜索算法（EDO，effective dilation search）提出了一种新的空洞卷积变体，即inception (dilated)卷积\n\n网络结构如下所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_18e427255c09.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import ic_resnet50\npatter = '.\u002Fpattern_zoo\u002Fdetection\u002Fic_resnet50_k9.json'\nmodel = ic_resnet50(pattern_path=patter)\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n\n\u003Ca name=\"seg\">\u003C\u002Fa>​\n### 轻量级图像分割网络架构\n\n#### [ESPNet系列：自动驾驶领域轻量级分割模型]()\n\nESPNet: 用于语义分割的高效空洞卷积空间金字塔\n\n- 论文地址：https:\u002F\u002Farxiv.org\u002Fabs\u002F1803.06815v2\n\nESPNet是用于语义分割的轻量级网络，主要提出一种高效空间金字塔卷积模块（ESP Module），该模块包含point-wise卷积和空洞卷积金字塔,有助于减小模型运算量和内存、功率消耗，以提高在终端设备上的适用性。综合比较，ESPNet能在GPU\u002F笔记本\u002F终端设备上达到112FPS\u002F21FPS\u002F9FPS。\n\n\n网络架构如下：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_5fd05e199c6c.jpg)\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_55f64288c6d0.jpg)\n\n\n代码实现如下：\n```python\nimport torch\nfrom light_cnns import espnetv1\nmodel = espnetv1()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```\n\n#### ESPNetv2：一款轻量、节能且通用的卷积神经网络\n\nESPNetv2主要基于ESPNetv1进行了模型轻量化处理，主要包括：\n\n1. 基于深度可分离空洞卷积以及分组point-wise卷积改进ESP模块，提出了EESP(Extremely Efficient Spatial Pyramid)模块。相对于ESPNet拥有更好的精度以及更少的参数。\n\n2. 设计了cyclic learning rate scheduler，比一般的固定学习率的scheduler要好。\n\n\n其中下采样版本的EESP模块(Strided EESP with shortcut connection to an input image),如下图所示：\n\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_a3127ea256f9.jpg)\n\n网络架构如下：\n![](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_readme_2615ed6b727f.jpg)\n\n代码实现如下：\n```python\nimport torch\nfrom light cnns import espnetv2\nmodel = espnetv2()\nmodel.eval()\nprint(model)\ninput = torch.randn(1, 3, 224, 224)\ny = model(input)\nprint(y.size())\n```","# awesome_lightweight_networks 快速上手指南\n\n本指南旨在帮助开发者快速集成和使用 `awesome_lightweight_networks`（包名：`light_cnns`），这是一个专为移动端和嵌入式设备设计的轻量级神经网络工具包。它集成了 MobileNet、ShuffleNet、GhostNet 等多种主流轻量级架构，支持即插即用。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows\n*   **Python 版本**: >= 3.0 (推荐 Python 3.8+)\n*   **深度学习框架**: PyTorch >= 1.4\n*   **依赖库**: 建议安装最新版的 `torch` 和 `torchvision` 以获得最佳兼容性。\n\n> **国内加速建议**：\n> 如果您在中国大陆地区，建议使用清华源或阿里源安装 PyTorch 和相关依赖，以提升下载速度：\n> ```bash\n> pip install torch torchvision -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n本项目已发布为 Python 包，可直接通过 pip 进行安装。\n\n**标准安装命令：**\n```bash\npip install light_cnns\n```\n\n**国内镜像源安装（推荐）：**\n```bash\npip install light_cnns -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n安装完成后，您可以直接从 `light_cnns` 模块导入所需的网络模型。以下以经典的 **MobileNetV2** 为例，展示如何实例化模型并进行前向推理。\n\n### 代码示例\n\n```python\nimport torch\nfrom light_cnns import mbv2\n\n# 1. 实例化模型\nmodel = mbv2()\n\n# 2. 设置为评估模式 (如果是训练请使用 model.train())\nmodel.eval()\n\n# 3. 打印模型结构 (可选)\nprint(model)\n\n# 4. 构造输入张量 (Batch Size=1, Channels=3, Height=224, Width=224)\ninput_tensor = torch.randn(1, 3, 224, 224)\n\n# 5. 前向推理\nwith torch.no_grad():\n    output = model(input_tensor)\n\n# 6. 查看输出维度\nprint(output.size())\n```\n\n### 支持的网络架构\n\n该工具包涵盖了丰富的轻量级模型系列，您只需更改导入名称即可切换模型：\n\n*   **MobileNet 系列**: `mbv1`, `mbv2`, `mbv3_small`, `mbv3_large`, `mobilenext`\n*   **ShuffleNet 系列**: `shufflenetv1`, `shufflenetv2`\n*   **华为诺亚系列**: `ghostnet`, `resnet20` (AdderNet)\n*   **注意力机制增强版**: `mbv2_ca` (Coordinate Attention), `mbv2_eca` (ECA-Net), `mbv2_sa` (Shuffle Attention)\n*   **CPU 专用架构**: `lcnet_baseline` (PP-LCNet)\n*   **Transformer 轻量化**: `mobilevit_s`\n*   **经典架构**: `googlenet`, `resnet50_v1b`, `resnest50_v1b`\n\n更多模型请参考项目文档中的详细列表，调用方式与上述示例完全一致。","某初创团队正在开发一款运行在低端安卓手机上的实时垃圾分类应用，需要在有限的算力和内存下实现高精度的图像识别。\n\n### 没有 awesome_lightweight_networks 时\n- **重复造轮子效率低**：开发人员需手动从不同论文仓库复现 MobileNetV2、ShuffleNet 等代码，格式不统一且调试耗时数周。\n- **模型适配难度大**：自行修改的网络结构在移动端推理时经常崩溃，缺乏针对低精度计算（如 REPU6）的鲁棒性优化。\n- **选型试错成本高**：难以快速对比 GhostNet、MobileViT 等多种架构在特定数据集上的性能，导致项目初期无法确定最佳基线模型。\n- **部署门槛高**：缺乏统一的接口标准，将学术模型转化为工程可用代码时，常因依赖冲突或版本不兼容而受阻。\n\n### 使用 awesome_lightweight_networks 后\n- **即插即用提速度**：通过 `pip install light_cnns` 一键安装，直接调用 `mbv2()` 或 `shufflenet_v2()` 等标准化接口，半天内即可完成基线模型搭建。\n- **原生移动端优化**：直接复用库中已优化的深度可分离卷积和线性瓶颈结构，确保模型在低端 CPU 上推理流畅且内存占用极低。\n- **多架构快速验证**：轻松切换 MobileNeXt、LCNet 等不同 SOTA 轻量网络进行训练对比，迅速锁定最适合垃圾分类任务的模型架构。\n- **工程落地无缝衔接**：统一的 PyTorch 实现消除了版本差异，代码可直接用于后续的量化的部署流程，大幅缩短从实验到上线的周期。\n\nawesome_lightweight_networks 通过集成主流轻量级网络架构，让开发者摆脱了繁琐的代码复现工作，专注于业务逻辑与模型调优，真正实现了算法在移动端的快速落地。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fmurufeng_awesome_lightweight_networks_45ffbff2.png","murufeng",null,"https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fmurufeng_19079b8a.png","Shanghai","2394849504@qq.com","https:\u002F\u002Fgithub.com\u002Fmurufeng",[80],{"name":81,"color":82,"percentage":83},"Python","#3572A5",100,911,163,"2026-04-01T07:29:24","MIT",1,"","未说明",{"notes":92,"python":93,"dependencies":94},"该项目是一个轻量级网络架构工具包，支持在 CIFAR10\u002F100 和 ImageNet 数据集上进行实验。通过 pip install light_cnns 安装核心库。代码示例显示模型输入通常为 (1, 3, 224, 224)，适用于移动端和 CPU 部署场景，未强制要求 GPU 环境。",">=3.0",[95,96],"torch>=1.4","light_cnns",[14],[99,100,101,102],"mobile-networks","awesome-list","deep-learning","mobilenet","2026-03-27T02:49:30.150509","2026-04-07T00:51:47.961329",[],[]]