当前位置: 首页 > news >正文

【瑞萨AI挑战赛】#02 DL任务说明及训练

稍后同步代码到Github Repo

一、任务分析

首先明确,目标任务是在本地对驾驶行为的识别,使用驾驶行为数据集,用于后续的分析和处理,由此计划两个方案:

  • 方案一:骨架提取 -> 动作分类 (Pipeline 方案):
    • 关于数据集与标注:骨架提取(Pose Estimation)本质上属于回归任务,需要大量关键点(Keypoints)标注数据支撑。通常不会从零开始训练,而是直接采用现成的预训练模型(如Google的MoveNet或MediaPipe的轻量级模型)。你现有的驾驶员数据集仅包含分类标签,无法满足骨架模型的训练需求。

    • 算力分配方案(CPU vs NPU):

      • 骨架提取模块:由于采用深度学习模型(本质为卷积神经网络),计算量极大,必须优先部署在NPU上运行。若交由CPU处理,在MCU平台上的单帧推理时间可能长达数秒。

      • 动作分类模块:输入仅为17个关键点的一维坐标数据,可采用以下任一方案:

        • 直接编写启发式规则(Heuristic Rules)由CPU处理
        • 改用传统机器学习算法(如SVM、决策树)在CPU上执行
        • 继续使用NPU运行简单的多层感知机(MLP)
    • 致命风险: 现成的骨架提取模型通常包含比较复杂的算子(比如特殊的 Reshape、ArgMax、或者自定义的后处理层)。RUHMI 这种针对 MCU 的 AI 编译器,很有可能不支持这些复杂算子,导致编译失败或者强制 fallback 到 CPU。

这里参考了RUHMI支持算子列表

  • 方案二:端到端视觉模型 (End-to-End 方案)
    • 直接实现一个图像分类的模型,而且由于prototype当中任务简单,可以直接作为标准的图片分类模型来处理,而不需要过于复杂的Detector。
    • Darknet 的 C 代码如果不能被编译器有效映射到 NPU,纯靠 CPU 跑会卡成幻灯片。

二、模型训练

1. 数据提取

  • 下载数据集
kaggle competitions download -c state-farm-distracted-driver-detection
  • 因为任务比较简单,所以直接从数据集当中提取一部分数据作为训练数据,这里选取了三个类别,每个类别400张图片用于训练、120张图片用于验证
使用压缩包: state-farm-distracted-driver-detection.zip c0: train=400 张, val=120 张 c6: train=400 张, val=120 张 c7: train=400 张, val=120 张
  • 后续再提取30张图片用作PTQ的校准

2. 模型构建

  • 手动构建了CNN用于分类:
class TinyMCUCNN(nn.Module): """ 极简 CNN: 仅使用以下算子,保证对 MCU INT8 量化编译器友好: - Conv2d - ReLU - MaxPool2d - Flatten - Linear """

3. 模型训练

模型训练
  • 最终模型在这个任务上的准确率达到了97.50%

三、模型转换和编译

1. 模型校准

echo "[1/4] 校验并准备运行时库..." ensure_runtime_lib RUNTIME_LIB="$RUNTIME_PREFIX/lib" if [[ -d "$RUNTIME_LIB" ]]; then export LD_LIBRARY_PATH="$RUNTIME_LIB:${LD_LIBRARY_PATH:-}" fi echo "[2/4] 准备校准数据..." CALIB_SOURCE="$(prepare_calibration_data)" echo "[INFO] 使用校准输入: $CALIB_SOURCE" echo "[3/4] 执行 ONNX -> INT8 -> Ethos 编译..." mkdir -p "$OUT_DIR" export PATH="$VENV_DIR/bin:${PATH}" cd "$REPO_DIR" "$VENV_DIR/bin/python" scripts/mcu_compile.py \ "$MODEL_PATH" \ "$OUT_DIR" \ --npu \ --quantize \ --calib-data "$CALIB_SOURCE" \ --calib-num "$CALIB_NUM" \ --ref-data echo "[4/4] 汇总输出目录..." DEPLOY_DIR="$(find "$OUT_DIR" -type d -path '*/deploy' | head -n 1 || true)" SRC_DIR="$(find "$OUT_DIR" -type d -path '*/deploy/build/MCU/compilation/src' | head -n 1 || true)" echo echo "[DONE] 编译流程完成。" echo "输出根目录: $OUT_DIR" if [[ -n "$DEPLOY_DIR" ]]; then echo "部署目录: $DEPLOY_DIR" fi if [[ -n "$SRC_DIR" ]]; then echo "C代码目录: $SRC_DIR" fi

编译在量化阶段,被系统 C++ 运行库卡住:缺少 GLIBCXX_3.4.31/3.4.32,这是 fe_onnx_cli 的依赖问题:

  • 系统最高只有 GLIBCXX_3.4.30,Conda 里也不够,必须补一个更新的 libstdc++ 运行库才能让 MERA 的 fe_onnx_cli 工作

2. 模型转换

http://www.jsqmd.com/news/485189/

相关文章:

  • 上海劳力士维修哪里好?北京/南京/杭州高端腕表维修科普+6城正规门店汇总 - 时光修表匠
  • Spring Tools 4.5.1 是 Spring Tools Suite(STS)的继任者——Spring Tools for Eclipse
  • 2026年新手汽车陪练哪家口碑好,北京这些品牌值得关注 - mypinpai
  • Spring Cloud App Broker 1.0.5 是 Spring Cloud 团队发布的用于构建云原生服务代理(Service Broker)的开源框架的一个维护版本
  • 北京新手上路陪练费用大概多少,怎么选择靠谱陪练公司? - mypinpai
  • 别再死磕 Python 了!这 4 款低代码工具也能做深度数据分析!
  • 探讨北京值得推荐的手机摄像头测试方案厂家 - myqiye
  • 2026年上海展会展台搭建公司排名,商业展台搭建公司选哪家比较靠谱 - myqiye
  • 2026年展会展台设计策划公司推荐,上海地区哪家可靠? - 工业设备
  • Spring Cloud Config 2.2.2 是 Spring Cloud 的一个**配置中心组件版本**
  • ‌智慧校园系统价格解析:如何看懂报价背后的逻辑与选择适合自己的方案?
  • Elasticsearch相关技术点
  • 2026逆变器OEM代加工供应企业口碑哪家好,这些企业值得关注 - 工业品牌热点
  • 扬州售后完善的月子餐企业有哪些,哪个好用? - mypinpai
  • 沃尔玛购物卡回收避坑指南,安全变现就看这篇! - 京顺回收
  • 聊聊扬州母婴护理服务,母婴护理服务升级亮点多,哪家靠谱有答案 - 工业推荐榜
  • 2026年华广东/福建/江苏/浙江/上海/四川/北京/天津/武汉/香港/澳门恒温储藏设备供应商选型评估报告:聚焦爱敦堡与区域头部企业的能力对比 - 2026年企业推荐榜
  • PCL: CorrespondenceEstimationNormalShooting的使用【2026最新版】
  • 瑞祥商联卡回收实用型攻略,回收避坑指南 - 京回收小程序
  • 【数据分析】数据驱动预测控制策略的比较分析附matlab代码复现
  • 如何快速上手Carefree Creator:AI智能创作的终极指南
  • 2026年定制吸管供应商推荐,专业定制服务靠谱源头厂家揭秘 - myqiye
  • Spring Cloud Circuit Breaker 2.0.0 M1(Milestone 1)是 Spring Cloud 官方在 2022 年初发布的
  • 陕西乐高机器人机构推荐|童程优创:创意启蒙筑基础,少儿编程育科技特长生 - 深度智识库
  • Spring Cloud Kubernetes 2.0.0 M1(Milestone 1)是 Spring Cloud 官方为适配 Kubernetes 原生能力而发布的**首个 2.x 版本里程碑版
  • Hyperswarm与Hypercore生态:构建去中心化应用的完美组合
  • 基于DE-Transformer单变量时序预测 (单输入单输出)Matlab代码
  • P8638 [蓝桥杯 2016 省 A] 密码脱落【LCS】
  • 如何快速集成 Vue Google Autocomplete:打造智能地址搜索体验
  • 光伏气象站:为光伏电站的发电效率评估提供数据支持