尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MCUNet快速上手教程:5步跑通第一个MCU级Tiny深度学习模型(含环境避坑清单)

MCUNet快速上手教程:5步跑通第一个MCU级Tiny深度学习模型(含环境避坑清单) MCUNet快速上手教程5步跑通第一个MCU级Tiny深度学习模型含环境避坑清单【免费下载链接】mcunet[NeurIPS 2020] MCUNet: Tiny Deep Learning on IoT Devices; [NeurIPS 2021] MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning项目地址: https://gitcode.com/gh_mirrors/mc/mcunetMCUNet 是 MIT Han Lab 提出的MCU 级 Tiny 深度学习框架NeurIPS 2020 / 2021核心思想是算法-系统协同设计用 TinyNAS 在微控制器的极限内存预算256KB SRAM 级下搜索网络结构再用 TinyEngine 推理引擎在 MCU 上高效执行。本教程面向新手带你5 步跑通第一个 MCU 级深度学习模型并附上环境避坑清单。第 1 步克隆仓库与安装环境避坑版MCUNet 的 Python 侧依赖非常轻核心只有 requirements.txt 中的torch和torchvision两项只有在验证 TF-Lite 量化模型时才需要额外安装 TensorFlow 1.15仅 CPU 支持。git clone https://gitcode.com/gh_mirrors/mc/mcunet cd mcunet pip install -e . 常见环境坑先看再装少走弯路坑现象解决方案TF 1.15 与新版 Python 冲突无法pip install tensorflow1.15建议为 TF-Lite 评测单独建一个 Python 3.7 的 conda 环境纯 PyTorch 路线第 3~4 步完全用不到 TF下载权重失败download_url拉取超时权重默认缓存到~/.torch/mcunet/可手动放置后复用eval_torch.py 报 CUDA 错误脚本写死devicecuda需在有 GPU 的机器上运行或改用 CPU 路线第 5 步的 TFLite 评测第 2 步一行代码构建预训练模型模型仓库 mcunet/model_zoo.py 内置了 9 个预训练模型ImageNet 分类mcunet-in0~in4、VWW 行人检测mcunet-vww0~vww2、人体检测person-det构建模型时会自动下载网络配置文件JSON和权重from mcunet.model_zoo import net_id_list, build_model, download_tflite print(net_id_list) # 查看全部可选模型 model, image_size, description build_model(net_idmcunet-in3, pretrainedTrue) # image_size176description 会告诉你该模型的内存预算定位网络结构由 ProxylessNAS 超网配置生成源码在 mcunet/tinynas/nn/networks/proxyless_nets.py。第 3 步跑通人体检测 Demo最直观的验收不想准备数据集项目自带一个 128×160 分辨率的 Tiny 人体检测模型和示例图片 assets/sample_images/person_det.jpg一条命令即可看到预测框python eval_det.py运行完成后可视化结果会生成到assets/sample_images/person_det_vis.jpg输入图与输出图同名带_vis后缀。该模型输入仅 128×160正是为了把内存压到 MCU 可承受的范围。第 4 步在 ImageNet 上评估精度两条路线任选路线 APyTorch fp32 模型eval_torch.pypython eval_torch.py --net_id mcunet-in2 --dataset imagenet --data-dir PATH/TO/IMAGENET/val数据按 ImageFolder 格式组织val/类别名/*.jpg。⚠️ 注意脚本写死使用 CUDA需要 GPU。路线 BTF-Lite int8 量化模型eval_tflite.pypython eval_tflite.py --net_id mcunet-in2 --dataset imagenet --data-dir PATH/TO/IMAGENET/val该脚本会自动禁用 GPUCUDA_VISIBLE_DEVICES-1纯 CPU 推理 int8 模型并内置了整集缓存 32 线程多进程加速能把评估时间从约 20 分钟压到约 2 分钟。这也是最贴近 MCU 上 int8 部署形态的验证方式。第 5 步按 MCU 内存规格选型256KB 也能跑选哪个net_id看下表——所有 SRAM/Flash 占用均用 TinyEngine 在 STM32F746 上实测net_idSRAMFlashTop-1 (fp32/int8)适用场景mcunet-in0266kB889kB41.5% / 40.4%内存极小的 MCUmcunet-in2242kB878kB60.9% / 60.3%256KB SRAM 1MB Flashmcunet-in3293kB897kB62.2% / 61.8%320KB SRAM 1MB Flashmcunet-in4456kB1876kB68.4% / 68.0%512KB SRAM 2MB Flash对比之下同预算下 MCUNet 比缩放版 MobileNetV2 高 12 个点左右mcunet-in2 60.9% vs mbv2-w0.35 49.7%这就是协同设计带来的收益。 TinyEngine 推理引擎的源码已独立发布本仓库中见 mcunet/tinyengine/README.md真正部署到芯片时就是靠它实现 1.5~3 倍加速和 2.7~4.8 倍内存节省。 关键文件速查路径作用mcunet/model_zoo.py模型仓库build_model/download_tflitemcunet/tinynas/TinyNAS 动态网络搜索模块mcunet/utils/权重下载、BN 折叠等工具函数eval_torch.py / eval_tflite.pyfp32 / int8 两条评测路线eval_det.py人体检测 Demo总结装环境TF 1.15 建议隔离环境→build_model拉模型 →eval_det.py看效果 →eval_torch.py/eval_tflite.py评精度 → 按内存规格选net_id。走完这 5 步你就拥有了一个能塞进 256KB 内存 MCU 的深度学习模型接下来可以探索 TinyEngine 做片上部署。【免费下载链接】mcunet[NeurIPS 2020] MCUNet: Tiny Deep Learning on IoT Devices; [NeurIPS 2021] MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning项目地址: https://gitcode.com/gh_mirrors/mc/mcunet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表