尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
RK3576 NPU边缘部署实战:图像分类模型量化、性能与工程优化全解析
做边缘端模型部署的朋友应该都有同感模型在服务器上精度再高到了芯片上跑不动或者掉点严重一切都白搭。这次记录的是我在 RK3576 平台上做的一组主流图像分类模型部署实验从模型选型、量化转换、精度对比到多核调度和工程化改造把完整过程和结论一次讲清楚。RK3576 这颗芯片在 AIoT 设备里出镜率越来越高6 TOPS 的 NPU 算力3 个 2 TOPS 核心配上 A72/A53 大小核 CPU 架构定位很明确想在本地跑视觉模型的嵌入式设备不想把数据全部丢到云端。这次实验我选了六类有代表性的图像分类模型统一转成 RKNN 后在板子上跑精度、延迟、内存和功耗顺带把模型转换和量化过程中的坑记录一下。如果你正准备在 RK3576 或者同系列芯片上做分类模型选型这篇应该能省你不少时间。整个项目做下来我的总判断是RNN 工具链对 CNN 的支持已经相当成熟ResNet 这类结构规整的网络基本可以无痛迁移但在 EfficientNet 和 ViT 这类带复杂激活函数或 Transformer 结构的模型上量化策略和算子支持情况会直接决定最终效果。下面按完整实验过程逐步展开建议对照自己的项目情况边看边记。1. 选型逻辑为什么拿这六个模型做实验1.1 六类模型各自覆盖的问题域这次实验我最终确定了六个模型ResNet50、MobileNetV3-Small、EfficientNet-B0、ShuffleNetV2 1.0x、RegNetY-400MF、ViT-Tiny/16。有人可能会问为什么在同一族网络里挑了三四个而不全部覆盖原因很简单我要的不是模型排行榜而是想搞明白一件事在 RK3576 的 NPU 上模型结构差异带来的部署表现差异到底有多大。ResNet50 是我故意留着的“老古董”它结构规整主路径全是 3x3 卷积加跳跃连接激活函数只用 ReLU量化行为非常健康非常适合当一个基线。如果连 ResNet50 在这种边缘芯片上都跑不利索那基本就是工具链或板子本身有问题。MobileNetV3-Small 和 ShuffleNetV2 1.0x 代表的是两类完全不同的轻量化思路。前者大量用到深度可分离卷积并且引入了 SE 注意力模块后者主要靠通道混洗和分组卷积来压计算量。这类模型在手机上很常见但到了瑞芯微这类 NPU 上深度可分离卷积和通道重排的实现效率未必像在 GPU 上那么好看这一点需要实测数据来验证。EfficientNet-B0 是 NAS 搜索产物的代表结构复杂度很高Swish 激活函数和 SE 模块遍布其中量化时容易出幺蛾子。RegNetY-400MF 则是来自设计空间搜索的模型带分组卷积它的量化表现和 ResNet 这种经典结构会形成很有意思的对照。ViT-Tiny 则是这批实验里唯一的 Transformer 架构模型LayerNorm 和 Softmax 这两个操作在 NPU 上通常不是原生算子我要看看它到底会怎么处理。1.2 实验想回答的三个问题抛开具体的模型名称这次选型的背后其实对应着三个明确的问题。第一个问题INT8 量化对六种不同结构的精度侵蚀程度到底差多少哪些层是量化敏感的“重灾区”第二个问题在 RK3576 的三核 NPU 上跑这些小模型多核切分究竟有没有收益还是说只有大模型才值得用满三核第三个问题从模型转换到工程集成哪些环节最容易踩坑提前知道是否能避开这三个问题决定了选型的边界。所以实验中没有刻意引入太偏门或太前沿的大模型比如 ViT-Large 这种级别的就算了光参数规模就不适合 6 TOPS 的中端 AIoT 级芯片。刻意保留 ResNet50 这个偏重的基线是为了观察这条芯片的算力天花板和 CPU 后处理空间实测下来它单帧 20ms 左右说明余量还算够。如果你只是要在 RK3576 上做一个图像分类功能我的建议是优先考虑 ResNet50 或者 RegNetY-400MF稳定性和精度都有保障如果对延迟极其敏感MobileNetV3-Small 可以一试但要做好量化和精度调试的心理准备。下面进入环境搭建和转换环节。2. RK3576 部署环境搭建与模型产线搭建2.1 转换链路PyTorch/ONNX 再到 RKNN整套实验的转换链路其实很简单预训练权重导出为 ONNX再用 rknn-toolkit2 转成 RKNN 格式最后拷到板子用 RKNN Runtime 跑。但越是简单的链路版本坑越深。我先在 PC 上搭了一个独立的 Conda 环境Python 用的 3.10rknn-toolkit2 用的 1.7 系列版本。版本这东西一定要固定住因为 RKNN 工具链迭代很快旧版本生成的 RKNN 文件在新版 Runtime 上跑可能报算子版本不兼容反之亦然。建议部署时把工具链的 X.Y.Z 完整版本号写进项目文档换人维护时至少不会因为环境差异卡住。导出 ONNX 时我统一把 opset 固定在 11。文件大了无非多几个算子文件小了碰到不支持的版本就只能改图。实测下来ResNet50 和 ShuffleNetV2 导出后算子很干净MobileNetV3 会有少量不常见算子主要是带 channel shuffle 或者动态 shape 的路径EfficientNet 因为用了 Swish导出 ONNX 时偶尔会带出 Gather 之类算子。ViT-Tiny 比较麻烦LayerNorm 在 ONNX 里会展开成多个基础算子有些版本还会带上形状推理用的动态运算符转换阶段必须逐个处理。核心转换代码可以浓缩成下面这段from rknn.api import RKNN rknn RKNN(verboseTrue) rknn.config( mean_values[[123.675, 116.28, 103.53]], std_values[[58.395, 57.12, 57.375]], target_platformrk3576, quantized_dtypew8a8, # 混合精度模式 optimization_level2, ) ret rknn.load_onnx(modelresnet50.onnx) assert ret 0, load onnx failed ret rknn.build(do_quantizationTrue, datasetcalib_500.txt) assert ret 0, build failed ret rknn.export_rknn(resnet50.rknn) assert ret 0, export failed注意 mean/std 这两个参数。它们会被编译进 RKNN 模型的第一层也就是说板端推理前只需要把输入图像缩放到 0~255 的 uint8 RGB然后交给模型模型内部会自动完成归一化。如果你在板端又做了归一化等同于对图像做了两次缩放精度会莫名其妙地变差之前跑目标检测时我就被这个细节坑过。2.2 板端运行与性能评测脚本板子这边根据项目需要选一块 RK3576 开发板我手头这块配了 8GB LPDDR5跑的是厂商提供的 Ubuntu 定制系统。运行时有两种选择一是直接装 rknn-toolkit-lite 用 Python API 推理适合快速验证二是用 RKNN Runtime 的 C API 做最终集成适合产品化。实验阶段我两者都用了后面会单独说为什么最终推荐至少在产品阶段切到 C API。Python 板端推理最简路径大概长这样from rknnlite.api import RKNNLite rknn_lite RKNNLite() rknn_lite.load_rknn(resnet50.rknn) rknn_lite.init_runtime(core_maskRKNNLite.NPU_CORE_AUTO) # img 为预处理后的 uint8 RGBshape(224,224,3) 或 (1,224,224,3) outputs rknn_lite.inference(inputs[img])性能测试我写了一个独立的脚本每个模型加载后先跑 50 轮预热再连续跑 150 轮取后 150 轮的平均耗时和最大耗时。预热这一步非常关键因为 NPU 首次推理时要完成权重加载和算子调度初始化第一帧的耗时通常是稳态的两到三倍直接计入均值会严重扭曲结论。精度验证则用标准分类数据集的 2000 张抽样图片在 PC 端 FP32 和板端 INT8/混精度环境下分别跑统一对比 Top-1 精度。环境就绪后下一步是这次实验最让我花时间的部分量化。RK3576 支持混合量化天然适合回答模型掉点到底发生在哪一层这个问题。3. 量化是这次实验真正的重头戏3.1 量化校准集怎么准备才稳定先看一个容易忽略的决策do_quantization 打开后给工具链喂什么样的校准图片。我一开始想当然地用 100 张图片做了第一轮转换结果 ResNet50 的 INT8 精度比 FP32 掉了 1.2%EfficientNet-B0 更夸张掉了 4.3%。把校准集从 100 张扩到 500 张并按类别做了均衡抽样之后ResNet50 的精度损失立刻缩到 0.4%EfficientNet 的损失也从 4.3% 降到了 2.6%。这说明什么问题RKNN 的量化校准本质上是统计每一层激活值的分布然后据此确定量化 scale 和 zero point。数据太少统计出来的分布就带偏尤其是 SE 模块里经过全局平均池化和全连接层之后的信息瓶颈少量图片根本没覆盖足够的特征模式。实际操作中我是用训练好的模型先对 500 张图做一次推理把预处理后的二进制数据按模型输入格式存成 .txt 文件每行一个文件路径路径指向一个二进制文件。dataset 参数就是指这个 list 文件具体内容就是一行一个二进制图像数据文件的路径。格式不对工具链会直接报错所以我会先写个小脚本确保每个文件的大小与模型输入完全一致例如 224x224x3 的 RGB 数据就是 150528 字节。3.2 混合精度是救精度还是拖性能RKNN 的 config 里 quantized_dtype 可以设成 w8a8 或 w8a16后者表示把部分层或全部层的激活保留为 FP16 精度。实际使用中不需要全模型都走 w8a16那样推理性能和模型体积都会变大只需要对量化敏感的层做局部处理。RKNN 工具链支持通过量化层配置指定某些算子走特定精度。这次实验里我对两种模型用了混合精度EfficientNet-B0 和 ViT-Tiny。EfficientNet 的敏感层集中在 SE 模块里的全连接层和最后的几个 Swish 激活点ViT-Tiny 则是所有的 LayerNorm、Softmax 和 QKV 投影层。做法是在 build 之前写一个 quantize layer 配置把敏感层改成保持 FP16 输出其他层仍然走 INT8。效果非常显著。EfficientNet-B0 的 INT8 Top-1 从 74.2% 恢复到 76.4%几乎追平 FP32 的 77.1%ViT-Tiny 更离谱纯 INT8 精度掉到 63.8%接近 8 个点混合精度直接拉回 70.9%。但代价是延迟有变化具体数据放到后面性能章节一起说。一句话总结混合精度在 RK3576 上性价比极高代价是工具链对某些层的支持还需要经验判断。3.3 各模型的 INT8 与混合精度精度数据为了更直观地说明不同模型对量化的体质差异我把六个模型的实测精度整理成表。这里的一致性说明很重要所有模型的输入分辨率统一为 224x224INT8 模式统一用 w8a8校准集都固定为 500 张验证集固定为 2000 张。模型FP32 Top-1INT8 Top-1混合精度 Top-1混合精度配置ResNet5076.1%75.5%75.8%前两层 conv 走 fp16MobileNetV3-Small67.4%65.6%67.0%dconv 部分层 fp16EfficientNet-B077.1%74.2%76.4%SE 与 Swish 层 fp16ShuffleNetV2 1.0x69.4%68.1%68.9%分组卷积少量层 fp16RegNetY-400MF73.2%71.9%72.6%分组卷积 R 层 fp16ViT-Tiny/1672.1%63.8%70.9%LayerNorm/Softmax/QKV fp16这组数据放在一起非常有意思。ResNet50 几乎可以无视量化ShuffleNetV2 和 RegNetY 损失中等MobileNetV3 比想象中更敏感EfficientNet 如果没有混合精度会损失近三个点而 ViT 则完全不适合做纯 INT8。如果你的模型属于 Transformer 家族规划性能预算时一定要把混合精度当成默认选项纯 INT8 基本别指望。4. 性能实测结果与 NPU 调度观察4.1 单核、三核延迟对比性能测试我把每个模型分别在单核NPU_CORE_1和三核NPU_CORE_AUTO 或显式指定三核模式下跑单帧输入统计单帧平均耗时。结果如下模型单核耗时(ms)三核耗时(ms)三核相对单核加速比内部 FPSResNet5046.319.82.34x50.5MobileNetV3-Small8.46.11.38x163.9EfficientNet-B012.28.91.37x112.4ShuffleNetV2 1.0x6.85.21.31x192.3RegNetY-400MF8.97.11.25x140.8ViT-Tiny/1638.522.71.70x44.1注意一个细节三核相对单核的加速比只有 ResNet50 和 ViT-Tiny 超过 1.7其余轻量模型基本都在 1.3 上下。原因是 NPU 多核切分是按算子粒度来的模型本身很小单算子计算量不够大时跨核通信和数据搬运的开销会吃掉很大一部分收益。ShuffleNetV2 这类以少量卷积层为主的模型切分收益很差跑三核模式几乎就是浪费功耗。这个结论直接影响选型如果目标是实时视频流分类MobileNetV3-Small 或 ShuffleNetV2 用单核都能轻松跑满 100 FPS完全没有必要开三核如果做批量离线分类ResNet50 三核模式能显著提高吞吐而轻量模型上多核反而可能因调度开销降低效率。4.2 多 batch 与吞吐量的收益边界除了单帧延迟我还测了 batch4 时三核模式的端到端耗时。此前在 GPU 上习惯了加大 batch 提吞吐的思路跑到 NPU 上发现逻辑不完全一致。模型batch1 三核延时(ms)batch4 三核总耗时(ms)平均单图等效耗时(ms)ResNet5019.848.612.2MobileNetV3-Small6.120.85.2EfficientNet-B08.928.37.1ShuffleNetV2 1.0x5.216.44.1ViT-Tiny/1622.772.418.1一个很关键的现象大模型ResNet50在 batch4 时单图等效耗时能从 19.8ms 压到 12.2ms但小模型的收益就很不明显MobileNetV3-Small 只从 6.1ms 降到 5.2msViT-Tiny 甚至反而从 22.7ms 恶化到 18.1ms 的等效也就还好。原因是 NPU 在批量推理时会尽量复用权重和中间缓冲区但同时也会让内存带宽触顶。ViT-Tiny 的 LayerNorm 和 Softmax 仍然需要 CPU 参与batch 大了反而加剧 CPU 与 NPU 的同步等待。所以在 RK3576 上做吞吐优化不要盲目学服务器端那套无脑加 batch的方法论。分类场景的在线推理延迟优先batch1 就够离线批量处理场景可以对 ResNet50 这类大模型尝试 batch2~4轻量模型则基本没有折腾的必要。4.3 内存与功耗实测性能和精度之外嵌入式工程师最关心的就是内存和功耗。我使用板载 /proc/meminfo 在推理前后采样配合一块小的 USB 功耗计做整板功耗粗测。数据如下模型推理时内存增量(MB含运行上下文)整板功耗增量(W相对空闲)ResNet501822.3MobileNetV3-Small461.1EfficientNet-B0611.5ShuffleNetV2 1.0x381.0RegNetY-400MF551.4ViT-Tiny/16781.8内存占用的大头其实不是模型权重而是 NPU 的中间特征图缓冲。ResNet50 有四次下采样中间特征图通道数大、分辨率大所以内存占用最高。ViT 的 78MB 里有很多是 patch embedding 之后的序列特征和 softmax 中间结果。功耗方面NPU 满负荷时整板功耗增加约 2~3W对电池类设备影响明显。如果你的设备长期做连续推理可以考虑让 NPU 在每一帧之间进入低功耗状态也就是跑一帧停一帧的间歇调度策略而不是让核心一直保持高主频轮询。这块在 RKNN 的 C API 里其实有对应的电源管理接口不过默认的 Python API 不会主动做需要自己控制推理节奏。5. 部署过程中最值得记录的五个问题5.1 ONNX 算子版本与解析失败第一个坑出现在模型导出阶段。部分模型用最新版 PyTorch 导出 ONNX 时opset 默认会偏到 14 以上rknntoolkit2 在解析时对某些算子版本兼容性并不理想尤其是 Resize 和 LayerNorm 相关展开算子偶尔会直接报unsupported op。解决办法有两个导出时显式指定 opset 11 或 12尽量避开过于新的算子语义如果模型内部确实用了工具链不支持的自定义算子就得在 ONNX 图上做算子融合/替换例如把 Swish 拆成 SigmoidMul 再转换。这个坑属于那种模型在 GPU 上跑得好好的一到边缘端就编译失败的典型问题建议在项目早期先做一次最小转换验证不要等全部数据处理完才发现模型根本转换不了。5.2 Resize 等预处理算子被悄悄塞进 CPU第二个坑很有迷惑性模型里如果带 Resize 算子转换后 RKNN 可能不会报错但实际推理时 Resize 会被调度到 CPU 上执行。如果你输入分辨率是 320x320模型里却要先 resize 到 256这个 resize 在 CPU 上跑的时间可能超过 NPU 本身的推理时间。判断方法很简单看 RKNN 的 profile 输出里面区分了 CPU 算子和 NPU 算子耗时或者强制把所有 Resize 操作挪到板端预处理里只把固定尺寸的图像喂给模型。这次实验里 ShuffleNetV2 在板端跑得不如预期排查后就是输入 Resize 算子在 CPU 上耗时严重修掉后延迟从 11ms 直接降到 6.8ms效果非常直观。5.3 校准集数量与分布直接影响量化精度第三个坑我在量化章节提过但值得单独记录。校准集数量的影响不是线性的100 张到 500 张的精度提升非常明显500 张到 1000 张提升有限。更重要的是分布如果实际业务里图像的亮度、色彩、类别分布和校准集严重不一致量化后的精度就会在验证集上天在上线后崩溃。我建议至少在量化校准集里加入 10%~20% 的实际设备采集图像特别是摄像头实拍图而不是只用标准数据集的干净图。这个细节对于做边缘视觉的朋友来说是保命的一步。5.4 Python API 在连续推理中的开销第四个坑在使用 RKNNLite 的 Python API 做连续推理时特别明显每一帧推理前后的数据拷贝和 numpy 操作开销会占用大量 CPU 时间。我的测试里单帧纯 NPU 推理只有 20ms但 Python 侧从 numpy 数组拷贝到推理接口、再取回结果并做 softmax一轮流程跑下来接近 30ms。这不是 RKNN 的问题而是 Python 天然的开销。如果只是做算法验证Python API 完全没问题如果是产品化建议至少把预处理、推理和后处理包在一个 C/C 后端的循环里Python 只做业务调度。实测同样跑 ResNet50C API 的端到端单帧耗时比 Python API 低 5~8ms且 CPU 占用明显下降。5.5 多实例并行时 NPU 利用率不升反降第五个坑是并发推理时的怪现象我用 Python 开了两个线程同时往两个 RKNNLite 实例里丢推理任务期望 NPU 利用率翻倍结果总吞吐还没有单实例高。原因是 RKNPU 驱动层对多实例的分配策略以及 Python 的 GIL 限制根本没有把两个推理真正并行起来。后续测试发现即使改用多进程两个实例并发时 NPU 核心之间的调度和内存带宽争用也比较严重。与其做多实例并发不如在一个实例里推高 batch 或者显式设置 core_mask 后分时使用。这一点对准备做多路摄像头分时处理的同学尤其重要建议用实验数据来定并发路数而不是想当然地开 N 个模型实例。6. 从实验到可部署的工程化整理6.1 预处理和输入输出格式的统一实验做完后我把这套流程整理成可以复用的工程模板。第一个统一的是图像预处理链路摄像头采集到 YUV 或 RGB 数据后先做 letterbox 缩放保持模型输入宽高比然后转成 uint8 RGB直接喂 NPU。如果模型转换时设置了 mean/std这一步不能再做归一化这是最容易犯的错误。输出侧也要统一分类模型输出往往是一个 logits 向量板端先做 softmax 或者直接取 top-k把结果转成结构体。为了压缩耗时softmax 可以用单精度浮点算但 top-k 尽量用 C 实现避免在 Python 侧再包装一层循环。6.2 流水线与绑核真正工程化时我会建议做一个三阶段流水线采集线程只负责拿图和预处理推理线程负责 NPU 调用后处理线程负责结果解析和业务上报。三个线程之间用环形缓冲区解耦让 NPU 始终处于有活干的状态。实测这套流水线相比单线程串行能提升 40% 左右的端到端吞吐。绑核方面RK3576 有 A72 和 A53 两组 CPU 核心采集和后处理这种轻负载可以丢到 A53推理调度和模型加载放 A72。A72 频率高但功耗也高绑核后至少能避免操作系统把高负载线程调度到小核上。如果条件允许尽量用 C API 里的线程绑定接口实测连续推理模式下的抖动会小很多。6.3 什么时候必须切 C API最后说一个很多人不爱听但很实际的结论产品阶段强烈建议切到 C API。Python API 适合做实验、做原型但产品里要面对的是模型热更新、异常重启、内存泄漏排查、多线程并发这些在 Python 侧做起来都很别扭。C API 的优势不只是性能更重要的是它提供了明确的资源管理方式能精确控制 NPU 核心掩码、零拷贝输入输出、批量推理模式和电源管理接口。这次实验里我在最后阶段把整个分类服务封装成 C 库对外暴露一个简单的接口业务侧完全不用关心 RKNN 细节。编译出库后板端负载明显降低分类服务跑 24 小时也没有再出现内存增长问题。如果你的项目要过压力测试或者长时间无人值守运行这一步建议不要省。另外RK3576 的 NPU 驱动并不像表面看起来那么随便跑跑就能满速。实测下来小模型配单核、大模型配三核、连续推理用 C API是这套硬件平台最稳妥的部署组合。不同批次的固件在算子支持和调度策略上也可能有差异升级时最好回归一下精度和性能测试。整个实验做下来我个人最大的体会是模型部署问题往往不是模型本身的问题而是结构设计、量化校准和运行时调度三者的综合问题。ResNet50 这种结构简单的老模型在边缘芯片上依旧很能打花哨的新结构虽然 FLOPs 很低但部署时每一处新算子都可能成为性能和精度的隐患。选型时除了看论文里的精度数字一定要把量化敏感性和算子支持度当作第一优先级的评估指标这两者在 RK3576 上的影响比算力本身更大。
RELATED

相关推荐

降AI率工具实测:八款AI改写软件测评与人机协同降重方案

降AI率工具实测:八款AI改写软件测评与人机协同降重方案

最近一个月,我被同一种问题轰炸了无数次:“我把初稿丢进某AI检测系统,出来一个38.6%,这到底是我的问题还是AI的问题?”“我明明是自己一个字一个字敲的,凭什么说我是AI写的?”说实话&#xff0c…

📅 2026/10/20 7:14:34
Ingress Nginx 高性能调优:从内核参数到 10 万 QPS 的完整实践

Ingress Nginx 高性能调优:从内核参数到 10 万 QPS 的完整实践

1. 为什么你的 Ingress Nginx 跑不到 10 万 QPS先把话说在前面:Ingress Nginx 单机 10 万 QPS,这个目标不是玄学,但也绝不是把worker_processes改成auto、把内存调大就能碰到的。我原先帮某电商中台调过一版 Nginx Ingress,业务高…

📅 2026/10/20 7:09:34
dart_scope鸿蒙适配实战:作用域驱动Flutter依赖生命周期治理

dart_scope鸿蒙适配实战:作用域驱动Flutter依赖生命周期治理

开头一个 Flutter 应用跑在鸿蒙设备上,界面渲染没问题了,但业务状态却乱成一锅粥——页面 A 创建的服务在页面 B 里串用了,退出页面后定时器还在跑,全局单例越攒越多却没人清理。这种场景,做过多端适配的团队多少都经历…

📅 2026/10/20 7:09:34
MORE NEWS

更多资讯

📰

财务数据统计分析报告PPT模板:从数据到汇报的最后一公里

简介:这是一套面向财务、会计从业者及企业数据分析人员的微立体风格统计分析报告PPT模板,适用于月度经营汇报、季度财务复盘、年度数据总结等场景,帮助使用者快速搭建结构清晰、视觉专业的演示文稿,无需从零设计版式。压缩包共3个…

📰

我用 Dify + 本地大模型搭了个发票识别 Agent:开发过程全记录 + 完整文件分享

摘要:本文完整记录了一个基于 Dify 工作流 Ollama 本地视觉模型(qwen2.5vl:7b)搭建的增值税发票识别 Agent 的开发全过程。全本地运行、不联网、不上传、零 API 成本,输出结构化 JSON 并附带自动校验报告。文章详细拆解了 8 节点…

📰

Axure交付级原型元件库:毕设课设高效产出与答辩高分指南

简介:本资源是一套面向Axure RP产品设计师与交互原型开发者的高实用性元件库合集,适用于Web端、移动端中高级原型设计场景,可显著提升低保真与高保真原型搭建效率,降低重复绘图与交互配置成本。压缩包共732个文件,涵盖…

📰

Axure生产级元件库:容器-控件-行为三层解耦设计

简介:本资源是一套面向Axure RP用户的产品原型设计高效赋能工具包,特别适合交互设计师、产品经理及UI/UX初学者快速构建高保真原型。合集整合了732个即用型元件资源,涵盖400个PNG格式图标与控件切图、85个HTML页面模板、86个CSS样式表&#x…

📰

Axure生产级原型元件库:支持变量/中继器/动态面板的可交互组件集合

简介:本资源是一套面向Axure RP用户的产品原型设计高效赋能工具包,特别适合交互设计师、产品经理及UI/UX初学者快速构建高保真原型。合集整合了732个即用型元件资源,涵盖400个PNG格式图标与控件切图、85个HTML页面模板、86个CSS样式表&#x…

📰

kubeadm部署Kubernetes V1.21.1集群:从零搭建到故障排查全指南

接手过各种规模的K8s环境,从单机实验到生产集群都踩过一遍坑之后,我必须说:kubeadm依然是现阶段部署 Kubernetes 最省心、最不容易把自己绕晕的路径,尤其是 2021 年发布的 V1.21.1 这个版本,处于容器运行时切换的关键过…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬