[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-google--XNNPACK":3,"tool-google--XNNPACK":61},[4,18,28,37,45,53],{"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":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"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":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"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 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":120,"forks":121,"last_commit_at":122,"license":123,"difficulty_score":124,"env_os":125,"env_gpu":126,"env_ram":127,"env_deps":128,"category_tags":136,"github_topics":137,"view_count":24,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":149,"updated_at":150,"faqs":151,"releases":185},10117,"google\u002FXNNPACK","XNNPACK","High-efficiency floating-point neural network inference operators for mobile, server, and Web","XNNPACK 是一套专为移动端、服务器及 Web 环境打造的高性能神经网络推理加速库。它致力于解决深度学习模型在不同硬件平台上运行效率低下的难题，通过高度优化的底层算子，显著降低推理延迟并提升吞吐量。\n\n需要注意的是，XNNPACK 并非直接面向深度学习从业者或研究人员提供前端接口，而是作为“引擎”嵌入到 TensorFlow Lite、PyTorch、ONNX Runtime 和 MediaPipe 等主流框架中，为它们提供强大的底层性能支撑。因此，它最适合需要优化模型部署性能的框架开发者、系统工程师以及嵌入式应用开发人员使用。\n\n其核心技术亮点在于广泛的架构兼容性与极致的优化策略。XNNPACK 全面支持 ARM、x86、RISC-V 及 WebAssembly 等多种指令集，能够充分利用从手机到服务器的各类处理器特性（如 NEON、AVX512）。此外，它独特地支持 NHWC 数据布局及自定义通道步长，使得通道拆分与合并操作无需额外计算成本，从而在 MobileNet 等常见模型上实现了卓越的单线程与多线程推理速度。","# XNNPACK\n\nXNNPACK is a highly optimized solution for neural network inference on ARM, x86, WebAssembly, and RISC-V platforms. XNNPACK is not intended for direct use by deep learning practitioners and researchers; instead it provides low-level performance primitives for accelerating high-level machine learning frameworks, such as [TensorFlow Lite](https:\u002F\u002Fwww.tensorflow.org\u002Flite), [TensorFlow.js](https:\u002F\u002Fwww.tensorflow.org\u002Fjs), [PyTorch](https:\u002F\u002Fpytorch.org\u002F), [ONNX Runtime](https:\u002F\u002Fonnxruntime.ai), [ExecuTorch](https:\u002F\u002Fpytorch.org\u002Fexecutorch-overview), and [MediaPipe](https:\u002F\u002Fmediapipe.dev).\n\n## Supported Architectures\n\n- ARM64 on Android, iOS, macOS, Linux, and Windows\n- ARMv7 (with NEON) on Android\n- ARMv6 (with VFPv2) on Linux\n- x86 and x86-64 (up to AVX512) on Windows, Linux, macOS, Android, and iOS simulator\n- WebAssembly MVP\n- WebAssembly SIMD\n- [WebAssembly Relaxed SIMD](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Frelaxed-simd) (experimental)\n- RISC-V (RV32GC and RV64GC)\n- Hexagon (with HVX)\n\n## Operator Coverage\n\nXNNPACK implements the following neural network operators:\n\n- 2D Convolution (including grouped and depthwise)\n- 2D Deconvolution (AKA Transposed Convolution)\n- 2D Average Pooling\n- 2D Max Pooling\n- 2D ArgMax Pooling (Max Pooling + indices)\n- 2D Unpooling\n- 2D Bilinear Resize\n- 2D Depth-to-Space (AKA Pixel Shuffle)\n- Add (including broadcasting, two inputs only)\n- Subtract (including broadcasting)\n- Divide (including broadcasting)\n- Maximum (including broadcasting)\n- Minimum (including broadcasting)\n- Multiply (including broadcasting)\n- Squared Difference (including broadcasting)\n- Global Average Pooling\n- Channel Shuffle\n- Fully Connected\n- Abs (absolute value)\n- Bankers' Rounding (rounding to nearest, ties to even)\n- Ceiling (rounding to integer above)\n- Clamp (includes ReLU and ReLU6)\n- Convert (includes fixed-point and half-precision quantization and\n  dequantization)\n- Copy\n- ELU\n- Floor (rounding to integer below)\n- HardSwish\n- Leaky ReLU\n- Negate\n- Sigmoid\n- Softmax\n- Square\n- Tanh\n- Transpose\n- Truncation (rounding to integer towards zero)\n- PReLU\n\nAll operators in XNNPACK support NHWC layout, but additionally allow custom stride along the **C**hannel dimension. Thus, operators can consume a subset of channels in the input tensor, and produce a subset of channels in the output tensor, providing a zero-cost Channel Split and Channel Concatenation operations.\n\n## Performance\n\n### Mobile phones\n\nThe table below presents **single-threaded** performance of XNNPACK library on three generations of MobileNet models and three generations of Pixel phones.\n\n| Model                   | Pixel, ms | Pixel 2, ms | Pixel 3a, ms |\n| ----------------------- | :-------: | :---------: | :----------: |\n| FP32 MobileNet v1 1.0X  |    82     |      86     |      88      |\n| FP32 MobileNet v2 1.0X  |    49     |      53     |      55      |\n| FP32 MobileNet v3 Large |    39     |      42     |      44      |\n| FP32 MobileNet v3 Small |    12     |      14     |      14      |\n\nThe following table presents **multi-threaded** (using as many threads as there are big cores) performance of XNNPACK library on three generations of MobileNet models and three generations of Pixel phones.\n\n| Model                   | Pixel, ms | Pixel 2, ms | Pixel 3a, ms |\n| ----------------------- | :-------: | :---------: | :----------: |\n| FP32 MobileNet v1 1.0X  |    43     |      27     |      46      |\n| FP32 MobileNet v2 1.0X  |    26     |      18     |      28      |\n| FP32 MobileNet v3 Large |    22     |      16     |      24      |\n| FP32 MobileNet v3 Small |     7     |       6     |       8      |\n\nBenchmarked on March 27, 2020 with `end2end_bench --benchmark_min_time=5` on an Android\u002FARM64 build with Android NDK r21 (`bazel build -c opt --config android_arm64 :end2end_bench`) and neural network models with randomized weights and inputs.\n\n### Raspberry Pi\n\nThe table below presents **multi-threaded** performance of XNNPACK library on three generations of MobileNet models and three generations of Raspberry Pi boards.\n\n| Model                   | RPi Zero W (BCM2835), ms | RPi 2 (BCM2836), ms | RPi 3+ (BCM2837B0), ms | RPi 4 (BCM2711), ms | RPi 4 (BCM2711, ARM64), ms |\n| ----------------------- | :----------------------: | :-----------------: | :--------------------: | :-----------------: | :------------------------: |\n| FP32 MobileNet v1 1.0X  |          3919            |         302         |          114           |          72         |             77             |\n| FP32 MobileNet v2 1.0X  |          1987            |         191         |           79           |          41         |             46             |\n| FP32 MobileNet v3 Large |          1658            |         161         |           67           |          38         |             40             |\n| FP32 MobileNet v3 Small |           474            |          50         |           22           |          13         |             15             |\n| INT8 MobileNet v1 1.0X  |          2589            |         128         |           46           |          29         |             24             |\n| INT8 MobileNet v2 1.0X  |          1495            |          82         |           30           |          20         |             17             |\n\nBenchmarked on Feb 8, 2022 with `end2end-bench --benchmark_min_time=5` on a Raspbian Buster build with CMake (`.\u002Fscripts\u002Fbuild-local.sh`) and neural network models with randomized weights and inputs. INT8 inference was evaluated on per-channel quantization schema.\n\n## Minimum build requirements\n\n- C11\n- C++17\n- Python 3\n\n## Publications\n\n- Marat Dukhan \"The Indirect Convolution Algorithm\". Presented on [Efficient Deep Learning for Compute Vision (ECV) 2019](https:\u002F\u002Fsites.google.com\u002Fcorp\u002Fview\u002Fecv2019\u002F) workshop ([slides](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZayB3By5ZxxQIRtN7UDq_JvPg1IYd3Ac\u002Fview), [paper on ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.02129)).\n- Erich Elsen, Marat Dukhan, Trevor Gale, Karen Simonyan \"Fast Sparse ConvNets\".\n  [Paper on ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1911.09723), [pre-trained sparse\n  models](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fgoogle-research\u002Ftree\u002Fmaster\u002Ffastconvnets).\n- Marat Dukhan, Artsiom Ablavatski \"The Two-Pass Softmax Algorithm\".\n  [Paper on ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2001.04438).\n- Yury Pisarchyk, Juhyun Lee \"Efficient Memory Management for Deep Neural Net Inference\".\n  [Paper on ArXiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2001.03288).\n\n## Ecosystem\n\n### Machine Learning Frameworks\n\n- [TensorFlow Lite](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F07\u002Faccelerating-tensorflow-lite-xnnpack-integration.html).\n- [TensorFlow.js WebAssembly backend](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F03\u002Fintroducing-webassembly-backend-for-tensorflow-js.html).\n- [PyTorch Mobile](https:\u002F\u002Fpytorch.org\u002Fmobile).\n- [ONNX Runtime Mobile](https:\u002F\u002Fonnxruntime.ai\u002Fdocs\u002Fexecution-providers\u002FXnnpack-ExecutionProvider.html)\n- [MediaPipe for the Web](https:\u002F\u002Fdevelopers.googleblog.com\u002F2020\u002F01\u002Fmediapipe-on-web.html).\n- [Alibaba HALO (Heterogeneity-Aware Lowering and Optimization)](https:\u002F\u002Fgithub.com\u002Falibaba\u002Fheterogeneity-aware-lowering-and-optimization)\n- [Samsung ONE (On-device Neural Engine)](https:\u002F\u002Fgithub.com\u002FSamsung\u002FONE)\n\n## Acknowledgements\n\nXNNPACK is based on [QNNPACK](https:\u002F\u002Fgithub.com\u002Fpytorch\u002FQNNPACK) library. Over time its codebase diverged a lot, and XNNPACK API is no longer compatible with QNNPACK.\n","# XNNPACK\n\nXNNPACK 是一个针对 ARM、x86、WebAssembly 和 RISC-V 平台的神经网络推理高度优化解决方案。XNNPACK 并非供深度学习从业者和研究人员直接使用；相反，它提供了低层性能原语，用于加速高级机器学习框架，例如 [TensorFlow Lite](https:\u002F\u002Fwww.tensorflow.org\u002Flite)、[TensorFlow.js](https:\u002F\u002Fwww.tensorflow.org\u002Fjs)、[PyTorch](https:\u002F\u002Fpytorch.org\u002F)、[ONNX Runtime](https:\u002F\u002Fonnxruntime.ai)、[ExecuTorch](https:\u002F\u002Fpytorch.org\u002Fexecutorch-overview) 和 [MediaPipe](https:\u002F\u002Fmediapipe.dev)。\n\n## 支持的架构\n\n- Android、iOS、macOS、Linux 和 Windows 上的 ARM64\n- Android 上的 ARMv7（带 NEON）\n- Linux 上的 ARMv6（带 VFPv2）\n- Windows、Linux、macOS、Android 和 iOS 模拟器上的 x86 和 x86-64（最高支持 AVX512）\n- WebAssembly MVP\n- WebAssembly SIMD\n- [WebAssembly Relaxed SIMD](https:\u002F\u002Fgithub.com\u002FWebAssembly\u002Frelaxed-simd)（实验性）\n- RISC-V（RV32GC 和 RV64GC）\n- Hexagon（带 HVX）\n\n## 算子覆盖\n\nXNNPACK 实现了以下神经网络算子：\n\n- 2D 卷积（包括分组卷积和深度可分离卷积）\n- 2D 反卷积（又称转置卷积）\n- 2D 平均池化\n- 2D 最大池化\n- 2D ArgMax 池化（最大池化 + 索引）\n- 2D 解池化\n- 2D 双线性插值\n- 2D 深度转空间（又称像素洗牌）\n- 加法（包括广播，仅适用于两个输入）\n- 减法（包括广播）\n- 除法（包括广播）\n- 最大值（包括广播）\n- 最小值（包括广播）\n- 乘法（包括广播）\n- 平方差（包括广播）\n- 全局平均池化\n- 通道混洗\n- 全连接\n- 绝对值\n- 银行家舍入（四舍六入五成双）\n- 向上取整\n- 截断（包括 ReLU 和 ReLU6）\n- 类型转换（包括定点数和半精度量化与反量化）\n- 复制\n- ELU\n- 向下取整\n- HardSwish\n- Leaky ReLU\n- 取负\n- Sigmoid\n- Softmax\n- 平方\n- Tanh\n- 转置\n- 向零取整\n- PReLU\n\nXNNPACK 中的所有算子都支持 NHWC 布局，同时还允许在 **C**hannel 维度上自定义步幅。因此，算子可以只消费输入张量中的部分通道，并生成输出张量中的部分通道，从而实现零开销的通道拆分和通道拼接操作。\n\n## 性能\n\n### 手机\n\n下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Pixel 手机上的 **单线程** 性能。\n\n| 模型                   | Pixel, ms | Pixel 2, ms | Pixel 3a, ms |\n| ----------------------- | :-------: | :---------: | :----------: |\n| FP32 MobileNet v1 1.0X  |    82     |      86     |      88      |\n| FP32 MobileNet v2 1.0X  |    49     |      53     |      55      |\n| FP32 MobileNet v3 Large |    39     |      42     |      44      |\n| FP32 MobileNet v3 Small |    12     |      14     |      14      |\n\n下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Pixel 手机上的 **多线程** 性能（使用与大核数量相同的线程）。\n\n| 模型                   | Pixel, ms | Pixel 2, ms | Pixel 3a, ms |\n| ----------------------- | :-------: | :---------: | :----------: |\n| FP32 MobileNet v1 1.0X  |    43     |      27     |      46      |\n| FP32 MobileNet v2 1.0X  |    26     |      18     |      28      |\n| FP32 MobileNet v3 Large |    22     |      16     |      24      |\n| FP32 MobileNet v3 Small |     7     |       6     |       8      |\n\n基准测试于 2020 年 3月27日进行，使用 `end2end_bench --benchmark_min_time=5` 命令，在搭载 Android NDK r21 的 Android\u002FARM64 构建版本上执行（`bazel build -c opt --config android_arm64 :end2end_bench`），并采用随机权重和输入的神经网络模型。\n\n### Raspberry Pi\n\n下表展示了 XNNPACK 库在三代 MobileNet 模型和三代 Raspberry Pi 板上的 **多线程** 性能。\n\n| 模型                   | RPi Zero W (BCM2835), ms | RPi 2 (BCM2836), ms | RPi 3+ (BCM2837B0), ms | RPi 4 (BCM2711), ms | RPi 4 (BCM2711, ARM64), ms |\n| ----------------------- | :----------------------: | :-----------------: | :--------------------: | :-----------------: | :------------------------: |\n| FP32 MobileNet v1 1.0X  |          3919            |         302         |          114           |          72         |             77             |\n| FP32 MobileNet v2 1.0X  |          1987            |         191         |           79           |          41         |             46             |\n| FP32 MobileNet v3 Large |          1658            |         161         |           67           |          38         |             40             |\n| FP32 MobileNet v3 Small |           474            |          50         |           22           |          13         |             15             |\n| INT8 MobileNet v1 1.0X  |          2589            |         128         |           46           |          29         |             24             |\n| INT8 MobileNet v2 1.0X  |          1495            |          82         |           30           |          20         |             17             |\n\n基准测试于 2022 年 2月8日进行，使用 `end2end-bench --benchmark_min_time=5` 命令，在搭载 CMake 的 Raspbian Buster 构建版本上执行（`.\u002Fscripts\u002Fbuild-local.sh`），并采用随机权重和输入的神经网络模型。INT8 推理是在逐通道量化方案下评估的。\n\n## 最低构建要求\n\n- C11\n- C++17\n- Python 3\n\n## 出版物\n\n- Marat Dukhan “间接卷积算法”。该论文发表于 [2019 年高效深度学习计算视觉研讨会 (ECV)](https:\u002F\u002Fsites.google.com\u002Fcorp\u002Fview\u002Fecv2019\u002F)（[幻灯片](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1ZayB3By5ZxxQIRtN7UDq_JvPg1IYd3Ac\u002Fview)，[ArXiv 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F1907.02129)）。\n- Erich Elsen、Marat Dukhan、Trevor Gale、Karen Simonyan “快速稀疏卷积神经网络”。[ArXiv 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F1911.09723)，[预训练的稀疏模型](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fgoogle-research\u002Ftree\u002Fmaster\u002Ffastconvnets)。\n- Marat Dukhan、Artsiom Ablavatski “两步 Softmax 算法”。[ArXiv 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2001.04438)。\n- Yury Pisarchyk、Juhyun Lee “深度神经网络推理中的高效内存管理”。[ArXiv 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2001.03288)。\n\n## 生态系统\n\n### 机器学习框架\n\n- [TensorFlow Lite](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F07\u002Faccelerating-tensorflow-lite-xnnpack-integration.html)。\n- [TensorFlow.js WebAssembly 后端](https:\u002F\u002Fblog.tensorflow.org\u002F2020\u002F03\u002Fintroducing-webassembly-backend-for-tensorflow-js.html)。\n- [PyTorch Mobile](https:\u002F\u002Fpytorch.org\u002Fmobile)。\n- [ONNX Runtime Mobile](https:\u002F\u002Fonnxruntime.ai\u002Fdocs\u002Fexecution-providers\u002FXnnpack-ExecutionProvider.html)\n- [适用于 Web 的 MediaPipe](https:\u002F\u002Fdevelopers.googleblog.com\u002F2020\u002F01\u002Fmediapipe-on-web.html)。\n- [阿里巴巴 HALO（异构感知降级与优化）](https:\u002F\u002Fgithub.com\u002Falibaba\u002Fheterogeneity-aware-lowering-and-optimization)\n- [三星 ONE（设备端神经引擎）](https:\u002F\u002Fgithub.com\u002FSamsung\u002FONE)\n\n## 致谢\n\nXNNPACK 基于 [QNNPACK](https:\u002F\u002Fgithub.com\u002Fpytorch\u002FQNNPACK) 库。随着时间的推移，其代码库发生了较大变化，XNNPACK 的 API 已不再与 QNNPACK 兼容。","# XNNPACK 快速上手指南\n\nXNNPACK 是一个专为 ARM、x86、WebAssembly 和 RISC-V 平台设计的高性能神经网络推理库。**注意**：该库主要面向框架开发者，提供底层算子加速原语，通常不直接供深度学习从业者调用，而是作为 TensorFlow Lite、PyTorch Mobile、ONNX Runtime 等高层框架的后端加速引擎。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**：Linux, macOS, Windows, Android, iOS\n- **架构支持**：\n  - ARM64 \u002F ARMv7 (NEON) \u002F ARMv6 (VFPv2)\n  - x86 \u002F x86-64 (最高支持 AVX512)\n  - WebAssembly (MVP, SIMD, Relaxed SIMD)\n  - RISC-V (RV32GC, RV64GC)\n  - Hexagon (HVX)\n\n### 前置依赖\n构建 XNNPACK 需要以下基础工具链：\n- **编译器**：支持 C11 和 C++17 标准的编译器（如 GCC, Clang, MSVC）\n- **构建工具**：CMake (推荐) 或 Bazel\n- **语言环境**：Python 3\n- **版本控制**：Git\n\n## 安装步骤\n\n推荐使用 CMake 进行本地构建。以下步骤以 Linux\u002FmacOS 环境为例：\n\n### 1. 克隆仓库\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK.git\ncd XNNPACK\n```\n> **国内加速提示**：如果访问 GitHub 较慢，可使用国内镜像源（如 Gitee 上的同步镜像）或配置 Git 代理。\n\n### 2. 初始化子模块\nXNNPACK 依赖多个子模块，需递归初始化：\n```bash\ngit submodule update --init --recursive\n```\n\n### 3. 创建构建目录并配置\n```bash\nmkdir build && cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\n```\n*注：若需针对特定架构优化（如 Android ARM64），可添加 `-DCMAKE_TOOLCHAIN_FILE` 参数指定工具链文件。*\n\n### 4. 编译库\n```bash\ncmake --build . --config Release -j$(nproc)\n```\n编译完成后，静态库 (`libXNNPACK.a`) 和头文件将生成在 `build` 目录中。\n\n## 基本使用\n\n由于 XNNPACK 是底层库，最简单的使用方式是通过支持它的上层框架（如 TensorFlow Lite）间接调用。若需直接在 C++ 代码中集成，流程如下：\n\n### 1. 初始化库\n在使用任何算子前，必须调用初始化函数（通常只需调用一次）：\n```cpp\n#include \u003Cxnnpack.h>\n\nif (!xnn_initialize(nullptr)) {\n  \u002F\u002F 处理初始化失败\n}\n```\n\n### 2. 定义算子与执行\n以下示例展示如何创建一个简单的加法算子（Add Operator）：\n```cpp\n#include \u003Cxnnpack.h>\n\n\u002F\u002F 假设已分配好输入输出内存指针：input1, input2, output\n\u002F\u002F 以及维度信息：batch_size, channels\n\nxnn_operator_t add_op = nullptr;\n\n\u002F\u002F 创建加法算子\nxnn_status status = xnn_create_add_nd_f32(\n  \u002F*flags=*\u002F0,\n  \u002F*input1_min=*\u002F-std::numeric_limits\u003Cfloat>::infinity(),\n  \u002F*input1_max=*\u002Fstd::numeric_limits\u003Cfloat>::infinity(),\n  \u002F*input2_min=*\u002F-std::numeric_limits\u003Cfloat>::infinity(),\n  \u002F*input2_max=*\u002Fstd::numeric_limits\u003Cfloat>::infinity(),\n  \u002F*num_dims=*\u002F2,\n  \u002F*dims=*\u002F{batch_size, channels},\n  \u002F*input1_stride=*\u002Fchannels,\n  \u002F*input2_stride=*\u002Fchannels,\n  \u002F*output_stride=*\u002Fchannels,\n  \u002F*output_min=*\u002F-std::numeric_limits\u003Cfloat>::infinity(),\n  \u002F*output_max=*\u002Fstd::numeric_limits\u003Cfloat>::infinity(),\n  &add_op\n);\n\nif (status == xnn_status_success && add_op != nullptr) {\n  \u002F\u002F 设置输入输出指针\n  xnn_reshape_add_nd_f32(add_op, batch_size, channels, input1, input2, output, nullptr);\n  \n  \u002F\u002F 执行算子\n  xnn_run_operator(add_op, nullptr);\n  \n  \u002F\u002F 销毁算子\n  xnn_delete_operator(add_op);\n}\n```\n\n### 3. 在高层框架中启用\n对于大多数开发者，无需编写上述 C++ 代码，只需在框架配置中开启 XNNPACK 委托即可：\n\n*   **TensorFlow Lite (Android\u002FC++)**:\n    ```cpp\n    TfLiteXNNPackDelegateOptions options = TfLiteXNNPackDelegateOptionsDefault();\n    TfLiteDelegate* delegate = TfLiteXNNPackDelegateCreate(&options);\n    interpreter->ModifyGraphWithDelegate(delegate);\n    ```\n*   **ONNX Runtime**:\n    在 SessionOptions 中注册 `XnnpackExecutionProvider`。\n\nXNNPACK 默认支持 NHWC 数据布局，并允许自定义通道步幅（Channel Stride），从而零成本实现通道分割与拼接操作。","某初创团队正在开发一款运行在旧款 Android 手机上的实时手势识别应用，需在本地完成视频流分析以保护用户隐私。\n\n### 没有 XNNPACK 时\n- 模型推理严重依赖通用计算库，在老旧的 ARMv7 设备上单帧处理耗时超过 100 毫秒，导致画面明显卡顿。\n- 无法充分利用多核 CPU 性能，即使开启多线程，大核利用率依然低下，功耗高但提速不明显。\n- 为追求速度被迫降低模型精度或分辨率，牺牲了手势识别的准确率，用户体验大打折扣。\n- 针对不同芯片架构（如 NEON 指令集）手动优化算子代码难度极大，开发周期被无限拉长。\n\n### 使用 XNNPACK 后\n- 借助针对 ARM 架构深度优化的浮点运算算子，MobileNet v3 小模型在同类设备上的推理延迟降至 14 毫秒以内，实现流畅的实时响应。\n- 自动调度所有大核进行多线程并行计算，将端到端延迟进一步压缩至 6-8 毫秒，同时显著降低了单位计算的能耗。\n- 完整支持高精度 FP32 模型部署，无需妥协画质即可达成高准确率识别，确保了复杂手势的判断可靠性。\n- 直接集成到 TensorFlow Lite 等框架中，零成本适配从 ARMv6 到 x86 等多种硬件平台，大幅减少了底层适配工作。\n\nXNNPACK 通过提供底层高性能原语，让开发者能在资源受限的移动设备上轻松部署高效、低功耗的神经网络应用。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgoogle_XNNPACK_b7753887.png","google","Google","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgoogle_c4bedcda.png","Google ❤️ Open Source",null,"opensource@google.com","GoogleOSS","https:\u002F\u002Fopensource.google\u002F","https:\u002F\u002Fgithub.com\u002Fgoogle",[82,86,90,94,98,102,106,109,113,117],{"name":83,"color":84,"percentage":85},"C","#555555",78.5,{"name":87,"color":88,"percentage":89},"C++","#f34b7d",13.3,{"name":91,"color":92,"percentage":93},"Assembly","#6E4C13",4.8,{"name":95,"color":96,"percentage":97},"Shell","#89e051",1.2,{"name":99,"color":100,"percentage":101},"Starlark","#76d275",0.7,{"name":103,"color":104,"percentage":105},"CMake","#DA3434",0.5,{"name":107,"color":108,"percentage":105},"Python","#3572A5",{"name":110,"color":111,"percentage":112},"SourcePawn","#f69e1d",0.3,{"name":114,"color":115,"percentage":116},"Pawn","#dbb284",0.2,{"name":118,"color":76,"percentage":119},"NASL",0,2313,483,"2026-04-19T20:56:32","NOASSERTION",4,"Linux, macOS, Windows, Android, iOS","不需要 GPU。XNNPACK 是专为 CPU 推理优化的库，支持 ARM (NEON, VFPv2), x86\u002Fx86-64 (AVX512), RISC-V, Hexagon (HVX) 以及 WebAssembly 架构。","未说明（取决于运行的具体神经网络模型大小）",{"notes":129,"python":130,"dependencies":131},"该工具主要作为底层性能原语供 TensorFlow Lite、PyTorch、ONNX Runtime 等高层框架调用，不直接面向深度学习从业者使用。支持单线程和多线程运行。在 Raspberry Pi 等嵌入式设备上表现优异。","Python 3",[132,133,134,135],"C11 编译器","C++17 编译器","CMake (构建工具)","Bazel (可选构建工具)",[14],[138,139,140,141,142,143,144,145,146,147,148],"neural-networks","inference","inference-optimization","simd","cpu","multithreading","matrix-multiplication","convolutional-neural-networks","convolutional-neural-network","neural-network","mobile-inference","2026-03-27T02:49:30.150509","2026-04-20T19:22:25.398785",[152,157,162,167,172,177,181],{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},45415,"如何直接获取端到端模型的性能加速结果，而不必构建完整的 TFLite？","您可以参考 XNNPACK 仓库中的基准测试示例代码（如 models\u002Ffp32-mobilenet-v2.cc）。在该示例中，所有张量均使用 std::array 分配，您只需相应地设置指针即可直接运行算子并测量性能。Readme 中提到的树莓派性能数据通常是基于构建了支持 XNNPACK 的 TFLite 获得的端到端结果。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK\u002Fissues\u002F4266",{"id":158,"question_zh":159,"answer_zh":160,"source_url":161},45416,"为什么我的 INT8 TFLite 模型没有委托给 XNNPACK，只有 FP32 层生效？","这曾是一个 TensorFlow Lite 的已知 Bug：如果模型中没有浮点张量，XNNPACK 委托会被隐式绕过。该问题已在 TensorFlow 提交 2509a6e82e6eb95888de697539845089923c23d5 中修复。请确保您使用的 TensorFlow Lite 版本包含此修复，或者在构建时显式应用 XNNPACK 委托。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK\u002Fissues\u002F999",{"id":163,"question_zh":164,"answer_zh":165,"source_url":166},45417,"交叉编译到 RPi3 (armv7) 时出现汇编错误（如 vsdot 指令不支持）怎么办？","这是因为编译器或汇编器版本过旧，不支持 ARMv8.2 的点积指令（dotprod），但构建系统尝试生成这些指令。解决方案有两个：1. 更新 binutils 和编译器以支持目标架构指令；2. 如果必须使用旧工具链，请在 CMake 配置时禁用相关指令集，例如添加参数 `-DXNNPACK_ENABLE_ARM_DOTPROD=OFF` 或 `-DXNN_ENABLE_ASSEMBLY=0`，以强制使用不依赖新指令的代码路径。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK\u002Fissues\u002F1465",{"id":168,"question_zh":169,"answer_zh":170,"source_url":171},45418,"XNNPACK 中的卷积操作是基于 GEMM 还是直接卷积实现的？","XNNPACK 中的卷积主要基于 GEMM（通用矩阵乘法）实现，通常通过 im2col 变换将卷积转换为矩阵乘法。关于具体的实现细节和优化策略（如分块、寄存器利用等），建议阅读 GotoBLAS 相关的经典论文（如 'Anatomy of High-Performance Matrix Multiplication'），这有助于理解其底层原理。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK\u002Fissues\u002F3398",{"id":173,"question_zh":174,"answer_zh":175,"source_url":176},45419,"在 benchmark 中，setup 函数何时会被调用？它会影响性能测试结果吗？","setup 函数会在输入或输出指针发生变化时被调用。如果您在基准测试循环中每次都更改输入\u002F输出指针，setup 就会被重复执行，从而影响总耗时。为了获得准确的算子执行时间，建议在测试中保持指针不变，或使用调试器验证实际运行的代码路径是否符合预期。","https:\u002F\u002Fgithub.com\u002Fgoogle\u002FXNNPACK\u002Fissues\u002F4666",{"id":178,"question_zh":179,"answer_zh":180,"source_url":176},45420,"深度卷积（Depthwise Convolution）与普通卷积在 im2col 实现上有什么区别？","深度卷积的 indirection-based im2col 实现与普通卷积不同，主要是因为深度卷积每个通道独立处理，不需要像普通卷积那样将输入展平为大的矩阵进行 GEMM 运算。其内核执行边界由特定的循环参数控制（不同于普通 IGEMM 的 output_size），具体逻辑可在 src\u002Foperator-run.c 的相关调用中找到。这种设计是为了适应深度卷积特殊的内存访问模式以提高缓存命中率。",{"id":182,"question_zh":183,"answer_zh":184,"source_url":156},45421,"如何在自定义结构中分配输出内存并将算子输出重定向到新的缓冲区？","您可以直接使用 `op->output` 指针，或者根据运行的具体任务类型使用 `context->c`。如果您需要对输出进行转换并将其作为下一个算子的输入，可以在算子执行后（例如在 operator-run.c 的相关位置）读取 `op->output` 的数据，处理后再写入您自定义分配的 `output1` 缓冲区，并将该缓冲区的指针传递给后续算子。",[]]